海外製品調達・コンサルテーションサービス「ユニポス」(テガラ株式会社 運営)が取り扱っている、複雑かつ細かな作業を両手遠隔操作で実現するためのロボット「ALOHA」の技術情報です。
当該製品の検証にあたり、PCにソフトウェアをインストールしましたが、途中、うまく動作しなかった部分がございました。
本記事では、弊社のインストール事例を元にした注意点を、インストール手順と合わせてご紹介いたします。
目次
ALOHAとは
専用デスク上で操作する据え置き型の Aloha Stationary (旧名称:ALOHA Bimanual Teleoperation Kit)は、 「A Low-cost Open-source Hardware System for Bimanual Teleoperation」の略で、両手遠隔操作のための低価格オープンソースハードウェアシステムです。
ALOHAのコンセプト、ならびに前モデル情報は以下の記事をご参照ください。
マシンのセットアップ手順概要
OSの選択
GitHub には 18.04 または 20.04 の記載があるため、Ubuntu 20.04 LTSのバージョンを選択しました。
※2024年5月の検証時点では Ubuntuの長期サポート(LTS)版は 22.04 LTSですが、22.04LTSではライブラリ関係を正常にインストールすることができませんでした。
使用環境は ubuntu20.04 / ros noetic です。
ROS Interfaceのインストール手順
a. ROS Interfaceをインストールする
まず、Ubuntu TerminalからROS Interfaceをインストールします。
※詳細な手順は、以下の公式ドキュメンテーションをご覧ください
ROS Standard Software Setup(Interbotix ROS Interface – Trossen Robotics社)
b. リポジトリのクローン
次に、~/interbotix_ws/src
ディレクトリに移動し、以下のリポジトリをクローンします:
cd ~/interbotix_ws/src sudo git clone https://github.com/tonyzhaozh/aloha.git
c. パッケージのビルド
最後に、次のコマンドを実行してパッケージをビルドします。
i. ROS環境をセットアップするために以下のコマンドを実行します:
source /opt/ros/noetic/setup.sh && source ~/interbotix_ws/devel/setup.sh
ii. 必要な依存パッケージをインストールします:
sudo apt-get install ros-noetic-usb-cam ros-noetic-cv-bridge
iii. ~/interbotix_ws に移動し、catkin_make を実行します:
~/interbotix_ws
catkin_make
iv. arm.py ファイルを修正します:
次のディレクトリに移動します:
cd ~/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules/src/interbotix_xs_modules/
arm.py ファイルを開き、関数 publish_positions を探します。 以下の行を見つけます:
self.T_sb = mr.FKinSpace(self.robot_des.M, self.robot_des.Slist, self.joint_commands)
この行を次のように変更します:
self.T_sb = None
この変更により、コードが毎回FKを計算することによる遠隔操作の遅延を防ぎます。
次のディレクトリに移動します:
cd ~/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules/src/interbotix_xs_modules/
これで、ROS Interfaceのインストール手順は完了です。
以下のライブラリが正しくインストールされていることを確認します。
da create -n aloha python=3.8.10
conda activate aloha
pip install torchvision
pip install torch
pip install pyquaternion
pip install pyyaml
pip install rospkg
pip install pexpect
pip install mujoco==2.3.7
pip install dm_control==1.0.14
pip install opencv-python
pip install matplotlib
pip install einops
pip install packaging
pip install h5py
各サーボモーターの動作確認
ソフトウェアのインストール後、DINAMIXEL Wizard 2.0を用いて各アームのモーターが正常に動作するかを確認します。 当該ツールのインストールは下記サイトを参照しています。
Dynamixel Wizard2.0 のダウンロード
Dynamixel Wizard 2.0 マニュアル (Robotis社 公式ドキュメンテーション)
https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/
各アームのROS動作確認
アーム1台ごとにROSでの動作に問題がないかどうかは、下記のコマンドで確認します。
-
ターミナル1で
roscore
を起動します。roscore
-
ターミナル2で次のコマンドを実行します
roslaunch interbotix_xsarm_control xsarm_control.launch robot_model:=wx250
-
実行するときは、安全確保のため、ロボットの周囲に障害物がないかを確認してください
-
次に、下記のパスへ移動します:
cd ~/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/python_demos
-
サンプルプログラムを実行します:
python bartender.py
各ロボットアーム、およびカメラのUSB関連付けの設定と更新
ALOHA kitは、ロボットアームとカメラ、それぞれ4台で構成されています。
すべてのデバイスをUSBでコンピュータに接続しますが、ロボットアームについてはUSBハブを用いずに、独立したUSBポートの使用が推奨されています。
デバイスの内訳は下記の通りです。
項目 | 内容 |
---|---|
ttyDXL_master_right | 右マスターロボット |
ttyDXL_puppet_right | 右パペットロボット (パペット:タスクを実行するロボット) |
ttyDXL_master_left | 左マスターロボット |
ttyDXL_puppet_left | 左パペットロボット |
CAM_RIGHT_WRIST CAM_LEFT_WRIST CAM_LOW CAM_HIGH |
右腕用のカメラ 左腕用のカメラ 低位カメラ 高位カメラ |
※マスターロボット = 人間が保持するアーム
パペットロボット = マスターロボットにより遠隔操作されるアーム
デバイス接続時の問題点
USBポートの物理的な接続の順番によってアームの割り当てが決まるため、USBの接続のたびにアームの割り当てが入れ替わるという事象が発生することがあります。 当該問題の解決のために下記の設定を行いました。
各ロボットアームのシリアル (serial number) 取得
UbuntuではUSBポートにはデバイスファイルを経由してアクセスします。
標準的なUSBポートの名前は /dev/ttyUSB0 です。
複数ポートの場合、ttyUSB0、ttyUSB1、ttyUSB2、ttyUSB3 と、末尾の数字が変わります。
udevadm info --name=/dev/ttyUSB0 --attribute-walk | grep serial
下記のような形式で、テーブルで名称の保管を推奨いたします。参照の際に便利になります。
USB Index | Position | Serial |
0 | master_right | <Serial 1> |
1 | puppet_right | <Serial 2> |
2 | master_left | <Serial 3> |
3 | puppet_left | <Serial 4> |
カメラのシリアル (serial number) を取得
標準的なUSBポートの名前は /dev/video0 です。
複数台の場合、video0、video1、video2、video3 と、末尾の数字が変わります。
udevadm info --name=/dev/video0 --attribute-walk | grep serial
下記のような形式で、テーブルで名称の保管を推奨いたします。参照の際に便利になります。
ロードのためのルールファイル
各アームのシリアル番号を記録し、下記のような形でルールファイルの設定をします。
SUBSYSTEM=="tty", ATTRS{serial}=="FT89FCIC", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_master_right"
SUBSYSTEM=="tty", ATTRS{serial}=="FT89FIYY", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_puppet_right"
SUBSYSTEM=="tty", ATTRS{serial}=="FT88YTAF", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_master_left"
SUBSYSTEM=="tty", ATTRS{serial}=="FT891K9Y", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_puppet_left"
SUBSYSTEM=="video4linux", ATTRS{serial}=="7A2A241F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1",SYMLINK+="CAM_RIGHT_WRIST"
SUBSYSTEM=="video4linux", ATTRS{serial}=="C0D4525F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1", SYMLINK+="CAM_LEFT_WRIST"
SUBSYSTEM=="video4linux", ATTRS{serial}=="E453325F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1", SYMLINK+="CAM_LOW"
SUBSYSTEM=="video4linux", ATTRS{serial}=="DC79025F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1", SYMLINK+="CAM_HIGH"
ルールファイルを更新したら下記のコマンドを実行します。
sudo nano /etc/udev/rules.d/99-fixed-interbotix-udev.rules
sudo udevadm control --reload && sudo udevadm trigger
遠隔操作のテスト
遠隔操作のテストにあたり、下記の手順でコマンドを実行します。
-
ターミナル1で
roscore
を起動します。roscore
-
ROSターミナルで以下のコマンドを実行します:
conda deactivate
source /opt/ros/noetic/setup.sh && source ~/interbotix_ws/devel/setup.sh
roslaunch aloha 4arms_teleop.launch -
右手のターミナルのコマンドを実行します:
conda activate aloha
cd ~/interbotix_ws/src/aloha/aloha_scripts
python3 one_side_teleop.py left -
左手のターミナルのコマンドを実行します:
conda activate aloha
source /opt/ros/noetic/setup.sh && source ~/interbotix_ws/devel/setup.sh
python3 one_side_teleop.py right
この時点で、既にご自身でスクリプトを用意している場合は、下記のような形での実行が可能です。
conda activate aloha
cd ~/interbotix_ws/src/aloha/aloha_scripts
python3.py
カメラのテスト
ROSに付随する状況把握やデバッグを容易にするための可視化ツール Rviz を使用します。
- terminal1で、roslaunch aloha 4arms_teleop.launch を実行
- terminal1で、rviz をタイプして実行
- rviz ウィンドウが開いたら「add」->「By topick」をクリックし、4つのカメラをすべて追加します。
(usb_cam_high, usb_cam_low, usb_cam_left_wrist, usb_cam_right_wrist)
カメラを正しく認識できると、下記画像のような表示となり、各カメラの映像の確認ができます。
その他の注意点
インストール時にエラーが発生した場合のトラブルシューティングの参考として、原因として考えらえる注意点を抜粋してご紹介いたします。
問題点 | 解決のヒント |
---|---|
Conda のPath | relative path が環境内で path としてエクスポートされているかを確認してください |
生成された新ファイルの権限 | 必要に応じてchmod + x で権限を付与してください |
DYNAMIXELモーターのLEDが赤色で点滅 | エラーの場合にLEDが点滅します。まず、DYNAMIXEL Wizard から再起動を試してみてください それでも解決しない場合は、工場出荷時設定にリセットしてみてください |
USB接続 | カメラやロボットアームに接続の問題が発生した場合は、すべてのUSBを再接続することで改善する可能性があります |
USBポートのシリアルマッピング | アームやカメラの割り当てが入れ替わった場合等は、ルールファイルの更新が有効です USBデバイスのシリアルを確認し、下記のルールファイルの更新をしてください ~/interbotix_ws/src/aloha/aloha_scripts# sudo nano /etc/udev/rules.d/99-fixed-interbotix-udev.rules |
ライブラリのインストール | 下記のライブラリを別途インストールしました
|
Board Rate 設定の確認 | 一部ロボットアームで他の個体と異なるBoard Rate設定がされている場合があります。これにより正常にアームやモーターが認識されない場合があります。それぞれのサーボモーターの Board rate の設定を確認してください |
モーターの Board Rate 設定 | 一部ロボットアームで他の個体と異なるBoard Rate設定がされている場合があります。これにより正常にアームやモーターが認識されない場合があります。それぞれのサーボモーターの Board rate の設定を確認してください |
DYNAMIXELモーターのID | モーターが認識されない場合は、DYNAMIXELのIDの設定を確認してください |
Interbotix ROS Interface (Trossen Robotics社 公式ドキュメンテーション)
https://docs.trossenrobotics.com/interbotix_xsarms_docs/ros_interface/ros1
カスタムスクリプトについて
弊社で動作確認用のカスタムスクリプトを作成しました。下記のリンクにスクリプトを公開しますので、よろしければご利用ください。
テガラ株式会社公式 GitHub Aloha
https://github.com/TegaraCorporation/aloha
まとめ
弊社が実際にALOHAをセットアップした手順に沿って、各種チェックポイントをご紹介いたしました。ALOHA をご自身でセットアップする上でのご参考になれば幸いです。
なおこれらのセットアップを弊社にて実施し、「すぐに使える」状態でお客様にお届けするサポートプランもございます。
ALOHA は各種フレームやロボットアームがバラバラの状態でメーカーより納品されます。これらのハードウェアをお客様の利用環境 (研究室等) で組み立て、セットアップをし、動作検証をした上で納品いたします (海外メーカーからの手配も弊社にて承ります)。
また ALOHAの動作には、機械学習に適したハイスペックなコンピュータの使用が推奨されています。このALOHA の動作に最適なコンピュータのご用意も弊社にお任せください。お客様のご利用用途に合わせて構成を検討したマシンをご提案します。
テガラ株式会社 TKS 事業部では、このように研究開発・実験に必要な機材を一式まとめてご提供するサービス をご提供しています (TKS = TurnKey System)。ぜひお気軽にお問い合わせください。
参考 : ロボットシステムの組み立て・現地設置 (ALOHA)
ALOHA Kit の設置・設定もお気軽にご相談ください |