我正在关注带有导航堆栈的http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals示例。如果我将目标位置设置为正值,则乌龟会按预期移动,但如果将其设置为零或负值,则乌龟在同一位置旋转,并返回消息:
“[ERROR] [1433622909.572352221]: Aborting because a valid plan could not be found.
Even after executing all recovery behaviors.”
导航是否只接受位置MoveBaseGoal组件的正值?
答案 0 :(得分:1)
原因可能是您的地图只有正坐标。所以机器人显然无法找到路线,因为目标不在地图上。
也许可以使用rviz查看你的地图。
答案 1 :(得分:0)
Turtlesim将始终在该位置返回正值,因为它的(0,0)位于左下角,向上和向右移动会增加坐标值。 要允许导航堆栈处理负面位置的Turtlesim(并且相对容易做测试)我建议修改文件turtleOdometry.cpp
它为odometry和其他一些东西生成tf。我们要做的是更改回调函数:poseCallback(..):msg-> msg-x> x by msg-> x - OFFSET_X和msg->和整个孔文件中的-OFFSET_Y。使用OFSSET的正面值,我把5放到偏移处,而rviz中的乌龟几乎出现在世界框架1.1中 随着您将能够测试导航堆栈。
然后设置global_costmap的大小和来源很重要! 您需要修改File:move_base.launch
<rosparam file = "$ (find <blah>) / global_costmap_params.yaml" command = "load" />
<Param name = "global_costmap / width" value = "20.0" />
<Param name = "global_costmap / height" value = "20.0" />
<Param name = "global_costmap / origin_x" value = "- 10.0" />
<Param name = "global_costmap / origin_y" value = "- 10.0" />
该顺序为10,10,0,0的默认值。 有关详细信息,请阅读http://wiki.ros.org/costmap_2d 的问候,