YAM Cell
YAM Cell is a complete bimanual teleoperation workstation built around two YAM leader arms and two YAM follower arms. It is designed for collecting high-quality manipulation demonstrations for training embodied AI models.



Mobile Variant


System Overview
The YAM Cell pairs leader arms (with teaching handles) and follower arms in a bilateral teleoperation loop. An operator moves the leader arms naturally; the follower arms mirror the motion in real time with configurable force feedback.
Operator ──► Leader (YAM + teaching handle)
│ bilateral link (CAN bus)
Follower (YAM + task gripper) ──► Task workspaceHardware Requirements
| Component | Qty | Notes |
|---|---|---|
| YAM Follower arms | 2 | Any YAM tier |
| YAM Leader arms | 2 | Must use yam_teaching_handle gripper |
| CANable USB-CAN adapters | 4 | One per arm |
| Workstation PC | 1 | Ubuntu 22.04 recommended |
CAN Bus Layout
Each arm requires a dedicated CAN channel. Assign persistent names using udev rules (see Hardware Setup):
| Arm | CAN name |
|---|---|
| Left follower | can_follower_l |
| Right follower | can_follower_r |
| Left leader | can_leader_l |
| Right leader | can_leader_r |
Videos
Quick Start
1. Configure CAN IDs
Plug one CANable device at a time and assign each arm a persistent name:
# Follow the instructions in:
doc/set_persist_id_socket_can.md2. Verify connectivity
ip a | grep can
# Expected:
# can_follower_r UP
# can_follower_l UP
# can_leader_r UP
# can_leader_l UP3. Launch bimanual teleoperation
cd /path/to/i2rt
source .venv/bin/activate
python examples/bimanual_lead_follower/bimanual_lead_follower.py4. Enable synchronization
Press the top button on either teaching handle once to begin tracking. Press again to pause.
Control Reference
| Action | Result |
|---|---|
| Move leader arm | Follower mirrors motion |
| Squeeze trigger | Follower gripper closes |
| Top button (1×) | Enable sync |
| Top button (2×) | Pause sync |
--bilateral_kp flag | Increase for more force feedback (default 0.2) |
Bilateral stiffness
Start with --bilateral_kp 0.1 and increase gradually. Values above 0.3 make the leader arm feel noticeably heavy.
Data Logging
Trajectory recording is built into the example:
from i2rt.robots.motor_chain_robot import get_yam_robot
# See examples/record_replay_trajectory/ for full dataset collection pipeline