Все проекты
Железо20269 мин

Я хотел прокачать Алису. Получился робот

Я хотел прокачать Алису. Получился робот

У меня три колонки Алисы. Три. В квартире не так много комнат, но Алис хватает с запасом.

И всё равно недостаточно.

Постоянно приходилось кричать из туалета — «Алиса, выключи свет в коридоре!» — и слушать, как запускается не та колонка. Или нужная колонка есть, но стоит в дальнем углу и не слышит. Или слышит, но делает что-то своё.

Я смирился. Потом психанул.

Алиса vs. Claude: почему это вообще не сравнение

Алиса — это голосовой интерфейс к набору жёстко заданных сценариев. Можно попросить включить музыку, поставить таймер, сказать погоду. Выйти за рамки — нельзя. Она не рассуждает, не уточняет, не помнит контекст. Это умная кнопка с микрофоном.

Claude, GPT, любая современная языковая модель — это другой класс. Объясни задачу как человеку, получи ответ как от человека. С нюансами, с уточнениями, с памятью о том, что ты говорил три сообщения назад.

Разница примерно как между калькулятором и бухгалтером.

И у меня появилась идея: а что если взять лучшее из обоих миров? Сделать физическое устройство, которое:

  • перемещается по квартире — само едет туда, где ты есть
  • работает на нормальном ИИ — понимает контекст, рассуждает, не тупит
  • видит и узнаёт — меня, мою девушку, окружающие предметы
  • управляет умным домом — свет, розетки, температура

Короче, живой помощник на колёсах. Алиса 2.0, только умная.

Как вообще роботы передвигаются: выбор базы

Прежде чем строить — нужно выбрать, как он будет ездить. Здесь всё не так очевидно, как кажется.

Гусеницы — как у танка. Отличная проходимость, хорошо на неровных поверхностях. Минусы: шумные, трудно управлять точно, царапают паркет. Если у тебя дома плитка и грязный пол — ок. У меня ламинат.

Ноги — пауки, гексаподы, всё что ходит. Выглядит невероятно. Может переступать через препятствия. Но об этом отдельно — ниже.

Колёса — самое скучное и самое практичное. Быстрые, тихие, предсказуемые, алгоритмы навигации под них написаны и отлажены годами. Из минусов — ступеньки не возьмёшь, но в моей квартире ступенек нет.

Омни-колёса — специальные колёса с роликами под углом 45°. Могут двигаться в любом направлении без разворота, буквально ездят боком. Звучит идеально. Но: плохо держат на скользком полу, требуют сложной математики управления, стоят дороже.

Я остановился на обычных колёсах в конфигурации 4WD. Управление поворотом — как у танка: левые колёса быстрее, правые медленнее — поворот вправо. Просто, надёжно, работает.

Почему не паук

Первое, что смотришь на YouTube по запросу «домашний робот» — это роботы на ногах. Паучьи конструкции, гексаподы, что-то отдалённо напоминающее Boston Dynamics.

Выглядит круто. Я провёл за этими видео несколько дней.

Потом пришёл к выводу: у всех одна проблема — они жутко шумные. Сервоприводы на каждой ноге — это постоянный стрекот и жужжание. В тихой квартире ночью такой робот звучит как стая насекомых. Плюс они медленные — алгоритмы балансировки на ногах требуют огромных вычислений.

Колёсная платформа — скучнее визуально, но в реальной жизни выигрывает по всем статьям.

С чего начинается любой робот: требования

Я Product Manager, поэтому первым делом — требования и концепция. Звучит занудно, но без этого получишь кучу деталей, которые не стыкуются между собой.

За основу взял 3D-модель RC Rover with Robot Arm 6-DOF. Там уже был проработанный корпус, шасси, крепления под манипулятор. Не нужно изобретать форму с нуля — можно сосредоточиться на начинке.

Как посчитать, какие нужны моторы

Это тот момент, где многие пропускают расчёты и потом удивляются, почему робот не едет.

Сколько весит вся конструкция?

  • Шасси + корпус из пластика: ~800 г
  • Аккумулятор: ~800 г
  • Электроника (Raspberry Pi, плата управления, LiDAR): ~300 г
  • Манипулятор с сервоприводами: ~600 г
  • Запас на провода, крепёж, камеры: ~200 г

Итого около 2,7 кг. Я взял запас 10 кг — роботы всегда тяжелее, чем кажется, а переделывать потом дороже.

Что такое момент силы и зачем его считать?

Момент — это «сила вращения» мотора. Чем тяжелее робот и чем больше колесо, тем больший момент нужен, чтобы всё это сдвинуть. Без достаточного момента мотор либо не провернёт колесо, либо сгорит.

