Piper AgileX
Spécifications techniques
Spécifications matérielles complètes, référence aux sujets ROS2, résumé de l'API piper_sdk et guide de dépannage.
Spécifications mécaniques
| Spécification | Valeur |
|---|---|
| Degrés de liberté | 6 DOF + pince en option |
| Atteindre | ~600 mm |
| Charge utile maximale | ~1,5 kg |
| Répétabilité | ±0,1mm |
| Facteur de forme | Plateau/bureau compact |
| Multi-soutiens-gorge | Maître-esclave à double bras via des interfaces CAN séparées |
| Fabricant | Robotique AgileX |
Électricité et communications
| Spécification | Valeur |
|---|---|
| Alimentation | 24 VCC |
| Communication | Bus CAN — 1 000 000 bps (1 Mbps) |
| Interface hôte | Adaptateur USB vers CAN (par exemple, CANable, GS_USB) |
| InterfaceLinux | PriseCAN (can0, can1, …) |
Logiciel et contrôle
| Spécification | Valeur |
|---|---|
| Modes de contrôle | Position de l'articulation, pose de l'effecteur terminal, pince |
| SDK Python | pip3 install piper_sdk — agilexrobotics/piper_sdk |
| Forfait ROS | agilexrobotics/piper_ros (ROS Noétique + MoveIt) |
| Simulation | Gazebo à l'écart piper_gazebo.launch |
| URDF | piper_description.urdf (micrologiciel ≥ S-V1.6-3) |
| Prise en charge du système d'exploitation | Ubuntu 18.04, 20.04, 22.04 |
| VersionPython | Python3.6+ |
Limites conjointes
| Articulation | mon (tu) | Max (toi) |
|---|---|---|
| Articulation 1 | −175 | +175 |
| Articulation 2 | −90 | +135 |
| Article 3 | −150 | +80 |
| Article 4 | −175 | +175 |
| Article 5 | −90 | +90 |
| Article 6 | −175 | +175 |
Sujets et services ROS
Sujets et services standards exposés par piper_ros après le lancement start_single_piper.launch.
| Sujet / Service | Cône | Direction | Description |
|---|---|---|---|
/joint_states |
sensor_msgs/JointState | Sub (envoyer des commandes) | Commandes de position articulaire – abonnez-vous pour envoyer des cibles de mouvement au bras |
/arm_status |
piper_msgs/ArmStatus | Pub (commentaires) | Retour d'état de l'armement : activé/désactivé, indicateurs d'erreur, positions articulaires actuelles |
/end_pose |
géométrie_msgs/Pose | Pub (commentaires) | Retour de pose de l'effecteur final dans l'espace cartésien (position + quaternion) |
/enable_srv |
std_srvs/SetBool | Service | Activer (true) ou désactiver (false) toutes les articulations des bras |
/go_zero_srv |
std_srvs/Déclencheur | Service | Commandez au bras de se déplacer vers la position zéro/origine |
/gripper_srv |
piper_msgs/GripperCmd | Service | Définir la position de la pince (0 = ouvert, max = complètement fermé) |
/stop_srv |
std_srvs/Déclencheur | Service | Arrêtez immédiatement tout mouvement articulaire (arrêt d’urgence via ROS) |
/reset_srv |
std_srvs/Déclencheur | Service | Réinitialiser les erreurs d'armement et réactiver après une condition de panne |
Référence de l'API piper_sdk
Méthodes clés sur le C_PiperInterface classe. Initialiser avec piper = C_PiperInterface("can0").
| Méthode | Description |
|---|---|
ConnectPort() |
Ouvrez l'interface CAN et démarrez le fil de communication |
EnableArm(7) |
Activer les 6 articulations et la pince (masque de bits ; 7 = tous) |
DisableArm(7) |
Désactivez toutes les articulations – appelez toujours lorsque vous avez terminé ou avant de déconnecter |
EmergencyStop() |
Arrêtez immédiatement tout mouvement articulaire |
MotionCtrl_2(j1, j2, j3, j4, j5, j6) |
Envoyer une commande de position commune à 6 degrés de liberté (angles en degrés) |
GetArmJointMsgs() |
Lire les positions, vitesses et couples actuels des articulations |
GetArmEndPoseMsgs() |
Lire la pose cartésienne actuelle de l'effecteur final |
GripperCtrl(position, speed) |
Régler la position de la pince (0 = ouverte) et la vitesse |
GetArmGripperMsgs() |
Lire l'état actuel de la pince et le retour de position |
Dépannage
| Symptôme | Cause probable | Réparer |
|---|---|---|
OSError: [Errno 19] No such device |
L'interface CAN n'est pas opérationnelle | Courir sudo ip link set can0 up et vérifie avec ifconfig can0 |
| Le bras ne répond pas aux commandes | L'armement n'est pas en mode esclave ou n'est pas activé | Appel piper.EnableArm(7) après la connexion. Confirmez que le cavalier du mode esclave est correctement réglé sur le bras. |
| La rétroaction conjointe lit tous les zéros | Inadéquation du débit binaire | Assurez-vous que le débit binaire de l'interface CAN est exactement de 1 000 000. Réexécutez ip link set can0 type can bitrate 1000000. |
can.CanError: Failed to transmit |
Bus CAN non terminé | Assurez-vous que des résistances de terminaison de 120 ohms sont présentes aux deux extrémités du bus CAN. Activez le terminateur interne du Piper via le commutateur DIP. |
| Modèle de robot URDF incorrect dans RViz | Incompatibilité du micrologiciel | Micrologiciel < S-V1.6-3 : utiliser piper_description_old.urdf. Firmware plus récent : utilisez piper_description.urdf. |
| Autorisation refusée sur can0 | L'utilisateur n'est pas présent dialout groupe |
SocketCAN nécessite des autorisations root ou appropriées. Exécutez des commandes avec sudo ou configurez les règles udev. |
| Téléopération VR : les bras dépassent / atteignent les limites | scaleFactor trop élevé dans l'unité |
Réduire scaleFactor dans l'application Unity et retestez progressivement. L'espace de travail Piper est plus petit que xArm. |
Dépôts GitHub
| Dépôt | Description |
|---|---|
| agilexrobotics/piper_sdk | SDK Python officiel. Installer: pip3 install piper_sdk. Comprend des démos, des spécifications d'interface (INTERFACE_V2.MD) et guide à deux bras. |
| agilexrobotics/piper_ros | Package ROS Noetic avec MoveIt, simulation Gazebo, URDF et sujets/services ROS standard. |