Я тут сделал дроида из "Звёздных войн" с искусственным интеллектом и нейросетью, с модулем инерциальной навигации. |
||
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ Атаки на ИИ Внедрение ИИИИ теория Компьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Промпты. Генеративные запросы Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2026-03-06 12:00 Благодаря использованию ИИ - ChatGPT - можно просто словами описать, что ты хочешь от дроида - и он сделает это, анализируя изображение с камеры в голове дроида и управляя сервоприводами. Если дроида толкнуть, он будет пытаться удержаться на ногах, балансируя, чтобы не упасть. ### Из чего он состоит: * 16 сервоприводов (по 5 на каждую из ног, 4 в позвоночнике, 2 на шевеление ушами) с обратной связью sts3215 (кроме ушей - там стоят mg90s) * Подшипники от велосипеда * Все детали дроида распечатал на своём 3d-принтере из обычного petg и гибкого tpu (для подошвы ног) филаментов * 4 датчика касания в подошве ног - чтобы дроид понимал, когда его нога касается поверхности * модуль инерциальной навигации bno055 (магнитометр, акселерометр, гироскоп) - подключен по i2c. Позволяет дроиду определять пространственное положение и не падать * "мозги" дроида - Raspberry Pi * камера для работы с ИИ - ov5647, подключена к Raspberry через csi. * поддерживает два режима работы - автономный через ИИ ChatGPT и ручной. Для ручного режима я купил геймпад GameSir T4 Pro (с креплением для смартфона) * высокотоковые аккумуляторы 18650, заряжаются через usb type-c. * вывод звука - max98357a, подключён через i2s ### Что умеет: 1) Ходить вперёд-назад 2) Ходить боком влево-вправо 3) Поворачиваться налево-направо 4) Крутить головой во всех плоскостях 5) Шевелить ушами 6) Моргать, включать прожектор 7) Проигрывать заранее загруженные в память звуки а-ля R2D2 8) Управление - ручное по Bluetooth с геймпада либо автономное с ИИ 9) Есть встроенная в голову камера для работы с ИИ 10) Сохранять баланс при применении внешнего воздействия - есть толкнуть дроида, будет стараться сохранять равновесие и оставаться на ногах, не падая ### А теперь немного о том, как это всё устроено и работает. Как научить дроида ходить и не падать при этом? Для обучения ходьбе физического робота, "в железе", могут уйти годы. Но тут нам на помощь приходит такой метод машинного обучения, как "обучение с подкреплением" (Reinforcement Learning, RL), что позволяет сократить срок обучения с нескольких лет до всего нескольких часов. Мы помещаем модель дроида - "агента" - в виртуальную среду (симуляторы Mujoco Playground (использовалась для этого дроида) либо Isaac Lab), и учим (тут используется RL-алгоритм PPO - Proximal Policy Optimization) его ходить и не падать методом "кнута и пряника" - выдаём агенту награды за точность и баланс, и штрафуем его за резкость и падения. Агент старается тем самым минимизировать неправильные ходы и максимизировать правильные. На выходе получаем обученную нейросеть (файл *.onnx), который загружаем в мозг дроида (Raspberry Pi) - и вуаля, дроид благодаря этой нейросети может ходить и не падать :) В процессе работы данные с модуля инерциальной навигации, датчиков контакта в подошве ног, положении/скорости суставов (считываются с сервоприводов) и команды с геймпада/ИИ передаются в нейронную сеть. Полученные от неё действия масштабируются, фильтруются, и отправляются на сервоприводы дроида. ### Стадии разработки (упрощённо) 1) Проектируем детали дроида в CAD - например, OnShape, Fusion 360, Компас 3D 2) В слайсере - программе для генерации набора команд для 3d-принтера (g-code) расставляем детали на виртуальном столе 3d-принтера, добавляем поддержки и т.д., получаем файл для печати деталей на 3d-принтере 3) Печатаем детали на 3d-принтере) 4) Для обучения нейросети в симуляторе нам нужен файл с описанием нашего дроида, пригодный для симуляции, urdf/mjcf. Его можно получить используя такие инструменты, как onshape-to-robot, fusion2urdf и т.д. (преобразовать из urdf в mjcf можно в самом Mujoco) 5) Для обучения с подкреплением нам нужно смоделировать эталонное движение робота - для этого используется Placo (cм. ссылки ниже), получаем на выходе pkl-файл. 6) Существует проблема, известная как "sim-to-real gap" - когда в симуляции у нас всё идеально, а "в железе" в дело вмешивается физика и всё портит, дроид падает. Чтобы её решить, нужно учитывать физику нашего дроида - учитывать веса, инерцию, моменты. Для решения этой проблемы, в частности, нужно моделировать поведение сервоприводов - тут используется BAM (Better Actuator Models, см. ссылки ниже), получаем на выходе файл json. 7) Для симуляции и обучения с подкреплением можно использовать Mujoco Playground либо Isaac Lab. В данном случае используется Mujoco. 8) Перед сборкой дроида выставляем все сервоприводы программно в нулевое положение, назначаем каждому сервоприводу уникальный идентификатор (т.к. все sts3215 сидят на одной шине с ID=1), после сборки дроида руками каждую деталь, управляемую сервоприводом, выставляем в исходное положение, программно считываем с соответствующего сервопривода получившиеся смещение и записываем в конфигурационный файл, калибруем модуль инерциальной навигации (магнитометр, акселерометр, гироскоп) и записываем калибровки в pkl-файл, прописываем прокси и api-ключ для использования ИИ. :) ### Как реализована интеграция с ИИ ChatGPT Реализована в виде скрипта на языке Python. Для работы с ChatGpt - а именно, с моделью gpt-4o-mini (т.к. у последних моделей дорогие токены), сейчас использую сервис openrouter.ai - он предоставляет единый API для более чем 300 моделей ИИ. Поскольку российские IP блокируются при работе с данной моделью, то использую прокси. В скрипте описана карта функций вида "иди вперед", "назад", "повернись", "проиграй звук", "сделай картинку" и т.д., и в промпте для ИИ в server role подробно описано, как управлять дроидом через эти функции. В user role задан пользовательский промпт - что требуется от дроида. Картинка с камеры дроида обрабатывается при помощи OpenCV, далее кодируется в base64 и отправляется в ИИ (правда, частота невысокая - 1 fps), он её анализирует и выдаёт в ответ команды вида "вперед", "повернись", "назад" и т.д., которые через обученную и загруженную в память дроида нейросеть передаётся на сервоприводы дроида. ### Монетизация Сейчас на рынке ничего подобного нет, даже китайцы для массового рынка подобные штуки не производят. Из роботов с ИИ можно купить либо маленькие и бесполезные типа XGO Rider, Emo в районе 50к, либо громоздкие и дорогие гуманоиды типа Unitree G1 / H2 за несколько миллионов рублей (есть ещё робособаки Unitree Go2). А вот ниша между этими двумя решениями - маленьких и бесполезных и дорогих и громоздких - не занята) ### Что можно улучшить 1) Замена сервоприводов на BLDC-моторы - например, DM8006 / DM6006 - но себестоимость изготовления дроида резко улетает за 200к рублей, плюс растёт трудоёмкость его изготовления. 2) Планирую добавить микрофон и реализовать распознавание речи (XiaoZhi AI), чтобы каждый раз не прописывать руками промпт для ИИ в скрипт на Питоне 3) Можно научить дроида ходить по снегу/песку/гравию и другим неровным поверхностям, используя недавно разработанный движок симуляции NVIDIA Newton (см. ссылки ниже) 4) Оригинальный дроид от Disney использует многослойный подход - в ожидании команд первый слой воспроизводит анимацию - двигает антеннами, крутит головой, моргает, поддерживает 4 настроения - застенчивый, счастливый, злой, грустный. И этот слой смешивается с управляющими командами от джойстика/ИИ. Движок отслеживает, в какой фазе находится текущая анимация, и смешивает движения только при совпадении фаз. В данном же дроиде это не реализовано, он тупо статично ждёт команд. 5) Дроиду определённо не хватает плавности в ходьбе) Решить проблему можно, например, используя алгоритм LCP - Lipschitz-Constrained Policies 6) Не мешало бы добавить поддержку ROS2 7) Сейчас используется внешний ИИ, на западных серверах (подключение через openrouter.ai). Для полной автономности, неплохо бы перейти на локальный ИИ - например, связку Gemma 3 + Moondream 2 через Ollama. Но Raspberry Pi в моем дроиде такое не потянет, думаю, надо что-то вроде Jetson Nano использовать. Или использовать связку RPi5+модуль Pi AI Hat+ 2 (40 TOPS). 8) Также существует проблема, известная как "задержка логического вывода", когда у нас получаются рваные движения из-за того, что после выполнения очередной команды от ИИ мы тратим время и ждём, пока сделаем очередной снимок с камеры, отправим его в ИИ и дождёмся от него новой команды. Для решения такой проблемы начали появляться VLA-модели с асинхронным выполнением, когда модель ИИ генерирует новую команду ещё до выполнения текущей, за счёт чего получаем ровное и плавное движение без рывков. Пример такой модели - появившаяся в этом месяце VLA-модель Xiaomi-Robotics-0 (см. ссылку ниже) ### Вместо послесловия Physical AI - физический ИИ, при котором роботы перестают быть запрограммированы на строго определённые действия и становятся более автономными и адаптивными - считается доминирующим трендом 2026 года в робототехнике. Применяя Physical AI и используя VLA-модели (Vision-Language-Action), мы отдаём команды роботам на естественном языке "пойди туда-то и сделай то-то" и позволяем им самим решать, как эффективнее и оптимальнее решить поставленную перед ними задачу. Не программируя их заранее на строго определённые действия. Применяя обучение с подкреплением / имитационное обучение (Reinforcement Learning / Imitation Learning), роботы теперь обучаются в виртуальных средах, получая в качестве результата обученную нейросеть и перенося полученные навыки из виртуальной среды в реальный мир. Как следствие - снижается стоимость разработки и сильно ускоряется время. Вообще, на эту тему можно написать немало научных статей, и данный дроид - хорошая платформа для этого. :) У подобных дроидов - не только развлекательное либо образовательное применение, не только промышленное (работа в местах, где пребывание человека затруднительно либо опасно), но ещё и военное - двуногие и четырёхногие робототизированные решения с ИИ уже сейчас начинают активно внедряться в армии западных стран, за этим - будущее. Данного дроида можно увидеть в Диснейленде в Калифорнии - в тематической зоне Star Wars: Galaxy's Edge. Также, он будет в фильме "Мандалорец и Грогу", который выйдет на экраны 22 мая этого года. А ещё можно увидеть его у меня дома ? ### Ссылки по теме Статья с описанием от Disney Research: https://la.disneyresearch.com/wp-content/uploads/BD_X_paper.pdf Физика ходьбы дроида (теория и код): https://youtu.be/RXGrTD71FMc Placo: https://github.com/Rhoban/placo BAM: https://github.com/Rhoban/bam/ PPO: https://habr.com/ru/companies/otus/articles/888122/ LPC: https://lipschitz-constrained-policy.github.io/ ROS2: https://ros.org VLA: https://habr.com/ru/companies/yandex/articles/926330/ VLA-модель Xiaomi-Robotics-0: https://xiaomi-robotics-0.github.io/ OpenRouter: https://openrouter.ai/ OpenCV: https://opencv.org/ XiaoZhi AI: https://github.com/78/xiaozhi-esp32 onshape-to-robot: https://github.com/Rhoban/onshape-to-robot Mujoco Playground: https://github.com/google-deepmind/mujoco_playground Isaac Lab: https://github.com/isaac-sim/IsaacLab NVIDIA Newton: - описание: https://developer.nvidia.com/blog/announcing-newton-an-open-source-physics-engine-for-robotics-simulation/ - гитхаб: https://github.com/newton-physics/newton Подробную статью уже готовлю для публикации на Хабре, опубликую позже. Источник: github.com Комментарии: |
|