セットアップガイド
CAN バスの持ち込みから最初の遠隔操作のエピソードまで。 Piper_sdk、ROS2 の起動、および Meta Quest 3 VR 遠隔操作について説明します。
CANバスとホストのセットアップ
~15分AgileX Piper は排他的に通信します。 1MbpsのCANバス。 Linux ホストで SocketCAN インターフェイスを公開するには、USB-to-CAN アダプター (CANable、GS_USB など) が必要です。
CANインターフェースを立ち上げる
USB-to-CAN アダプターを接続し、次を実行します。
# Set bitrate and bring up the CAN interface
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
# Verify the interface is active
ifconfig can0
piper_sdk リポジトリには、 can_activate.sh ヘルパー。 次のように実行します。 bash can_activate.sh can0 1000000。 これは、で使用されているのと同じスクリプトです。 piper_ros.
can1, can2、などを使用します。 ip link show すべての CAN インターフェイスをリストし、正しい名前を C_PiperInterface.
OSサポート
Ubuntu 18.04、20.04、および 22.04 は、公式にテストされたプラットフォームです。 Python 3.6 以降が必要です。
Piper_sdk をインストールする
~20分の piper_sdk Python ライブラリは、CAN フレーミング、ジョイント状態フィードバック、およびグリッパー制御を処理します。 PyPI (推奨) またはソースからインストールします。
# Option A: Install from PyPI (recommended)
pip3 install piper_sdk
# Option B: Install from source
git clone https://github.com/agilexrobotics/piper_sdk.git
cd piper_sdk
pip install -e .
# Verify installation
python3 -c "import piper_sdk; print('piper_sdk OK')"
SDKは自動的にインストールされます python-can CAN バス通信の依存関係として。
接続して有効にする
の C_PiperInterface クラスがメインのエントリポイントです。 接続後、モーション コマンドを受け入れる前にアームを有効にする必要があります。 EnableArm(7) 6 つのジョイントすべてとグリッパーを有効にします。
from piper_sdk import C_PiperInterface
# Initialize with the CAN interface name (default: "can0")
piper = C_PiperInterface("can0")
# Connect to the arm
piper.ConnectPort()
# Enable all joints (required before motion commands)
piper.EnableArm(7)
print("Piper connected and enabled.")
piper_sdk/demo/V2/。 から始める demo_joint_ctrl.py 独自の制御ループを構築する前に基本的な動作を検証します。
最初の動作
~20分アームが接続されて有効になったら、ジョイントの状態を読み取り、最初の位置コマンドを送信します。
ジョイント状態の読み取り
import time
# Read joint angles in a polling loop
for _ in range(10):
joint_state = piper.GetArmJointMsgs()
print(joint_state)
time.sleep(0.1)
# Read end-effector pose
end_pose = piper.GetArmEndPoseMsgs()
print(end_pose)
関節位置コマンドを送信する
# Move to a joint configuration (angles in degrees)
# Arguments: joint1, joint2, joint3, joint4, joint5, joint6
piper.MotionCtrl_2(
0, # joint 1
0, # joint 2
90, # joint 3
0, # joint 4
0, # joint 5
0 # joint 6
)
time.sleep(2) # wait for motion to complete
グリッパー制御
# Open gripper
piper.GripperCtrl(0, 1000)
# Close gripper (check your gripper's max value)
piper.GripperCtrl(70, 1000)
# Read gripper state
gripper_state = piper.GetArmGripperMsgs()
print(gripper_state)
piper.DisableArm(7) 終わったら。 有効なアームは、バグやパケットのドロップによる誤ったコマンドも含め、あらゆるコマンドに即座に応答します。
デュアルアーム (マスター/スレーブ) セットアップ
バイマニュアル構成の場合は、2 つの Piper を別々の CAN インターフェイスに接続します。
piper_left = C_PiperInterface("can0")
piper_right = C_PiperInterface("can1")
piper_left.ConnectPort()
piper_right.ConnectPort()
piper_left.EnableArm(7)
piper_right.EnableArm(7)
print("Both arms connected.")
ROS2 / MoveItの統合
~60分の piper_ros パッケージは、MoveIt モーション プランニングと Gazebo シミュレーションを備えた完全な ROS Noetic ドライバーを提供します。 包み込む piper_sdk 内部的に機能し、標準の ROS インターフェイスを公開します。
依存関係をインストールする
# Install required ROS packages
sudo apt-get install -y \
ros-noetic-moveit \
ros-noetic-ruckig \
ros-noetic-ompl
# Install Python CAN dependency
pip3 install python-can piper_sdk
打ち上げ
# Step 1: Activate CAN interface
bash can_activate.sh can0 1000000
# Step 2: Launch the Piper control node
roslaunch piper start_single_piper.launch
# For dual-arm:
roslaunch piper start_double_piper.launch
ムーブイットの計画
# Launch MoveIt with RViz for interactive planning
roslaunch piper_moveit_config demo.launch
# Gazebo simulation (no physical arm required)
roslaunch piper piper_gazebo.launch
S-V1.6-3 遺産が必要です piper_description_old.urdf ファイル。 新しいファームウェアは標準を使用します piper_description.urdf。 ROS モデルをロードする前に、アームのベースにあるファームウェア バージョン ラベルを確認してください。
を参照してください。 スペックページ 完全な ROS トピックとサービスの表については、こちらをご覧ください。
メタクエスト 3 VR 遠隔操作
~90分Piper は、 メタクエスト3 ヘッドセット。 このアーキテクチャではローカル ネットワーク経由で UDP を使用します。Quest は手のポーズ データをストリーミングする Unity アプリを実行し、ロボット PC 上の Python サーバーがそれを Piper SDK コマンドに変換します。
建築
Unity側(VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) と UDP レイヤーは xArm セットアップから完全に再利用可能です。交換する必要があるのはロボット コントローラー モジュールのみです。
セットアップ手順
-
CAN インターフェースを開始し、アームを有効にします。
sudo ip link set can0 type can bitrate 1000000 sudo ip link set can0 up -
を作成します
PiperControllerラッピングC_PiperInterface. 交換してくださいXArmController既存の遠隔操作スタック内のクラスを新しいpiper_controller.py。 埋め込むconnect(),set_pose(x, y, z, roll, pitch, yaw),set_gripper(value)、 そしてemergency_stop()Piper_sdk 呼び出しを使用します。 -
ロボット PC 上で Python UDP サーバーを起動します。
サーバーは UDP ポート 8888/8889 をリッスンし、受信したハンド ポーズ パケットを Piper に転送します。python3 teleoperation_main.py --robot-type piper -
Quest 3 で Unity アプリを起動し、PC の IP アドレスに接続します。
調整する
positionOffset,rotationOffset、 そしてscaleFactorUnity で Piper のワークスペースと一致するようにします。 Piper のリーチ エンベロープが小さいため、これらのパラメーターは xArm とは異なります。
scaleFactor Unity では、遠隔操作中に腕が関節の制限に達するのを防ぎます。 控えめなスケールから始めて、関節角度を監視しながら徐々に増加させます。
データ収集
進行中遠隔操作が機能したら、SVRC プラットフォームを使用して操作デモンストレーションを記録、ラベル付け、エクスポートします。
- Python UDP サーバー経由、または直接経由で遠隔操作エピソードを記録します。
piper_rosバッグの記録 - 輸出先 RLDS または ルロボット 下流ポリシートレーニングのフォーマット
- を使用します。 SVRCプラットフォーム データセットの管理、品質チェックの実行、ACT または拡散政策モデルのトレーニングを行うため
piper.GetArmJointMsgs() そして piper.GetArmEndPoseMsgs() バックグラウンド スレッドで約 50 Hz で実行し、遠隔操作中に同期したジョイントとエンドエフェクターの状態をキャプチャします。