lego-LOAM跑自己的数据包无法显示全局点云地图解决(速腾聚创RS-LiDAR-16 雷达 )---SLAM不学无术小问题

LeGo-LOAM跑自己的数据包无法显示全局地图问题

注意:本文笔者使用环境:Ubuntu18.04 ROS melodic 版本

背景

     3D SLAM新手,在看到了各种狂拽炫酷的3D点云图的之后决定亲自上手一试,首先当然的是最为经典的LOAM算法了,使用的是这位大佬的教程 :链接: LOAM进行点云地图创建.大佬的教程基本没有什么致命的错误,一般是可以直接成功的。使用了官方的数据包也没出现什么问题,还算比较顺利。不深究算法原理也算是成功了。
     那么接下来当然就是进阶了,正好实验室购置了一台雷达,自己采了数据。接下来选择的算法是LeGo-LOAM,性能优于LOAM,准备实践,使用了 这位大佬的教程:链接: LeGO-LOAM运行数据集.同样优秀的教程。(只是初学小白注意,最好自己手动创建工作空间,每条指令都copy可能会和之前的工作空间冲突)跑了官网数据集同样顺利出图,3D点云图,并且显示了全局点云地图。
     但是!但是!!!但是当我满怀激情的换上自己的数据集之后,发现rviz只能显示当前扫描帧,无法显示全局点云地图,无论怎么调试都无法显示,如下图所示

原始扫描帧
    为了解决以上问题,笔者进行了各种花里胡哨的尝试,无一奏效。始终以为自己的激光雷达有什么问题,或者是少录了什么Topic,然后无奈之下查看了激光雷达的参数,终于找到了错误之处。说来无语,原因是激光雷达类型不同不支持,比较常见的进口Velodyne 16雷达,国产的速腾聚创的RS-LiDAR-16雷达,CX镭神16/32激光雷达,禾赛科技16/32/64线激光雷达等等,笔者所用的是RS-LiDAR-16将在下文展开,其他品牌仅供参考。

一、激光雷达类型

    无论是LOAM还是LeGo-LOAM算法,原作者在写算法的时候或者说是在测试的的时候,使用的激光雷达都更倾向于:Velodyne 16线激光雷达VLP-16------16线激光雷达VLP-16是美国进口的一种小型的3D激光雷达,售价大概在32000左右,它的一些参数如下:
16线激光雷达VLP-16

激光线数:16线;
测量范围:高达100m;
测量精度:±3cm;
支持两次回波;
垂直测量角度范围:30°(﹢15°到﹣15°);
垂直方向角度分辨率:2°;
水平方向测量角度范围:360°;
水平方向角度分辨率:0.1°到0.4°;
测量频率:5到20Hz;
可以通过网络浏览器监测和改变电机的转速;
激光安全等级:1级(人眼安全);
激光波长:905nm;
传感器功率:8W(典型值);
工作电压:9-32V;
重量:830g;
外形尺寸:103mmX72mm;
振动测试:500m/sec² 振幅,持续时间11msec ;
振动:5 Hz to 2000 Hz, 3G rms;
防护等级:IP67;
工作温度:﹣10℃到﹢60℃;
储存温度:-40℃到﹢105℃;
输出: 每秒高达30万个测量点输出;
100M快速以太网连接;
数据包包含:距离值、物体反射率、旋转角度、同步时间(μs分辨率);
支持外接GPS;

    而笔者所使用的是RS-LiDAR-16 - 速腾聚创 - 自动驾驶激光雷达它是国内激光雷达厂商速腾聚创的一款雷达,主要面向自动驾驶汽车环境感知、机器人环境感知、无人机测绘等领域。速腾聚创成立于2014年8月,研发中心位于深圳。2016 年 10 月份宣布完成实验室测试,开始路测。它的参数如下:
RS-LiDAR-16
官网描述

二、修改步骤

