AgileX Piper¶
Introduction¶
The Piper is a compact 6-degree-of-freedom (6-DOF) robotic arm manufactured by AgileX Robotics. Piper is marketed as a lightweight, low-cost manipulator aimed at AI and embodied-AI research, teleoperation, imitation learning, and general manipulation experimentation, which makes it a natural fit for shared-manipulation and teleoperated data-collection HRI studies.
It ships as a standalone arm (base plus six joints, optionally with a gripper end effector) rather than a full mobile manipulation platform, and is controlled over CAN bus from an external computer.
Manufacturer product page: PiPER — AgileX Robotics
Key Specifications¶
| Spec | Value |
|---|---|
| Degrees of freedom | 6 DOF |
| Payload capacity | 1.5 kg |
| Reach | 626 mm |
| Repeatability | ±0.1 mm |
| Weight | 4.2 kg |
| Operating temperature | -20 °C to 50 °C |
| Communication interface | CAN bus (fixed baud rate 1,000,000 bps) |
| Control software | Python API (piper_sdk); ROS 1 and ROS 2 support via piper_ros |
| List price | approx. $1,999-$2,499 USD (varies by reseller/region) |
| Gripper | Optional end effector; configured via a gripper_exist launch parameter in ROS |
The manufacturer page does not publish exact voltage/current draw, per-joint torque, or max joint velocity; pull these from the printed manual shipped with the unit and add them here once available.
Software / SDK Setup¶
Low-level Python SDK (piper_sdk)¶
- Repository: github.com/agilexrobotics/piper_sdk
- Interface reference: INTERFACE_V2.MD
- Demo code: piper_sdk/demo/V2
- FAQ: Q&A.MD
Install with pip3 install piper_sdk (or clone and pip3 install .). The SDK depends on python-can >= 3.3.4 and is tested on Ubuntu 18.04/20.04/22.04 with Python 3.6/3.8/3.10.
The arm communicates only over CAN, so bring the interface up before running any control code:
bash can_activate.sh can0 1000000
# or manually:
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
Basic control pattern:
from piper_sdk import C_PiperInterface
piper = C_PiperInterface()
piper.ConnectPort()
piper.EnableArm(7) # enable all 6 joints + gripper
joints = piper.GetArmJointMsgs()
...
piper.DisableArm(7) # disable when finished
ROS / ROS 2 integration (piper_ros)¶
- Repository: github.com/agilexrobotics/piper_ros
- ROS 1:
noeticbranch (Ubuntu 20.04 + ROS Noetic), built withcatkin_make. - ROS 2: a
humblebranch exists in the same repository. Treat its README as authoritative; the exact build steps were not independently re-verified while drafting this page and should be confirmed when the unit is set up.
Typical ROS 1 launch pattern (confirm ROS 2 equivalents from the humble branch):
bash can_activate.sh can0 1000000
roslaunch piper start_single_piper.launch can_port:=can0
Exposed interfaces include services /enable_srv, /go_zero_srv, /gripper_srv, /stop_srv, /reset_srv; topics /joint_states (command in), /joint_states_single (feedback), /end_pose (pose feedback); and an RViz variant via start_single_piper_rviz.launch. A dedicated piper_moveit package is included for motion planning.
Community resources (not official AgileX, use with judgment)¶
- A community ROS 2 Jazzy package: stanislawix/icclab_piper
- A third-party ROS 2 driver: Reimagine-Robotics/piper_ros
- A university robotics-center setup walkthrough covering CAN bring-up, SDK install, and Meta Quest 3 teleoperation: SVRC — AgileX Piper Setup Guide
Known Gotchas¶
- CAN bus only; a CAN adapter and correctly configured
can0interface are required before the SDK or ROS nodes will connect. - Always disable the arm when not actively commanding it (
DisableArm(7)or the ROS/enable_srvequivalent set to false); an enabled arm reacts immediately to any command, including a buggy or dropped-packet one. - Firmware/URDF mismatch: firmware before
S-V1.6-3reportedly requires a legacy URDF; newer firmware uses the standard URDF shipped inpiper_ros. Check the actual unit's firmware version before assuming the default URDF is correct. - Secure the arm's base before powering on, and keep the roughly 626 mm reach envelope clear of people and objects during operation.
Migration note: this page was newly authored from public AgileX Robotics manufacturer documentation and GitHub repositories, not migrated from SharePoint, since the lab acquired the Piper after the original wiki migration. All specs and setup steps should be verified against the actual unit and expanded with lab-specific configuration (CAN adapter model, control PC, ROS 2 distro actually deployed, firmware version) and troubleshooting notes once it has been commissioned.