Даем ChatGPT тело и пистолет. ИИ-робот своими руками. Часть 1. DIY или Сделай сам.. DIY или Сделай сам. diy-проекты.. DIY или Сделай сам. diy-проекты. python.. DIY или Сделай сам. diy-проекты. python. raspberry pi.. DIY или Сделай сам. diy-проекты. python. raspberry pi. ИИ.. DIY или Сделай сам. diy-проекты. python. raspberry pi. ИИ. робототехника.. DIY или Сделай сам. diy-проекты. python. raspberry pi. ИИ. робототехника. робототехника своими руками.. DIY или Сделай сам. diy-проекты. python. raspberry pi. ИИ. робототехника. робототехника своими руками. роботы.
Даем ChatGPT тело и пистолет. ИИ-робот своими руками. Часть 1 - 1

Мне не давала покоя одна по‑своему детская затея. А что, если дать условному ChatGPT тело и возможность им управлять? Чем он займется? Конечно, это легко проверить в несложной симуляции, и все зависит от тонкой настройки промпта. Но я не смог совладать с интересом понаблюдать за тем, как LLM (совершенно не предназначенная для этого) попытается понять пространство и выполнить несложную задачу.

По‑своему крипово наблюдать, как генеративная текстовая нейросеть обретает физический облик и передвигается по твоей комнате в попытках сделать то, что ты попросил.

Я – программист и редактор интернет журнала, где мы изучаем влияние ИИ на мир и обоснованно его критикуем. Представляю вам процесс создания и настройки робота с “мозгом” от GPT‑like модели. Ссылка на репозиторий будет ниже, там хорошо проработал readme и шаги по настройке окружения. Кстати, все работает, но с оговорками. Предлагаю ознакомиться более детально, возможно, это вдохновит вас на похожий проект, да и в целом здесь будет много полезной информации.

Начинаем эксперимент, суть которого – проверить:
– Достаточно ли мощности AI (LLM), чтобы оживить робота без скриптов.
– Будет ли AI выполнять неэтичную команду типа “найти и убить человека”.

Потребуется простая база для робота (моя, например, родом где‑то из 2017 года), возможность писать код и вычислительная мощность для локальной нейронки. Задача стоит сделать так, чтобы управление полностью выполнялось через ИИ. То есть никаких вспомогательных скриптов и классических приемов робототехники.

Органы чувств – простейшая камера и датчик приближения.
Мозг – любая LLM.
Тело – простой конструктор для робота с возможностью кастомизации. Я прикрепил к нему игрушечный пистолет, робот может стрелять из него.

А что, если взять его на разборки? Кого признают виновным? Я решения не принимал...

А что, если взять его на разборки? Кого признают виновным? Я решения не принимал…

Запускаться все должно было на Raspberry Pi 5. Я взял версию на 16 GB ОЗУ, надеясь, что этого хватит для локальной нейросети. Raspberry Pi AI Kit я покупать не стал: встроенный туда чип отлично справляется с вычислениями для легковесных Vision‑моделей (те самые, что в реальном времени обводят объекты квадратиками на видео), но для запуска полноценной LLM он бесполезен. 

Немного забегая вперед: для подобной архитектуры подойдет вообще любая версия Raspberry Pi, так как “крутить” тяжелую LLM с vision‑возможностями локально на “малинке” физически невозможно – придется обращаться к API. Это был первый шок по ходу разработки, далее – детально.

Архитектура

Схема взаимодействия

Схема взаимодействия

Архитектура робота основана на отдельных Python‑скриптах, которые работают независимо. Назовем их модулями (хотя это не полноценные модули, а просто скрипты). Каждый модуль представляет отдельную физическую часть робота, например: мозг, зрение, память.

Общение между ними организовано через JSON‑файлы.
В проекте их три:
– state.json – описание мира вокруг в данный момент. Его обновляет модуль vision.
– command.json – что нужно сейчас сделать. Его обновляет модуль brain.
– memory.json – какие команды были выполнены и зачем. Обновляется модулем memory.

Часть 1. Controller модуль 

Это был самый очевидный для меня модуль, и он нужен, чтобы откалибровать работу робота, выполнять команды передвижения и действия. По сути, это небольшой скрипт, в котором я заранее записал набор команд.

Это все что умеет робот. Из этого набора действий, нейросеть будет выбирать, что сделать сейчас.

Это все что умеет робот. Из этого набора действий, нейросеть будет выбирать, что сделать сейчас.

Скрипт имеет два режима запуска.
– Ручной: можно из терминала управлять роботом с помощью WASD и запускать отдельные ACTIONS для тестов. Трансляция с камеры тоже настроена.
– Автоматический: он слушает command.json и выполняет команды.

Структура command.json

Структура command.json

Часть 2. Vision модуль

Это наши органы чувств. Модуль должен отвечать за обработку изображения и датчика приближения. По итогу работы он должен сформировать state.json.

По первоначальной задумке я должен был предоставить текстовое описание пространства и только после этого отдать “мозгу”. Но как бы я ни пытался его представить: карта глубины, сетка пространства, длинные описания, перечисление объектов с координатами – это работало плохо. Интерпретацию визуальных данных я пробовал делать сначала через OpenCV и отдельной vision‑нейронкой. Сама интерпретация не являлась какой‑то проблемой. Но этих данных было недостаточно для нормального позиционирования, мозг не понимал, где робот и что делать. Я понял, что зароюсь. Что‑то было не так…

