禾赛XT-16/阿努比LpmsIG1运行lio-sam

课题是多传感器融合,将GNSS/INS/LIDAR做融合定位导航,故考虑使用lio-sam开源算法,在此记录一下我在适配传感器数据时遇到的一些问题;

运行lio-sam

源码安装教程参考文章
项目搭建和传感器标定参考文章
项目的部署和安装就不多做赘述了,以上两篇文章写得很棒,大家可以参考~(侵删)

遇到的问题

其实也就一个比较大的问题,就是时间戳的问题,lio-sam中对传感器做了时间戳软同步,涉及到时间软同步,那么就要考虑LIDAR/IMU两个传感器的时间戳了。

禾赛XT-16时间戳

禾赛XT-16/阿努比LpmsIG1运行lio-sam_第1张图片
可以看到,对于这款XT-16雷达,使用厂家提供的ROS驱动程序中的时间戳与IMU的完全对不上,这样也就导致了就算数据格式做了适配,程序仍然会在时间同步的地方一直出不来,那么在RVIZ中也就一直见不到采集的数据。

解决

笔者的解决办法很简单粗暴,因为笔者的IMU的ROS驱动代码中对时间戳的定义是ros::Time::now(),笔者也就直接修改了雷达驱动中对于时间戳的定义。
禾赛XT-16/阿努比LpmsIG1运行lio-sam_第2张图片
图中红色框是厂家的底层驱动代码,蓝色的框是笔者自己修改的代码,至此,保存、编译、运行直接一套带走!

最终效果

禾赛XT-16/阿努比LpmsIG1运行lio-sam_第3张图片

笔者不确定这样修改后是否会对最终运行出的结果精度有影响,因为笔者也只算是入门,截止到文章发布,笔者自己跑的几次数据中地图都有重影,不确定是否与时间戳有关,也有可能是因为传感器标定和IMU的工作频率有关(上图中的IMU频率使用的100Hz),如果有大佬有更好的方案或者对本文有更好的建议,望在评论区与我交流~
希望本篇对手上雷达型号与笔者一致或同一品牌的各位有用~

你可能感兴趣的:(lio-sam,自动驾驶,机器人,slam,lio-sam)