M=mgrn=3×9,8×0,0340,22 Н⋅мM = \frac{m \cdot g \cdot r}{n} = \frac{3 \times 9{,}8 \times 0{,}03}{4} \approx 0{,}22 \text{ Н·м}

На практике берут коэффициент 3–5 от расчётного — старт с места, трение, неровности. Я выбрал моторы с моментом 0,8 Н·м.

Центр тяжести

Критично для робота с манипулятором. Когда рука вытянута вперёд — центр масс уезжает туда же, робот клюёт носом. Решение: аккумулятор как можно ниже и ближе к центру — он самый тяжёлый и работает как балласт.

Как робот понимает, где находится

Это самый интересный вопрос. И самый сложный.

Одометрия: считаем обороты

На каждом колесе — энкодер, который считает обороты. Зная диаметр колеса, можно посчитать пройденное расстояние:

S=nπdS = n \cdot \pi \cdot d

Разница в оборотах между левыми и правыми колёсами даёт угол поворота. Интегрируй во времени — получишь координаты.

Звучит отлично. Работает плохо.

Проблема — дрейф. Колёса скользят, поверхность неровная, маленькая ошибка накапливается. Через 5 метров робот думает, что он там, где его нет. Через 20 — в другой вселенной.

IMU: гироскоп + акселерометр

Гироскоп меряет угловую скорость, акселерометр — линейное ускорение. Тоже дрейфует, но по-другому.

LiDAR + SLAM: вот это работает

LiDAR крутится 360° и возвращает облако точек — дистанция до каждого препятствия вокруг. SLAM (Simultaneous Localization and Mapping) одновременно строит карту помещения и определяет своё положение на ней. Логика: «я вижу вот эти стены и мебель — значит, я вот здесь».

Комбинация одометрии + IMU + LiDAR + SLAM даёт нормальную навигацию. Ни один источник не точный — вместе они корректируют друг друга. Это называется сенсорная фузия.

В моём случае это реализует стек ROS2 + Nav2. Я не писал эти алгоритмы — они уже есть, нужно было только настроить под свой робот.

AliExpress и листовой пластик

Заказываешь мотор с редуктором — приходит мотор без вала нужного диаметра. Заказываешь энкодеры — половина не работает. Заказываешь крепёж М3 — получаешь что-то очень похожее на М3, но с другим шагом резьбы.

Я заложил месяц ожидания. Ждал два.

Пока ждал — начал собирать корпус для прототипа из листового пластика. Хитрость: берёшь паяльник, проводишь вдоль линии сгиба — пластик нагревается, становится мягким. Гнёшь руками, держишь пока не остынет. Никакого оборудования.

Прототип вышел страшненький. Это нормально — его задача проверить геометрию и найти проблемы до того, как напечатал красивый корпус на 3D-принтере.

Как это всё едет: ESP32 и Bluetooth

Сейчас ходовая часть работает на ESP32 — маленький микроконтроллер со встроенным Wi-Fi и Bluetooth. Вся низкоуровневая логика там: управление моторами, чтение энкодеров, ШИМ-сигналы на драйверы.

Raspberry Pi «сверху» — это мозг. Он крутит ROS2, обрабатывает LiDAR, строит карту, планирует маршрут. Даёт команды ESP32 по Serial.

Пока нет финальной навигации — управляю через Bluetooth с телефона. Джойстик на экране, команды летят на ESP32. Неудобно, зато сразу видно как реагирует платформа и где проблемы.

Временное решение. Но временное в робототехнике — это значит «работает уже полгода и менять не хочется».

Как я это программировал — с помощью ИИ

Без ИИ этот проект занял бы в три раза больше времени.

C++ для ESP32 я знаю на уровне «читаю и понимаю». Поэтому схема такая: объясняю задачу Claude, получаю код, читаю, понимаю, адаптирую под своё железо. Если что-то не работает — вставляю ошибку обратно и разбираемся вместе.

ROS2 — отдельная история. Огромная экосистема с собственной философией и документацией, написанной явно для людей, которые уже всё знают. ИИ здесь незаменим: «объясни что такое топик», «почему нода не видит другую ноду», «напиши launch-файл для Nav2».

Я не использую ИИ как замену пониманию. Я использую его как очень умного коллегу, который всё читал и ничего не забыл.

Что дальше

Сейчас есть: работающая ходовая часть, базовая навигация, манипулятор который двигается.

Нет: нормального компьютерного зрения, интеграции с умным домом, голосового управления через Claude. Всё это — следующие главы.

Честно — не знаю, когда будет готово. Такие проекты не заканчиваются, они просто переходят в следующую стадию. Сегодня он ездит сам. Завтра — узнаёт меня в лицо. Послезавтра — приносит кофе.

Или врезается в диван. Посмотрим.

Стек / Инструменты

ROS2NAV2ESP32C++Fusion 360LiDAR/SLAMRaspberry PiBluetooth