Part II: Teleoperation and data collection · §19 of 43

Already done on the host (not in the container):

ItemLocation / version
LeRobot source (editable install, shallow clone of main)~/Documents/lerobot (commit b863b42, v0.6.2)
Conda envlerobot, Python 3.12.15, from conda-forge, with ffmpeg
Extrasdamiao (python-can 4.6.1), feetech (feetech-servo-sdk 1.0.0, pyserial), core_scripts (datasets, rerun, foxglove, pynput, av)
PyTorch2.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 hostopenarm-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 check

Your 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):

ToolWhat it doesTouches hardware?
setup_openarm_lerobot.shStart 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.pyGuarded teleop (§23.3). Use it instead of lerobot-teleoperate.Yes: drives the followers, but only after the alignment gate
compare_mini_follower.pyLive table: what each Mini would command vs. where each follower joint is. --once for a snapshot.Read-only, no torque
check_mini_calibration.pyChecks the Mini calibration files match the offsets stored in each Mini, and that the gripper range is validRead-only
fix_mini_gripper_range.pyRecords 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.pyCreates the follower placeholder files so LeRobot never re-zeroes the follower motors (§21)Files only
mini_raw_monitor.pyRaw servo counts of one Mini, liveRead-only

The zeus hardware layout (§22) is the default in every tool, so they need no port arguments.

Optional:

  • hf auth login with 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. Check pyproject.toml for the exact extra names.
  • Updating LeRobot later: cd ~/Documents/lerobot && git pull && pip install -e ".[damiao,feetech,core_scripts]". The clone is shallow; use git fetch --unshallow if you need history.