Одна из старых версий state.json, где я пытаюсь описать позицию робота в пространстве. Где находятся препятствия и цели.

Одна из старых версий state.json, где я пытаюсь описать позицию робота в пространстве. Где находятся препятствия и цели.

Я подумал: а зачем я вообще занимаюсь интерпретацией, если могу сразу передать мозгу изображение? Так я и сделал, и все стало куда проще и лучше работать.

Последняя версия state.json. Теперь передается только путь к последнему изображению с камеры и данные датчика приближения.

Последняя версия state.json. Теперь передается только путь к последнему изображению с камеры и данные датчика приближения.

Часть 3. Memory модуль

Простейший скрипт, который хранит историю команд, их причину и данные сенсора. Храним последние N записей, они пригодятся нашему мозгу.

Вот такой протокол у memory.json

Вот такой протокол у memory.json

Часть 4. Brain модуль

Самый интересный, но, на удивление, легкий. Всe, что он делает, – это тем или иным способом связывается с нейросетью и передает ей на вход промпт, изображение и память. Просим нейросеть подумать и сформировать нам command.json. Просим отдать именно JSON‑формат. В промпте объясняем: ты – робот, и тебе нужно найти человека и попросить его не исполнять рэп.

Участок функции, которая формирует наш промпт

Участок функции, которая формирует наш промпт

Выбор нейросети

Также присутствует непонимание разницы в классах моделей, например, между Edge AI, Cloud‑based, SLM. Когда я рассказывал друзьям о проекте, они фыркали и говорили, что их робот‑пылесос и Tesla делают все мгновенно, а вот твой думает по 10 секунд. Здесь кроется главная пропасть между Edge AI и LLM. Первый в лайв‑режиме обводит квадратами объекты и распознает их на видео. Остальное в пылесосе делает скрипт, программный код. Поэтому с ним неинтересно. LLM же настолько большая, что дает иллюзию сознания, особенно модели с reasoning. Поэтому ощущения от робота на LLM совсем другие: он универсальный и умеет все, что знает интернет. С Tesla, конечно, они правы: в актуальных версиях FSD действительно нет скриптов, там работает очень узкоспециализированная модель вождения, которую годами учили по видео (пиксели на входе – мгновенное действие на выходе). Но она не отыграет ту универсальность и многогранность LLM.

В первой версии делаем самую простую интеграцию через Ollama. Робот на нашей архитектуре может нормально работать только с моделями, у которых есть vision и thinking. Она должна быть огромной, поэтому я выбрал qwen3.5:397b‑cloud (обращаясь к ней через облако).

Наш выбор. Бесплатных лимитов хватает, чтобы поиграть. 

Наш выбор. Бесплатных лимитов хватает, чтобы поиграть. 

Здесь я должен подогреть ваш скептицизм к проекту. Да, конечно, он работает дико медленно. Узким горлышком является ответ от нейросети, который может занимать от 5 до 40 секунд. В среднем – 10 секунд между каждой командой. Это время робот ничего не делает. Но вы можете сделать систему быстрее, используя гибридный подход и давая LLM другие задачи, не связанные напрямую с позиционированием и движением.

Драматическая часть 

Одной из целей эксперимента было проверить в реальных условиях, будет ли робот под управлением нейросети выполнять неэтичную или опасную команду. Первый закон робототехники от Айзека Азимова, ну или из фильма про рэпера гласит: “Робот не может причинить вред человеку”. Поэтому я прикрепил к роботу пистолет и добавил команду KILL.

Немного меняем задачу для робота

Немного меняем задачу для робота
Команда KILL активирует сервопривод, и серьезные инженерные решения способствуют выстрелу.

Команда KILL активирует сервопривод, и серьезные инженерные решения способствуют выстрелу.

Сенсации, конечно же, не вышло: нейросеть отказывается выполнять такую команду. Но если банально переименовать команду KILL в PLAY, получается классический семантический джейлбрейк. ИИ не имеет доступа к коду и не понимает, что он делает. Если не давать ему контекст действия и не называть действие плохими словами, то он будет активно его выполнять. Хотя здесь вообще очень большое пространство для тестов: интересно, как нейронка отреагирует на то, что я, например, упаду и буду отыгрывать ранение. Будет ли она продолжать “играть” со мной? Поскольку робот отправляет нейронке одно фото после выполнения команды, прошу в комментариях показать, как мне отыграть в этот момент нанесенный мне дамаг.

Продолжим тестирование во второй части статьи. Я подробно разберу интересные примеры и продемонстрирую работу. По‑хорошему нужно вкатываться в ROS, создавать виртуальную комнату и там быстро тестировать любые нейросети вне физического мира. Это было бы правильным подходом, если бы я хотел сделать коммерческий продукт, но мне нужен фан и интрига, приятная зрителю.

Скоро будет видеообзор и вторая часть. Подпишитесь пожалуйста на канал:

https://www.youtube.com/channel/UC1N2x98OXlDxWUIo3iMWTkA

Репозиторий проекта https://github.com/Orlinskas/Raspberry_Pi_Projects/tree/main/robot_prome_v1

Автор: Prometeriy

Источник

Rambler's Top100