This tutorial demonstrates how to set up a bimanual lead-follower system. This tutorial assumes you've followed the main README and finished setting up the environment.
- Two YAM Leader arms
- Two YAM Follower arms
- Install two YAM leader and two YAM follower arms safely on the tabletop
- Connect the arms to power
- Set up the CANable devices
- Important: Do NOT plug any CANable devices into your computer yet
- Follow the instructions in set_persist_id_socket_can.md to configure each arm:
- Left leader arm:
can_leader_l - Right leader arm:
can_leader_r - Left follower arm:
can_follower_l - Right follower arm:
can_follower_r
- Left leader arm:
⚠️ This step is critical! Our code uses these CAN IDs to match arms together.
After setting up all CAN IDs:
- Plug in all 4 CAN devices
- Run
ip ato verify the CAN devices are mapped correctly - You should see output similar to:
i2rt@ioheart-dev03:~/i2rt$
.........
.........
9: can_follower_r: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10
link/can
10: can_follower_l: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10
link/can
11: can_leader_r: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10
link/can
12: can_leader_l: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10
link/canOnce all CAN devices are properly configured and connected, launch the system:
Assume you've installed the python virtual environment and run source .venv/bin/activate
python bimanual_lead_follower.py- Press the top button on the teaching handle to enable the system
- This code essentially launches two
minimum_gello.pyinstances for bimanual control
- If you don't see all four CAN interfaces, double-check that:
- All CAN devices are properly connected
- Each device has a unique CAN ID as configured
- The devices are powered on and in UP state
- Use
ip link showto check the status of individual CAN interfaces