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
- Host: GitHub
- URL: https://github.com/mukller/omni-robot-assistant
- Owner: Mukller
- License: mit
- Created: 2026-07-04T22:35:33.000Z (20 days ago)
- Default Branch: main
- Last Pushed: 2026-07-05T11:18:00.000Z (20 days ago)
- Last Synced: 2026-07-05T13:09:40.586Z (20 days ago)
- Topics: arduino, esp32, lidar, omnidirectional, omniwheel, open-source, python, robot-assistant, robotics
- Language: C++
- Size: 52.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
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.md)
[](https://docs.ros.org/en/iron/)
[](https://platformio.org/)
[](https://www.raspberrypi.com/)
[](https://github.com/kaiaai/LDS)
[](https://github.com/Mukller/omni-robot-assistant/actions/workflows/pio_build.yml)
[](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-печатаемый корпус, открытое железо и ПО
---
## Фотографии

*MakersPet Loki 200mm — базовая платформа*
| Вид сверху | Архитектура системы |
|:-:|:-:|
|  |  |
---
## Видео и демо
| Сборка платформы | Настройка ПО | Первый запуск | ESP32 LiDAR |
|:-:|:-:|:-:|:-:|
| [](https://www.youtube.com/watch?v=WPB2B1DPf_s) | [](https://www.youtube.com/watch?v=XOc5kCE3MC0) | [](https://www.youtube.com/watch?v=L_XbkA4pwRc) | [](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)
---
## Архитектура системы

### Стек прошивки 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)
---
## Навигационный автомат

---
## Быстрый старт
### 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 рука (будущее расширение)