teb_local_planner的詳盡資料(包括安裝及導航,參數調節等)請參考其ros官方文檔:http://wiki.ros.org/teb_local_planner和http://wiki.ros.org/teb_local_planner/Tutorials。
teb_local_planner的github源碼:https://github.com/rst-tu-dortmund/teb_local_planner。
一、作用機制
teb_local_planner將navigation里的base_local_planner替換,故其作用機制和base_local_planner一樣為ros的plugin機制。plugin的使用可以參考:http://www.cnblogs.com/W-chocolate/p/4328725.html。
二、teb_local_planner的安裝步驟如下(注意ros為kenetic版):
1、安裝依賴:
rosdep install teb_local_planner
2、從github上下載源碼:https://github.com/rst-tu-dortmund/teb_local_planner
3、放入工作空間的/src文件夾中
4、catkin_make -DCATKIN_WHITELIST_PACKAGES=“源碼存放的文件夾名字”(單獨編譯teb_local_planner)
5、查看teb_local_planner的plugin是否安裝完成
rospack plugins --attrib=plugin nav_core
如果能查詢到teb_local_planner,則表明以及准備就緒。
值得一提的是,teb_local_planner源碼中關於plugin的配置文件均已寫好,直接編譯源碼就能完成plugin的注冊及插入,非常方便。
三、使用
1、新建teb_local_planner配置文件teb_local_planner_params.yaml
在此我偷了個懶,直接從tutorials中下載:
git clone https://github.com/rst-tu-dortmund/teb_local_planner_tutorials.git
在/cfg中找到所需的teb_local_planner_params.yaml。由於使用機器人odom為差動模式的,故選取diff_drive中的。
2、將teb_local_planner_params.yaml和navigation中其他的配置文件(如costmap_common_params.yaml等)放在一起,方便查閱調用。個人習慣如此,也可以不放在一起。
3、在啟動navigation的launch文件中load上述配置文件
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
...
<rosparam file="$(find my_robot_name_2dnav)/base_local_planner_params.yaml" command="load" />
...
</node>
4、在啟動navigation的launch文件中聲明base_local_planner采用先前注冊的plugin
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
...
<param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
...
</node>
當然也可以選擇在move_base_params.yaml中聲明。
5、啟動navigation,在rviz中將三條path調出來,即可觀察機器人導航過程中規划路徑的變化。
此外,可以通過rosrun rqt_reconfigure rqt_reconfigure動態調節參數使機器人導航性能達到最佳。關於參數調節的方法請參考其ros官方文檔。實際使用的經歷來看,采用從teb_local_planner_tutorials下載下來的默認參數達到的性能已經遠優於原始navigation中的路徑規划算法的性能。我認為teb_local_planner的應用價值非常大。
四、異常處理
原因是相關庫沒有安裝好,根據提示把庫安裝好就可以使用了。
解決辦法,比較懶,沒有一個個試試,所以直接都安裝了,有興趣的小伙伴可以嘗試分部分,O(∩_∩)O哈哈~
sudo apt install ros-kinetic-mbf-costmap-core ros-kinetic-mbf-costmap-nav ros-kinetic-move-base-flex ros-kinetic-move-base-to-manip ros-kinetic-moveit-kinematics ros-kinetic-moveit-ros-manipulation ros-kinetic-moveit-ros-move-group ros-kinetic-moveit-ros-perception ros-kinetic-moveit-ros-planning ros-kinetic-moveit-ros-planning-interface ros-kinetic-moveit-ros-warehouse ros-kinetic-assisted-teleop ros-kinetic-carrot-planner ros-kinetic-dwa-local-planner ros-kinetic-global-planner ros-kinetic-goal-passer ros-kinetic-move-slow-and-clear ros-kinetic-navigation ros-kinetic-navigation-experimental ros-kinetic-navigation-layers ros-kinetic-navigation-stage ros-kinetic-navigation-tutorials ros-kinetic-pose-follower ros-kinetic-range-sensor-layer ros-kinetic-roomba-stage ros-kinetic-sbpl-lattice-planner ros-kinetic-sbpl-recovery ros-kinetic-social-navigation-layers ros-kinetic-twist-recovery ros-kinetic-assisted-teleop ros-kinetic-carrot-planner ros-kinetic-dwa-local-planner ros-kinetic-global-planner ros-kinetic-goal-passer ros-kinetic-move-slow-and-clear ros-kinetic-navigation ros-kinetic-navigation-experimental ros-kinetic-navigation-layers ros-kinetic-navigation-stage ros-kinetic-navigation-tutorials ros-kinetic-pose-follower ros-kinetic-range-sensor-layer ros-kinetic-roomba-stage ros-kinetic-sbpl-lattice-planner ros-kinetic-sbpl-recovery ros-kinetic-social-navigation-layers ros-kinetic-twist-recovery ros-kinetic-assisted-teleop ros-kinetic-carrot-planner ros-kinetic-dwa-local-planner ros-kinetic-global-planner ros-kinetic-goal-passer ros-kinetic-move-slow-and-clear ros-kinetic-navigation ros-kinetic-navigation-experimental ros-kinetic-navigation-layers ros-kinetic-navigation-stage ros-kinetic-navigation-tutorials ros-kinetic-pose-follower ros-kinetic-range-sensor-layer ros-kinetic-roomba-stage ros-kinetic-sbpl-lattice-planner ros-kinetic-sbpl-recovery ros-kinetic-social-navigation-layers ros-kinetic-twist-recovery ros-kinetic-cost-map ros-kinetic-cost-map-demos ros-kinetic-cost-map-ros ros-kinetic-cost-map-visualisations ros-kinetic-costmap-prohibition-layer ros-kinetic-grid-map-costmap-2d ros-kinetic-grid-map-cv ros-kinetic-grid-map-ros ros-kinetic-grid-map-visualization