激光雷达+rtk+rgb联合使用(1)

        这次项目换方向了,不折腾深度学习了,公司希望能够通过简单的一扫,可以得到三维信息,这是slam?可我一窍不通啊。不过这个东西,我瞬间想到的是r3live啊,莫非我们是要自己实现啊,不需要吧,网上有代码啊,搞不懂。

        这个项目的设计是这样的,通过激光雷达获取到点云,然后根据rtk高精度导航定位系统来获取位置角度啥的,以此来拼接点云,最后再同时以摄像头拍照来获取每个点云的颜色信息,最后得到连续的完整的整个场景的3维场景的大点云。最后是,对,使用python来完成,不整ros。

        本系列文的主要目的是对这个任务做一个记录,如果有时间和心情的话,会坚持写完,但不一定对看官们会有帮助,整体来说还是非常粗糙的,并且由于已经离职,所以很多原数据就没带出来,所以既不会贴代码,也不会贴效果图,所以只是一个记录贴。而且本人再此之前并没有玩过slam,也没有接触过open3d,所以对我来说都是非常新鲜的东西,也会记录下来。

        本篇主要说明该任务所使用的硬件,激光雷达使用的是大疆的livox hap tx,这个设备有两个型号,tx和t1,两者区别是t1是装在车上的,tx是网线接口,可以自己拿着调试使用。由于项目的最终目标对我当时的我来说,非常遥远,所以,在拿到激光雷达的时候,我需要先去官网看看介绍,调试一下设备,也需要学习一下open3d的使用。

        livox hap的使用,官方提供了一个工具可以用于点云录制,而且由于hap是他们的最新产品,所以各种软件,sdk等都要使用2.0的版本,但是录制工具viewer,各种说明文档表示会有ubuntu版本,但实际并没有提供,仅有windows版本,不过使用上还是比较简单的,需要注意的是,连接的电脑最好是自动获取ip的设置,不然的话,就需要设置一下设备的ip,而设置设备需要先连接设备。这里碰到一个非常麻烦的情况,在使用了n天之后,发现软件无法发现设备了,怎么设备都不会出现,询问客服之后,客服让下载软件查看了网络数据,抓包什么的,发现都是正常的,但是他们软件无法发现设备,他们表示无法理解。这里吐槽一下livox的客服,只有微信客服,需要手机扫码,然后就之后手机打字联系,很不方便,而且,经常在长时间不回复之后,再问为啥不回我的时候,客服说,太忙了,忘了,拜托,你是客服也。后来我发现一个解决办法,就是打开一个之前录制的点云,再关闭,此时设备栏里会突然出现该设备了,并且可以正常使用,但如果刷新的话,就会刷不见,此时需要再次操作。反正最后不知为何突然又好了。

        viewer这个软件录制的点云格式为lvx2,使用软件可以像视频一样播放,并且软件也提供转换工具转换成csv、pcd和las格式,但是这个功能有bug,并且在上次联系客服时一起上报,工程师回复是bug吗,但是最新版依然没有解决。最初我的调试方式是,在多个固定位置使用雷达录制点云,然后使用open3d的icp对齐方法来将多个点云进行合并,这一方面是测试雷达的性能,另一方面也是让我熟悉一下open3d。所以我的每一次调试都会录制20-30个点云,但是lvx2格式我自己并不能解析,所以我需要转成pcd格式,然后我就发现,转出来的pcd出现非常重的残影,最开始以为是我录制的时候移动了雷达所致,后来发现是软件的问题,他会在多次转换的时候,将上一个点云叠加在下一个点云中,所以只有第一个转换的点云是正常的,在官方没有解决问题的情况下,我当时的解决方式是,每次只转换一个,然后重启软件。再吐槽一个官方软件,这个转换功能,就算没bug,其设计也不合理,只支持单次转换,如果我有100个点云,就要手动操作100次,显然没有太大的必要。

        在我的调试中,我的老板评价雷达的性能还是不错的,他觉得,雷达生成的点云,地面,墙面等地方,都是在一个平面上,比较精细,但是会有比较严重的拉丝问题,即便官方社区中有文章说明,通过点云属性筛选,可以优化拉丝问题,但在我的场景中,可能有优化,但我没看出来,由于需要查看点云属性,所以我看了一下官方sdk的协议,查询点云的属性说明,并且,点云格式的转换,应该转为csv格式,因为csv格式保留了相当多的信息,除了点云的位置信息,还有时间,属性和反射度这些信息,对这个雷达会提供每个点云的反射度,0-255之间,相应的在我的使用场景中,在交通领域中,各种标牌标线等,在他显示中,会是红色,普通路面只是黑色,所以我转换后的点云也可以有颜色,看得出来哪是哪。

        在拼接中,由于采用定点录制的方式,所以拼接就是使用纯ICP配准的方式,我自己试了一下普通的ICP配准,也在网上搜了一个感觉比较高级的方法,Open3d之多视角点云配准,感觉还是不错的,只是可能是open3d的版本不同,这个博客中的代码,直接使用可能会有报错,但是根据报错解决就可以了,一般就是说在使用icp之前,需要计算一下点云的法向量,然后可能各个接口的变动,查询一下就很好解决。但是我都改好后还是无法配准,最终察觉,应该是因为我的点云单位是毫米,而这个代码的参数设置是基于米,所以我将一个非常重要的参数voxel_size放大了1000倍,然后就正常了。配准效果还是不错的。当然点云之间的变化不能太大,如果太大的话,我自己的处理方法是,用meshlab打开点云手动移动点云位置并保存,或者将很多点云分为好几组,先组内匹配后,手动移动后再逐一匹配。

        总之最后还是不错的,起码事情开启了第一步。

下一篇会记录我在rtk的使用心得

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值