1.修改launch文件

     因为原作的代码是使用的Velodyne 的雷达,所以对国内的雷达的兼容并没有那么好,所以需要简单的修改一下launch文件,这里参考了大佬的链接:链接: 在用robosense的rslidar(16线)运行lego-loam遇到的问题总结.大佬的文章很详尽了。原因是Lego-loam可以处理VLP-16中的Nan点,但是对其它品牌的雷达数据格式中的Nan点处理的不是很好,就是说在GitHub原作者的源码下面给出了解决办法,即在原来的run.launch文件中添加滤波的过程,滤除那些空点即可。
    注意! 注意!! 注意!!!
下文给出了修改好的launch文件,但是使用时大家根据自己的数据包格式不同还要做相应的改动。首先第一处:

// 注意这一行重映射
 <remap from="~input" to="/points_raw" />

这里的 /points_raw话题是你的数据包发布的 /PointCloud2格式的数据,也就是你录制好的需要的3D点云数据,你可以使用指令查看自己的bag的信息。

rosbag info bagfile.bag 

这是笔者自己的bag的Topic信息:
在这里插入图片描述
查看你的bag包录制topic是什么名称然后做相应的修改。

这里是笔者自己用的run.launch,仅作参考

<launch>
    
    <!--- Sim Time -->
    <param name="/use_sim_time" value="true" />
    <node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen" />
    
    <!-- Run a passthrough filter to clean NaNs -->
    <node pkg="nodelet" type="nodelet" name="passthrough" args="load pcl/PassThrough pcl_manager" output="screen">
    <remap from="~input" to="/points_raw" />
    <remap from="/passthrough/output" to="/velodyne_points" />
    
    <rosparam>
      filter_field_name: z
      filter_limit_negative: True
    </rosparam>
 
    <rosparam>
      filter_field_name: x
      filter_limit_negative: True
    </rosparam>
 
    <rosparam>
      filter_field_name: y
      filter_limit_negative: True
    </rosparam>
   </node>
 
    <!--- Run Rviz-->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find lego_loam)/launch/test.rviz" />
 
    <!--- TF -->
    <node pkg="tf" type="static_transform_publisher" name="camera_init_to_map"  args="0 0 0 1.570795   0        1.570795 /map    /camera_init 10" />
    <node pkg="tf" type="static_transform_publisher" name="base_link_to_camera" args="0 0 0 -1.570795 -1.570795 0        /camera /base_link   10" />
 
    <!--- LeGO-LOAM -->    
    <node pkg="lego_loam" type="imageProjection"    name="imageProjection"    output="screen"/>
    <node pkg="lego_loam" type="featureAssociation" name="featureAssociation" output="screen"/>
    <node pkg="lego_loam" type="mapOptmization"     name="mapOptmization"     output="screen"/>
    <node pkg="lego_loam" type="transformFusion"    name="transformFusion"    output="screen"/>
 
</launch>

2.修改useCloudRing参数

    在你launch后可能会出现这样的错误 Failed to find match for field ‘ring’ 因为Velodyne的雷达单独有一个ring通道,而robosense的雷达好像并没有,在代码中可以将这一功能关闭,在include文件夹的utility.h文件中,以下是文件目录,lego_loam是笔者的工作空间,打开以后
utility文件
做如下修改, 将 true改为false
在这里插入图片描述

参考大佬文章:链接: 在用robosense的rslidar(16线)运行lego-loam遇到的问题总结.

终于到最后了,修改完以上步骤以后,最好是重新编译整个工作空间以免出错。

catkin_make  

编译通过后启动run.launch,在播放你的数据包即可,记得一定要加 --clock

roslaunch lego_loam run.launch  
//记得一定要加 --clock
rosbag play bagfile.bag  --clock

运行launch:
在这里插入图片描述
以下是笔者自己的数据包的建图效果。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总算是完成预期目标,16线激光雷达效果还不错。

总结

关于ROS
关于3DSLAM算法
关于 LeGo-LOAM
    不学无术的一天,新手难免遇到各种问题,难免出错,还是缺乏实战经验。还有关于数据包的问题,笔者征得同意以后有时间会上传到百度网盘供大家免费试用。以上内容经供参考,也欢迎大家交流指正。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42141088/article/details/115747989

  • 20
    点赞
  • 152
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值