ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

这篇具有很好参考价值的文章主要介绍了ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前提:需要安装navigation包,才可以运行move_base。

move_base包默认算法:

  1. 全局路径规划:Dijkstra;
  2. 局部路径规划:航迹推算;

一.move_base路径规划包内容

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

 二.更换全局路径规划算法(A*、Dijkstra、DWA)

A*、Dijkstra属于全局路径规划、DWA属于局部路径规划。

1、move_base.launch

move_base.launch文件需要添加以下内容

    <!--加载A star、Dijkstra算法-->
    <param name="base_global_planner" value="global_planner/GlobalPlanner"/>
    <param name="planner_frequency" value="1.0" />
    <param name="planner_patience" value="5.0" />
    <!--加载DWA算法-->
    <param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" />

整体的move_base.launch文件内容如下(其中turtlebot3_navigation内容需要修改为对应自己的包):

<launch>
  <!-- Arguments -->
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="cmd_vel_topic" default="/cmd_vel" />
  <arg name="odom_topic" default="odom" />
  <arg name="move_forward_only" default="false"/>

  <!-- move_base -->
  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <!--加载A star算法-->
    <param name="base_global_planner" value="global_planner/GlobalPlanner"/>
    <param name="planner_frequency" value="1.0" />
    <param name="planner_patience" value="5.0" />
    <!--加载DWA算法-->
    <param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" />
    <!---->
    <rosparam file="$(find turtlebot3_navigation)/param/costmap_common_params_$(arg model).yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find turtlebot3_navigation)/param/costmap_common_params_$(arg model).yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find turtlebot3_navigation)/param/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find turtlebot3_navigation)/param/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find turtlebot3_navigation)/param/move_base_params.yaml" command="load" />
    <rosparam file="$(find turtlebot3_navigation)/param/dwa_local_planner_params_$(arg model).yaml" command="load" />
    <remap from="cmd_vel" to="$(arg cmd_vel_topic)"/>
    <remap from="odom" to="$(arg odom_topic)"/>
    <param name="DWAPlannerROS/min_vel_x" value="0.0" if="$(arg move_forward_only)" />
  </node>
</launch>

2、修改planner_core.cpp文件

 planner_core.cpp文件是navigation包中的文件,其具体目录如下(对应自己的路径):

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

 修改如下内容:

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

private_nh.param("use_dijkstra", use_dijkstra, false);

此句true为使用dijkstra算法,false为使用A star算法。

ROS_INFO("use_dijkstra");
ROS_INFO("use_A_star");

此句可以在运行路径规划时,查看自己使用的是dijkstra还是A star。

注意:修改完代码之后,需要删除build和devel文件,重新catkin_make编译

3、效果展示

默认算法:

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

 dijkstra算法:

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

A star算法:

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

 验证算法:

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

4、展望(未来需要注意问题)

1、A*算法并不是最优路径(如上),也是会出现问题(如下),还是需要优化。

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

 出现上述原因是因为膨胀半径设置问题,需要自己设置,最简单方法是将膨胀半径设置为机器人外切圆。

2、使用的turtlebot3机器人在运行时会出现倒着走的现象。

解决:将base_local_planner_params.yaml中holonomic_robot参数改为false;

holonomic_robot参数意义:代表是否是全向机器人。

3、未来添加新的路径规划算法也可以如此加入move_base中。

比如安装TEB包:ROS-melodic:源码安裝teb_local_planner算法、替换DWA算法_ros teb源码编译_Charlesffff的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-476438.html

