(四) loam_interface 和 sensor_scan_generation

不重要的是ps3.launchrviz, 这里只列出重要部分

loam_interface.launch

1
2
3
4
5
6
7
8
9
10
11
12
<launch>

<node pkg="loam_interface" type="loamInterface" name="loamInterface" output="screen" required="true">
<param name="stateEstimationTopic" type="string" value="/integrated_to_init" />
<param name="registeredScanTopic" type="string" value="/velodyne_cloud_registered" />
<param name="flipStateEstimation" type="bool" value="true" />
<param name="flipRegisteredScan" type="bool" value="true" />
<param name="sendTF" type="bool" value="true" />
<param name="reverseTF" type="bool" value="false" />
</node>

</launch>
  • 参数stateEstimationTopic换成世界坐标系下的机器人当前位姿,实际要求的是里程计消息,我的是从LOAM发布的final_odom

  • 参数registeredScanTopic为LOAM框架输出的关键帧话题,我的是Lego-LOAM的current_scan

  • 参数flipStateEstimationflipRegisteredScan改为false,只要雷达位置没有旋转。否则启动后,机器人坐标系是旋转过的

loam_interface的代码太简单了: 不断接收SLAM部分提供的世界坐标系下的机器人当前位姿 以及 世界坐标系下的当前关键帧,并分别以state-estimastion(换个名字和发布TF) 和 registered_scan(换个名字)话题名发布出去

sensor_scan_generation.launch

订阅/state_estimation/registered_scan,执行 laserCloudAndOdometryHandler,并发布state_estimation_at_scansensor_scan

订阅state_estimation以及registered_scan,执行回调函数。

发布/state_estimation_at_scan(等同于/state_estimation)

发布/sensor_scan(世界坐标系下的点云转换至传感器Lidar坐标系下)