Setup-Anleitung

Von der Einführung des CAN-Busses bis zur ersten teleoperierten Episode. Behandelt Piper_sdk, ROS2-Start und Meta Quest 3 VR-Teleoperation.

1

CAN-Bus- und Host-Setup

~15 Min

Der AgileX Piper kommuniziert ausschließlich über CAN-Bus mit 1 Mbit/s. Sie benötigen einen USB-zu-CAN-Adapter (z. B. CANable, GS_USB), um eine SocketCAN-Schnittstelle auf Ihrem Linux-Host bereitzustellen.

Sicherheit geht vor Befestigen Sie die Basis des Arms vor dem Einschalten physisch auf einer stabilen Oberfläche. Halten Sie Menschen während der Bewegung von der gesamten Reichweite des Arms (Radius ca. 600 mm) fern.

Rufen Sie die CAN-Schnittstelle auf

Schließen Sie den USB-zu-CAN-Adapter an und führen Sie dann Folgendes aus:

# 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
Automatisches Aktivierungsskript. Der piper_sdk Das Repository umfasst a can_activate.sh Helfer. Führen Sie es aus als: bash can_activate.sh can0 1000000. Dies ist das gleiche Skript, das von verwendet wird piper_ros.
Der Schnittstellenname kann variieren Wenn Sie mehrere USB-zu-CAN-Adapter angeschlossen haben, wird die Schnittstelle möglicherweise wie folgt angezeigt: can1, can2usw. Verwendung ip link show um alle CAN-Schnittstellen aufzulisten und den korrekten Namen zu übergeben C_PiperInterface.

Betriebssystemunterstützung

Ubuntu 18.04, 20.04 und 22.04 sind die offiziell getesteten Plattformen. Python 3.6+ ist erforderlich.

2

Piper_sdk installieren

~20 Min

Der piper_sdk Die Python-Bibliothek übernimmt CAN-Framing, Gelenkzustandsrückmeldung und Greifersteuerung. Installation von PyPI (empfohlen) oder von der Quelle.

# 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')"

Das SDK wird automatisch installiert python-can als Abhängigkeit für die CAN-Bus-Kommunikation.

Anschließen und aktivieren

Der C_PiperInterface Die Klasse ist der Haupteinstiegspunkt. Nach dem Anschließen muss der Arm aktiviert werden, bevor er Bewegungsbefehle akzeptiert. EnableArm(7) ermöglicht alle sechs Gelenke plus den Greifer.

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.")
Demo-Skripte. Das SDK wird mit betriebsbereiten Demos geliefert piper_sdk/demo/V2/. Beginnen Sie mit demo_joint_ctrl.py um die grundlegende Bewegung zu überprüfen, bevor Sie Ihren eigenen Regelkreis erstellen.
3

Erster Antrag

~20 Min

Lesen Sie bei angeschlossenem und aktiviertem Arm den Gelenkstatus ab und senden Sie Ihren ersten Positionsbefehl.

Gemeinsamen Zustand lesen

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)

Senden Sie einen Gelenkpositionsbefehl

# 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

Greifersteuerung

# 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)
Deaktivieren Sie es, wenn Sie fertig sind Deaktivieren Sie den Arm immer mit piper.DisableArm(7) wenn fertig. Ein aktivierter Arm reagiert sofort auf jeden Befehl – ​​auch auf fehlerhafte Befehle aufgrund von Bugs oder verworfenen Paketen.

Dual-Arm-Aufbau (Master-Slave).

Für bimanuelle Konfigurationen schließen Sie zwei Piper an separate CAN-Schnittstellen an:

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-Integration

~60 Min

Der piper_ros Das Paket bietet einen vollständigen ROS Noetic-Treiber mit MoveIt-Bewegungsplanung und Gazebo-Simulation. Es wickelt sich ein piper_sdk intern und stellt Standard-ROS-Schnittstellen bereit.

Abhängigkeiten installieren

# 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

Start

# 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

MoveIt-Planung

# Launch MoveIt with RViz for interactive planning
roslaunch piper_moveit_config demo.launch

