Автономный домашний помощник-робот: полный список деталей и руководство по настройке (ROS, Alexa, MoveIt)
Компоненты и материалы
| Arduino UNO | 1 |
| Роботизированная рука Arduino Braccio | 1 |
| Odroid XU4 (одинкплатный компьютер) | 1 |
| EasyDriver (драйвер шагового двигателя) | 1 |
| Шаговый двигатель | 1 |
| L298 Motor Driver | 1 |
| DC-моторы | 4 |
| IMU GY-85 | 1 |
| Меканум-колёса (комплект) | 1 |
| USB-хаб 5V | 1 |
| Microsoft Kinect Sensor | 1 |
| V-Slot линейные рельсы (OpenBuilds) | 2 |
| V-Slot гантри-пластины | 1 |
| Комплект колёс V-Slot | 4 |
| Трапецеидальный винт 0.8 м | 1 |
| Муфта валов 6→8 мм | 1 |
| Подшипниковый узел 8 мм | 1 |
| Пружинистый провод 1.2 м | 1 |
| Конечный выключатель | 1 |
| BEC 5V | 1 |
| DC-DC преобразователь (регулируемый) | 2 |
| Аккумулятор 12V 5000 мАч | 1 |
Приложения и сервисы
| Amazon Alexa Skills Kit |
| AWS Lambda |
| ROS (Robot Operating System) |
| PubNub Publish/Subscribe API |
О проекте
1. Введение


Познакомьтесь с **O'nine** — персональным домашним роботом-компаньоном. Он перемещается, подбирает объекты, следит за домом. Благодаря Alexa понимает голос и выполняет задачи (например, кормит рыб).
Проект расширяет возможности Alexa, предоставляя масштабируемую открытую робототехническую платформу для динамических задач в умном доме. Сейчас для каждой функции нужен отдельный девайс. O'nine делает решение мобильным: вместо микроконтроллеров в каждой комнате — один робот.
Видео: O'nine кормит рыб (таймлапс и полная версия). Встроенная камера позволяет проверить ребёнка или дверь.
Это руководство: сборка робота + создание Alexa Skill для автономных задач.
2. Высокоуровневая архитектура

- Amazon Echo Dot слушает команду.
- Кастомный Alexa Skill определяет Intent.
- AWS Lambda получает запрос и публикует в PubNub MQTT брокер.
- O'nine подписан на брокер — получает данные.
- O'nine автономно выполняет задачу.
3. Аппаратная часть
3.1 База робота
Схема перевода команд скорости из ROS Navigation Stack в движение моторов. Прошивка включает PID-регулятор с обратной связью от энкодеров.





Шасси — переработанная жестяная банка от А4 бумаги. Можно использовать любой пластиковый контейнер.
Подробнее о DIY ROS-роботах: проект Linorobot.
3.2 Вертикальный лифт (родитель манипулятора)
Управляет подъёмом руки. Переводит целевую высоту от MoveIt в шаги шагового двигателя. Открытая система: текущая высота = количество шагов × расстояние на шаг. Микроконтроллер также ретранслирует команды от MoveIt к контроллеру руки.



Спиральный кабель: Tx/Rx для сериалки между лифтом и рукой + 12V питание руки.
3.3 Контроллер роботизированной руки (дочерний)
После сборки руки и установки шилда на Arduino Uno. Принимает по сериалке массив целевых углов суставов, управляет сервоприводами.








3.4 Интеграция всех схем
Финальная схема соединения всех цепей с распределением питания:

4. Программное обеспечение
Требуется две Linux-машины (Ubuntu 14.04/16.04): разработческая (MoveIt, Rviz) и робот (ARM board, навигация, драйверы).
ROS-совместимые платы (желательно 2 ГБ RAM).
4.1 Установка ROS
git clone https://github.com/linorobot/rosme
cd rosme
./install
Инсталлятор сам определит ОС и архитектуру.
4.2 Установка ROS-пакетов
4.2.1 На машине разработки:
cd ~/catkin_ws/src
git clone https://github.com/linorobot/lino_pid
git clone https://github.com/linorobot/lino_msgs
git clone https://github.com/linorobot/lino_visualize
cd .. && catkin_make
4.2.2 Linorobot на компьютере робота (база):
git clone https://github.com/linorobot/lino_install
cd lino_install
./install mecanum kinect
Устанавливает прошивку базы, навигацию, драйверы сенсоров.
4.2.3 Пакет O'nine на обеих машинах:
cd
git clone https://github.com/grassjelly/onine_install
cd onine_install
./install
Прошивка руки, кинематический решатель, автономные задачи O'nine.
4.2.4 alexa_tasker:
cd ~/onine_ws/src
git clone https://github.com/grassjelly/onine_alexa
cd ..
catkin_make
MQTT-клиент (PubNub) + NodeJS-приложение для AWS Lambda (запаковывается в zip).
5. Настройка ПО
5.1 Создание Alexa Skill
- Регистрация в Alexa Developer Console → «Start a Skill».
- Skill Type: Custom Interaction Model. Name: имя навыка. Invocation Name: слово-активатор.
- Interaction Model: Intent Schema из schema.json, Sample Utterances из utterances.txt.
- Configuration: AWS Lambda ARN (получите на следующем шаге).
- Testing: введите фразу, проверьте Service Response.
5.2 Создание Lambda-функции
- AWS Lambda Console → Create Function.
- Runtime: NodeJS 4.3. Role: lambda_basic_execution.
- Trigger: Alexa Skills Kit → введите Skill ID.
- Code: вставьте PubNub ключи в
~/onine_ws/src/onine_alexa/lambda/app, соберите zip:npm install && ./zipme. Загрузите .zip в Lambda.
5.3 PubNub аккаунт
- Регистрация → Create New App → сохраните Publish/Subscribe Keys.
- Вставьте ключи в код (см. 5.2.4 и 5.4.3).
5.4 Pushover уведомления (фото на телефон)
- Регистрация в Pushover → запишите User Key.
- Create Application → API Token.
- Вставьте токен и ключ в скрипт
snaptaskO'nine.
5.5 Прошивка микроконтроллеров
5.5.1 uDev правила — статические имена портов для roslaunch.
rosrun lino_udev lino_udev.py
Подключите Teensy базы → имя «linobase». Teensy лифта → «oninearm». Сохраните (Ctrl+C), скопируйте в /etc/udev/rules.d/58-lino.rules, перезапустите udev, проверьте ls /dev/linobase и ls /dev/oninearm.
5.5.2 Прошивка базы: настройте параметры (диаметр колес, PPR энкодеров) → roscd linorobot/firmware/teensy && platformio run --target upload
5.5.3 Прошивка лифта: cd ... && platformio run --target upload
5.5.4 Прошивка контроллера руки (Arduino Uno): cd ... && platformio run --target upload. После загрузки отключите Uno — данные идут через Teensy лифта.
5.6 Правка кода Linorobot
В bringup.launch добавьте ноду rosserial для oninearm и robot_state_publisher с URDF O'nine.
Измените static_transform_publisher для виртуального фрейма laser (Kinect → 2D laser scan).
Замените pointcloud_to_laserscan ноду.
Замените base_link на base_footprint в: amcl.launch, slam.launch, global/local_costmap_params.yaml, lino_base_node.cpp (строки 90, 111).
Пересоберите: cd ~/linorobot_ws && catkin_make
5.7 Детектор объектов (AR-теги)
Для pick-and-place используются AR-теги (2×2 см). Распечатайте изображение ниже, наклейте на объект. Библиотека: ar_track_alvar. Альтернативы: find_object_2d, tabletop_object_detector.





6. Запуск демо
Настройте сеть (ROS network tutorial).
6.1 Создание карты
На роботе: терминал 1 — roslaunch linorobot bringup.launch, терминал 2 — roslaunch linorobot slam.launch.
На dev-машине: терминал 1 — rosrun teleop_twist_keyboard teleop_twist_keyboard.py, терминал 2 — roscd lino_visualize/rviz && rviz -d slam.rviz.
Управляйте клавиатурой, строя карту в Rviz.

Сохраните карту: rosrun map_server map_saver -f ~/linorobot_ws/src/linorobot/maps/map. Проверьте map.pgm и map.yaml. В navigate.launch замените 'house.yaml' на 'map.yaml'.
6.2 Координаты целей
Для навигации нужны координаты точек задач.
SSH на робот: roslaunch linorobot bringup.launch + roslaunch linorobot navigate.launch.
На dev-машине: Rviz с navigate.rviz, терминал: rostopic echo move_base_simple/goal.
В Rviz кликните точку ~1 м от цели, перетащите в сторону ориентации робота (1 клетка = 1 м²).


Скопируйте координаты, отредактируйте onine/onine_apps/scripts/fishtask.py (Point и Quaternion).
6.3 Запуск O'nine
- Dev-машина:
roscore. - 3 терминала → SSH на робот.
- Терминал 1:
roslaunch linorobot bringup.launch(драйверы базы и руки). - Терминал 2:
roslaunch linorobot navigate.launch(навигация). - Терминал 3:
roslaunch onine_apps ar_tracker.launch(детектор объектов). - Dev-машина: терминал 1 —
roslaunch onine_moveit_config demo.launch(MoveIt + Rviz). - Терминал 2:
rosrun onine_alexa alexa_tasker.py(PubNub клиент, ждёт голосовые команды). - В Rviz: «2D Pose Estimate» — кликните примерное положение робота и направление.
- Готово! Говорите с Alexa — O'nine выполняет задачи.

7. Планы на будущее
7.1 Gazebo симуляция
Модель для тестов без железа — чистый софт для Alexa Skill.
7.2 Мощнее вычислительная платформа
Был Jetson TK1 (хорош для CV), заменил на Odroid XU4 (5V, компактнее). Гляжу на Rock64 (4 ГБ RAM) для одновременного запуска большего числа приложений. Сейчас часть нагрузки на ноутбук по Ethernet.
Код
O'nine Software
Робототехнический код: автономная навигация, кинематический решатель, высокоуровневые скрипты pick-and-place.
https://github.com/grassjelly/onine
Alexa–Robot интеграция
Lambda App (NodeJS), Robot Tasker (PubNub-клиент, запускает скрипты по команде Alexa).
https://github.com/grassjelly/onine_alexa
Robot Base (Linorobot)
Open Source ROS-совместимые роботы — низкобюджетная платформа для студентов и исследователей.
https://github.com/linorobot/linorobot
Схемы
Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- JQR Четвероногий автономный робот: DIY шагающий робот для автономной навигации и спасения
- Simple Pi Robot — Сборка 2WD автономного ровера на Raspberry Pi
- Сборка домашней машины для написания домашних заданий (плоттер-писатель)
- Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
- Автономный линий-следующий робот на Arduino UNO
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- Учебный стенд Arduino Mega 2560: сенсоры, моторы, дисплеи и собственная PCB
- DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino
- Набор для создания робота с умной внутренней навигацией на базе Arduino