Spaces:
Running
Running
| # lerobot | |
| Command-line interface for robot control with [@lerobot/node](https://www.npmjs.com/package/@lerobot/node) in Node.js (see [@lerobot/web](https://www.npmjs.com/package/@lerobot/web) for the browser version). | |
| ## Quick Start | |
| ```bash | |
| # Install globally | |
| npm install -g lerobot | |
| # Or use directly with npx | |
| npx lerobot@latest --help | |
| ``` | |
| ### Complete Workflow | |
| ```bash | |
| # 1. Find your robot port | |
| lerobot find-port | |
| # Output: The port of this MotorsBus is '/dev/ttyUSB0' | |
| # 2. Calibrate the robot | |
| lerobot calibrate --robot.type=so100_follower --robot.port=/dev/ttyUSB0 --robot.id=my_arm | |
| # 3. Control the robot | |
| lerobot teleoperate --robot.type=so100_follower --robot.port=/dev/ttyUSB0 --robot.id=my_arm | |
| # 4. Release motors when done | |
| lerobot release-motors --robot.type=so100_follower --robot.port=/dev/ttyUSB0 --robot.id=my_arm | |
| ``` | |
| ### Help | |
| ```bash | |
| # See all available commands | |
| lerobot --help | |
| # Get help for specific commands | |
| lerobot calibrate --help | |
| lerobot teleoperate --help | |
| ``` | |
| ## Commands | |
| ### `find-port` | |
| Interactive port discovery using cable detection. | |
| ```bash | |
| lerobot find-port | |
| ``` | |
| **Process:** | |
| 1. Lists current ports | |
| 2. Prompts to unplug USB cable | |
| 3. Detects which port disappeared | |
| 4. Prompts to reconnect cable | |
| ### `calibrate` | |
| Calibrate robot motors and save calibration data. | |
| ```bash | |
| lerobot calibrate --robot.type=so100_follower --robot.port=/dev/ttyUSB0 --robot.id=my_arm | |
| ``` | |
| **Options:** | |
| - `--robot.type` - Robot type (e.g., `so100_follower`) | |
| - `--robot.port` - Serial port (e.g., `/dev/ttyUSB0`, `COM4`) | |
| - `--robot.id` - Robot identifier (default: `default`) | |
| - `--output` - Custom output path for calibration file | |
| **Storage Location:** | |
| ``` | |
| ~/.cache/huggingface/lerobot/calibration/robots/{robot_type}/{robot_id}.json | |
| ``` | |
| ### `teleoperate` | |
| Control robot through keyboard input. | |
| ```bash | |
| lerobot teleoperate --robot.type=so100_follower --robot.port=/dev/ttyUSB0 --robot.id=my_arm | |
| ``` | |
| **Options:** | |
| - `--robot.type` - Robot type (e.g., `so100_follower`) | |
| - `--robot.port` - Serial port (e.g., `/dev/ttyUSB0`, `COM4`) | |
| - `--robot.id` - Robot identifier (default: `default`) | |
| - `--teleop.type` - Teleoperator type (default: `keyboard`) | |
| - `--duration` - Duration in seconds, 0 = unlimited (default: `0`) | |
| **Keyboard Controls:** | |
| - `w/s` - Elbow flex/extend | |
| - `a/d` - Wrist down/up | |
| - `q/e` - Wrist roll left/right | |
| - `o/c` - Gripper open/close | |
| - `Arrow keys` - Shoulder lift/pan | |
| - `Ctrl+C` - Stop and exit | |
| ### `release-motors` | |
| Release robot motors for manual positioning. | |
| ```bash | |
| lerobot release-motors --robot.type=so100_follower --robot.port=/dev/ttyUSB0 --robot.id=my_arm | |
| ``` | |
| **Options:** | |
| - `--robot.type` - Robot type (e.g., `so100_follower`) | |
| - `--robot.port` - Serial port (e.g., `/dev/ttyUSB0`, `COM4`) | |
| - `--robot.id` - Robot identifier (default: `default`) | |
| - `--motors` - Specific motor IDs to release (comma-separated) | |