Part II: Teleoperation and data collection · §19 of 43
Already done on the host (not in the container):
| Item | Location / version |
|---|---|
LeRobot source (editable install, shallow clone of main) | ~/Documents/lerobot (commit b863b42, v0.6.2) |
| Conda env | lerobot, Python 3.12.15, from conda-forge, with ffmpeg |
| Extras | damiao (python-can 4.6.1), feetech (feetech-servo-sdk 1.0.0, pyserial), core_scripts (datasets, rerun, foxglove, pynput, av) |
| PyTorch | 2.11.0 + CUDA 13.0, torch.cuda.is_available() == True on the RTX 5050 |
| zeus tools | ~/Documents/openarm_lerobot/: see the table below |
| Install logs | ~/Documents/lerobot_pip_install.log, ~/Documents/lerobot_pip_install2.log |
| Already on host | openarm-can-utils 1.4.0 (openarm-can-cli, calibration scripts), can-utils |
Exactly what was run, so you can reproduce it:
git clone --depth 1 https://github.com/huggingface/lerobot.git ~/Documents/lerobot
conda create -y -n lerobot -c conda-forge --override-channels python=3.12 ffmpeg
conda activate lerobot
cd ~/Documents/lerobot
pip install -e ".[damiao,feetech,core_scripts]"Use it:
conda activate lerobot # every new terminal
lerobot-info # versions sanity checkYour user is in the dialout group (needed for the Mini serial ports; it only takes effect after logging out and back in).
CAN interface setup still needs sudo each time the adapter is (re)plugged; lerobot-setup-can --mode=setup calls sudo ip link … internally.
zeus tools (~/Documents/openarm_lerobot/, all run inside conda activate lerobot):
| Tool | What it does | Touches hardware? |
|---|---|---|
setup_openarm_lerobot.sh | Start here. One-shot config + calibration: checks env/ports, brings CAN up, tests all 16 motors, creates follower placeholders, checks/redoes Mini calibration + gripper range, prints a sanity table. Re-runnable. | CAN setup (sudo); motor test briefly enables/disables; Mini calibration writes the Minis only |
safe_teleop.py | Guarded teleop (§23.3). Use it instead of lerobot-teleoperate. | Yes: drives the followers, but only after the alignment gate |
compare_mini_follower.py | Live table: what each Mini would command vs. where each follower joint is. --once for a snapshot. | Read-only, no torque |
check_mini_calibration.py | Checks the Mini calibration files match the offsets stored in each Mini, and that the gripper range is valid | Read-only |
fix_mini_gripper_range.py | Records the gripper open/closed range from a live readout and patches the files (works around lerobot-calibrate saving min == max) | Files only |
make_follower_calibration.py | Creates the follower placeholder files so LeRobot never re-zeroes the follower motors (§21) | Files only |
mini_raw_monitor.py | Raw servo counts of one Mini, live | Read-only |
The zeus hardware layout (§22) is the default in every tool, so they need no port arguments.
Optional:
hf auth loginwith a write token, to push datasets/models to the Hub.pip install -e ".[training]"or policy-specific extras (e.g.".[smolvla]",".[pi]") when you start training. Checkpyproject.tomlfor the exact extra names.- Updating LeRobot later:
cd ~/Documents/lerobot && git pull && pip install -e ".[damiao,feetech,core_scripts]". The clone is shallow; usegit fetch --unshallowif you need history.