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 и отключению интернет-соединения.
Данный пример объединения продвинутой робототехнической системы и современных наработок искусственного интеллекта показывает нам образ будущего мира, в котором роботы смогут понимать, что от них хочет пользователь и превращать это понимание в полезные действия.
Ссылки
По теме
- Boston Dynamics рассказала об улучшениях Spot по инспекции промышленных объектов
- PickGPT позволяет операторам управлять роботом командами на естественном языке
- Робот Digit использует LLM для интерпретации голосовых команд
- TidyBot — персонализированный робот-помощник на основе больших языковых моделей
- В Google использовали генеративные модели для автоматического программирования роботов на Python
- Microsoft предложила использовать ChatGPT для управления роботами
- ROSGPT — демонстрация использования ChatGPT для управления роботом через ROS