Arm CAN Setup
Detect, name, bring up, and validate the Piper CAN interface.
Scope
This page targets:
- AgileX Piper robotic arm
- The official USB-to-CAN module shipped for the arm
piper_rossingle-arm control workflows
Install Dependencies
sudo apt update
sudo apt install -y can-utils ethtool
sudo apt install -y iproute2
Find the CAN Module
cd ~/venom_ws/src/venom_vnv/driver/piper_ros
bash find_all_can_port.sh
Typical output:
Both ethtool and can-utils are installed.
Interface can0 is connected to USB port 3-1.4:1.0
Record the USB port ID. It is the safest way to distinguish the arm adapter from chassis CAN adapters on the same machine.
Recommended Single-Arm Naming
To avoid conflicts with chassis CAN, the project recommends naming the arm interface can_piper:
cd ~/venom_ws/src/venom_vnv/driver/piper_ros
bash can_activate.sh can_piper 1000000
If you explicitly want the default interface name, use:
bash can_activate.sh can0 1000000
Arm and Chassis on the Same Machine
Recommended naming:
- Chassis:
can0 - Piper arm:
can_piper
If multiple CAN devices are present, use the USB port ID to activate the correct one:
cd ~/venom_ws/src/venom_vnv/driver/piper_ros
bash can_activate.sh can_piper 1000000 "3-1.4:1.0"
Multiple Arm CAN Modules
The repository also includes:
can_muti_activate.sh
Edit the USB_PORTS mapping in that script, for example:
USB_PORTS["3-1.1:1.0"]="can_arm1:1000000"
USB_PORTS["3-1.2:1.0"]="can_arm2:1000000"
Then run:
bash can_muti_activate.sh
Check the Interface
ifconfig -a | grep can
ip -details link show can_piper
Basic Debugging
candump can_piper
If the arm is powered and the link is healthy, you should normally see CAN traffic.
Launch the Arm Node
cd ~/venom_ws
source install/setup.bash
ros2 launch piper start_single_piper.launch.py can_port:=can_piper
With RViz:
cd ~/venom_ws
source install/setup.bash
ros2 launch piper start_single_piper_rviz.launch.py can_port:=can_piper