Nox: Самостоятельно собранный робот с SLAM на базе ROS для перемещения по дому
Обзор проекта
Nox — это дифференциально-управляемый робот, построенный на платформе ROS, Raspberry Pi и Arduino. Оснащённый камерой Kinect 360, он выполняет одновременную локализацию и картографирование (SLAM) в реальном времени, а также обнаруживает препятствия.
Изначально задуманный как модульная база, проект эволюционировал в полностью автономную платформу. Робот способен строить карту окружения (с использованием gmapping), определять своё положение на ней и планировать безопасные маршруты к заданным точкам.
Энергетика и механика
Питание обеспечивает аккумулятор Li-Ion 11,1 В. Два двигателя постоянного тока 12 В (107 об/мин), приобретённые на Banggood, обеспечивают достаточную скорость, однако приоритет отдан точным энкодерам для плавной навигации. Передняя панель корпуса съёмная, что позволяет быстро заменять аккумуляторы разной длины. Индикатор уровня заряда предупреждает о необходимости подзарядки.
Конструкция шасси
Шасси спроектировано для бесшовной интеграции Kinect. Выбрана элегантная треугольная форма, вдохновлённая современным дизайном и эстетикой «Deus Ex». Тщательная проработка в CAD-системе обеспечила профессиональный внешний вид и удобную проводку.
Индикация состояния
Светодиоды статуса — переработанные от новогодней светящейся палочки — дают наглядные сигналы: три быстрых вспышки означают, что Arduino ещё не подключён к ROS-мастеру; «дыхание» (плавное затухание/восстановление) указывает на активную навигацию, при этом частота мигания пропорциональна скорости робота.
Структура
Дифференциальный привод размещает оба двигателя на общей оси. Деревянная база с двумя опорными колёсиками обеспечивает устойчивость; в задней секции находятся стыкованные платы для Raspberry Pi, Arduino и остальной электроники.
Внешний корпус выполнен из вручную вырезанной чёрной пластиковой пластины; в будущих версиях планируется переход на 3D-печать.
Аппаратная часть
В ядре системы — Raspberry Pi 3B под управлением Ubuntu и ROS, доступная по Wi-Fi и SSH для удалённого управления. ROS обрабатывает одометрию, планирование навигации и SLAM на данных Kinect. Pi передаёт команды скорости на Arduino Mega 2560, который через Adafruit Motor Shield управляет двигателями в ПИД-режиме. Данные энкодеров возвращаются на Pi для точной одометрии.
После экспериментов с Uno и Leonardo выбор пал на Mega 2560 благодаря большему объёму памяти и прерываниям для чтения энкодеров.
Kinect 360 — центральный сенсор проекта: недорогая (≈25 €) 3D-камера, выдающая глубину для gmapping, а также видео, акселерометр и микрофонную решётку — ценный ресурс для будущих расширений.
Управление питанием построено на двух DC-DC преобразователях: двигатели запитаны напрямую от 11,1 В батареи, Pi, Arduino и энкодеры — от 5 В, а Kinect получает стабилизированные 12 В.
Программное обеспечение
Проект работает на ROS Kinetic. Единственный пользовательский узел — nox_controller — вычисляет одометрию из данных скоростей двигателей. Кинематическая модель следует подходу, описанному в работе «On Differential Drive Robot Odometry with Application to Path Planning». Публикуются ковариационные матрицы для последующей сенсорной фузии.
Управление двигателями пока осуществляется прямыми PWM-командами; ПИД-регулятор отключен, но будет откалиброван для повышения точности. Обратная связь от энкодеров уже обеспечивает удовлетворительную стабилизацию скорости.
Подробнее: Nox – робот для перемещения по дому (ROS)
Производственный процесс
- Создание робота на Arduino и Raspberry Pi: пошаговое руководство
- Создание умного робота с Bridge Shield — интеграция Raspberry Pi и Arduino
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- ANDY — многоцелевой гуманоидный робот
- Робот-будильник на колесах: умная мобильная система пробуждения на Raspberry Pi и Google Calendar
- Создание моторизированного робота-крипера Minecraft на Arduino
- JQR Четвероногий автономный робот: DIY шагающий робот для автономной навигации и спасения
- Archimedes: Робот-совица с ИИ для распознавания эмоций
- EMAR Mini: Компактный открытый робот экстренной помощи для борьбы с COVID-19
- Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство