Especificaciones Técnicas

Especificaciones de hardware completas, referencia de temas ROS2, resumen de API de piper_sdk y guía de solución de problemas.

Especificaciones Mecánicas

Especificación Valor
Grados de libertad6 DOF + pinza opcional
Rango~600 mm
Carga máxima~1.5 kg
Repetibilidad±0.1 mm
Factor de formaCompacto de mesa / escritorio
Multi-brazoMaestro-esclavo de doble brazo a través de interfaces CAN separadas
FabricanteAgileX Robotics

Eléctrico y Comunicación

Especificación Valor
Fuente de Alimentación24 VCC
ComunicaciónAutobús CAN: 1.000.000 bps (1 Mbps)
Interfaz de HostAdaptador USB a CAN (por ejemplo, CANable, GS_USB)
interfaz de linuxSocketCAN (can0, can1, …)

Software y Control

Especificación Valor
Modos de ControlPosición de la articulación, pose del efector final, pinza
El SDK de Pythonpip3 install piper_sdkagilexrobotics/piper_sdk
Paquete ROSagilexrobotics/piper_ros (ROS Noetic + MoveIt)
SimulaciónGazebo a través de piper_gazebo.launch
URDFpiper_description.urdf (firmware ≥ S-V1.6-3)
Soporte de SOUbuntu 18.04, 20.04, 22.04
Versión de PythonPython 3.6+

Límites de las articulaciones

Articulación Mín (grados) Máx (grados)
Articulación 1−175+175
Articulación 2−90+135
Articulación 3−150+80
Articulación 4−175+175
Articulación 5−90+90
Articulación 6−175+175

Temas y servicios de ROS

Temas y servicios estándar expuestos por piper_ros después de lanzar start_single_piper.launch.

Tema / Servicio Tipo Dirección Descripción
/joint_states sensor_msgs/JointState Sub (enviar comandos) Comandos de posición de la articulación — suscribirse para enviar objetivos de movimiento al brazo
/arm_status piper_msgs/ArmStatus Pub (retroalimentación) Retroalimentación del estado del brazo: habilitado/deshabilitado, indicadores de error, posiciones actuales de las articulaciones
/end_pose geometry_msgs/Pose Pub (retroalimentación) Retroalimentación de la pose del efector final en el espacio cartesiano (posición + cuaternión)
/enable_srv std_srvs/SetBool Servicio Permitir (true) o deshabilitar (false) todas las articulaciones del brazo
/go_zero_srv std_srvs/Trigger Servicio Ordenar al brazo que se mueva a la posición cero/inicial
/gripper_srv piper_msgs/GripperCmd Servicio Establecer la posición del agarre (0 = abierto, máximo = completamente cerrado)
/stop_srv std_srvs/Trigger Servicio Detener todo movimiento de las articulaciones inmediatamente (parada de emergencia a través de ROS)
/reset_srv std_srvs/Trigger Servicio Restablecer errores del brazo y volver a habilitar después de una condición de falla

Referencia de la API de piper_sdk

Métodos clave en el C_PiperInterface clase. Inicializar con piper = C_PiperInterface("can0").

Método Descripción
ConnectPort() Abrir la interfaz CAN y comenzar el hilo de comunicación
EnableArm(7) Habilitar todas las 6 articulaciones y el agarre (máscara de bits; 7 = todas)
DisableArm(7) Deshabilitar todas las articulaciones — siempre llamar cuando se haya terminado o antes de desconectar
EmergencyStop() Detener inmediatamente todo movimiento conjunto
MotionCtrl_2(j1, j2, j3, j4, j5, j6) Enviar un comando de posición de junta de 6 DOF (ángulos en grados)
GetArmJointMsgs() Leer las posiciones, velocidades y torques actuales de las juntas
GetArmEndPoseMsgs() Leer la pose cartesiana actual del efector final
GripperCtrl(position, speed) Establecer la posición del agarre (0 = abierto) y la velocidad
GetArmGripperMsgs() Leer el estado actual del agarre y la retroalimentación de posición

Solución de problemas

Síntoma Causa probable Solución
OSError: [Errno 19] No such device Interfaz CAN no activa Ejecutar sudo ip link set can0 up y verificar con ifconfig can0
El brazo no responde a los comandos El brazo no está en modo esclavo o no está habilitado Llamar piper.EnableArm(7) después de conectar. Confirmar que el jumper de modo esclavo está configurado correctamente en el brazo.
La retroalimentación de la junta lee ceros Discrepancia en la tasa de bits Asegurarse de que el bitrate de la interfaz CAN sea exactamente 1000000. Volver a ejecutar ip link set can0 type can bitrate 1000000.
can.CanError: Failed to transmit Bus CAN no terminado Asegúrese de que los resistores de terminación de 120 ohmios estén presentes en ambos extremos del bus CAN. Active el terminador interno de Piper a través del interruptor DIP.
Modelo de robot URDF incorrecto en RViz No coincide el firmware Firmware < S-V1.6-3: usar piper_description_old.urdf. Firmware más reciente: usar piper_description.urdf.
Permiso denegado en can0 Usuario no en dialout grupo SocketCAN requiere permisos de root o apropiados. Ejecute comandos con sudo o configure reglas de udev.
Teleoperación VR: el brazo se excede / golpea límites scaleFactor demasiado alto en Unity Reducir scaleFactor en la aplicación Unity y volver a probar de forma incremental. El espacio de trabajo de Piper es más pequeño que el de xArm.

Repositorios de GitHub

Repositorio Descripción
agilexrobotics/piper_sdk SDK oficial de Python. Instalar: pip3 install piper_sdk. Incluye demostraciones, especificación de interfaz (INTERFACE_V2.MD), y guía de brazo dual.
agilexrobotics/piper_ros Paquete ROS Noetic con MoveIt, simulación de Gazebo, URDF y temas / servicios estándar de ROS.
← Volver a Piper Hub Guía de configuración → Wiki Completo para Desarrolladores →

¿Listo para recopilar datos de manipulación con el Piper?

Disponible para evaluación práctica y recolección de datos en nuestras instalaciones de Mountain View, CA.