Робототехника на базе ROS / ROS 2 — это мощно, но порог входа высок: нужно писать ноды, разбираться в топиках и настраивать взаимодействие между компонентами. А что если отдавать команды роботу простым языком — «подъедь к стеллажу» или «построй карту комнаты»? Именно такую задачу решает AI-агент ASI Biont. В этом гайде разберём, как подключить ROS 2-робота к ASI Biont через MQTT и WebSocket, покажем рабочие примеры кода и объясним, как автоматизировать навигацию без написания сотен строк кода.
Почему ROS и AI-агент — это логичная пара
ROS (Robot Operating System) — экосистема для разработки робототехнических систем: от простых манипуляторов до автономных дронов. В ROS 2 всё общение между модулями построено на топиках (topics) и сервисах (services), что даёт гибкость, но требует программирования на C++ или Python. Для оператора склада или владельца домашнего робота это не всегда удобно.
ASI Biont — это AI-агент, который умеет подключаться к устройствам через открытые протоколы и сам писать код интеграции. Ему не нужно знать ROS заранее: он генерирует Python-скрипты под конкретную задачу. В результате стандартная рутина — паблишинг команд в топик /cmd_vel, чтение одометрии из /odom, запуск картографирования — превращается в текстовые команды.
Способы подключения ASI Biont к ROS 2
ASI Biont поддерживает несколько протоколов, но для ROS 2 оптимальны два:
| Способ | Когда использовать | Комментарий |
|---|---|---|
| MQTT | Если ROS 2-робот уже имеет MQTT-мост (например, через ros2_mqtt_bridge) |
Быстро, надёжно, стандартно для IoT |
| WebSocket | Когда нужен двусторонний поток телеметрии в реальном времени | Удобно для браузерных дашбордов и чат-интерфейсов |
| execute_python | Когда нет готового моста и нужно писать код прямо сейчас | AI сам напишет скрипт с paho-mqtt или aiohttp |
В большинстве случаев используется MQTT, потому что ROS 2 имеет встроенную поддержку этого протокола через пакеты типа mqtt_client. ASI Biont подключается к брокеру и обменивается сообщениями в JSON-формате.
Пример 1: паблишер команд движения
Допустим, робот слушает топик /cmd_vel (линейная и угловая скорость). Нужно отправлять команду «поверни налево» из чата. AI-агент генерирует код паблишера на Python:
import paho.mqtt.client as mqtt
import json
broker = "localhost"
topic = "/cmd_vel" # топик, который читает нода управления
client = mqtt.Client()
client.connect(broker, 1883)
# Поворот налево с угловой скоростью 0.5 рад/с
msg = {
"linear": {"x": 0.0, "y": 0.0, "z": 0.0},
"angular": {"x": 0.0, "y": 0.0, "z": 0.5}
}
client.publish(topic, json.dumps(msg))
Этот скрипт запускается из ASI Biont через execute_python — встроенный песочницу. Важно: execute_python имеет таймаут 30 секунд, поэтому скрипт выполняется один раз и не содержит while True. Для длительной работы используется Hardware Bridge или постоянная нода.
Пример 2: сабскрайбер телеметрии с отправкой в Telegram
Теперь прочитаем данные одометрии из топика /odom и отправим их пользователю. ASI Biont не имеет функции send_telegram(), поэтому для отправки сообщения используем стандартный requests.post к API Telegram.
import paho.mqtt.client as mqtt
import requests
BOT_TOKEN = "ваш_токен"
CHAT_ID = "ваш_chat_id"
def on_message(client, userdata, msg):
if msg.topic == "/odom":
data = json.loads(msg.payload)
position = data["pose"]["pose"]["position"]
text = f"Робот на позиции: x={position['x']:.2f}, y={position['y']:.2f}"
requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": text}
)
client = mqtt.Client()
client.on_message = on_message
client.connect("localhost", 1883)
client.subscribe("/odom")
client.loop_forever()
Но loop_forever() может зависнуть, поэтому в ASI Biont лучше использовать однократный loop(timeout=1) и обрабатывать очередь. AI-агент учитывает такие нюансы автоматически.
Как это выглядит на практике
Пользователь пишет в чат ASI Biont:
Подключись к роботу через MQTT на localhost:1883. При подъезде к точке (1,2) отправь в Telegram сообщение «Прибыл».
AI анализирует запрос, генерирует код, который:
- Подписывается на
/odom - Сравнивает текущие координаты с заданными
- Когда расстояние меньше 0.2 м — публикует сообщение в Telegram
Всё это происходит без единой строчки ручного программирования со стороны пользователя.
Сценарии использования
- Склад: робот-тележка управляется командами «возьми контейнер», «едем к зоне Б». ASI Biont транслирует естественный язык в навигационные цели.
- Доставка: курьер-робот сообщает статус в чат, пользователь может отправить его в другую точку через Telegram.
- Домашняя автоматизация: встроенный робот-пылесос на ROS 2 получает команду «убери кухню», AI переводит её в последовательность точек маршрута.
По данным открытых проектов (например, ROS 2 Navigation2), настройка навигации вручную занимает часами, а с AI-агентом базовый сценарий — минуты.
execute_python: подключение к любому устройству
В отличие от застывших интеграций, ASI Biont подключается к любому устройству через универсальный execute_python. Пользователь просто описывает в чате:
Устройство — ROS 2, IP 192.168.0.10, порт 1883, протокол MQTT. Подпишись на топики /odom и /scan.
AI сам пишет код с paho-mqtt, pymodbus, aiohttp или opcua-asyncio — в зависимости от протокола. Не нужно ждать, пока разработчики ASI Biont добавят поддержку конкретного устройства — интеграция создаётся за секунды в диалоге. Никаких панелей управления и кнопок «добавить устройство»: только текст.
Вывод
Связка ROS 2 и ASI Biont превращает сложного робота в управляемого через Telegram-чат ассистента. MQTT и WebSocket дают надёжный канал передачи команд и телеметрии, а execute_python позволяет адаптироваться к любой конфигурации. Если у вас есть ROS-робот, попробуйте подключить его к ASI Biont на asibiont.com — это займёт меньше времени, чем настройка первой ноды.
Комментарии