アジャイルX パイパー
技術仕様
完全なハードウェア仕様、ROS2 トピックのリファレンス、piper_sdk API の概要、およびトラブルシューティング ガイド。
機械仕様
| スペック | 価値 |
|---|---|
| 自由度 | 6 DOF + オプションのグリッパー |
| 到着 | ~600mm |
| 最大ペイロード | ~1.5kg |
| 再現性 | ±0.1mm |
| フォームファクター | コンパクトなテーブルトップ/デスクトップ |
| マルチアーム | 個別の CAN インターフェイスを介したデュアルアーム マスター/スレーブ |
| メーカー | アジャイルXロボティクス |
電気と通信
| スペック | 価値 |
|---|---|
| 電源 | DC24V |
| コミュニケーション | CAN バス — 1,000,000 bps (1 Mbps) |
| ホストインターフェース | USB-CAN アダプター (例: CANable、GS_USB) |
| Linuxインターフェース | ソケットCAN (can0, can1, …) |
ソフトウェアと制御
| スペック | 価値 |
|---|---|
| 制御モード | ジョイントの位置、エンドエフェクターのポーズ、グリッパー |
| Python SDK | pip3 install piper_sdk — agilexrobotics/piper_sdk |
| ROSパッケージ | agilexrobotics/piper_ros (ROS Noetic + MoveIt) |
| シミュレーション | ガゼボ離れ piper_gazebo.launch |
| URDF | piper_description.urdf (ファームウェア≧S-V1.6-3) |
| OSサポート | Ubuntu 18.04、20.04、22.04 |
| Pythonのバージョン | Python 3.6+ |
ジョイントの制限
| ジョイント | 私(あなた) | マックス(あなた) |
|---|---|---|
| ジョイント1 | −175 | +175 |
| ジョイント2 | −90 | +135 |
| ジョイント3 | −150 | +80 |
| ジョイント4 | −175 | +175 |
| ジョイント5 | −90 | +90 |
| ジョイント6 | −175 | +175 |
ROS のトピックとサービス
によって公開される標準トピックとサービス piper_ros 起動後 start_single_piper.launch.
| トピックス・サービス | タイプ | 方向 | 説明 |
|---|---|---|---|
/joint_states |
センサー_msgs/JointState | サブ(コマンド送信) | ジョイント位置コマンド — モーションターゲットを腕に送信するためにサブスクライブします |
/arm_status |
Piper_msgs/ArmStatus | パブ(フィードバック) | アーム状態フィードバック: 有効/無効、エラーフラグ、現在のジョイント位置 |
/end_pose |
geometry_msgs/ポーズ | パブ(フィードバック) | デカルト空間でのエンドエフェクターのポーズ フィードバック (位置 + クォータニオン) |
/enable_srv |
std_srvs/SetBool | サービス | 有効にする (true) または無効にする (false) 腕の関節すべて |
/go_zero_srv |
std_srvs/トリガー | サービス | アームにゼロ/ホーム位置への移動を命令します。 |
/gripper_srv |
Piper_msgs/GripperCmd | サービス | グリッパー位置を設定します (0 = 開いた状態、最大 = 完全に閉じられた状態) |
/stop_srv |
std_srvs/トリガー | サービス | すべての関節動作をただちに停止します (ROS による緊急停止) |
/reset_srv |
std_srvs/トリガー | サービス | アームエラーをリセットし、障害状態後に再度有効化します |
Piper_sdk API リファレンス
の主なメソッド C_PiperInterface クラス。 で初期化します piper = C_PiperInterface("can0").
| 方法 | 説明 |
|---|---|
ConnectPort() |
CANインターフェースを開き、通信スレッドを開始します。 |
EnableArm(7) |
6 つのジョイントとグリッパーをすべて有効にする (ビットマスク; 7 = すべて) |
DisableArm(7) |
すべてのジョイントを無効にする — 完了時または接続を切断する前に必ず呼び出します |
EmergencyStop() |
すべての関節の動きを直ちに停止します |
MotionCtrl_2(j1, j2, j3, j4, j5, j6) |
6-DOF ジョイント位置コマンド (角度単位は度) を送信します。 |
GetArmJointMsgs() |
現在の関節の位置、速度、トルクを読み取ります |
GetArmEndPoseMsgs() |
現在のエンドエフェクタの直交座標ポーズを読み取る |
GripperCtrl(position, speed) |
グリッパーの位置 (0 = 開く) と速度を設定します |
GetArmGripperMsgs() |
現在のグリッパーの状態と位置のフィードバックを読み取る |
トラブルシューティング
| 症状 | 考えられる原因 | 修理 |
|---|---|---|
OSError: [Errno 19] No such device |
CANインターフェースが起動していない | 走る sudo ip link set can0 up そして確認してください ifconfig can0 |
| アームがコマンドに応答しない | アームがスレーブモードではないか、有効になっていません | 電話 piper.EnableArm(7) 接続後。 スレーブ モード ジャンパがアームに正しく設定されていることを確認します。 |
| 共同フィードバックはすべてゼロを読み取ります | ビットレートの不一致 | CAN インターフェイスのビットレートが正確に 1000000 であることを確認してください。再実行します。 ip link set can0 type can bitrate 1000000. |
can.CanError: Failed to transmit |
CANバスが終端されていません | CAN バスの両端に 120 オームの終端抵抗が存在することを確認します。 DIP スイッチを介して Piper の内部ターミネータを有効にします。 |
| RViz での URDF ロボット モデルが正しくない | ファームウェアの不一致 | ファームウェア < S-V1.6-3: 使用 piper_description_old.urdf。 新しいファームウェア: 使用 piper_description.urdf. |
| can0 で許可が拒否されました | ユーザーが参加していません dialout グループ |
SocketCAN には root または適切な権限が必要です。 コマンドを実行する sudo または、udev ルールを設定します。 |
| VR テレオペ: アームがオーバーシュート / 限界に達する | scaleFactor Unityのレベルが高すぎる |
減らす scaleFactor Unity アプリでテストし、段階的に再テストします。 Piper ワークスペースは xArm よりも小さいです。 |
GitHub リポジトリ
| リポジトリ | 説明 |
|---|---|
| agilexrobotics/piper_sdk | 公式の Python SDK。 インストール: pip3 install piper_sdk。 デモ、インターフェイス仕様が含まれます (INTERFACE_V2.MD)、デュアルアームガイド。 |
| agilexrobotics/piper_ros | MoveIt、Gazebo シミュレーション、URDF、および標準の ROS トピック/サービスを備えた ROS Noetic パッケージ。 |