零和负目标值问题

Issue with zero and negative goal values

我正在按照 http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals 的示例使用导航堆栈。如果我将目标位置设置为正值,乌龟会按预期移动,但如果将其设置为零或负值,乌龟会在同一位置旋转,并且 returns 消息:

 “[ERROR] [1433622909.572352221]: Aborting because a valid plan could not be found. 
Even after executing all recovery behaviors.”

导航是否只接受位置 MoveBaseGoal 组件的正值?

原因可能是您的地图只有正坐标。所以机器人显然找不到路线,因为目标不在地图上。

或许可以使用 rviz 查看您的地图。

Turtlesim 将始终在该位置 return 正值,因为它的 (0,0) 位于左下角,并且通过向上和向右移动它会增加坐标值。 为了允许导航堆栈在负面位置处理 Turtlesim(并且相对容易进行测试)我建议修改文件 turtleOdometry.cpp

它为里程计和其他一些东西生成 tf。我们要做的就是改变回调函数:poseCallback(..): msg->msg-x>x by msg->x-OFFSET_X and msg-> and -OFFSET_Y孔文件。 OFSSET 为正值,我将偏移量设为 5,rviz 中的乌龟几乎出现在世界框架 1.1 中 您将能够测试导航堆栈。

那么设置global_costmap的大小和原点很重要! 您需要修改文件: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 此致,