UAV用のローカルプランナを実装する¶
この章では、Open Motion Planning Library (OMPL) を使ってドローン用のローカルプランナを実装します。
OMPLはオープンソースの行動計画ライブラリで、マニピュレータやUGVなどの動作計画に用いられる MoveIt! というライブラリもOMPLを使っています。
インストール¶
UbuntuにOMPLをインストールする方法は以下の3通りあります。
ソースからインストールする
ビルド済みバイナリをインストールする
ROSバージョンのバイナリをインストールする
今回はROSバージョンのバイナリをインストールします。 他の方法については、OMPLのインストールガイド を見てください。
はじめに、ROSのリポジトリをaptのデータ取得元に追加します。 すでにROSを使っている場合には必要ありません。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
追加できたら、OMPLをインストールします。
sudo apt update
sudo apt install ros-kinetic-ompl
ローカルプランナを実装する¶
以下では、制御指令値を含むプラニング を参考にして作業を進めていきます。
CMakeLists.txt¶
find_package(catkin REQUIRED COMPONENTS
roscpp
...
nav_core # add
tf # add
costmap_2d # add
)
find_package(OMPL REQUIRED)
add_executable(rrt_planner src/rrt_planner.cpp)
target_link_libraries(rrt_planner ${catkin_LIBRARIES}
${OMPL_LIBRARIES}
${Boost_LIBRARIES})
ROSプラグイン¶
ROSのパッケージの中には、処理の一部(画像処理や行動計画など)をプラグインとして作成し、後で変更可能になっているものがあります。 プラグインを作成、使用するためには pluginlib パッケージを使用します。 プラグインの仕組みを使うことで、特定のインターフェースに従ったクラスを作れば中身の実装は自由にできるので、既存のパッケージを拡張することが容易になります。
ローカルプランナをプラグイン化する¶
実行する¶
参考¶
- Robotics/OMPL - NAIST::OnlineText
OMPLの日本語チュートリアル
- Open Motion Planning Library: A Primer
OMPLの英語チュートリアル(PDF)
- sources.list - APT のデータ取得元の設定リスト
sources.listについて
- navigationスタックで学ぶpluginlibの使い方
navigationスタック用のプラグインについて
- Writing A Global Path Planner As Plugin in ROS
navigationスタック用のグローバルプランナプラグインを作る
- nav_core - ROS Wiki
nav_coreパッケージ
- navigation/dwa_local_planner - GitHub
dwa_local_plannerのソースコード