ros全局路径规划分享
来源:互联网 发布:qq陌生群发软件 编辑:程序博客网 时间:2024/06/05 09:29
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全局路径规划分享
- 为ROS navigation功能包添加自定义的全局路径规划器(Global Path Planner)
- ROS(indigo)RRT路径规划
- ROS(indigo)RRT路径规划
- ROS源码解读(一)--局部路径规划
- 全局路径规划和局部路径规划的区别
- ROS学习(五)导航、路径规划、SLAM
- 让ros机器人行走、建图、路径规划、定位和导航
- 激光SLAM导航系列(四)全局路径规划
- 全局规划
- ros:global_planner 整体解析 解释了全局规划的多种实现原因(挺有用)
- ros的全局把握
- ROS模拟器-第0篇-10分钟上手ROS仿真机器人路径规划与障碍物避障
- ROS探索总结(十四)——move_base(路径规划)
- ROS探索总结(十四)——move_base(路径规划)
- ROS探索总结(十四)——move_base(路径规划)
- ROS探索总结(十四)——move_base(路径规划)
- ROS机器人Diego 1#制作(二十三)搭载EAI F4激光雷达move_base路径规划
- 实现一个简单的 shared_ptr
- C++大全、C语言大全pdf,从C语言起源讲起!还有网盘链接!
- Vue组件开发实践
- va_list实现不定参数C函数
- Linux Shell高级技巧
- ros全局路径规划分享
- 企业自颁布服务器证书的有效性验证(C#为例)
- iPhone网络编程初体验
- 原码、反码、补码详解 及 >> 和 >>>的区别
- oracle latch _spin_count
- docker "no such file or directory"错误的一个解决方案
- Vue2.0之去掉组件click事件的native修饰
- SQL Server XML 数据库配置
- 【Java】自动类型转换规则