ROS机器人路径规划算法主要包括2个部分:1)全局路径规划算法;2)局部路径规划算法;

一、全局路径规划 global planner

ROS 的navigation官方功能包提供了三种全局路径规划器:carrot_planner、global_planner、navfn,默认使用的是navfn,

其中:

1、carrot_planner

参考ROS wiki :http://wiki.ros.org/carrot_planner

简单的路径规划器,优点是:是即使规划的目标点在障碍物上,也可以执行。机器人会向着目标点前进,避开障碍物尽量靠近目标点。

2、navfn:一个基于grid的全局规划器,navfn提供了一个快速的内插导航功能,可用于为移动基础创建计划。计划者假定一个圆形机器人,并在成本地图上运行,以从一个起点到一个网格的终点,找到一个最小的成本计划。导航功能是用Dijkstra的算法计算出来的,但对启发式的支持也可能在不久的将来添加。navfn还为navfn计划器提供了一个ROS包装器,它遵循navcore::在navcore中指定的BaseGlobalPlanner接口。

参考:http://wiki.ros.org/navfn

缺点是默认使用Dijkstra算法,对A*算法支持不好。

3、global_planner:替代navfn,支持A*算法。这个包提供了一个快速的、内插式全局规划器的实现。这个类遵循navcore::在navcore包中指定的BaseGlobalPlanner接口。它是作为一个更灵活的替代品来替代navfn。

参考:http://wiki.ros.org/global_planner

4、如何使用新的全局规划器。

目前ros默认使用的是navfn的全局规划器,使用Dijkstra的算法,如果需要使用A*算法,则需要更改全局路径规划器。

具体是在move_base包的launch文件里面更改:

<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<param name="base_global_planner" value="global_planner/GlobalPlanner"/>

move_base将调用global_planner规划器进行路径规划。参数设置:

如图所示, 将use_dijkstra算法设置false就是使用A*算法。

也可以使用自己写的路径规划器进行路径规划,参考:

https://community.bwbot.org/topic/43

http://blog.csdn.net/heyijia0327/article/details/45030929

ROS机器人路径规划介绍--全局规划的更多相关文章

  1. 【2018.04.19 ROS机器人操作系统】机器人控制:运动规划、路径规划及轨迹规划简介之一

    参考资料及致谢 本文的绝大部分内容转载自以下几篇文章,首先向原作者致谢,希望自己能在这些前辈们的基础上能有所总结提升. 1. 运动规划/路径规划/轨迹规划的联系与区别 https://blog.csd ...

  2. ros局部路径规划-DWA学习

    ROS的路径规划器分为全局路径和局部路径规划,其中局部路径规划器使用的最广的为dwa,个人理解为: 首先全局路径规划会生成一条大致的全局路径,局部路径规划器会把全局路径给分段,然后根据分段的全局路径的 ...

  3. V-rep学习笔记:机器人路径规划1

     Motion Planning Library V-REP 从3.3.0开始,使用运动规划库OMPL作为插件,通过调用API的方式代替以前的方法进行运动规划(The old path/motion ...

  4. 机器人路径规划其二 A-Star Algorithm【附动态图源码】

    首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...

  5. V-rep学习笔记:机器人路径规划2

    路径规划问题是机器人学研究的一个重要领域,它是指给定操作环境以及起始和目标的位置姿态,要求选择一条从起始点到目标点的路径,使运动物体(移动机器人或机械臂)能安全.无碰撞地通过所有的障碍物而达到目标位置 ...

  6. 机器人路径规划其一 Dijkstra Algorithm【附动态图源码】

    首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...

  7. ROS机器人操作系统相关书籍、资料和学习路径

    作者:Top Liu链接:https://zhuanlan.zhihu.com/p/30391098来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文是易科机器人实验 ...

  8. ros机器人之小乌龟仿真-路径记录

    ------------恢复内容开始------------ 通过自己不断地摸索,对ros系统有了一定的了解,首先装系统,这一过程中也遇到了很多问题,但通过不断地尝试,经过一天一夜的倒腾,总算是把系统 ...

  9. 制作自己的ros机器人(navigaion)前提--22

    摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/  一.要求: 1.大家已经对ROS的基本概念(进程间通讯topic service 数据类型 m ...

随机推荐

  1. c# Winform 继承窗体 无法拖动修改控件大小

    问题描述: 一个窗体集成父窗体,发现无法直接拖动修改的控件,比如修改大小等 特征: 不禁使父窗体控件,就算新加一个控件也会这样:鼠标放到控件移动手方块上会出现一个“继承的控件”的tooptip, 异常 ...

  2. PDF怎么转换为CAD文件?这两种方法你的会

    在日常的办公中,我们最常见的文件格式就是PDF格式的,因为PDF文件的安全性是比较高的,可以防止不小心触碰到键盘修改文件内容,而且PDF文件便于进行文件的传输.但是有时候也需要将PDF转换成CAD,那 ...

  3. uni-app条件编译:#ifdef #ifndef #endif

    语法: // #ifdef %PLATFORM% 这些代码只在该平台编译 // #endif #ifdef :      if defined  仅在某个平台编译 #ifndef :     if n ...

  4. ES6复制拷贝数组,对象,json数组

    扩展运算符的应用spread打散数组[...] (1)复制数组 数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组. const a1 = [1, 2]; ...

  5. 021.Docker mysql启动时执行初始化sql

    1.拉取Mysql镜像 # docker pull mysql:5.7 2.检查mysql镜像 # docker inspect mysql:5.7 ## "Entrypoint" ...

  6. linux用户管理-用户的基本操作

    目录 linux用户管理-用户的基本操作 用户相关的命令 linux用户管理-用户的基本操作 什么是用户 用户指能够正常登录linux或windows系统 区别 本质都是登录系统的,只不过Linux支 ...

  7. mysql connector c++ 1.1 API初步体验

    mysql connector c++ 1.1 API初步体验 1,常用的头文件 #include <mysql_connection.h> #include <mysql_driv ...

  8. linux修改权限

    修改system目录(包括子目录)的所有者和组 sudo chown -R seven:seven system

  9. C C++ ARM X86 函数 方法 的调用约定

    参考:https://bbs.pediy.com/thread-224583.htm 整理成表格方便查询 cdecl(C规范), stdcall(WinAPI默认), fastcall, ATPCS( ...

  10. 自定义vue的loading插件

    在一般的vue项目中,都会用到Loading或者Alert之类的弹窗浮层,而他们是一种比较高频率出现的组件. 一般情况下,我们都会去直接import该组件,然后直接以标签的形式引用进去当前页面组件中, ...