Guide de configuration

De la mise en place du bus CAN au premier épisode téléopéré. Couvre piper_sdk, le lancement de ROS2 et la téléopération Meta Quest 3 VR.

1

Configuration du bus CAN et de l'hôte

~15 minutes

L'AgileX Piper communique exclusivement via Bus CAN à 1 Mbps. Vous avez besoin d'un adaptateur USB vers CAN (par exemple, CANable, GS_USB) pour exposer une interface SocketCAN sur votre hôte Linux.

La sécurité avant tout Fixez physiquement la base du bras sur une surface stable avant de le mettre sous tension. Gardez les humains à l’écart de l’enveloppe complète du bras (rayon d’environ 600 mm) pendant le mouvement.

Afficher l'interface CAN

Connectez l'adaptateur USB vers CAN, puis exécutez :

# 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
Script d'activation automatique. Le piper_sdk le référentiel comprend un can_activate.sh auxiliaire. Exécutez-le comme : bash can_activate.sh can0 1000000. C'est le même script utilisé par piper_ros.
Le nom de l'interface peut varier Si plusieurs adaptateurs USB vers CAN sont connectés, l'interface peut apparaître comme can1, can2, etc. Utiliser ip link show pour lister toutes les interfaces CAN et transmettre le nom correct à C_PiperInterface.

Prise en charge du système d'exploitation

Ubuntu 18.04, 20.04 et 22.04 sont les plateformes officiellement testées. Python 3.6+ est requis.

2

Installateur piper_sdk

~20 minutes

Le piper_sdk La bibliothèque Python gère le cadrage CAN, le retour d'état conjoint et le contrôle des pinces. Installez depuis PyPI (recommandé) ou depuis les sources.

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

Le SDK s'installe automatiquement python-can comme dépendance pour la communication sur le bus CAN.

Connectez-vous et activez

Le C_PiperInterface la classe est le principal point d’entrée. Après la connexion, le bras doit être activé avant d'accepter les commandes de mouvement. EnableArm(7) permet les six articulations ainsi que la pince.

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.")
Scripts de démonstration. Le SDK est livré avec des démos prêtes à l'emploi dans piper_sdk/demo/V2/. Commencez par demo_joint_ctrl.py pour vérifier le mouvement de base avant de construire votre propre boucle de contrôle.
3

Première motion

~20 minutes

Avec le bras connecté et activé, lisez l’état de l’articulation et envoyez votre première commande de position.

Lire l'état commun

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)

Envoyer un commandement de position interarmées

# 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

Contrôle des pinces

# 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)
Désactiver une fois terminé Désactivez toujours le bras avec piper.DisableArm(7) une fois terminé. Un bras activé répond immédiatement à toute commande, y compris les commandes erronées dues à des bogues ou à des paquets abandonnés.

Configuration à double bras (maître-esclave)

Pour les configurations bimanuelles, connectez deux Pipers sur des interfaces CAN distinctes :

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

Intégration ROS2 / MoveIt

~60 minutes

Le piper_ros Le package fournit un pilote ROS Noetic complet avec planification de mouvement MoveIt et simulation Gazebo. Il s'enroule piper_sdk en interne et expose les interfaces ROS standard.

Installer les dépendances

# 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

Lancement

# 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

Planification MoveIt

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

# Gazebo simulation (no physical arm required)
roslaunch piper piper_gazebo.launch
Remarque sur le micrologiciel. Versions du micrologiciel antérieures à S-V1.6-3 exiger l'héritage piper_description_old.urdf déposer. Le firmware le plus récent utilise la norme piper_description.urdf. Vérifiez l'étiquette de version du micrologiciel sur la base du bras avant de charger les modèles ROS.

Voir le Page de spécifications pour le tableau complet des sujets et services ROS.

5

Téléopération Meta Quest 3 VR

~90 minutes

Le Piper peut être contrôlé en temps réel à l'aide d'un Méta Quête 3 casque. L'architecture utilise UDP sur votre réseau local : le Quest exécute une application Unity qui diffuse des données de pose manuelle, et un serveur Python sur le PC du robot traduit cela en commandes Piper SDK.

Architecture

Meta Quest 3 (Unité)
↓ UDP — ports 8888/8889
Serveur Python UDP (PC hôte)
piper_sdk → C_PiperInterface
AgileX Piper (bus CAN)

Le côté Unité (VRHandPoseSender.cs, VRGripperController.cs, VRTeleoperationManager.cs) et la couche UDP sont entièrement réutilisables à partir des configurations xArm : seul le module de contrôleur du robot doit être remplacé.

Étapes de configuration

  1. Démarrez l'interface CAN et activez le bras.
    sudo ip link set can0 type can bitrate 1000000
    sudo ip link set can0 up
  2. Créer un PiperController emballage C_PiperInterface. Remplacez le XArmController classe dans votre pile de téléopération existante avec une nouvelle piper_controller.py. Mettre en œuvre connect(), set_pose(x, y, z, roll, pitch, yaw), set_gripper(value), et emergency_stop() en utilisant les appels piper_sdk.
  3. Lancez le serveur Python UDP sur le PC robot.
    python3 teleoperation_main.py --robot-type piper
    Le serveur écoute sur les ports UDP 8888/8889 et transmet les paquets de pose manuelle reçus au Piper.
  4. Lancez l'application Unity sur le Quest 3 et connectez-vous à l'adresse IP du PC. Ajuster positionOffset, rotationOffset, et scaleFactor dans Unity pour correspondre à l'espace de travail de Piper. Ces paramètres diffèrent de xArm en raison de l'enveloppe de portée plus petite de Piper.
Différences entre les systèmes de coordonnées L'espace de travail Piper est plus petit que xArm. Réduire scaleFactor dans Unity pour empêcher le bras d'atteindre les limites articulaires pendant la téléopération. Commencez avec une échelle conservatrice et augmentez progressivement tout en surveillant les angles des articulations.
Guide complet de la quête 3. Pour obtenir des instructions de configuration complètes (installation de l'application Unity, couplage avec le PC et calibrage du suivi manuel), consultez le Guide de téléopération Quest 3 VR.
6

Collecte de données

En cours

Une fois la téléopération opérationnelle, utilisez la plateforme SVRC pour enregistrer, étiqueter et exporter des démonstrations de manipulation.

  • Enregistrez des épisodes téléopérés via le serveur Python UDP ou directement via piper_ros enregistrement de sac
  • Exporter vers RLDS ou LeRobot format pour la formation politique en aval
  • Utilisez le Plateforme SVRC pour gérer des ensembles de données, effectuer des contrôles de qualité et former des modèles ACT ou de politique de diffusion
Conseil. Utiliser piper.GetArmJointMsgs() et piper.GetArmEndPoseMsgs() à ~ 50 Hz dans un thread d'arrière-plan pour capturer l'état synchronisé de l'articulation et de l'effecteur final pendant la téléopération.
Plateforme ouverte → Wiki développeur complet →

Besoin d'aide pour votre configuration ?

Notre équipe est disponible pour des séances pratiques dans les locaux de Mountain View, en Californie.