# Gazebo simulation (no physical arm required)
roslaunch piper piper_gazebo.launch
Firmware-Hinweis. Firmware-Versionen vor S-V1.6-3 erfordern das Erbe piper_description_old.urdf Datei. Neuere Firmware verwendet den Standard piper_description.urdf. Überprüfen Sie das Firmware-Versionsetikett an der Unterseite des Arms, bevor Sie ROS-Modelle laden.

Siehe die Seite „Spezifikationen“. für die vollständige ROS-Themen- und Servicetabelle.

5

Meta Quest 3 VR-Teleoperation

~90 Min

Der Piper kann in Echtzeit über a gesteuert werden Metaquest 3 Headset. Die Architektur nutzt UDP über Ihr lokales Netzwerk: Der Quest führt eine Unity-App aus, die Handhaltungsdaten streamt, und ein Python-Server auf dem Roboter-PC übersetzt diese in Piper SDK-Befehle.

Architektur

Meta Quest 3 (Einheit)
↓ UDP – Ports 8888/8889
Python UDP-Server (Host-PC)
piper_sdk → C_PiperInterface
AgileX Piper (CAN-Bus)

Die Unity-Seite (VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) und die UDP-Schicht sind aus xArm-Setups vollständig wiederverwendbar – nur das Robotersteuerungsmodul muss ausgetauscht werden.

Einrichtungsschritte

  1. Starten Sie die CAN-Schnittstelle und aktivieren Sie den Arm.
    sudo ip link set can0 type can bitrate 1000000
    sudo ip link set can0 up
  2. Erstellen Sie eine PiperController Verpackung C_PiperInterface. Ersetzen Sie die XArmController Klasse in Ihrem bestehenden Teleoperations-Stack mit einer neuen piper_controller.py. Implementieren connect(), set_pose(x, y, z, roll, pitch, yaw), set_gripper(value), Und emergency_stop() Verwenden von Piper_sdk-Aufrufen.
  3. Starten Sie den Python UDP-Server auf dem Roboter-PC.
    python3 teleoperation_main.py --robot-type piper
    Der Server lauscht auf den UDP-Ports 8888/8889 und leitet empfangene Handpose-Pakete an den Piper weiter.
  4. Starten Sie die Unity-App auf dem Quest 3 und stellen Sie eine Verbindung zur IP-Adresse des PCs her. Anpassen positionOffset, rotationOffset, Und scaleFactor in Unity passend zum Arbeitsbereich des Piper. Diese Parameter unterscheiden sich von xArm aufgrund der kleineren Reichweite von Piper.
Unterschiede im Koordinatensystem Der Piper-Arbeitsbereich ist kleiner als xArm. Reduzieren scaleFactor in Unity, um zu verhindern, dass der Arm während der Teleoperation an die Gelenkgrenzen stößt. Beginnen Sie mit einem konservativen Maßstab und steigern Sie ihn schrittweise, während Sie die Gelenkwinkel überwachen.
Vollständiger Quest 3-Leitfaden. Vollständige Einrichtungsanweisungen – Installation der Unity-App, Kopplung mit dem PC und Kalibrierung der Handverfolgung – finden Sie unter Anleitung zur Quest 3 VR-Teleoperation.
6

Datenerfassung

Laufend

Sobald die Teleoperation funktioniert, verwenden Sie die SVRC-Plattform, um Manipulationsdemonstrationen aufzuzeichnen, zu kennzeichnen und zu exportieren.

  • Nehmen Sie teleoperierte Episoden über den Python-UDP-Server oder direkt über auf piper_ros Taschenaufnahme
  • Exportieren in RLDS oder LeRobot Format für nachgelagerte politische Schulungen
  • Benutzen Sie die SVRC-Plattform um Datensätze zu verwalten, Qualitätsprüfungen durchzuführen und ACT- oder Diffusionsrichtlinienmodelle zu trainieren
Tipp. Verwenden piper.GetArmJointMsgs() Und piper.GetArmEndPoseMsgs() bei ~50 Hz in einem Hintergrund-Thread, um den synchronisierten Gelenk- und Endeffektorzustand während der Teleoperation zu erfassen.
Offene Plattform → Vollständiges Entwickler-Wiki →

Benötigen Sie Hilfe bei Ihrer Einrichtung?

Unser Team steht für praktische Sitzungen in der Einrichtung in Mountain View, Kalifornien, zur Verfügung.