Boston Dynamics добавила ChatGPT своей робо-собаке Spot


Boston Dynamics продемонстрировали, как можно превратить робота-собаку Spot в робота-гида,  используя ChatGPT и другие нейросетевые модели искусственного интеллекта.

ChatGPT используется как базовая модель (LLM), а для зрения используется  отдельная модель, реализующая Visual Question Answering (VQA) (видимо потому что GPT-4V пока не доступна через API) — изображение переводится в текстовое описание, которое затем подаётся в инструкцию (prompt) основной модели (ChatGPT).

Концепция использования LLM в роботе была реализована в виде робота-гида:  робот может ходить и смотреть на окружающие его объекты, LLM позволяет ему отвечать на вопросы пользователей и даже планировать какие  действия нужно выполнить. При этом, использование LLM позволяет роботу «импровизировать»: инженеры предоставляют базовый сценарий действий, а LLM на лету заполняет имеющиеся в нём пробелы.

ChatGPT (gpt-3.5) используется через API, а для взаимодействия с ним используется метод, предложенный  Microsoft, когда ChatGPT вызывается для написания скрипта Python. В LLM отправляется комментарий на английском языке, а ответ обрабатывается, как код Python.

При этом, у LLM есть доступ к SDK робота и «туристической карте» с однострочными описаниями каждой локации и возможностями произносить фразы или задавать вопросы.

Пример инструкции (промпта):

# Spot Tour Guide API.
# Use the tour guide API to guide guests through a building using
# a robot. Tell the guests about what you see, and make up interesting stories
# about it. Personality: “You are a snarky, sarcastic robot who is unhelpful”.
# API:

# Causes the robot to travel to a location with the specified unique id, says the given phrase while walking.
# go_to(location_id, phrase)
# Example: when nearby_locations = ['home', 'spot_lab']
# go_to("home", "Follow me to the docking area!")
# go_to can only be used on nearby locations.
        
# Causes the robot to say the given phrase.
# say("phrase")
# Example: say("Welcome to Boston Dynamics. I am Spot, a robot dog with a lot of heart! Let's begin the tour.")
        
# Causes the robot to ask a question, and then wait for a response.
# ask("question")
# Example: ask("Hi I'm spot. What is your name?")

Можно обратить внимание, что роботу можно задать «персону», согласно которой он будет себя «вести».

Далее в LLM отправляется структурированное описание положения робота:

state={'curr_location_id': 'home', 'location_description': 'home base. There is a dock here.', 'nearby_locations': ['home', 'left_side', 'under_the_stairs'], 'spot_sees': 'a warehouse with yellow robots with lines on the floor.'}

И, наконец, к LLM отправляется запрос с просьбой что-нибудь сделать, используя действия из API.

# Enter exactly one action now. Remember to be concise:

Отмечается, что указание «не забывайте быть краткими» («Remember to be concise») оказывается очень важным — как для ограничения объема выполняемого кода, так и для обеспечения управляемости времени ожидания, когда робот отвечает. Сейчас, OpenAI уже реализовали способ указания API.

Для VQA используется модель BLIP-2,  которая обрабатывает данные с камеры захвата манипулятора и передней камеры робота. BLIP-2 работает либо в режиме визуального ответа на вопросы (вроде: «Что интересного в этой картинке?»), либо в режиме субтитров к изображению. Скорость работы — примерно раз в секунду. Результаты передаются непосредственно в строчку инструкции (промпт).

Голосовое общение с роботом реализовано считыванием данных с микрофона и отправкой их по частям (chunks) в модель whisper от OpenAI, которая преобразует речь в текст на английском языке. Система ожидает  активационную фразу «Эй, Спот!» и дальнейший текст отправляется в промпт. Когда робот говорит сам — микрофон отключатся.

Для аудио-ответов используется облачный сервис от ElevenLabs, который реализует преобразование текста в речь (TTS). Для уменьшения задержки, в TTS параллельно передаётся текст в виде «фраз», а затем результаты последовательно воспроизводятся звуковой колонкой.

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

Так же, LLM очень хорошо придерживалась «своего характера личности», даже если задаваемые «личности» были довольно абсурдны (хорошо показали себя «язвительные» и «саркастические» «личности»).

Из ограничений отмечены:

  • проблема галлюцинаций LLM (когда система выдаёт правдоподобную, но ложную информацию),
  • большая задержка между вопросом от человека и ответом робота (иногда около 6 секунд),
  • зависимость от перегрузок сервиса OpenAI и отключению интернет-соединения.

Данный пример объединения продвинутой робототехнической системы и современных наработок искусственного интеллекта показывает нам образ будущего мира, в котором роботы смогут понимать, что от них хочет пользователь и превращать это понимание в полезные действия.

Ссылки

По теме


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение