zoukankan      html  css  js  c++  java
  • ROS机器人路径规划介绍--全局规划

    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

  • 相关阅读:
    七、元素操作
    深入解读saltstack的安装及配置1
    Python3.x和Python2.x的区别
    用python3破解wingIDE
    saltstack配置安装的一些关键步骤及安装时各种报错的分析
    中文+django1.9+python3.5一些注意点
    整合git与wingIDE(代码下载)
    python代码编程规范
    centos7虚拟机无法上网的解决办法
    python开源包提交到pypi社区
  • 原文地址:https://www.cnblogs.com/kuangxionghui/p/8423507.html
Copyright © 2011-2022 走看看