ros全局路径规划分享
2017-05-27 11:28
134 查看
move_base如何调用全局路径规划
在move_base.cpp中使用planThread函数生成全局路径规划,是一个独立运行的线程.在函数planThread中调用makePlan,在makePlan中调用planner_的makePlan方法.planner_的初始化在move_base中的133行,和字符串global_planner的内容有关.
global_planner的内容是通过参数base_global_planner的内容有关,由参数决定全局路径规划使用的包(现在使用的是最新的global_planner/GlobalPlanner)
planner_core全局路径规划的核心
makePlan方法声明在planner_core.cpp的第222行,把传入的世界地图坐标全部转换成地图坐标后调用planner_->calculatePotentials(costmap_->getCharMap(), start_x, start_y, goal_x, goal_y,nx * ny * 2, potential_array_);迪杰斯特拉的实现
如果外部参数use_dijkstra为true则planner_->calculatePotentials调用dijkstra.cpp中的函数.这里会把potential_array_中所有像素点赋为最大值,在potential_array_中从起点一层一层的添加”等代价”的点,起点代价为0,中间每相差一个像素则代价加一,直到超过nx*ny*2这个最大寻找值或者找到goal点.
超过会返回失败,找到则返回新生成的potential_array_代价地图.
A*的实现
A*的实现主要是通过堆(最小二叉树)实现的.1.初始化把代价地图各个像素对应的分数赋值为最大值,同时在堆queue中加入原点.
2.获得二叉树树顶的点,修改该像素点对应的分数,并且在树中删除它,把它周围4个点和点的分数加入树中.
3.判断树顶点是不是终点,是则完成,不是则继续第二部.
生成路径
获得各个像素点对应的分数,从终点找附近评分最小的像素,一直循环直到找到起点.这条连线就是全局路径.相关文章推荐
- 接收导航包全局规划路径话题
- 【ROS】移动机器人导航仿真(3)——定位(amcl)和路径规划(move_base)
- ROS学习(五)导航、路径规划、SLAM
- ROS探索总结(十四)——move_base(路径规划)
- 让ros机器人行走、建图、路径规划、定位和导航
- ROS源码解读(一)--局部路径规划
- ROS模拟器-第0篇-10分钟上手ROS仿真机器人路径规划与障碍物避障
- 基于电子海图的水面无人艇全局路径规划
- 全局路径规划和局部路径规划的区别
- ROS探索总结(十三)(十四)(十五)——导航与定位框架 move_base(路径规划) amcl(导航与定位)
- ros:global_planner 整体解析 解释了全局规划的多种实现原因(挺有用)
- ROS探索总结(十四)——move_base(路径规划)
- 为ROS navigation功能包添加自定义的全局路径规划器(Global Path Planner)
- ROS全局路径
- ROS探索总结(十四)——move_base(路径规划)
- move_base的全局路径规划代码研究
- ROS探索总结(十四)——move_base(路径规划)
- ROS探索总结(十四)——move_base(路径规划)
- 激光SLAM导航系列(四)全局路径规划
- 导航、路径规划、SLAM