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のソースコード