双机cartogtapher建图
最近在做硕士毕设的最后一个实验,其中涉及到多机建图,经过调研最终采用cartographer建图算法,其中配置多机建图的文件有些麻烦,特此博客以记录
非常感谢我的同门 ”叶少“ 山上的稻草人-CSDN博客的帮助,经过他的点拨,第二天终于将搞明白了如何修改frame_id使得多机启动后tf不冲突,从而实现多机建图
本文不讲原理(因为我目前也不懂很多哈哈哈),只记录如何修改launch等文件实现多机使用cartographer建图不冲突
主要就是修改 frame_id,frame_id是TF坐标的参考
要修改的地方主要在:
无人车(或无人机等)的 urdf 文件
无人车启动相关launch 启动文件
底盘控制 launch 文件
描述 TF 关系的 launch文件
雷达launch文件
cartographer使用到的 lua 文件
PS:建议都把源文件复制一份,重新改名,这样能保存源文件,不至于修改后回不到开始原状态了
目录
一、修改cartographer的launch文件
二、修改无人车相关launch文件
三、修改后的TF树
四、双机运行展示效果
一、修改cartographer的launch文件
该文件名为:revo_lds.lua,路径为 /opt/ros/melodic/share/cartographer_ros/configuration_files
建议复制一份修改名字,我这里复制了一份,重命名为 hc_revo_lds.lua
修改如下三个地方
tracking_frame:一般设置为发布频率最高的传感器的frame_id
published_frame:cartographer发布的tf树最后将指向 published_frame,这个必须设置正确,否则TF树连接不成功,一般设置为地盘的 link name
为了区别其他的无人车,我这里加了前缀 “car1/”
odom_frame:odom_frame与实际的里程计话题及消息没有什么关系,只是cartographer的一个中间话题,如果将 provide_odom_frame 设置为 true,则 TF 为 map -> odom_combined1 -> car1/base_footprint
如果将 provide_odom_frame 设置为 false,则 TF 为 map -> car1/base_footprint
这取决于是否需要 cartographer 来提供 odom信息
PS:修改建图 launch文件
如果第一步你修改了文件名,则这里需要修改一下
二、修改无人车相关launch文件
-
修改无人车底盘 frame_id
hc_base_serial.launch
-
修改无人车的 urdf 文件 hc_mini_mec_robot.urdf
主要修改 link 的名字
hc_mini_mec_robot.urdf
-
修改 TF 坐标变化的 launch 文件,替换使用到的 URDF 文件名
hc_robot_model_visualization.launch
-
在 turn_on 功能包中修改用于建图、导航的 TF 关系与小车外形 launch文件(跟你自己的对应上即可)hc_turn_on_wheeltec_robot.launch
-
修改雷达 launch 文件 hc_rplidar.launch,frame_id 加上前缀即可
-
修改 mapping 建图 launch文件 ,修改几个launchw文件,添加 group 命名空间,与其他智能体区分
hc_mapping.launch
三、修改后的TF树效果
所有的TF树
无人车1的TF树
无人车2的TF树(只改了无人车1,所以无人车2不动它了)
四、双机运行展示效果
无人车1
无人车2