Technical Specifications

Complete hardware specs, ROS2 topics reference, piper_sdk API summary, and troubleshooting guide.

Mechanical Specifications

Spec Value
Degrees of Freedom6 DOF + optional gripper
Reach~600 mm
Max Payload~1.5 kg
Repeatability±0.1 mm
Form FactorCompact tabletop / desktop
Multi-armDual-arm master-slave via separate CAN interfaces
ManufacturerAgileX Robotics

Electrical & Communication

Spec Value
Power Supply24 V DC
CommunicationCAN bus — 1,000,000 bps (1 Mbps)
Host InterfaceUSB-to-CAN adapter (e.g., CANable, GS_USB)
Linux InterfaceSocketCAN (can0, can1, …)

Software & Control

Spec Value
Control ModesJoint position, end-effector pose, gripper
Python SDKpip3 install piper_sdkagilexrobotics/piper_sdk
ROS Packageagilexrobotics/piper_ros (ROS Noetic + MoveIt)
SimulationGazebo via piper_gazebo.launch
URDFpiper_description.urdf (firmware ≥ S-V1.6-3)
OS SupportUbuntu 18.04, 20.04, 22.04
Python VersionPython 3.6+

Joint Limits

Joint Min (deg) Max (deg)
Joint 1−175+175
Joint 2−90+135
Joint 3−150+80
Joint 4−175+175
Joint 5−90+90
Joint 6−175+175

ROS Topics & Services

Standard topics and services exposed by piper_ros after launching start_single_piper.launch.

Topic / Service Type Direction Description
/joint_states sensor_msgs/JointState Sub (send commands) Joint position commands — subscribe to send motion targets to the arm
/arm_status piper_msgs/ArmStatus Pub (feedback) Arm state feedback: enabled/disabled, error flags, current joint positions
/end_pose geometry_msgs/Pose Pub (feedback) End-effector pose feedback in Cartesian space (position + quaternion)
/enable_srv std_srvs/SetBool Service Enable (true) or disable (false) all arm joints
/go_zero_srv std_srvs/Trigger Service Command the arm to move to the zero/home position
/gripper_srv piper_msgs/GripperCmd Service Set gripper position (0 = open, max = fully closed)
/stop_srv std_srvs/Trigger Service Stop all joint motion immediately (emergency stop via ROS)
/reset_srv std_srvs/Trigger Service Reset arm errors and re-enable after a fault condition

piper_sdk API Reference

Key methods on the C_PiperInterface class. Initialize with piper = C_PiperInterface("can0").

Method Description
ConnectPort() Open the CAN interface and start the communication thread
EnableArm(7) Enable all 6 joints and gripper (bitmask; 7 = all)
DisableArm(7) Disable all joints — always call when done or before disconnecting
EmergencyStop() Immediately halt all joint motion
MotionCtrl_2(j1, j2, j3, j4, j5, j6) Send a 6-DOF joint position command (angles in degrees)
GetArmJointMsgs() Read current joint positions, velocities, and torques
GetArmEndPoseMsgs() Read current end-effector Cartesian pose
GripperCtrl(position, speed) Set gripper position (0 = open) and speed
GetArmGripperMsgs() Read current gripper state and position feedback

Troubleshooting

Symptom Likely Cause Fix
OSError: [Errno 19] No such device CAN interface not up Run sudo ip link set can0 up and verify with ifconfig can0
Arm does not respond to commands Arm not in slave mode or not enabled Call piper.EnableArm(7) after connecting. Confirm slave mode jumper is set correctly on the arm.
Joint feedback reads all zeros Bitrate mismatch Ensure the CAN interface bitrate is exactly 1000000. Re-run ip link set can0 type can bitrate 1000000.
can.CanError: Failed to transmit CAN bus not terminated Ensure 120-ohm termination resistors are present at both ends of the CAN bus. Enable the Piper's internal terminator via the DIP switch.
URDF robot model incorrect in RViz Firmware mismatch Firmware < S-V1.6-3: use piper_description_old.urdf. Newer firmware: use piper_description.urdf.
Permission denied on can0 User not in dialout group SocketCAN requires root or appropriate permissions. Run commands with sudo or configure udev rules.
VR teleop: arm overshoots / hits limits scaleFactor too high in Unity Reduce scaleFactor in the Unity app and re-test incrementally. The Piper workspace is smaller than xArm.

GitHub Repositories

Repository Description
agilexrobotics/piper_sdk Official Python SDK. Install: pip3 install piper_sdk. Includes demos, interface spec (INTERFACE_V2.MD), and dual-arm guide.
agilexrobotics/piper_ros ROS Noetic package with MoveIt, Gazebo simulation, URDF, and standard ROS topics / services.
← Back to Piper Hub Setup Guide → Full Developer Wiki →

Ready to collect manipulation data with the Piper?

Available for hands-on evaluation and data collection at our Mountain View, CA facility.