An open API service indexing awesome lists of open source software.

https://github.com/mukller/omni-robot-assistant

Home robot assistant on 3-wheel omnidirectional platform — ESP32, LiDAR LDS-01, Python
https://github.com/mukller/omni-robot-assistant

arduino esp32 lidar omnidirectional omniwheel open-source python robot-assistant robotics

Last synced: 14 days ago
JSON representation

Home robot assistant on 3-wheel omnidirectional platform — ESP32, LiDAR LDS-01, Python

Awesome Lists containing this project

README

          

[English](README_EN.md) • **Русский**

# 🤖 Loki Robot Assistant

**Автономный домашний робот-ассистент на базе MakersPet Loki 200mm**
ESP32 + microROS · Raspberry Pi 4 · ROS2 Iron · Cartographer SLAM · Nav2

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)
[![ROS2 Iron](https://img.shields.io/badge/ROS2-Iron-blue)](https://docs.ros.org/en/iron/)
[![PlatformIO](https://img.shields.io/badge/PlatformIO-ESP32-orange)](https://platformio.org/)
[![Platform](https://img.shields.io/badge/Platform-Raspberry%20Pi%204-red)](https://www.raspberrypi.com/)
[![kaiaai/LDS](https://img.shields.io/badge/LiDAR-kaiaai%2FLDS-informational)](https://github.com/kaiaai/LDS)
[![PlatformIO Build](https://github.com/Mukller/omni-robot-assistant/actions/workflows/pio_build.yml/badge.svg)](https://github.com/Mukller/omni-robot-assistant/actions/workflows/pio_build.yml)
[![ROS2 Build](https://github.com/Mukller/omni-robot-assistant/actions/workflows/ros2_build.yml/badge.svg)](https://github.com/Mukller/omni-robot-assistant/actions/workflows/ros2_build.yml)

---

## О проекте

Loki Robot Assistant — автономный мобильный робот на базе платформы **MakersPet Loki 200mm**.
Двухколёсный дифференциальный привод с кастером, 360° LiDAR-сканирование, полный стек ROS2 Iron.

- **ESP32** управляет моторами, датчиками и LiDAR — через **microROS** передаёт данные по UDP
- **Raspberry Pi 4** запускает **ROS2 Iron**: Cartographer SLAM, навигация Nav2, автономное исследование
- Полностью 3D-печатаемый корпус, открытое железо и ПО

---

## Фотографии

![Loki Robot Platform](https://github.com/makerspet/makerspet_loki/assets/143911662/9e3857b0-df87-4fda-9d94-bfc53fed399d)

*MakersPet Loki 200mm — базовая платформа*

| Вид сверху | Архитектура системы |
|:-:|:-:|
| ![Top View](docs/images/robot_top_view.svg) | ![System Architecture](docs/images/system_arch.svg) |

---

## Видео и демо

| Сборка платформы | Настройка ПО | Первый запуск | ESP32 LiDAR |
|:-:|:-:|:-:|:-:|
| [![Assembly](https://img.youtube.com/vi/WPB2B1DPf_s/mqdefault.jpg)](https://www.youtube.com/watch?v=WPB2B1DPf_s) | [![Setup](https://img.youtube.com/vi/XOc5kCE3MC0/mqdefault.jpg)](https://www.youtube.com/watch?v=XOc5kCE3MC0) | [![Bringup](https://img.youtube.com/vi/L_XbkA4pwRc/mqdefault.jpg)](https://www.youtube.com/watch?v=L_XbkA4pwRc) | [![ESP32](https://img.youtube.com/vi/zizGI8MjANU/mqdefault.jpg)](https://www.youtube.com/watch?v=zizGI8MjANU) |

---

## Аппаратное обеспечение

| Компонент | Кол-во | Цена | Ссылка |
|-----------|--------|------|--------|
| Raspberry Pi 4 (4GB) | 1 | $55 | [raspberrypi.com](https://www.raspberrypi.com/) |
| ESP32 DevKit v1 | 1 | $4.50 | AliExpress |
| MakersPet Loki 200mm frame | 1 | $45 | [makerspet.com](https://makerspet.com/store) |
| JGA25-370 DC gear motor 12V, 40:1 | 2 | $7 × 2 | AliExpress |
| Omni wheel 48mm | 2 | $3.50 × 2 | AliExpress |
| Caster ball 15mm | 1 | $2 | AliExpress |
| L298N motor driver | 1 | $2.50 | AliExpress |
| **YDLidar X4** (360°, 10м) | 1 | $55 | [Amazon](https://www.amazon.com/s?k=ydlidar+x4) |
| BNO055 IMU (9-DOF) | 1 | $3.50 | AliExpress |
| INA219 current sensor | 2 | $1.20 × 2 | AliExpress |
| LiPo 11.1V 3S 3000мАч | 1 | $18 | Магазин RC |
| 7" HDMI дисплей | 1 | $35 | AliExpress |
| USB wide-angle камера | 1 | $12 | AliExpress |
| Болты, провода, разъёмы | — | $8 | Локально |
| **Итого** | | **~$264** | |

> LiDAR можно заменить на **Xiaomi LDS02RR** (~$15 б/у с AliExpress) или **RPLIDAR A1** (~$99).
> Все модели поддерживаются библиотекой [kaiaai/LDS](https://github.com/kaiaai/LDS) без изменения кода.

Полный список с характеристиками: [cad/bom.csv](cad/bom.csv)

---

## Архитектура системы

![System Architecture](docs/images/system_arch.svg)

### Стек прошивки ESP32

```
firmware/
├── config.h # Пины ESP32 и константы платформы
├── platformio.ini # micro_ros_kaia · kaiaai/LDS · PID_Timed · ESPAsyncWebServer
└── src/
├── main.ino # Главный цикл: 50 Гц управление
├── motor_driver.* # L298N PWM управление (coast / brake)
├── encoder.* # Квадратурный энкодер (IRAM ISR)
├── odometry.* # Дифференциальная одометрия (1920 тиков/об)
├── pid.* # ПИД с анти-насыщением интеграла
├── lidar_driver.* # Обёртка kaiaai/LDS (YDLidar X4 / LDS02RR / RPLIDAR A1 …)
├── imu.* # BNO055 Adafruit — режим NDOF fusion
├── current_sensor.* # INA219 — мониторинг тока моторов
├── safety.* # E-stop / low-batt / overcurrent watchdog
├── battery_monitor.* # LiPo 3S процент по ADC
├── wifi_config.h # WiFi SSID/PASS + OTA пароль
└── microros_bridge.* # microROS: /odom · /scan · /imu/data ← /cmd_vel
```

### Стек ROS2 (Raspberry Pi 4)

```
ros2/
├── CMakeLists.txt · package.xml
├── config/
│ ├── cartographer_lds_2d.lua # Cartographer: min 0.15м, max 7м
│ ├── navigation.yaml # Nav2 DWB + costmap 3×3м
│ ├── explore_lite.yaml # Автономное исследование фронтиров
│ ├── ekf.yaml # EKF: odom + IMU → /odometry/filtered
│ └── telem.yaml # robot_state_publisher 30 Гц
├── launch/
│ ├── loki_bringup.launch.py # microROS agent + Cartographer + Nav2
│ ├── slam.launch.py # Только SLAM
│ └── explore.launch.py # Только explore_lite
├── urdf/robot.urdf.xacro # Kинематическая модель Loki 200mm
└── rviz/navigation.rviz # Карта + скан + одометрия
```

---

## Поддерживаемые LiDAR

Библиотека [kaiaai/LDS](https://github.com/kaiaai/LDS) поддерживает **20+ моделей** без изменения кода ROS2:

| Модель | Дальность | Цена | Рекомендация |
|--------|-----------|------|-------------|
| **YDLidar X4** | 10 м | ~$60 | ✅ Рекомендован |
| RPLIDAR A1 | 12 м | ~$99 | Лучшее качество |
| Xiaomi LDS02RR | 6 м | ~$15 (б/у) | Самый дешёвый |
| Neato XV11 | 6 м | ~$20 (б/у) | |
| YDLidar X3 | 8 м | ~$40 | Бюджет |
| LDROBOT LD14P | 8 м | ~$40 | |

Полная таблица совместимости: [docs/lidar_compatibility.md](docs/lidar_compatibility.md)

---

## Навигационный автомат

![Navigation States](docs/images/nav_states.svg)

---

## Быстрый старт

### 1. Прошивка ESP32
```bash
# Заполнить firmware/src/wifi_config.h (SSID, пароль, IP агента)
bash scripts/flash_esp32.sh # автодетект порта
# или: bash scripts/flash_esp32.sh /dev/ttyUSB0
```

### 2. Настройка Raspberry Pi 4

```bash
# Автоматическая установка ROS2 Iron + micro_ros_agent + systemd
bash scripts/setup_rpi.sh
sudo reboot
```

### 3. Запуск

```bash
# Полный стек: Cartographer SLAM + Nav2 + microROS agent
ros2 launch loki_robot loki_bringup.launch.py

# Автономное исследование помещения
ros2 launch loki_robot explore.launch.py

# Сохранить карту
python3 host/map_saver.py

# Веб-телеметрия
python3 host/web_monitor.py # → http://robot-ip:5000
```

---

## Документация

### Начало работы
| Документ | Описание |
|----------|----------|
| [docs/faq.md](docs/faq.md) | Частые вопросы (железо, прошивка, ROS2, печать) |
| [docs/troubleshooting.md](docs/troubleshooting.md) | Решение проблем ESP32, RPi, питания, механики |
| [docs/assembly.md](docs/assembly.md) | Сборка с параметрами 3D-печати |
| [docs/wiring.md](docs/wiring.md) | Полная схема подключения |
| [docs/calibration.md](docs/calibration.md) | Калибровка энкодеров, IMU, PID |

### Программное обеспечение
| Документ | Описание |
|----------|----------|
| [docs/ros2_setup.md](docs/ros2_setup.md) | Установка ROS2 Iron на RPi 4 |
| [docs/ros2_architecture.md](docs/ros2_architecture.md) | Топология нод, топики, TF-дерево |
| [docs/roadmap.md](docs/roadmap.md) | Роадмап v1.0–v2.0 + известные ограничения |

### Железо и CAD
| Документ | Описание |
|----------|----------|
| [docs/hardware/ydlidar_x4.md](docs/hardware/ydlidar_x4.md) | Характеристики YDLidar X4 |
| [docs/hardware/motors_and_wheels.md](docs/hardware/motors_and_wheels.md) | Моторы JGA25-370, колёса, L298N |
| [docs/hardware/sensors.md](docs/hardware/sensors.md) | BNO055, INA219, аккумулятор LiPo 3S |
| [docs/hardware/raspberry_pi.md](docs/hardware/raspberry_pi.md) | Настройка RPi 4 + systemd автозапуск |
| [docs/lidar_compatibility.md](docs/lidar_compatibility.md) | Таблица 20+ совместимых LiDAR |
| [docs/stl_files.md](docs/stl_files.md) | Список STL с настройками печати |
| [cad/Loki_v1.step](cad/Loki_v1.step) | STEP-файл полной сборки (33 МБ) |
| [cad/bom.csv](cad/bom.csv) | Полный BOM с ценами |
| [cad/SOURCES.md](cad/SOURCES.md) | CAD-источники, STL-ссылки |

### Скрипты
| Скрипт | Описание |
|--------|----------|
| [scripts/setup_rpi.sh](scripts/setup_rpi.sh) | Автоустановка ROS2 Iron + micro_ros_agent на RPi |
| [scripts/flash_esp32.sh](scripts/flash_esp32.sh) | Прошивка ESP32 одной командой |

---

## Ссылки и источники

- [MakersPet Loki 200mm](https://github.com/makerspet/makerspet_loki) — платформа, STL, схемы
- [MakersPet 3D Models](https://github.com/makerspet/3d_models/tree/main/loki_200mm) — STL для всех вариантов
- [kaiaai/LDS](https://github.com/kaiaai/LDS) — Arduino LiDAR библиотека (20+ моделей)
- [micro-ROS Arduino](https://github.com/micro-ROS/micro_ros_arduino) — microROS для ESP32
- [Cartographer ROS](https://google-cartographer-ros.readthedocs.io/) — SLAM документация
- [Nav2](https://navigation.ros.org/) — навигационный стек ROS2
- [Awesome 2D LiDARs](https://github.com/kaiaai/awesome-2d-lidars) — каталог всех 2D LiDAR
- [MakersPet PCB](https://github.com/makerspet/pcb) — KiCad схемы и PCB
- [Braccio MoveIt](https://github.com/lots-of-things/braccio_moveit_gazebo) — Braccio рука (будущее расширение)