1. 程式人生 > 其它 >自定義全域性規劃器外掛

自定義全域性規劃器外掛

全域性規劃器外掛編寫

[官方教程](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

<library path="lib/librelaxed_astar_lib">
  <class name="RAstar_planner/RAstarPlannerROS" type="RAstar_planner::RAstarPlannerROS" base_class_type="nav_core::BaseGlobalPlanner">
    <description>This is Relaxed Astar global planner plugin by iroboapp project.</description>
  </class>
</library>

2.8 註冊外掛

在package.xml中修改

<nav_core plugin="${prefix}/relaxed_astarplanner_plugin.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