Especificações Técnicas

Especificações de hardware completas, referência de tópicos ROS2, resumo da API piper_sdk e guia de solução de problemas.

Especificações Mecânicas

Especificação Valentia
Graus de Liberdade6 DOF + garra opcional
Alcance~600 mm
Carga Máxima~1,5kg
Repetibilidade±0,1mm
Fator de FormaCompacto para mesa/desktop
Multi-braçoMestre-escravo de braço duplo via interfaces CAN separadas
FabricanteAgileX Robotics

Elétrico e Comunicação

Especificação Valentia
Fonte de Alimentação24 V DC
ComunicaçãoBarramento CAN — 1.000.000 bps (1 Mbps)
Interface do HostAdaptador USB para CAN (por exemplo, CANable, GS_USB)
InterfaceLinuxSocketCAN (can0, can1, …)

Software e Controle

Especificação Valentia
Modos de ControlePosição da junta, pose do efetor final, garra
SDK Pythonpip3 install piper_sdkagilexrobotics/piper_sdk
Pacote ROSagilexrobotics/piper_ros (ROS Noetic + MoveIt)
SimulaçãoGazebo via piper_gazebo.launch
URDFpiper_description.urdf (firmware ≥ S-V1.6-3)
Suporte a SOUbuntu 18.04, 20.04, 22.04
Versão do PythonPython 3.6+

Limites das Juntas

Junta Meu (graus) Máx (graus)
Junta 1−175+175
Junta 2−90+135
Junta 3−150+80
Junta 4−175+175
Junta 5−90+90
Junta 6−175+175

Tópicos e Serviços ROS

Tópicos e serviços padrão expostos por piper_ros após o lançamento start_single_piper.launch.

Tópico / Serviço Tipo Direção Descrição
/joint_states sensor_msgs/JointState Sub (enviar comandos) Comandos de posição da junta — inscreva-se para enviar alvos de movimento para o braço
/arm_status piper_msgs/ArmStatus Pub (feedback) Feedback do estado do braço: habilitado/desabilitado, flags de erro, posições atuais das juntas
/end_pose geometry_msgs/Pose Pub (feedback) Feedback da pose do efetor final no espaço cartesiano (posição + quaternion)
/enable_srv std_srvs/SetBool Serviço Habilitar (true) ou desabilitar (false) todas as juntas do braço
/go_zero_srv std_srvs/Trigger Serviço Comandar o braço para mover-se para a posição zero/inicial
/gripper_srv piper_msgs/GripperCmd Serviço Definir a posição do gripper (0 = aberto, máximo = totalmente fechado)
/stop_srv std_srvs/Trigger Serviço Parar todo o movimento das juntas imediatamente (parada de emergência via ROS)
/reset_srv std_srvs/Trigger Serviço Redefinir erros do braço e reabilitar após uma condição de falha

Referência da API piper_sdk

Métodos principais na C_PiperInterface classe. Inicializar com piper = C_PiperInterface("can0").

Método Descrição
ConnectPort() Abrir a interface CAN e iniciar a thread de comunicação
EnableArm(7) Habilitar todas as 6 juntas e o gripper (máscara de bits; 7 = todas)
DisableArm(7) Desabilitar todas as juntas — sempre chamar quando terminar ou antes de desconectar
EmergencyStop() Interrompa imediatamente todo o movimento conjunto
MotionCtrl_2(j1, j2, j3, j4, j5, j6) Envie um comando de posição de junta 6-DOF (ângulos em graus)
GetArmJointMsgs() Leia as posições, velocidades e torques atuais das juntas
GetArmEndPoseMsgs() Leia a pose cartesiana atual do efetor final
GripperCtrl(position, speed) Defina a posição do gripper (0 = aberto) e a velocidade
GetArmGripperMsgs() Leia o estado atual do gripper e o feedback de posição

Solução de Problemas

Sintoma Causa provável Correção
OSError: [Errno 19] No such device Interface CAN não está ativa Executar sudo ip link set can0 up e verifique com ifconfig can0
O braço não responde aos comandos O braço não está em modo escravo ou não está habilitado Chamar piper.EnableArm(7) após conectar. Confirme que o jumper do modo escravo está configurado corretamente no braço.
O feedback da junta lê todos os zeros Incompatibilidade de taxa de bits Certifique-se de que a taxa de bits da interface CAN é exatamente 1000000. Execute novamente ip link set can0 type can bitrate 1000000.
can.CanError: Failed to transmit Barramento CAN não está terminado Certifique-se de que resistores de terminação de 120 ohms estejam presentes em ambas as extremidades do barramento CAN. Ative o terminador interno do Piper via o DIP switch.
Modelo de robô URDF incorreto no RViz Incompatibilidade de firmware Firmware < S-V1.6-3: use piper_description_old.urdf. Firmware mais recente: use piper_description.urdf.
Permissão negada em can0 Usuário não está em dialout grupo SocketCAN requer root ou permissões apropriadas. Execute comandos com sudo ou configure regras udev.
Teleop VR: braço ultrapassa / atinge limites scaleFactor muito alto no Unity Reduza scaleFactor no aplicativo Unity e re-teste incrementalmente. O espaço de trabalho do Piper é menor que o do xArm.

Repositórios do GitHub

Repositório Descrição
agilexrobotics/piper_sdk SDK oficial do Python. Instale: pip3 install piper_sdk. Inclui demos, especificação da interface (INTERFACE_V2.MD), e guia de braço duplo.
agilexrobotics/piper_ros Pacote ROS Noetic com MoveIt, simulação Gazebo, URDF e tópicos / serviços ROS padrão.
← Voltar para o Piper Hub Guia de Configuração → Wiki Completa do Desenvolvedor →

Pronto para coletar dados de manipulação com o Piper?

Disponível para avaliação prática e coleta de dados em nossa instalação em Mountain View, CA.