在AMCL/Gazebo中增加Ground Truth Pose作为验证

写在前面:本文为原创,如需转载请注明出处(https://www.jianshu.com/p/7858b30a50cd)。欢迎大家留言共同探讨,有误的地方也希望指出。另如果有好的SLAM、ROS等相关交流群也希望可以留言给我,在此先谢过了。
参考:
1: How To: Get ground truth pose data in ROS Gazebo
2: 代码
3: Rviz: fixed frame [world] does not exist

1 目标

在Gazebo中可以使用模拟的机器人和预先建立好的地图进行AMCL的定位算法模拟。但普通的AMCL是没有机器人的实际位置输出,仅有机器人的位姿输出,难以获得机器人在定位过程中的误差变化然后进行相应优化。因此需要增加一个topic来显示机器人在该地图上的真实位置,即Ground truth pose信息。

2 实现

根据1中的目标,经过一系列查找发现参考1中的文章提供了靠谱的解决方案,即通过在URDF文件中增加一个Plugin,发布新的地图topic /ground_truth/state。 具体的代码在参考2中,复制后添加在所用的URDF文件末尾即可。其会发布一个world frame和base_link的转换。
调整好后,gazebo与amcl,在rviz中出现如下故障:

9776445-267e0b0e6c079ce7.png
rviz截图

发现并未有world frame。通过 参考3,想到解决方向:建立新的static_transform_publisher。根据现在情况,需要的是world->bas_link体系的坐标转换,因此根据实际情况添加world->map的坐标转换。

<node pkg="tf" type="static_transform_publisher" name="world_map" 
    args="0.0 0.0 0.0 0.0 0.0 0.0 /world /map 40" />

运行后,可以正确得到1中要求的目标。


9776445-d13a7f3915895611.png
带有ground truth的amcl定位

如图,蓝色为机器的Ground truth,红色箭头为机器人的amcl定位位姿结果。

ps. 因给出的默认Ground truth显示模式是用红色的里程计模型显示的,推荐改为其他颜色,与机器人的amcl_pose结果作为区分比对。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值