技術仕様

完全なハードウェア仕様、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 SDKpip3 install piper_sdkagilexrobotics/piper_sdk
ROSパッケージagilexrobotics/piper_ros (ROS Noetic + MoveIt)
シミュレーションガゼボ離れ piper_gazebo.launch
URDFpiper_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 パッケージ。
← パイパーハブに戻る セットアップガイド → 完全な開発者 Wiki →

Piper を使用して操作データを収集する準備はできましたか?

カリフォルニア州マウンテンビューの当社施設では、実践的な評価とデータ収集が可能です。