ソフトウェアエンジニアの阿部です。
最近、OpenArmというハードウェアに触る機会があったので、それに関連する記事です。 OpenArmはロボットアームです。公式サイトに動画もあるのでご覧いただければどのようなモノかすぐにわかると思います。
実物が手元にあっていろいろいじれるととても楽しいと思うのですが、今のところ実物が手元にないのでROS2というものでシミュレーションしてOpenArmに触れあってみた記録です。
対象読者
私はソフトウェアエンジニアでハードウェアのことはまったく経験なしです。 普段パソコンは使うので、CPUとかメモリとかくらいの部品は知っていますが、ロボットアームやそれを構成している金属部品、モーターについてはまったく経験なしです。
そんなスキルセットの私の経験談の記事なので、ソフトウェアエンジニアでLinuxの基本的な操作はできつつ、ロボットアームについては何も知らないけど興味はある!という方の参考になると思います。
はじめに
OpenArmはオープンソースのロボットアームです。 操作するためのソフトウェアに加えて、ロボットアームを構成する部品の設計もすべて公開されています。
各リポジトリ: https://github.com/enactic/openarm
私はいろいろ触れ合ったので、ある程度用語の意味がわかりますが、ロボットアームの経験がない方は初見の用語が多くて親しみにくいかもしれません。 本記事はすべてを理解するための解説記事ではなく、「とりあえずシミュレーションが動く」を体験することを目的にするので、用語の説明は最低限にとどめます。説明の足りないところがあるかもしれませんが、その点はご了承ください。
ロボットアーム関連の用語
ROS2
ROSはRobot Operating Systemの略です。 今回の記事を読む上では「ROS2」は「ロボットを制御するときに使う便利なソフトウェア」くらいの理解で大丈夫です。
参考: https://docs.ros.org/en/kilted/index.html
MoveIt2
「MoveIt2」はROS2上で動くロボットアームの動作計画などの作成を支援するフレームワークです。 ロボットアームを上げて下げる、とか一連の流れを便利に作れます。
ROS2をOSとすると、MoveIt2はその上で動く便利ソフトという位置付けです。
参考: https://moveit.picknik.ai/main/index.html
使うもの
さっそくシミュレーション体験を始めます。 主に使うソフトウェアなどは次のとおりです。
- ROS2
- MoveIt2
- Docker
- ROS2とMoveIt2をDockerコンテナで動かすのに使います。
- 使うイメージはこちら: https://github.com/Tiryoh/docker-ros2-desktop-vnc
- ROS2の諸々がインストール済かつ、
docker container run ...でお手軽に試せて便利です。
- https://github.com/enactic/openarm_ros2
- https://github.com/enactic/openarm_description
内部で使っている技術要素は他にもいろいろあるのですが、主要なものだけ列挙しています。
さっそくやってみる
流れは次のとおりです。
- ROS2が動く環境をDockerで起動
- 必要なパッケージのインストール
- OpenArmをROS2でシミュレーションする準備
- OpenArmをROS2でシミュレーションする
- OpenArmをROS2でシミュレーションする(MoveIt2)
1. ROS2が動く環境をDockerで起動
docker container run するだけです。
コマンド例:
docker container run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:humble
実行したらhttp://localhost:6080/にブラウザでアクセスします。
アクセスするとUbuntuのデスクトップが表示されます。
以降はこのデスクトップで作業します。
指定しているイメージのhumbleの部分がROS2のバージョンです。
OpenArmはhumbleで動作確認してあるので、humbleを使うとスムーズに動かせます。
2. 必要なパッケージのインストール
基本的にはOpenArmのドキュメントのとおりにインストールしていきます。
https://docs.openarm.dev/software/ros2/install
ブラウザで開いたデスクトップでターミナルを起動してコマンドを実行すればインストールできます。
起動したところのスクリーンショット:
(スクリーンショットだとわかりにくいですが、この画面はブラウザに表示されているものです。)
次のとおり必要なパッケージをインストールします。
sudo apt update
sudo apt install -y \
ros-humble-controller-manager \
ros-humble-gripper-controllers \
ros-humble-hardware-interface \
ros-humble-joint-state-broadcaster \
ros-humble-joint-trajectory-controller \
ros-humble-moveit-configs-utils \
ros-humble-moveit-planners \
ros-humble-moveit-ros-move-group \
ros-humble-moveit-ros-visualization
3. OpenArmをROS2でシミュレーションする準備
https://docs.openarm.dev/software/ros2/control#setup
公式ドキュメントにあるとおりにセットアップします。
このコマンドもブラウザで開いたデスクトップのターミナルで実行できます。
次の手順を実行するとopenarm_descriptionの準備も一緒にできます。
git clone https://github.com/enactic/openarm_ros2 ~/ros2_ws/src/openarm_ros2
git clone https://github.com/enactic/openarm_description ~/ros2_ws/src/openarm_description
(cd ~/ros2_ws/ && colcon build --packages-ignore openarm_hardware)
source ~/ros2_ws/install/setup.bash
実物がなくシミュレーションだけをしたい場合はドキュメントに登場するopenarm_canやopenarm_hardwareが不要なので、--packages-ignore openarm_hardwareを指定して除外しています。(openarm_hardwareがopenarm_canに依存しているので、openarm_hardwareを除外するとopenarm_canのインストールも不要です。)
ここまで終われば、ros2コマンドでシミュレーションできます。
4. OpenArmをROS2でシミュレーションする
https://docs.openarm.dev/software/ros2/control#-ros2-control-integration
ドキュメントに書いてあるとおりコマンドを実行します。
ros2 launch openarm_bringup openarm.launch.py arm_type:=v10 use_fake_hardware:=true
起動したところのスクリーンショット:

これでブラウザで開いたデスクトップ上にアームが一本表示されます。
ドキュメントにあるros2 action ...を実行すると腕が動くのが確認できます。
両腕でシミュレーションしたい場合は次のとおり実行します。
ros2 launch openarm_bringup openarm.bimanual.launch.py arm_type:=v10 use_fake_hardware:=true
起動したところのスクリーンショット:

5. OpenArmをROS2でシミュレーションする(MoveIt2)
https://docs.openarm.dev/software/ros2/control#-moveit2-integration
ドキュメントに書いてあるとおりコマンドを実行します。
ros2 launch openarm_bimanual_moveit_config demo.launch.py
起動したところのスクリーンショット:

スクリーンショットでは小さくて見づらいですが、左の方に表示されるメニューの「MotionPlaning」にある「Planning」のタブで動作計画を実行したりできます。 いろいろいじって動かしてみると良いです!
まとめ
「とりあえずシミュレーションが動く」をゴールに、OpenArmをROS2でシミュレーションしてみました。 実物を見てみたい!など、実物に興味のある方は勉強会に参加してみると良いと思います。
もう少し深い知識があって実物を購入したい方は購入の案内ページをご覧ください。