# EarthRover Mini Plus

<img
  src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/Earth_Rover_Mini_5_240c9adc-4f9e-44b7-982f-5d1dc24af1d8.png.webp"
  alt="EarthRover Mini Plus"
  width="70%"
/>

EarthRover Mini Plus هو روبوت متنقل مفتوح المصدر بالكامل يتصل عبر السحابة باستخدام Frodobots SDK. يتيح لك ذلك التحكم في الروبوت وتسجيل مجموعات البيانات لتدريب نماذج الذكاء الاصطناعي.

## ما تحتاجه

### الأجهزة

- روبوت EarthRover Mini
- حاسوب يعمل بنظام Python 3.12 أو أحدث
- اتصال بالإنترنت

### إعداد حزمة Frodobots SDK

يحتاج الروبوت إلى تشغيل [Frodobots SDK](https://github.com/frodobots-org/earth-rovers-sdk) على جهازك. إليك الطريقة:

1. قم بتنزيل وتثبيت SDK:

```bash
git clone https://github.com/frodobots-org/earth-rovers-sdk.git
cd earth-rovers-sdk
pip install -r requirements.txt
```

2. حفظ بيانات الاعتماد:

اكتب متغيرات .env باستخدام مفتاح API الخاص بـ SDK واسم البوت الذي قدمهما فريق Frodobots.

```bash
SDK_API_TOKEN=your_sdk_api_token_here
BOT_SLUG=your_bot_slug_here
CHROME_EXECUTABLE_PATH=/path/to/chrome_or_chromium
# Default value is MAP_ZOOM_LEVEL=18 https://wiki.openstreetmap.org/wiki/Zoom_levels
MAP_ZOOM_LEVEL=18
MISSION_SLUG=your_mission_slug_here
# Image quality between 0.1 and 1.0 (default: 0.8)
# Recommended: 0.8 for better performance
IMAGE_QUALITY=0.8
# Image format: jpeg, png or webp (default: png)
# Recommended: jpeg for better performance and lower bandwidth usage
IMAGE_FORMAT=jpeg
```

3. ابدأ تشغيل SDK:

```bash
hypercorn main:app --reload
```

4. افتح متصفح الويب وانتقل إلى `http://localhost:8000`، ثم انقر على "Join"

يمنحك SDK:

- فيديو مباشر من الكاميرات الأمامية والخلفية

> [!IMPORTANT]
> يجب أن يكون SDK قيد التشغيل قبل أن تتمكن من استخدام الروبوت.

## تثبيت LeRobot

اتبع [دليل التثبيت](./installation) لتثبيت LeRobot.

بالإضافة إلى التثبيت الأساسي، قم بتثبيت EarthRover Mini مع تبعيات الأجهزة:

```bash
pip install -e ".[hardware]"
```

## كيف يعمل

يستخدم الروبوت الإنترنت للتواصل:

- **أوامر الحركة**: تُرسل عبر SDK
- **فيديو الكاميرا**: مستلم من SDK
- **معلومات الروبوت**: البطارية، الموقع، السرعة من SDK

لا تحتاج إلى توصيل أي شيء - كل شيء يعمل عبر SDK.

## المعايرة

لا حاجة إلى معايرة! الروبوت جاهز للاستخدام بمجرد تشغيل مجموعة تطوير البرمجيات (SDK).

## التحكم في الروبوت

تتحكم في الروبوت باستخدام لوحة المفاتيح - تمامًا كما تلعب لعبة فيديو باستخدام مفاتيح WASD.

### التحكم بلوحة المفاتيح

| المفتاح | إجراء                           |
| --- | -------------------------------- |
| W   | الانتقال إلى الأمام                     |
| S   | التحرك إلى الخلف                    |
| A   | انعطف يساراً (مع حركة للأمام)  |
| D   | انعطف يميناً (مع حركة للأمام) |
| Q   | دوّر إلى اليسار في مكانك             |
| E   | تدوير إلى اليمين في الموقع            |
| X   | توقف عن جميع الحركات                |
| +/= | زيادة السرعة                   |
| -   | تقليل السرعة                   |
| ESC | قطع الاتصال                       |

### إعدادات السرعة

يمكنك ضبط سرعة حركة الروبوت:

- **سرعة الأمام/الخلف**: الافتراضي هو السرعة الكاملة (1.0)
- **سرعة الدوران**: الافتراضي هو السرعة الكاملة (1.0)
- **تغييرات السرعة**: استخدم مفاتيح +/- للتعديل بمقدار 0.1 في كل مرة

### جرّبها

اختبار الروبوت قبل تسجيل البيانات:

```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]
> إذا كنت تستخدم جهاز Mac، فقد تحتاج إلى منح الطرفية (Terminal) إذنًا للوصول إلى لوحة المفاتيح من أجل التشغيل عن بُعد. انتقل إلى تفضيلات النظام > الأمان والخصوصية > مراقبة الإدخال، ثم حدد مربع الاختيار الخاص بالطرفية (Terminal).

## تسجيل البيانات

بمجرد أن تتمكن من التحكم في الروبوت بشكل جيد، يمكنك البدء في تسجيل البيانات لتدريب نماذج الذكاء الاصطناعي. يسجّل النظام:

- **ما تفعله**: كيفية تحريك الروبوت (للأمام، للخلف، الدوران)
- **ما يراه الروبوت**:
  - فيديوهات من كلا الكاميرتين
  - سرعة الروبوت واتجاهه
  - مستوى البطارية والموقع
  - موقع GPS والإشارة
  - بيانات مستشعرات أخرى
- **متى حدث**: طوابع زمنية لكل شيء

### إعداد Hugging Face

نستخدم Hugging Face لتخزين بياناتك عبر الإنترنت. أولاً، سجّل الدخول باستخدام رمزك من [إعدادات Hugging Face](https://huggingface.co/settings/tokens):

```bash
hf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential
```

احفظ اسم مستخدمك على Hugging Face:

```bash
HF_USER=$(hf auth whoami | awk -F': *' 'NR==1 {print $2}')
echo $HF_USER
```

### بدء التسجيل

استخدم أمر التسجيل القياسي:

```bash
lerobot-record \
    --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" \
    --dataset.streaming_encoding=true \
    --dataset.encoder_threads=2 \
    --display_data=true
# Optional: --dataset.rgb_encoder.vcodec=auto
```

استبدل `your_username/dataset_name` باسم مستخدمك على Hugging Face واسمًا لبياناتك.

### ما يتم حفظه

يتضمن مجموعة البيانات الخاصة بك:

**إجراءاتك (2 ميزات)**:

- `linear_velocity`: مقدار تحركك للأمام/للخلف
- `angular_velocity`: مقدار دورانك إلى اليسار/اليمين

**ملاحظات الروبوت (24 ميزة)**:

- فيديو الكاميرا الأمامية
- فيديو الكاميرا الخلفية
- السرعة الحالية
- مستوى البطارية
- التوجيه
- GPS (خط العرض، خط الطول، قوة الإشارة)
- قوة إشارة الشبكة
- مستوى الاهتزاز
- حالة المصباح (تشغيل/إيقاف)
- Accelerometer (x, y, z)
- Gyroscope (x, y, z)
- Magnetometer (x, y, z)
- دورات العجلة بالدقيقة (4 عجلات)

### إلى أين تذهب بياناتك

على جهازك: `~/.cache/huggingface/lerobot/{repo-id}`

بعد التسجيل، يتم رفع بياناتك تلقائيًا إلى صفحتك على Hugging Face:

```bash
echo https://huggingface.co/datasets/${HF_USER}/earthrover-navigation
```

سيتم وسم مجموعة بياناتك بـ `LeRobot` لتسهيل اكتشافها من قبل المجتمع.

