セットアップガイド

CAN バスの持ち込みから最初の遠隔操作のエピソードまで。 Piper_sdk、ROS2 の起動、および Meta Quest 3 VR 遠隔操作について説明します。

1

CANバスとホストのセットアップ

~15分

AgileX Piper は排他的に通信します。 1MbpsのCANバス。 Linux ホストで SocketCAN インターフェイスを公開するには、USB-to-CAN アダプター (CANable、GS_USB など) が必要です。

安全第一 電源を入れる前に、アームのベースを安定した面に物理的に固定してください。 動作中はアームの到達範囲全体 (半径約 600 mm) に人が近づかないようにしてください。

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.
インターフェース名は異なる場合があります 複数の USB-to-CAN アダプターが接続されている場合、インターフェイスは次のように表示される場合があります。 can1, can2、などを使用します。 ip link show すべての CAN インターフェイスをリストし、正しい名前を C_PiperInterface.

OSサポート

Ubuntu 18.04、20.04、および 22.04 は、公式にテストされたプラットフォームです。 Python 3.6 以降が必要です。

2

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.")
デモスクリプト。 SDK には、すぐに実行できるデモが同梱されています。 piper_sdk/demo/V2/。 から始める demo_joint_ctrl.py 独自の制御ループを構築する前に基本的な動作を検証します。
3

最初の動作

~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.")
4

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 トピックとサービスの表については、こちらをご覧ください。

5

メタクエスト 3 VR 遠隔操作

~90分

Piper は、 メタクエスト3 ヘッドセット。 このアーキテクチャではローカル ネットワーク経由で UDP を使用します。Quest は手のポーズ データをストリーミングする Unity アプリを実行し、ロボット PC 上の Python サーバーがそれを Piper SDK コマンドに変換します。

建築

メタクエスト 3 (ユニティ)
↓ UDP — ポート 8888 / 8889
Python UDP サーバー (ホスト PC)
Piper_sdk → C_PiperInterface
AgileX Piper (CAN バス)

Unity側(VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) と UDP レイヤーは xArm セットアップから完全に再利用可能です。交換する必要があるのはロボット コントローラー モジュールのみです。

セットアップ手順

  1. CAN インターフェースを開始し、アームを有効にします。
    sudo ip link set can0 type can bitrate 1000000
    sudo ip link set can0 up
  2. を作成します PiperController ラッピング C_PiperInterface. 交換してください XArmController 既存の遠隔操作スタック内のクラスを新しい piper_controller.py。 埋め込む connect(), set_pose(x, y, z, roll, pitch, yaw), set_gripper(value)、 そして emergency_stop() Piper_sdk 呼び出しを使用します。
  3. ロボット PC 上で Python UDP サーバーを起動します。
    python3 teleoperation_main.py --robot-type piper
    サーバーは UDP ポート 8888/8889 をリッスンし、受信したハンド ポーズ パケットを Piper に転送します。
  4. Quest 3 で Unity アプリを起動し、PC の IP アドレスに接続します。 調整する positionOffset, rotationOffset、 そして scaleFactor Unity で Piper のワークスペースと一致するようにします。 Piper のリーチ エンベ​​ロープが小さいため、これらのパラメーターは xArm とは異なります。
座標系の違い Piper ワークスペースは xArm よりも小さいです。 減らす scaleFactor Unity では、遠隔操作中に腕が関節の制限に達するのを防ぎます。 控えめなスケールから始めて、関節角度を監視しながら徐々に増加させます。
クエスト 3 の完全ガイド。 Unity アプリのインストール、PC とのペアリング、ハンド トラッキングの調整などの完全なセットアップ手順については、 Quest 3 VR 遠隔操作ガイド.
6

データ収集

進行中

遠隔操作が機能したら、SVRC プラットフォームを使用して操作デモンストレーションを記録、ラベル付け、エクスポートします。

  • Python UDP サーバー経由、または直接経由で遠隔操作エピソードを記録します。 piper_ros バッグの記録
  • 輸出先 RLDS または ルロボット 下流ポリシートレーニングのフォーマット
  • を使用します。 SVRCプラットフォーム データセットの管理、品質チェックの実行、ACT または拡散政策モデルのトレーニングを行うため
ヒント。 使用 piper.GetArmJointMsgs() そして piper.GetArmEndPoseMsgs() バックグラウンド スレッドで約 50 Hz で実行し、遠隔操作中に同期したジョイントとエンドエフェクターの状態をキャプチャします。
オープンプラットフォーム→ 完全な開発者 Wiki →

セットアップについてサポートが必要ですか?

私たちのチームは、カリフォルニア州マウンテンビューの施設で実践的なセッションに参加できます。