ROS学习记录(一)全局规划器Plugin插件

目录

一、move_base节点及插件

二、Plugin插件添加

 1.插件注册

 2.编译

3.文件描述文件

4.注册插件到ROS包系统

 5.在ROS包系统中查询可用插件

 6.在launch文件中的movebase添加新的全局规划器

三、测试插件功能


前言:最近都在学习ros和路径规划部分的内容,发现这部分的内容不知道如何进行学习,在B站发现小巨同学这位up主所做的内容可以作为自己入门的基础,遂写改变博客来记录一下自己的学习过程。

遇到这个问题的初衷是看了小巨同学一个视频

自定义全局规划器

关于插件具体的介绍,可以参考roswiki中的具体介绍pluginlib - ROS Wiki

一、move_base节点及插件

move_base是Navigation功能包中的核心节点,它在导航的任务中处于支配地位,其他的一些package都是它的插件:

这里以小巨同学改进的A*算法作为示例进行讲解

 

二、Plugin插件添加

首先需要具有mbot的仿真环境

主要是mbot_description,mbot_gazebo,mbot_navigation三个包

 接着在工作空间下载改进A*算法源码:https://github.com/Grizi-ju/better_astar_global_planner

git clone  https://github.com/Grizi-ju/better_astar_global_planner

 

然后在demo1_ws的目录下进行编译

 

 1.插件注册

在src/better_astar.cpp文件中添加插件注册指令

PLUGINLIB_EXPORT_CLASS(BAstar_planner::BAstarPlannerROS, nav_core::BaseGlobalPlanner)

 2.编译

在CMakeLists.txt中添加库文件

3.文件描述文件

插件描述文件是一个XML文件,用于以机器可读格式存储有关插件的所有重要信息。它包含有关插件库的信息,插件的名称,插件的类型等。需要创建一个新文件并将其保存在包中的某个位置(如rrt_ star_global_planner包),并给它一个名称,如本例中的better_astar_global_planner_plugin.xml


 文件内容如下:

 <library path="lib/libbetter_astar_global_planner_lib">
  <class name="BAstar_planner/BAstarPlannerROS" type="BAstar_planner::BAstarPlannerROS" base_class_type="nav_core::BaseGlobalPlanner">
    <description>This is the better A* global planner plugin by xiaoju.</description>
  </class>
 </library>

第一行  <library path="lib/libbetter_astar_global_planner_lib">指定插件库的路径。路径是lib/libbetter_astar_global_planner_lib

第2-3行指定了实现插件的类的名称,例子中是BAstar_planner/BAstarPlannerROS,而base_class_type指定了实现插件的基类的名称,例子中是nav_core::BaseGlobalPlanner

第4行<description> 标记提供关于插件的简要说明。(这个无关紧要)
 

4.注册插件到ROS包系统

 在package.xml中指向插件描述文件

 此外package.xml文件还需添加nav_core包的依赖性

  ...  
  <build_depend>pluginlib</build_depend>
 
  ...
  <build_export_depend>pluginlib</build_export_depend>
 
  ...
  <exec_depend>pluginlib</exec_depend>
 
  ...

 

 5.在ROS包系统中查询可用插件

rospack plugins --attrib=plugin nav_core

在最后一行 可以看到,插件已经注册

 注:如果插件没有注册到,那么可以尝试一下

先编译,然后source devel/setup.bash

 

 6.在launch文件中的movebase添加新的全局规划器

 在mbot_navigation包下找到move_base.launch

<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">

<param name="base_global_planner" value="BAstar_planner/BAstarPlannerROS"/>

 

三、测试插件功能

roslaunch mbot_gazebo view_mbot_with_laser_gazebo.launch

roslaunch mbot_navigation exploring_slam_demo.launch

 

 最终效果如下:

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值