前言:csdn上许多用move_base循环发送目标点的程序都是发送过去之后进行时间等待,根本就不判断是否到达目标点,这样就会存在很多问题,如果在你规定的时间内没达到目标点,那任务岂不是就失败了,显然这不是正确的程序。
0:本程序已经打包成功能包,大家可以直接下载百度网盘链接,然后将其中json目录下的goal.json文件中四个点的坐标按照自己的要求进行修改,同时修改move_base_goalsending.cpp第28行读取json的路径,再进行catkin_make编译,source后用rosrun move_base_send_goal move_base_goalsending命令运行即可。运行时需要先启动move_base。
move_base_send_goal 提取码:pvswhttps://pan.baidu.com/s/1jO3VFD13WvOBoqQiBrYlUA
1.本程序基于ros里的action机制进行编写,熟悉move_base源码的同学应该知道,move_base实际就是一个actionlib,有关action的机制大家可以参考赵虚左老师的课程文章,链接如下。
action机制原理http://www.autolabor.com.cn/book/ROSTutorials/di-7-zhang-ji-qi-ren-dao-822a28-fang-771f29/1001-actiontong-xin/1011.html2.move_base实际就是一个类型为<move_base_msgs::MoveBaseAction>的actionlib::SimpleActionClient,有关actionlib::SimpleActionClient类下的一些功能函数我们可以参考这篇文章。