自定義全域性規劃器外掛
阿新 • • 發佈:2022-03-13
全域性規劃器外掛編寫
[官方教程](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")
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