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

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

И всё равно недостаточно.
Постоянно приходилось кричать из туалета — «Алиса, выключи свет в коридоре!» — и слушать, как запускается не та колонка. Или нужная колонка есть, но стоит в дальнем углу и не слышит. Или слышит, но делает что-то своё.
Я смирился. Потом психанул.
Алиса 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 кг — роботы всегда тяжелее, чем кажется, а переделывать потом дороже.
Что такое момент силы и зачем его считать?
Момент — это «сила вращения» мотора. Чем тяжелее робот и чем больше колесо, тем больший момент нужен, чтобы всё это сдвинуть. Без достаточного момента мотор либо не провернёт колесо, либо сгорит.
На практике берут коэффициент 3–5 от расчётного — старт с места, трение, неровности. Я выбрал моторы с моментом 0,8 Н·м.
Центр тяжести
Критично для робота с манипулятором. Когда рука вытянута вперёд — центр масс уезжает туда же, робот клюёт носом. Решение: аккумулятор как можно ниже и ближе к центру — он самый тяжёлый и работает как балласт.
Как робот понимает, где находится
Это самый интересный вопрос. И самый сложный.
Одометрия: считаем обороты
На каждом колесе — энкодер, который считает обороты. Зная диаметр колеса, можно посчитать пройденное расстояние:
Разница в оборотах между левыми и правыми колёсами даёт угол поворота. Интегрируй во времени — получишь координаты.
Звучит отлично. Работает плохо.
Проблема — дрейф. Колёса скользят, поверхность неровная, маленькая ошибка накапливается. Через 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. Всё это — следующие главы.
Честно — не знаю, когда будет готово. Такие проекты не заканчиваются, они просто переходят в следующую стадию. Сегодня он ездит сам. Завтра — узнаёт меня в лицо. Послезавтра — приносит кофе.
Или врезается в диван. Посмотрим.
Стек / Инструменты