激光雷达+rtk+rgb联合使用(4)
因为一直在忙一些乱七八糟的事情,就没顾得上继续写,想着快速收尾算了。
前面写到,我在点云的匹配上花了大量的时间,不断的调参数,换方法,一共几百个点云,想着先每50个匹配一次,得到几个大点云之后再进行匹配,这样可以消除一些误差,结果是有的可以有的不行,主要是旋转之后,本来就是角度大,再分区域之后,角度更大了。反正是各种歪招吧。但是有一点,几百个整体进行匹配的话,不仅时间长,而且拼起来后误差也非常大。因为采用的代码是每一个点云都要跟后面所有的点云进行匹配,得到全部的匹配矩阵,再进行后续一系列操作,所以时间长,后来我改为每个点云只跟后面n个点云匹配,这样效果和时间都能接受了。确实也解决不少了问题,但是某一组,怎么都不行。后来我一个一个的看了下,发现,有连续的两张,偏差非常大,这个应该是rtk在那个时候出现了一个波动导致的,所以不是我的问题,当正常情况下,没那么多叽叽歪歪的事情。
最后就是吐槽一下那个rtk,当他非常好的时候,不需要匹配,直接按照参数旋转好放上去相加,就非常吻合,如果不稳定的话,靠软件匹配,不一定能行,有的时候反而将能直接吻合的弄得出现扭曲。总之就是,建议用好一点的rtk。
我这边的测试是,沿着一个大型转盘录制,走一圈大概是5分钟,我走了3圈,然后直接旋转后相加,得到的大模型,还是非常完美的,路面没有出现拼歪,周围的建筑也还好。当然了,还是会有重影,但是感觉已经非常好了。这个时候,需要做的操作就是再增加一个rgb像头,给点云上色。
其实到这里的时候,我就发现,这不就是港大的r3live嘛,人家已经比较完善了,还要自己折腾。
增加相机,需要做的,还是标定。对于这部分,网上有很多现成的,但是他们都有个问题,需要用到ros,而且从某个博客看到,不是所有的激光雷达都支持,有品牌限制的,基于这两点,其实也是我和我的老板,尤其是后者只会python,他给我手绘了一下原理,反正就是找到几个相对应的点,然后就一番映射就行了,这么简单,自己写就行了,道理我都懂,但是不会写。
这部分是找同事帮忙写的,这里就记录一下原理。就是先固定好雷达和摄像头;然后拍一个立方体,尽量多的拍到5个点,所以要斜着放,这个立方体要先测量好边长;再然后拿到摄像头得到的图片,人工标注5个点,再在点云中,人工去掉多余的点,只留下立方体相关的;最后用一些什么方法得到,不是录到3个面嘛,将3个面分别存储点云,然后得到面方程,然后三个面得到交点,就得到那三条棱,反正最后得到比较精确的点的坐标,然后做映射,什么中间的点设为(0,0,0),然后其他4个点都能得到,再跟2d图片的点坐标对应,最终得到一个映射矩阵。
我需要做的就是,将3d点云通过这个映射转成2d,再将其与rgb图片对应,就能得到点云的颜色,最终看着还可以。因为不做这个了,具体的也就没搞清楚。
接下来是碰到的问题,首先是,这个映射需要非常精确,错了一点,就会出现对不准的情况,尤其是,比如地面上立了一根杆子,上色的时候,可能会把杆子上色偏得比较远。
还有,rgb和激光雷达的时间匹配,这个最麻烦,因为激光雷达是能得到他的时间的,且比较精确,rtk也有时间,精确到ms,但是摄像头这个,通过opencv录制还是ffmpeg,他其实得不到精确的每一帧的录制时间,甚至,这个时间都不是均匀的。所以刚开始,我是记录下命令启动的时间,然后估算一下延迟的时间,大概也就是几百毫秒嘛,然后一边做匹配,一边调整。我认为是,从命令执行到真实录制,这个时间应该是固定的,结果,只能说,也许吧。然后录制命令,有猫腻,比如说,本来想录制mkv,还有录制无损,没有编码解码什么的,这种的话,好像不能设置帧率,每秒帧不固定,后来改为什么编码,固定每秒10帧,刚开始还匹配的可以,因为走路录制的,后面改为行车录制,发现完全对不上,哪怕我把停车的时候,配的非常准,但是中间有几张就非常歪,好像是摄像头对高速行驶的时候,处理有点延时还是啥,比如我逐帧看的时候,他可能连续几帧一点变化都没有,然后突然一个变化,可能是摄像头不高端。最后是在视频顶部加一条黑边,上面用滤镜写上录制时间,然后用ocr识别这个时间,然后将这个时间和点云时间匹配,差的多的点云不要,此时效果好了很多,但是,后面如果车速提起来,可能会导致点云数量显著不足,而且,即便如此,配准还是不甚精准,但至少能用了。
至此,我就光速被离职了,带着一笔钱回家过年。未曾想到的结局。每当忙的抓头发的时候,烦的掉头发的时候,心里抑郁的时候,我也设想过这个场景,只是在未曾想到的时间,带着本以为没有的这笔钱,离开了。而且时间刚刚好,很快就过年了,年后试着考公考编,也算经历了一次,然后又考了下高校。最后都是体验了一下。休息了5个月,整理心情,新的工作方向是aigc,希望大家一起努力。
如果不是因为想赶紧写下一篇st webui,这个也不会急着结束,所以写的有点草率,后面有机会再完善下,添加一个效果图什么。
相关文章:
激光雷达+rtk+rgb联合使用(4)
因为一直在忙一些乱七八糟的事情,就没顾得上继续写,想着快速收尾算了。 前面写到,我在点云的匹配上花了大量的时间,不断的调参数,换方法,一共几百个点云,想着先每50个匹配一次,得到几…...
【K8S系列】快速初始化⼀个最⼩集群
序言 走得最慢的人,只要不丧失目标,也比漫无目的地徘徊的人走得快。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级重要蓝色:用来标记二级重要 希望这篇文章能让你不仅有…...
Exploit/CVE-2010-0738
打开JBoss的潘多拉魔盒:JBoss高危漏洞分析 *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。 前言 JBoss是一个基于J2EE的开放源代码应用服务器࿰…...
Go单元测试及框架使用
Go自带测试框架 单元测试 建议Go 语言推荐测试文件和源代码文件放在一块,测试文件以 _test.go 结尾。函数名必须以 Test 开头,后面一般跟待测试的函数名参数为 t *testing.T 简单测试用例定义如下: func TestXXXX(t *testing.T) {// ...}…...
TreeMap类型实体类数据进行排序
实体类Student类代码如下所示: package com.test.Test11;public class Student implements Comparable<Student>{private int age;private String name;private Double height;public int getAge() {return age;}public void setAge(int age) {this.age age…...
HOOPS助力AVEVA数字化转型:支持多种3D模型格式转换!
行业: 电力和公用事业、化工、造船、能源、采矿业 挑战: 创建大规模复杂资产的客户需要汇集多种类型的数据,以支持初始设计和创建强大的数字双胞胎;现有版本的产品只支持半打CAD格式;有限的内部开发资源限制了增加对新…...
(转载)基于遗传模拟退火的聚类算法(matlab实现)
1 理论基础 1.1 模糊聚类分析 模糊聚类是目前知识发现以及模式识别等诸多领域中的重要研究分支之一。随着研究范围的拓展,不管是科学研究还是实际应用,都对聚类的结果从多方面提出了更高的要求。模糊C-均值聚类(FCM)是目前比较流行的一种聚类方法。该…...
【C++】struct 和 class 的区别
欢迎来到博主 Apeiron 的博客,祝您旅程愉快。时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、示例代码 3、总结 1、缘起 在 C 中,struct 和 class 唯一的区别就在于 默认的访问权限不同。区别如下: …...
活动笔记丨物业行业人效提升与灵活用工新路径
近日,盖雅工场成功举办物业行业人效提升专场交流,来自广深地区央企和民营的领先物业企业和现场服务业的多位代表齐聚深圳招商积余大厦,共同研讨行业人效提升的挑战和实践。 本次闭门交流会聚焦于人效提升,讨论话题包括各自企业在人…...
学习笔记:吴恩达ChatGPT提示工程
以下为个人笔记,原课程网址Short Courses | Learn Generative AI from DeepLearning.AI 01 Introduction 1.1 基础LLM 输入 从前有一只独角兽,输出 它和其他独角兽朋友一起住在森林里输入 法国的首都在哪?输出 法国的首都在哪…...
POI in Action
POI 组件依赖 按需引入对应依赖 (给出官方的指引) 组件作用Maven依赖POIFSOLE2 FilesystempoiHPSFOLE2 Property SetspoiHSSFExcel XLSpoiHSLFPowerPoint PPTpoi-scratchpadHWPFWord DOCpoi-scratchpadHDGFVisio VSDpoi-scratchpadHPBFPublisher PUBpoi-scratchpadHSMFOutloo…...
苹果Vision Pro将引爆人机交互的重大变革
2023年6月6日,苹果发布了大家期待已久的Vision Pro,Vision Pro是一款专业级MR设备,融合了虚拟现实(VR)和增强现实(AR)技术,可以让用户完全沉浸在高分辨率显示内容中。允许用户以一种全新的方式在其周围的空间中查看APP。用户可以用…...
MMDetection学习记录(二)之配置文件
文件结构 config文件 在 config_base_ 文件夹下有 4 个基本组件类型,分别是:数据集(dataset),模型(model),训练策略(schedule)和运行时的默认设置(default runtime)。 命名风格 {model}_[model setting]_{backbone}_{neck}_[no…...
Python数据分析:NumPy、Pandas和Matplotlib的使用和实践
在现代数据分析领域中,Python已成为最受欢迎的编程语言之一。Python通过庞大的社区和出色的库支持,成为了数据科学家和分析师的首选语言。在Python的库中,NumPy、Pandas和Matplotlib是三个最为重要的库,它们分别用于处理数值数组、…...
实习生面试问题及回答记录
文章目录 文章简介技术类1、DFS和BFS算法的区别是什么?2、解释一下什么是快速排序?3、 如果让你写一个排序算法?你会怎么写?(大概说出代码的思路)4、解释一下二分查找的具体逻辑?5、在代码的数据…...
设计模式(十):结构型之外观模式
设计模式系列文章 设计模式(一):创建型之单例模式 设计模式(二、三):创建型之工厂方法和抽象工厂模式 设计模式(四):创建型之原型模式 设计模式(五):创建型之建造者模式 设计模式(六):结构型之代理模式 设计模式…...
买法拍房需要注意什么
法拍房,由于其价格亲民、房屋信息透明度高、竞拍过程公平公正而受到越来越多的人开始关注。但是其中又有着许多的风险及相关的注意事项。那么,如何做到成功“捡漏”,买法拍房需要注意什么呢? 买法拍房需要注意什么 1、隐藏的各种收费 税费&a…...
linux命令输出结果但不显示在屏幕上的通用办法
linux命令输出结果但不显示在屏幕上的通用办法 这个针对于我这种小白马大哈很简单的一个命令,记给自己备用 举个例子:unzip命令不输出结果 unzip xx.zip > /dev/null 2>&1 unzip xx.zip > /dev/null 前半部分是将标准输出重定向到空设备&a…...
【Linux系统进阶详解】Linux字符权限rwx-权限组合原理,对应类型ugo,user,group,other,+-=详解及权限管理实战
在Linux系统中,每个文件和目录都有三种权限:读权限(r)、写权限(w)和执行权限(x)。这些权限可以被分配给三个不同的用户组:用户(user)、组(group)和其他人(other)。此外,权限可以使用“+”、“-”和“=”符号进行修改。 权限组合原理 Linux系统中的权限由字母…...
凡人修C传——专栏从凡人到成仙系列目录
这里先感谢博主THUNDER王给我提出来的一个创作建议,让我有了创作的灵感来创建这一篇博客以及凡人修C传这一个系列的文章。 本文最主要的目的就是给大家一个凡人修C传的一个目录,让大家更加容易学到自己想学的地方。 📝【个人主页】࿱…...
隐藏python代码,售卖并保护源代码
我写了一个基于pytorch框架的特殊卷积,他的使用方式和其他的卷积一样,但是我想把它卖出去,希望隐藏特殊卷积的代码 1、如果您希望隐藏特殊卷积的代码并将其作为一个可售卖的产品,可以考虑以下几种方法来保护您的代码:…...
Material—— VAT(Houdini To UE)
目录 一,介绍 二,柔体 二,刚体 一,介绍 VAT是将动画数据存储在纹理中,通过GPU运算来实现动画的技术;VAT纹理包含每个顶点在不同帧的位置信息,而每个像素代表一个顶点在某个时间点的位置&…...
视频后期剪辑
文章目录 后期剪辑软件三方插件提供动画制作软件 后期剪辑软件 视频剪辑后期处理涉及到多个软件和插件,下面是对其中几个主要软件及其相关插件的扩展介绍,以及为它们提供插件的一些知名第三方公司。 Adobe After Effects: Adobe After Effec…...
Python3+Selenium2完整的自动化测试实现之旅(七):完整的轻量级自动化框架实现
一、前言 前面系列Python3Selenium2自动化系列博文,陆陆续续总结了自动化环境最基础环境的搭建、IE和Chrome浏览器驱动配置、selenium下的webdriver模块提供的元素定位和操作鼠标、键盘、警示框、浏览器cookie、多窗口切换等场景的方法、web自动化测试框架、python面…...
泰山信息科技5周年:无尽的感恩,非常非常的惋惜
去年的时候,庆贺4周年,公司员工一起去某个地方玩(确实没吃到什么东西)。这是当时的情形: 因为各种原因,今年3月无锡研发基地解散。作为技术总监,我是非常非常的惋惜。因为我真的想把泰山OFFICE做…...
LabVIEW编程开发PCB测试仪
LabVIEW编程开发PCB测试仪 使用PXI和LabVIEW的PCB钉床测试仪 用于PCB(印刷电路板)的钉床测试仪,使用PXI和LabVIEW。一家电子制造公司需要测试仪来测试他们的PCB产品。钉床测试仪是一种具有连接到电路板上各个测试点的引脚的测试。电路板需要…...
React使用Electron开发桌面端
React是一个流行的JavaScript库,用于构建Web应用程序。结合Electron框架,可以轻松地将React应用程序打包为桌面应用程序。以下是使用React和Electron开发桌面应用程序的步骤: 1. 安装Electron 首先,你需要安装Electron。在终端中…...
springboot+vue餐厅点餐系统在线点餐系统(含源码+数据库)
1.系统分析 系统用例图如下所示。 从用户、餐厅等方面进行需求分析如下。 1.用户需求:系统应该提供简单易用的用户界面,用户可以浏览餐厅菜单,选择菜品,下订单。此外,应该允许用户管理个人信息和查看历史订单。 2.餐…...
Vue.js 中的 TypeScript 支持是什么?如何使用 TypeScript?
Vue.js 中的 TypeScript 支持 Vue.js 是一款流行的前端框架,它提供了一种简单、灵活的方式来构建用户界面。随着 TypeScript 的普及,Vue.js 也开始支持 TypeScript,使得开发者可以使用类型检查等 TypeScript 特性来提高代码质量和可维护性。…...
测试者必知—如何做Web测试?常见测试点总结
目录 前言: 一、Web应用程序 二、功能测试 三、易用性测试(界面测试) 四、兼容性测试 五、安全性测试 六、性能测试 前言: Web测试是指对基于Web技术的应用程序进行测试,以测试其功能、性能、安全和稳定性等方面的表…...
网站建设的网页/百度搜索引擎盘搜搜
谷歌社交网络Google Plus一经推出便好评如潮,据国外媒体报道,互联网流量监测机构comScore日前发布的统计数据显示,谷歌社交服务Google Plus发布三周以来,其独立访问用户总数已达到2000万人。今天,这篇文章与大家分享12…...
招聘网站报表怎么做/网站建设方案书 模板
2019独角兽企业重金招聘Python工程师标准>>> 通过DAL(Data Access Layer)可以做到在公司范围提供统一的数据库访问方式以降低总体的开发成本避免由于技术人员水平不同而造成的相同功能实现方式,标准,质量不一至;集中优势人员&…...
网站后台密码是什么/长治网站seo
项目中基于Redis实现的ID生成器改成用lua脚本实现,可以防止并发id冲突问题。 Redis中使用Lua的好处 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入…...
如何从网站获取图片做全景图/开鲁seo服务
X86寄存器 x86寄存器分类: 8个通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 1个标志寄存器:EFLAGS 6个段寄存器:CS、DS、ES、FS、GS、SS 5个控制寄存器:CR0、CR1、CR2、CR3、CR4 8个调试寄存器:DR0、…...
南京网站建设咨询/模板建站常规流程
这是可能的,但不一定容易,因为PDF格式是如此丰富.您可以在 here中找到详细描述它的文档.它提供了有关PDF如何显示文本的第一个基本示例: BT /F13 12 Tf 288 720 Td (ABC) Tj ET BT和ET是开始和结束文本对象的命令; Tf是一个使用外部字体资源F13(恰好是Helvetica)的命…...
手机端网站设计模板/公司网站推广怎么做
一、线程池 对于数据库连接,我们经常听到数据库连接池这个概念。因为建立数据库连接时非常耗时的一个操作,其中涉及到网络IO的一些操作。因此就想出把连接通过一个连接池来管理。需要连接的话,就从连接池里取一个。当使用完了,就…...