当前位置: 代码迷 >> 综合 >> 利用Robosense 16线雷达在自己机器人上跑cartographer 2D(二)
  详细解决方案

利用Robosense 16线雷达在自己机器人上跑cartographer 2D(二)

热度:34   发布时间:2023-10-22 03:41:51.0

大概流程走完,其实还是有点懵逼的,下面就官方文档,讨论下细节,要是我自己没注意到的点。

Validate your bag

如果是准备跑自己的或者别人的bag包,这一步是很有必要的,可以从中获得相关消息的topic和frame_id,这个在填写lua文件和launch 文件的topic重映射时可以用到。

首先要在工作目录 source 下,然后执行命令:

source devel_isolated/setup.bash
cartographer_rosbag_validate -bag_filename your_bag_path.bag

lua文件的配置

lua文件定义在src/cartographer_ros/cartographer_ros/configuration_files 

安装在install_isolated/share/cartographer_ros/configuration_files/.

可以通过copy然后再修改:

3D:

cp install_isolated/share/cartographer_ros/configuration_files/backpack_3d.lua install_isolated/share/cartographer_ros/configuration_files/my_robot.lua

2D:

cp install_isolated/share/cartographer_ros/configuration_files/backpack_3d.lua install_isolated/share/cartographer_ros/configuration_files/my_robot.lua

num_laser_scans:二位激光的数量

num_point_cloud:三维激光的数量

还有个num_multi_echo_laser_scans:大概和laser_scan差不多,我没用到过。

还有一个全局变量TRAJECTORY_BUILDER_3D.num_accumulated_range_data or TRAJECTORY_BUILDER_2D.num_accumulated_range_data

大概是表征激光雷达的扫描一幁需要分多少个消息传出来。

lua文件里面的具体参数,这里暂时不做详细介绍,可以查看官方文档。

除此之外,还需要提供map_frame、tracking_frame、publish_frame、odom_frame之间的tf转化关系,

这里可以通过自己发布/tf消息,也可以通过加载urdf或者xacro文件,然后利用robot_state_publisher节点来发布tf tree。

常用的做法就是利用urdf文件,这里可以cp然后根据自己机器人的传感器相对位置关系进行配置。

 

launch文件,会调用不同的节点。这里需要分清楚,将你的需求和launch文件对应。

cp install_isolated/share/cartographer_ros/launch/backpack_3d.launch install_isolated/share/cartographer_ros/launch/my_robot.launch
cp install_isolated/share/cartographer_ros/launch/demo_backpack_3d.launch install_isolated/share/cartographer_ros/launch/demo_my_robot.launch
cp install_isolated/share/cartographer_ros/launch/offline_backpack_3d.launch install_isolated/share/cartographer_ros/launch/offline_my_robot.launch
cp install_isolated/share/cartographer_ros/launch/demo_backpack_3d_localization.launch install_isolated/share/cartographer_ros/launch/demo_my_robot_localization.launch
cp install_isolated/share/cartographer_ros/launch/assets_writer_backpack_3d.launch install_isolated/share/cartographer_ros/launch/assets_writer_my_robot.launch

官网给了五个launch,这里以3D为讨论,需要2D,copy时候换下即可。

第一个用于实时在线跑SLAM,用传感器真实数据。

第二个使用数据包离线跑。需要提供参数bag_filename;

第三个和第二个很接近,不过第三个建图速度会相对快一点。

第四个和第二个也很接近,不过不是用来建图,用来定位,需要提供之前建图的.bpstream文件作为load_state_filename.

第五个用来提取.bpstream文件数据。第四个和第五个我暂时还没接触,等有接触在补充。

 

  相关解决方案