mirror of
https://github.com/huggingface/lerobot.git
synced 2026-05-11 14:49:43 +00:00
35c5a27352
* feat: Add EarthRover Mini Plus robot integration with Frodobots SDK * refactor: Clean up * refactor: Remove VirtualCamera implementation for EarthRover Mini Plus integration * fix: Reduce timeout for camera requests * fix: Add empty cameras dict for compatibility with recording script * refactor: Remove record.py script for EarthRover Mini Plus use lerobot_record instead * refactor: Update documentation for EarthRover Mini Plus integration * refactor keyboard teleoperation * refactor: Remove angular velocity * docs: Add documentation for EarthRover Mini Plus integration * Add earthrover_mini_plus robot to replay and teleoperate scripts * refactor: Update stop key from Space to X * refactor: Implement caching for camera frames and robot telemetry data * refactor * refactor: Replace string literals with constants for action and observation keys * Add Earth Rover Mini to robots section in documentation Co-authored-by: somthecoder sbaner64@gmail.com Co-authored-by: randomSmarts Aarshsmittal@gmail.com Co-authored-by: Hassoonu halsae2@illinois.edu Co-authored-by: Saketh06 saketh.kantipudi@gmail.com Co-authored-by: sairajshetye sairajshetye2@gmail.com
207 lines
5.3 KiB
Plaintext
207 lines
5.3 KiB
Plaintext
# EarthRover Mini Plus
|
|
|
|
The EarthRover Mini Plus is a fully open source mobile robot that connects through the cloud using the Frodobots SDK. This lets you control the robot and record datasets for training AI models.
|
|
|
|
## What You Need
|
|
|
|
### Hardware
|
|
|
|
- EarthRover Mini robot
|
|
- Computer with Python 3.10 or newer
|
|
- Internet connection
|
|
|
|
### Setting Up the Frodobots SDK
|
|
|
|
The robot needs the [Frodobots SDK](https://github.com/Frodobots/earth-rovers-sdk) running on your computer. Here's how:
|
|
|
|
1. Download and install the SDK:
|
|
|
|
```bash
|
|
git clone https://github.com/Frodobots/earth-rovers-sdk.git
|
|
cd earth-rovers-sdk
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Start the SDK:
|
|
|
|
```bash
|
|
hypercorn main:app --reload
|
|
```
|
|
|
|
3. Open your web browser and go to `http://localhost:8000`, then click "Join"
|
|
|
|
The SDK gives you:
|
|
|
|
- Live video from front and rear cameras
|
|
|
|
> [!IMPORTANT]
|
|
> The SDK must be running before you can use the robot.
|
|
|
|
## Install LeRobot
|
|
|
|
Follow our [Installation Guide](./installation) to install LeRobot.
|
|
|
|
In addition to the base installation, install the EarthRover Mini dependencies:
|
|
|
|
```bash
|
|
pip install -e .
|
|
```
|
|
|
|
## How It Works
|
|
|
|
The robot uses the internet to communicate:
|
|
|
|
- **Movement commands**: Sent through the SDK
|
|
- **Camera video**: Received from the SDK
|
|
- **Robot info**: Battery, location, speed from the SDK
|
|
|
|
You don't need to plug anything in - it all works through the SDK.
|
|
|
|
## Calibration
|
|
|
|
No calibration needed! The robot is ready to use as soon as the SDK is running.
|
|
|
|
## Controlling the Robot
|
|
|
|
You control the robot using your keyboard - just like playing a video game with WASD keys.
|
|
|
|
### Keyboard Controls
|
|
|
|
| Key | Action |
|
|
| --- | -------------------------------- |
|
|
| W | Move forward |
|
|
| S | Move backward |
|
|
| A | Turn left (with forward motion) |
|
|
| D | Turn right (with forward motion) |
|
|
| Q | Rotate left in place |
|
|
| E | Rotate right in place |
|
|
| X | Stop all movement |
|
|
| +/= | Increase speed |
|
|
| - | Decrease speed |
|
|
| ESC | Disconnect |
|
|
|
|
### Speed Settings
|
|
|
|
You can adjust how fast the robot moves:
|
|
|
|
- **Forward/backward speed**: Default is full speed (1.0)
|
|
- **Turning speed**: Default is full speed (1.0)
|
|
- **Speed changes**: Use +/- keys to adjust by 0.1 each time
|
|
|
|
### Try It Out
|
|
|
|
Test driving the robot before recording data:
|
|
|
|
```python
|
|
from lerobot.robots.earthrover_mini_plus import EarthRoverMiniPlus, EarthRoverMiniPlusConfig
|
|
from lerobot.teleoperators.keyboard import KeyboardRoverTeleop, KeyboardRoverTeleopConfig
|
|
|
|
# Initialize robot
|
|
robot_config = EarthRoverMiniPlusConfig()
|
|
robot = EarthRoverMiniPlus(robot_config)
|
|
|
|
# Initialize teleoperator
|
|
teleop_config = KeyboardRoverTeleopConfig(
|
|
linear_speed=1.0,
|
|
angular_speed=1.0,
|
|
speed_increment=0.1
|
|
)
|
|
teleop = KeyboardRoverTeleop(teleop_config)
|
|
|
|
# Connect
|
|
robot.connect()
|
|
teleop.connect()
|
|
|
|
# Teleoperate (use keyboard controls)
|
|
try:
|
|
while True:
|
|
action = teleop.get_action()
|
|
robot.send_action(action)
|
|
except KeyboardInterrupt:
|
|
pass
|
|
finally:
|
|
robot.disconnect()
|
|
teleop.disconnect()
|
|
```
|
|
|
|
> [!TIP]
|
|
> If you're using a Mac, you might need to give Terminal permission to access your keyboard for teleoperation. Go to System Preferences > Security & Privacy > Input Monitoring and check the box for Terminal.
|
|
|
|
## Recording Data
|
|
|
|
Once you can drive the robot well, you can start recording data to train AI models. The system records:
|
|
|
|
- **What you do**: How you move the robot (forward, backward, turning)
|
|
- **What the robot sees**:
|
|
- Videos from both cameras
|
|
- Robot speed and direction
|
|
- Battery level and location
|
|
- GPS position and signal
|
|
- Other sensor data
|
|
- **When it happened**: Timestamps for everything
|
|
|
|
### Setting Up Hugging Face
|
|
|
|
We use Hugging Face to store your data online. First, log in with your token from [Hugging Face settings](https://huggingface.co/settings/tokens):
|
|
|
|
```bash
|
|
huggingface-cli login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential
|
|
```
|
|
|
|
Store your Hugging Face username:
|
|
|
|
```bash
|
|
HF_USER=$(huggingface-cli whoami | head -n 1)
|
|
echo $HF_USER
|
|
```
|
|
|
|
### Start Recording
|
|
|
|
Use the standard recording command:
|
|
|
|
```bash
|
|
python src/lerobot/scripts/lerobot_record.py \
|
|
--robot.type=earthrover_mini_plus \
|
|
--teleop.type=keyboard_rover \
|
|
--dataset.repo_id=your_username/dataset_name \
|
|
--dataset.num_episodes=2 \
|
|
--dataset.fps=10 \
|
|
--dataset.single_task="Navigate around obstacles" \
|
|
--display_data=true
|
|
```
|
|
|
|
Replace `your_username/dataset_name` with your Hugging Face username and a name for your dataset.
|
|
|
|
### What Gets Saved
|
|
|
|
Your dataset includes:
|
|
|
|
**Your Actions (2 things)**:
|
|
|
|
- How much you moved forward/backward
|
|
- How much you turned left/right
|
|
|
|
**Robot Observations (12 things)**:
|
|
|
|
- Front camera video
|
|
- Rear camera video
|
|
- Current speed
|
|
- Battery level
|
|
- Which way the robot is facing
|
|
- GPS location (latitude, longitude, signal strength)
|
|
- Network signal strength
|
|
- Vibration level
|
|
- Lamp status (on/off)
|
|
|
|
### Where Your Data Goes
|
|
|
|
On your computer: `~/.cache/huggingface/lerobot/{repo-id}`
|
|
|
|
After recording, your data automatically uploads to your Hugging Face page:
|
|
|
|
```bash
|
|
echo https://huggingface.co/datasets/${HF_USER}/earthrover-navigation
|
|
```
|
|
|
|
Your dataset will be tagged with `LeRobot` for community discovery.
|