ROSGPT — демонстрация использования ChatGPT для управления роботом через ROS


Исследование демонстрирует концепцию использования возможностей больших языковых моделей (БЯМ, (large language model (LLM)) для взаимодействия человека и робота под управлением ROS.

ROSGPT — это пакет для ROS2, который интегрирует ChatGPT с роботизированными системами на базе ROS2. Основная идея проекта  заключается в использовании уникальных свойств LLM, которые позволяют при помощи правильных инструкций (prompt) и разработки онтологий преобразовывать неструктурированные команды на естественном языке в структурированные инструкции для робота.

В данной работе автор выбрал ответ в формате JSON.

Для «настройки» LLM используется техника Few-shot-learning (FSL), которая состоит в том, что в начальной инструкции для LLM приводятся примеры запросов и требуемых ответов.

Вот какую инструкцию для ChatGPT («gpt-3.5-turbo») выбрал автор:

# Create the GPT-3 prompt with example inputs and desired outputs
prompt = '''Consider the following ontology:
            {"action": "go_to_goal", "params": {"location": {"type": "str", "value": location}}}
            {"action": "move", "params": {"linear_speed": linear_speed, "distance": distance, "is_forward": is_forward}}
            {"action": "rotate", "params": {"angular_velocity": angular_velocity, "angle": angle, "is_clockwise": is_clockwise}}
            You will be given human language prompts, and you need to return a JSON conformant to the ontology. Any action not in the ontology must be ignored. Here are some examples.
            prompt: "Move forward for 1 meter at a speed of 0.5 meters per second."
            returns: {"action": "move", "params": {"linear_speed": 0.5, "distance": 1, "is_forward": true, "unit": "meter"}}
            prompt: "Rotate 60 degree in clockwise direction at 10 degrees per second and make pizza."
            returns: {"action": "rotate", "params": {"angular_velocity": 10, "angle": 60, "is_clockwise": true, "unit": "degrees"}}
            
            prompt: "go to the bedroom, rotate 60 degrees and move 1 meter then stop"
            returns: {"action": "sequence", "params": [{"action": "go_to_goal", "params": {"location": {"type": "str", "value": "bedroom"}}}, {"action": "rotate", "params": {"angular_velocity": 30, "angle": 60, "is_clockwise": false, "unit": "degrees"}}, {"action": "move", "params": {"linear_speed": 1, "distance": 1, "is_forward": true, "unit": "meter"}}, {"action": "stop"}]}
            
            '''
prompt = prompt+'\nprompt: '+text_command

Сама концепция использования LLM для подобного взаимодействия человека и робота на естественном языке — очень интересна и может быть легко адаптирована к различным роботам и задачам.

Схожую работу уже демонстрировали исследователи из Microsoft, где они показали как можно использовать ChatGPT для управления роботами при помощи естественных языковых команд.

Статьи

  1. ROSGPT: Next-Generation Human-Robot Interaction with ChatGPT and ROS

Ссылки

По теме


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

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
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение