Part II: Teleoperation and data collection · §22 of 43
zeus (as cabled now)
CAN adapter: a single PEAK PCAN-USB Pro FD (peak_usb driver) with two channels. It always creates can0
for channel 1 and can1 for channel 2, so the names are stable. The cables are in the opposite order to the
ROS 2 defaults:
| Physical arm | Follower bus | Mini port (stable path) |
|---|---|---|
| Left | can0 (PCAN Ch1) | /dev/serial/by-id/usb-1a86_USB_Single_Serial_5876043720-if00 |
| Right | can1 (PCAN Ch2) | /dev/serial/by-id/usb-1a86_USB_Single_Serial_5876043592-if00 |
How zeus is cabled: one PCAN adapter, two channels, one per follower arm. The Minis connect over USB serial by stable path.
flowchart LR pcan["PCAN-USB Pro FD<br/>peak_usb"]:::hw pcan ==>|Ch1| c0["can0"] ==> la["left follower"]:::arm pcan ==>|Ch2| c1["can1"] ==> ra["right follower"]:::arm ml["left Mini<br/>serial …043720"] -.->|teleop| la mr["right Mini<br/>serial …043592"] -.->|teleop| ra classDef hw fill:#c2410c1f,stroke:#c2410c classDef arm fill:#0f766e1f,stroke:#0f766e
Consequences:
- LeRobot / zeus tools: left =
can0, right =can1(already the defaults in~/Documents/openarm_lerobot). - ROS 2: every real-hardware launch needs
right_can_interface:=can1 left_can_interface:=can0(the defaults are the reverse).bash /root/scripts/openarm_launch.sh realpasses them for you; a launch typed without them (2026-10-10) sent the right arm’s motions to the left arm. Identify the arms after every launch (§12.2). - If someone swaps the PCAN cables back to the ROS order (right on Ch1), change
LEFT_CAN/RIGHT_CANat the top ofsetup_openarm_lerobot.shand theDEFAULTSinsafe_teleop.py/compare_mini_follower.py, and drop the ROS arguments. - Never use
/dev/ttyACM0/1for the Minis: they’re numbered in plug order and swap. A swapped Mini inverts joints 2 and 7 (§18), and LeRobot writes the calibration offsets of one Mini into the other. - The CAN interfaces lose their configuration whenever the PCAN adapter is unplugged (they come back down:
“Network is down”). Re-run
setup_openarm_lerobot.sh(orlerobot-setup-can --mode=setup --interfaces=can0,can1).
Physically label both PCAN cables and both Minis left/right.
How to re-identify which is which
- Follower bus: power only one arm and run
lerobot-setup-can --mode=test --interfaces=can0,can1; only that arm’s interface reports motors. Or move one follower joint by hand whilecompare_mini_follower.pyruns: the matching column changes. - Mini: unplug one Mini’s USB and see which entry disappears from
ls /dev/serial/by-id/.