自定义全局规划器插件


全局规划器插件编写

[官方教程](http://wiki.ros.org/action/fullsearch/navigation/Tutorials/Writing A Global Path Planner As Plugin in ROS?action=fullsearch&context=180&value=linkto%3A"navigation%2FTutorials%2FWriting+A+Global+Path+Planner+As+Plugin+in+ROS")

youtube视频教程

1.创建功能包

mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_create_pkg --rosdistro melodic relaxed_astar nav_core roscpp rospy std_msgs

2.编写规划器代码

这部分完全可以仿照carrot_planner.h和carro_planner.cpp写

2.1 include core ROS libraries

2.2 继承nav_core::BaseGlobalPlanner

2.3 重写函数initialize(), makePlan()

2.4 注册成插件

2.5 在makePlan()中调用自己的planner

bestPath = RAstarPlanner(startCell, goalCell);

2.6 修改CMakelists

 add_library(relaxedastar_lib src/RAstar_ros.cpp)
//编译生成了一个动态库
[100%] Linking CXX shared library /home/gao/workspace/ros_project/catkin_ws_navigation/devel/lib/librelaxedastar_lib.so

2.7 Plugin Description File

新建文件relaxed_astar_planner_plugin.xml


  
    This is Relaxed Astar global planner plugin by iroboapp project.
  

2.8 注册插件

在package.xml中修改


2.9 查询可用插件

注意source devel/setup.bash,不然查询不到自定义的插件

rospack plugins --attrib=plugin nav_core

//查询结果
clear_costmap_recovery /opt/ros/melodic/share/clear_costmap_recovery/ccr_plugin.xml
dwa_local_planner /opt/ros/melodic/share/dwa_local_planner/blp_plugin.xml
global_planner /opt/ros/melodic/share/global_planner/bgp_plugin.xml
navfn /opt/ros/melodic/share/navfn/bgp_plugin.xml
rotate_recovery /opt/ros/melodic/share/rotate_recovery/rotate_plugin.xml
base_local_planner /opt/ros/melodic/share/base_local_planner/blp_plugin.xml
carrot_planner /opt/ros/melodic/share/carrot_planner/bgp_plugin.xml
move_slow_and_clear /opt/ros/melodic/share/move_slow_and_clear/recovery_plugin.xml
relaxed_astar /home/gao/workspace/ros_project/catkin_ws_navigation/src/relaxed_astar/relaxed_astar_planner_plugin.xml

3.安装turtlebot

sudo apt-get install ros-melodic-turtlebot-*

4.编译navigation包

catkin_make //如果报错,缺啥安装啥 //sudo apt-get install ros-kinetic-pointcloud-to-laserscan

5.开始仿真

//1.启动gazebo
source devel/setup.bash
export TURTLEBOT3_MODEL=burger //选择机器人模型
roslaunch turtlebot3_gazebo turtlebot3_world.launch
    
//1.开始建图
source devel/setup.bash
export TURTLEBOT3_MODEL=burger //选择机器人模型
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
ROS