基于turtlebot3仿真全局路径规划算法替换(Dijkstra——A*)

一、安装navigation包

Ubuntu20.04安装Navigation功能包

安装后才可以运行move_base

move_base包默认全局路径规划算法为Dijkstra算法

二、替换全局路径规划A*算法

1.修改move_base.launch文件

以turtlebot3为例

在其move_base.launch文件中添加如下内容

<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.修改navigation包中的planner_core.cpp文件

修改内容如下

其中

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

此句为false,则使用A*算法,反之使用dijkstra算法。

下面两句用来验证使用的算法是dijkstra还是A*。

ROS_INFO("use_dijkstra");

ROS_INFO("use_A_star");

修改完代码之后,需要删除其中的build和devel文件,再重新用catkin_make编译。

3.将修改后的global_planner包复制到turtlebot3工作空间中

再删除其中的build和devel文件,再重新用catkin_make编译

至此文件代码修改完毕

三、运行地图进行仿真

1.创建地图方法

ROS:gazebo创建仿真地图,turtlebot3加载仿真地图进行建图,生成yaml和pgm地图信息

2.往turtlebot3中导入地图

在如下路径中将自己建立的地图.pgm和.yaml文件复制进去

3.运行地图及模型

roslaunch turtlebot3_gazebo turtlebot3_world.launch

4.运行launch文件进行仿真 

roslaunch turtlebot3_navigation turtlebot3_navigation.launch

仿真效果如下

A*算法

 dijkstra算法

参考博客:

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

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值