ROS全局定位失效时的解决办法

方法一

global_localization (std_srvs/Empty):通过调用该服务将初始化全局定位,将所有的粒子重新打散随机的分散在地图的空闲地方,可以通过以下命令来调用该服务,当调用后可以发现所有的粒子被重新打散随机分布在地图上,然后使用键盘遥控机器人旋转,这样可以自动重新对机器人进行定位

rosservice call /global_localization "{}" 

request_nomotion_update (std_srvs/Empty):该服务是手动的来更新粒子并发布新的粒子,可以使用如下命令来调用服务执行更新粒子的操作,该服务一般需要多次调用才能逐渐看到粒子收敛的效果:

rosservice call /request_nomotion_update "{}"

清理代价地图

rosservice call / move_base / clear_costmaps“{}”

机器人再进行旋转重定位


方法二

全局定位失效时,运行

rosparam dump amcl.yaml /amcl/

修改amcl.yaml文件,将参数"initial_pose_x"、“initial_pose_y”、“initia;_pose_a”注释掉。

<!--param name="initial_pose_x"            value="0.0"/-->
<!--param name="initial_pose_y"            value="0.0"/-->
<!--param name="initial_pose_a"            value="0.0"/-->

重新启动机器人

 

你可能感兴趣的:(ROS)