<1>问题描述
前言-仿真实验需求:获取小车的全局坐标系下的位姿信息,因此使用gmapping建图,并使用地图服务调用发布,自己写了个节点将map坐标系添加到现有的TF树上,最终TF树见最后截图。
进入正题,想直接搭配b站赵虚左老师的教程gazebo生成的模型,学习教程时候没注意到警告,现在还债(警告见下图),连带引发的问题为:终端输入 rosrun tf tf_echo odom base_link 时候直接断断续续收不到,分析后发现是map odom base_footprint这些坐标系发布的频率不一致导致的,比如odom更新快,base_footprint还没更新就会获取不到相对位姿的情况,上解决方案。
<2>解决方案:结合网上的通用方法后有所改善但还是会零零散散出现上述报错
亲测改善成功方案如下:
关键步骤1:launch中增加下段代码,保持频率10000hz一致
关键步骤2:其次 move.xacro文件修改下面三行
完整代码段如下:
transmission_interface/SimpleTransmission
hardware_interface/VelocityJointInterface
hardware_interface/VelocityJointInterface
1
Debug
false
/
1
true
false
true
1.0
true
left2link
right2link
${base_radius * 2}
${wheel_radius * 2}
1
30
1\.8
cmd_vel
odom
odom
base_footprint
world
<3>运行效果:最后就可以安稳的1s一次的获取小车相对于odom、map的相对位姿信息了
如下图所示,终端输入rosrun tf tf_echo map base_footprint ,当前小车没有移动所以为0