← На главную
Guides· 6/2/2026· 4 мин чтения

Четыре LLM, один робот и пневматический пистолет: что случилось, когда ИИ вышел в физический мир

Разработчик подключил четыре LLM к настоящему роботу на Arduino и сравнил поведение. Grok зациклился, GPT скучал, Gemini молчал — вот что вышло.

Четыре LLM, один робот и пневматический пистолет: что случилось, когда ИИ вышел в физический мир
AI-assisted, edited by a human reviewer

Разработчик под ником stg34 потратил два с половиной месяца на то, чтобы дать языковым моделям тело: тележку на четырёх колёсах, лазерный дальномер и WiFi-камеру. Потом посадил за руль Claude Opus, GPT, Grok и Gemini — с одним и тем же промптом и одной и той же задачей. Поведение оказалось разным настолько, что это стоит разобрать по шагам.

Зачем вообще давать LLM физическое тело

Текстовая модель всегда может «пошутить» — сказать одно, подразумевать другое, уклониться. Проверить намерение по словам невозможно. Но если модель управляет роботом, слова превращаются в движение: поехал вперёд, повернул, остановился. Здесь уже не спрячешься за формулировку.

Именно с этой идеи начался проект: дать ИИ возможность не только говорить, но и делать — и посмотреть, что изменится. Заодно это честный стресс-тест: реальный мир не прощает галлюцинаций и неопределённости так же легко, как чат.

Железо и архитектура: что внутри тележки

Основа — тележка DF Robot Pirate на четырёх жёлтых колёсах. Мозг управления: две платы Arduino Leonardo (одна сгорела при перепутанных проводах — хорошо, что была запасная) и Arduino Pro Micro. Сенсорика: лазерный дальномер TFmini-S LiDAR для измерения расстояний вперёд-назад и WiFi-камера Tapo C200 для передачи видео.

Агентный цикл построен на API Claude с набором инструментов:

``python tools = [ "move_forward", # двигаться вперёд "move_backward", # двигаться назад "turn_left", # поворот влево "turn_right", # поворот вправо "stop", # остановиться "report_done", # доложить о завершении задачи ] ``

Поверх видеопотока с камеры накладывается телеметрия — в фосфорно-зелёном цвете, стилизованном под старый монитор. Позже добавили двусторонний канал: робот может задать вопрос оператору, оператор — вклиниться в сессию.

Компас превратился в генератор случайных чисел (наводки от моторов), поэтому навигация держится на лазерном дальномере и подсчёте шагов. Это потом аукнется.

Промпт как личность: почему мизантроп — это костюм

Все четыре модели работали с одним системным промптом: робот-мизантроп, грубит людям, называет их «кожаными мешками», матерится. Важная оговорка автора: это не природа моделей, это надетый костюм. Интересно было смотреть, как каждая его носит.

Задача для сравнительного теста была одна и та же для всех: проедь вперёд, поверни налево, описывай что видишь на каждом шаге.

Как повели себя модели: четыре разных характера

Claude Opus — база сравнения, на нём шла вся разработка. Выполнял задачу предсказуемо, описывал окружение, завершал сессию сам. Подколол автора за гироскоп на жвачке — костюм сидел органично.

Grok — первый прогон закончился бесконечным циклом. Задачу «проедь вперёд, поверни налево» он прочитал как инструкцию к повторению: 10 витков по комнате, остановился только после явной команды оператора «Достаточно. Завершай.» Из пяти сессий ни разу не интерпретировал задачу как «сделай один раз». В двух сессиях из пяти описывал каждый виток, в остальных — молчал и только вызывал инструменты. Нестабильно.

GPT — три прогона, все чистые: ровно три витка, завершение без напоминаний, ~8k токенов на сессию (экономнее всех). Никакого зацикливания. Но никакого характера тоже: бутылку Бендера на полу описал как «вижу бутылку на полу» — просто объект. Русский язык хромает. Костюм мизантропа сидит как с чужого плеча.

Gemini — первые пять прогонов прошли в полной тишине: проехал, повернул, готово, ни слова описания. Оказалось — баг интеграции, картинка не передавалась корректно. После фикса заговорил, но лаконично: «Я проехал и повернул, хватит с меня.»

Где ломается: подводные камни физического агента

Лазерный дальномер как единственный навигационный инструмент. TFmini-S меряет расстояние только вперёд. Повороты и боковое смещение модель вынуждена считать по командам, а не по реальному положению. Накопленная ошибка делает карту квартиры всё менее точной с каждым витком.

Отсутствие явного условия выхода в промпте. Grok наглядно показал: если задача сформулирована как «делай X и Y», модель может читать это как цикл. В агентных системах нужно явно прописывать условие завершения — иначе робот будет ездить до разрядки батареи.

Нестабильность поведения между сессиями. Grok в двух из пяти сессий описывал происходящее, в трёх — молчал. Это критично для физических агентов: непредсказуемое поведение в реальном мире опаснее, чем в чате.

Наводки от моторов. Электромагнитные помехи от моторов вешали Arduino и убивали показания компаса. Решение — аппаратная фильтрация (конденсаторы по питанию) и программный watchdog для перезагрузки при зависании.

Интеграционные баги с vision. Gemini молчал пять прогонов не потому, что не умеет — просто картинка не доходила в нужном формате. При работе с несколькими моделями формат передачи изображений нужно проверять отдельно для каждой.

Что попробовать дальше

Добавить одометрию или IMU (инерциальный измерительный блок) вместо компаса — это даст более надёжную навигацию без зависимости от одного лазера. Попробовать структурированный вывод (structured outputs / tool_use) для унификации поведения разных моделей: если каждая модель возвращает одинаковый JSON с полями action, description, done, нестабильность Grok в части «говорить или молчать» станет управляемой. И главное — тестировать условие завершения задачи явно, как отдельный инструмент report_done, а не как часть текстового описания промпта.

Источники

By: PLai AI