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.
CAN-Bus- und Host-Setup
~15 MinDer 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.
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
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.
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.
Piper_sdk installieren
~20 MinDer 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.")
piper_sdk/demo/V2/. Beginnen Sie mit demo_joint_ctrl.py um die grundlegende Bewegung zu überprüfen, bevor Sie Ihren eigenen Regelkreis erstellen.
Erster Antrag
~20 MinLesen 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)
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.")
ROS2 / MoveIt-Integration
~60 MinDer 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
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.
Meta Quest 3 VR-Teleoperation
~90 MinDer 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
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
-
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 -
Erstellen Sie eine
PiperControllerVerpackungC_PiperInterface. Ersetzen Sie dieXArmControllerKlasse in Ihrem bestehenden Teleoperations-Stack mit einer neuenpiper_controller.py. Implementierenconnect(),set_pose(x, y, z, roll, pitch, yaw),set_gripper(value), Undemergency_stop()Verwenden von Piper_sdk-Aufrufen. -
Starten Sie den Python UDP-Server auf dem Roboter-PC.
Der Server lauscht auf den UDP-Ports 8888/8889 und leitet empfangene Handpose-Pakete an den Piper weiter.python3 teleoperation_main.py --robot-type piper -
Starten Sie die Unity-App auf dem Quest 3 und stellen Sie eine Verbindung zur IP-Adresse des PCs her.
Anpassen
positionOffset,rotationOffset, UndscaleFactorin Unity passend zum Arbeitsbereich des Piper. Diese Parameter unterscheiden sich von xArm aufgrund der kleineren Reichweite von Piper.
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.
Datenerfassung
LaufendSobald 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_rosTaschenaufnahme - 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
piper.GetArmJointMsgs() Und piper.GetArmEndPoseMsgs() bei ~50 Hz in einem Hintergrund-Thread, um den synchronisierten Gelenk- und Endeffektorzustand während der Teleoperation zu erfassen.