こんにちはshotaです。
このシリーズでは、アールティのアームロボットCRANE+ V2(クラインプラスブイツー)をROS 2で動かしていきます。
今回はMoveIt 2のインストール方法と、CRANE+ V2のROS 2パッケージのインストール方法を紹介します。
前回のおさらい
前回の記事ではCRANE+ V2の購入から、設置方法、サンプルプログラムの実行方法までを紹介しました。
また、こちらの記事ではCRANE+ V2とはどんなロボットなのか、ROS 2パッケージでどんな動きをするのかを紹介しました。ぜひご覧ください。
MoveIt 2のインストール
まずはMoveIt 2をインストールします。
作業用のPCにはUbuntu 20.04をインストールしています。
MoveIt 2とは
MoveItはマニピュレータを簡単に動かすためのオープンソースソフトウェアです。
軌道計画、逆運動学の演算、衝突検出・回避等のマニピュレータに必要な機能が豊富に含まれています。
MoveItのROS 2バージョンがMoveIt 2です。
MoveIt 2は2020年11月時点ではROS 2 Foxy向けにリリースされていません。
そのため、ソースファイルをビルドして、インストールします。
MoveIt2をインストールする
MoveIt 2のビルド&インストール方法はMoveIt 公式ページに記載されています。
公式手順に従ってMoveIt 2をインストールします。
Prerequistes
まずはROS 2 Foxyのインストールです。下記の公式手順に従ってインストールします。
続いてROS 2のビルドツールをインストールします。
詳細な手順はこちらです。
ROS 2パッケージの依存パッケージをインストールする際はrosdepコマンドが使われるのですが、
現時点のMoveIt 2はrosdepに対応していません。
そのため後述する別の方法(ビルドツール)で依存パッケージをダウンロードし、インストールします。
下記のコマンドを実行してビルドツールをインストールします。
$ sudo apt update && sudo apt install -y \ build-essential \ cmake \ git \ libbullet-dev \ python3-colcon-common-extensions \ python3-flake8 \ python3-pip \ python3-pytest-cov \ python3-rosdep \ python3-setuptools \ python3-vcstool \ wget # install some pip packages needed for testing $ python3 -m pip install -U \ argcomplete \ flake8-blind-except \ flake8-builtins \ flake8-class-newline \ flake8-comprehensions \ flake8-deprecated \ flake8-docstrings \ flake8-import-order \ flake8-quotes \ pytest-repeat \ pytest-rerunfailures \ pytest # install Fast-RTPS dependencies $ sudo apt install --no-install-recommends -y \ libasio-dev \ libtinyxml2-dev # install Cyclone DDS dependencies $ sudo apt install --no-install-recommends -y \ libcunit1-dev
Create Workspace and Source
続いて、MoveIt 2用のワークスペースを作成します。
CRANE+ V2用のワークスペースと区別するため、名前をmoveit_wsとします。
$ mkdir -p ~/moveit_ws/src
Download Source Code
MoveIt 2と依存パッケージのソースファイルをダウンロードします。
$ cd ~/moveit_ws/src $ wget https://raw.githubusercontent.com/ros-planning/moveit2/main/moveit2.repos $ vcs import < moveit2.repos $ rosdep install -r --from-paths . --ignore-src --rosdistro foxy -y
vsc import < moveit2.reposを実行すると、10個くらいのパッケージがダウンロードされます。
ダウンロードされたパッケージのバージョンは、moveit2.reposファイルを見ると確認できます。
$ cat moveit2.repos repositories: moveit2: type: git url: https://github.com/ros-planning/moveit2 version: main moveit_msgs: type: git url: https://github.com/ros-planning/moveit_msgs version: ros2 moveit_resources: type: git url: https://github.com/ros-planning/moveit_resources version: ros2 --- 以下略 ---
Build MoveIt
いよいよMoveIt 2のビルドです。
次のコマンドを実行します。
$ cd ~/moveit_ws $ colcon build --event-handlers desktop_notification- status- --cmake-args -DCMAKE_BUILD_TYPE=Release
パッケージ数が多いためビルドに時間がかかります。
$ colcon build --event-handlers desktop_notification- status- --cmake-args -DCMAKE_BUILD_TYPE=Release --parallel-workers 2
参考:https://colcon.readthedocs.io/en/released/reference/executor-arguments.html
Source the Colcon Workspace
ビルドに成功したらセットアップスクリプトを読み込んで準備完了です。
$ source ~/moveit_ws/install/setup.bash
ページ下のMoveItCpp Demo Packageをクリックし、デモパッケージの実行に進みます。
MovetIt 2のデモパッケージをを実行する
デモパッケージの説明は下記に書かれています。
次のコマンドを実行します。
$ ros2 launch run_moveit_cpp run_moveit_cpp.launch.py
RVizが起動してpanda_armが動きます。
終了するときはCtrl+Cを入力します。
CRANE+ V2をROS 2で動かす
続いてCRANE+ V2のROS 2パッケージcrane_plusをインストールして動かします。
crane_plusのインストール
crane_plusのREADMEに従い、パッケージをインストールします。
MoveIt 2はインストール済みなので、crane_plusのビルドから始めます。
まず、crane_plus用のワークスペースを作成します。名前はros2_wsとします。
$ mkdir -p ~/ros2_ws/src
crane_plusと依存パッケージをダウンロード・インストールします。
$ cd ~/ros2_ws/src $ git clone https://github.com/rt-net/crane_plus.git # Install dependencies $ source ~/moveit_ws/install/setup.bash $ rosdep install -r -y -i --from-paths .
crane_plusをビルドします。
$ cd ~/ros2_ws $ colcon build --symlink-install
セットアップスクリプトを読み込んで準備完了です。
$ source ~/ros2_ws/install/setup.bash
セットアップスクリプトはcrane_plusを実行するたびに読み込むので、.bashrc等のスクリプトで読み込むように設定しておくと、毎回のコマンド入力を省略できます。
$ echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
パッケージの実行 Quick Start
それではCRANE+ V2をROS 2で動かしましょう。
READMEのQuick Startに記載されているコマンドをそのまま実行します。
$ ros2 launch crane_plus_examples demo.launch.py
コマンドを実行するとRVizが起動します。
Jointや、インタラクティブマーカを操作して目標姿勢を決め、Plan & Executeを押すと、CRANE+ V2が目標姿勢になるように動作します。
ターミナルをもう一つ開き、次のコマンドを実行するとグリッパーを開閉できます。
$ ros2 launch crane_plus_examples example.launch.py example:='gripper_control'
終了するときはCtrl+Cを入力します。
まとめ
今回は
- MoveIt 2をインストールしました
- CRANE+ V2 のROS 2パッケージcrane_plusをインストールしました
- crane_plusのQuick Startを実行しました
次回の記事ではcrane_plusのその他のサンプルプログラムを紹介します。
また、CRANE+ V2の制御周期の変更方法も紹介します。