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.
Configuration du bus CAN et de l'hôte
~15 minutesL'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.
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
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.
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.
Installateur piper_sdk
~20 minutesLe 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.")
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.
Première motion
~20 minutesAvec 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)
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.")
Intégration ROS2 / MoveIt
~60 minutesLe 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
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.
Téléopération Meta Quest 3 VR
~90 minutesLe 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
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
-
Démarrez l'interface CAN et activez le bras.
sudo ip link set can0 type can bitrate 1000000 sudo ip link set can0 up -
Créer un
PiperControlleremballageC_PiperInterface. Remplacez leXArmControllerclasse dans votre pile de téléopération existante avec une nouvellepiper_controller.py. Mettre en œuvreconnect(),set_pose(x, y, z, roll, pitch, yaw),set_gripper(value), etemergency_stop()en utilisant les appels piper_sdk. -
Lancez le serveur Python UDP sur le PC robot.
Le serveur écoute sur les ports UDP 8888/8889 et transmet les paquets de pose manuelle reçus au Piper.python3 teleoperation_main.py --robot-type piper -
Lancez l'application Unity sur le Quest 3 et connectez-vous à l'adresse IP du PC.
Ajuster
positionOffset,rotationOffset, etscaleFactordans 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.
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.
Collecte de données
En coursUne 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_rosenregistrement 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
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.