到了这里,关于ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ros中实现全局/局部避障算法的添加与rviz中规划路径的显示(上)

    目录 前言 一、命令行 二、所用到的launch文件、yaml文件等 1.map1_mrobot_laser_nav_gazebo.launch 2.gmapping_demo.launch 3.gmapping.launch 4.move_base.launch 5.nav03_map_server.launch 6.mrobot_teleop.launch 三、rviz中添加path插件 总结 最近在做ros相关的作业,故写下本文留做参考以便日后再次使用或理解,如有

    2024年02月01日
    浏览(39)
  • 基于STM32F103的树莓派ROS小车——全局路径规划之Dijkstra算法

    Dijkstra Dijkstra算法概念: 基本思想:由近到远把所有点的最短路径算出来。 算法解析:从起点向四周辐射,由近到远一层一层遍历所有的点,直到包含目标点所在层级。然后将所有可行路径进行计算比较,筛选出绝对最佳路径。 优点:最终得到的路径一定是最佳路径。 缺点

    2024年02月15日
    浏览(39)
  • 模拟退火-粒子群全局路径规划+DWA局部路径规划

    整理了一个路径规划demo,当然图是改进的效果 demo分别有对应的开源 可以在网上搜到,我觉得已经介绍的很详细了,所以不做过多的解释,传送门在下面 ( 写的不好 轻喷 ) 粒子群本质是参数寻优问题,也就是说在运用到路径规划这块需要对规划的路径进行模型建立,这块

    2024年02月06日
    浏览(43)
  • 【路径规划】全局路径规划算法——蚁群算法(含python实现)

    路径规划与轨迹跟踪系列算法 蚁群算法原理及其实现 蚁群算法详解(含例程) 图说蚁群算法(ACO)附源码 蚁群算法Python实现 蚁群算法(Ant Colony Algorithm, ACO) 于1991年首次提出,该算法模拟了自然界中蚂蚁的觅食行为。蚂蚁在寻找食物源时, 会在其经过的路径上释放一种信息

    2024年01月18日
    浏览(49)
  • 【路径规划】全局路径规划算法——Dijkstra算法(含python实现 | c++实现)

    路径规划与轨迹跟踪系列算法学习 最短路径算法-迪杰斯特拉(Dijkstra)算法 迪杰斯特拉dijkstra算法的python实现 Python实现迪杰斯特拉算法 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个节点遍历其余各节点的最短路

    2024年02月08日
    浏览(48)
  • ROS导航实现之路径规划

      move_base 功能包提供了基于动作(action)的路径规划实现,move_base 可以根据给定的目标点,控制机器人底盘运动至目标位置,并且在运动过程中会连续反馈机器人自身的姿态与目标点的状态信息,move_base主要由全局路径规划与本地路径规划组成。   move_base已经被集成到了

    2024年02月08日
    浏览(33)
  • ROS中实现A*路径规划

    学习A*路径规划算法,优化启发函数,并在ROS中进行测试。 A star算法教程 源码地址:https://gitcode.net/VOR234/aster 安装Linux系统,建议Ubuntu18.04; 安装ROS环境并学习其基本操作; 查找A 路径规划资料,学习并熟知A 路径规划算法; 对比赛中所提供A*算法的启发函数AstarPathFinder::ge

    2024年01月16日
    浏览(33)
  • 47.在ROS中实现global planner(3)- 使用A*实现全局规划

    接着之前45.在ROS中实现global planner(1)和46.在ROS中实现global planner(2)的铺垫,在ROS中实现 AStar Global Planner 照着之前的模板,修改下名称 再替换下所有的 sample_global_planner – astar_global_planner 基于这个我们新增之前的 astar 算法 拷贝astar_planner.h 和astar_planner.cpp 分别至 include 和

    2024年02月12日
    浏览(47)
  • 【ROS-Navigation】—— Astar路径规划算法解析

        最近在学习ROS的navigation部分,写些东西作为笔记,方便理解与日后查看。本文从Astar算法入手,对navigation源码进行解析。 PS:ros navigation源码版本https://gitcode.net/mirrors/ros-planning/navigation/-/tree/noetic-devel     对于Astar算法,想必大家都非常熟悉了。具体算法原理就不

    2024年01月18日
    浏览(48)
  • 【ROS-Navigation】—— DWA路径规划算法解析

        最近在学习ROS的navigation部分,写些东西作为笔记,方便理解与日后查看。本文从Astar算法入手,对navigation源码进行解析。 PS:ros navigation源码版本https://gitcode.net/mirrors/ros-planning/navigation/-/tree/noetic-devel DWA具体的算法原理在之前的博客(见自动驾驶路径规划——DWA(动态

    2023年04月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包