1. はじめに
pyAgxArmは、AgileX社の提供するロボットアームおよびエンドエフェクタ向けのPython SDKです。Piper(無印/X/H/L)、NERO、AgxGripper、Revo2を対象に、CAN通信、ステータス読み取り、モーション制御、およびエンドエフェクタ制御をサポートしています。
本稿では、pyAgxArmを用いて、Windows PCからPiper Xに接続するための手順を説明いたします。Pythonで作成したプログラムから、ロボットに接続し動作させることを目標とします。
本稿は、公式のGitHubページ(https://github.com/agilexrobotics/pyAgxArm)に基づいて作成しております。
Linux環境の方については、公式GitHubのInstall項をご覧ください。
2. 環境
以下の環境にて、このセットアップ手順が有効であることを確認しています。
- OS: Windows 11 (64bit)
- ソフトウェア
- Python 3.12.7
- pyAgxArm 1.0.0
- python-can 4.6.1
- python-can-agx-cando 0.0.1
- ArmRobotUA v2.0.0
- Python 3.12.7
- 使用するロボット: Piper-X
3. 用意するもの
- Windows (10, 11)を搭載したPC
- Python(3.6-3.14対応)、Gitをインストールしてください。
- VSCode等のエディタ
- Piper, Nero等のロボット、エンドエフェクタ(あれば)
- ロボットに付属のCAN-USBアダプタを用いてPCと接続し、プログラム実行時には電源ケーブルを接続してください。
4. 手順
まず、前提となるライブラリをインストールします。
python-can
pip3 install python-can
python-can は 3.3.4より新しいバージョンである必要があります。
python-can-agx-cando
WindowsでpyAgxArmを使用する場合、 python-can-agx-cando プラグインをインストールし、 agx_candoインターフェースを使う必要があります。
ライブラリは GitHub から git clone で取得し、そのディレクトリで pip install してインストールします。
git clone https://github.com/agilexrobotics/python-can-agx-cando.git
cd python-can-agx-cando
pip3 install .
pyAgxArm
同様に git clone で取得し、 pip install でインストールします。
git clone https://github.com/agilexrobotics/pyAgxArm.git
cd pyAgxArm
pip3 install .
これでインストール完了です。
5. 実行結果例
pyAgxArm/pyAgxArm/demos 以下のフォルダにサンプルプログラムが用意されています。
pyAgxArm/pyAgxArm/demos/detect_<ロボット名>_series.pyでは、CAN通信でロボットを認識できるか検証することができます。
実行後、タイムアウトしてエラーとなった場合、正常にロボット間の通信ができていません。
タイムアウトせず、ロボットのソフトウェアのバージョンや関節ごとのステータスが出力された場合、正常にロボットと通信できています。
pyAgxArm/pyAgxArm/demos/<ロボット名>/test1.py は、各ロボット用のプログラムとなっており、SDKで行える動作が網羅されています。
大部分はコメントアウトされているので、実行したい関数のコメントを解除してから実行してください。
5.トラブルシューティング
- プログラムの実行後、ロボットが給電状態(Enable)のままである。
- プログラムでDisableするか、ArmRobotUAから手動でDisableすることができます。
※Disableするとアームが重力で落ちるので手で支えてください。
- プログラムでDisableするか、ArmRobotUAから手動でDisableすることができます。
- CANモジュールをPC側で認識できない。
- WSLにUSBを共有していた場合、
usbipd bind -b <BUSID>で共有を解除する必要があります。
- WSLにUSBを共有していた場合、
can.exceptions.CanInitializationError: Failed to open CAN bus. AgxCandoBus was not properly shut down- ArmRobotUAで接続している場合、そちらが通信を占有しているため、先に接続解除してください。
