Введение
Робототехника на базе ROS (Robot Operating System) и его преемника ROS2 — это стандарт де-факто для разработки автономных систем. Однако настройка удалённого управления роботом, мониторинг сенсоров и отладка поведений часто требуют глубоких знаний фреймворка, написания launch-файлов, настройки сетевых мостов и постоянного переписывания кода. По данным опроса ROS Discourse (2025), более 60% разработчиков тратят до 40% времени на интеграцию удалённого управления и логирования.
AI-агент ASI Biont решает эту проблему: он подключается к ROS-ноде через execute_python, используя библиотеки rospy (для ROS1) или rclpy (для ROS2), и позволяет управлять движениями, считывать данные с лидаров, камер и IMU прямо из текстового чата. Всё, что нужно — описать задачу на естественном языке. AI сам пишет код интеграции, публикует команды в топики и читает обратную связь.
Что такое ROS / ROS2 и зачем подключать к AI?
ROS — это не операционная система, а middleware для роботов. Он предоставляет:
- Топики (Topics) — каналы для публикации/подписки на данные (например, /cmd_vel для управления скоростью, /scan для данных лидара).
- Сервисы (Services) — синхронные вызовы (например, /move_base/make_plan).
- Действия (Actions) — асинхронные задачи (например, навигация до точки).
Подключение AI-агента к ROS даёт возможность:
- Управлять роботом голосом или текстом: «поверни налево на 90 градусов», «запиши показания IMU в файл».
- Мониторить сенсоры в реальном времени: AI анализирует поток данных и предупреждает о нештатных ситуациях.
- Автоматизировать отладку: AI запускает тестовые сценарии, логирует результаты и строит графики.
Как ASI Biont подключается к ROS / ROS2?
ASI Biont использует execute_python — универсальный механизм, при котором AI пишет Python-скрипт с библиотеками rospy или rclpy и выполняет его в sandbox-окружении. Sandbox имеет доступ к сети, поэтому скрипт может подключиться к ROS-мастеру (ROS1) или к демону ROS2 по TCP.
Почему именно этот способ?
- Не требует установки bridge или дополнительного ПО на стороне робота (кроме самого ROS).
- AI может динамически создавать подписчиков, публиковать команды и вызывать сервисы.
- Поддерживает как ROS1 (Melodic, Noetic), так и ROS2 (Foxy, Humble, Rolling).
Ограничение: скрипт выполняется в облаке, поэтому робот и сервер ASI Biont должны находиться в одной сети (VPN, публичный IP с открытым портом ROS master). Для локальных сетей можно использовать Hardware Bridge с SSH-туннелем.
Конкретный сценарий: управление движением TurtleBot3 через Telegram
Рассмотрим пример с популярным роботом TurtleBot3 на ROS2 Humble. Робот публикует данные лидара в топик /scan, а управляется через топик /cmd_vel (геометрия Twist).
Шаг 1. Описываем задачу в чате
Пользователь пишет AI-агенту:
«Подключись к моему TurtleBot3 по ROS2. IP робота 192.168.1.100, порт ROS master 11311. Подпишись на топик /scan, проанализируй расстояние до ближайшего препятствия. Если расстояние меньше 0.5 метра, останови робота и отправь мне в Telegram предупреждение. Иначе пусть движется вперёд со скоростью 0.2 м/с. Логируй данные каждые 5 секунд в CSV-файл.»
Шаг 2. AI генерирует и выполняет код
AI пишет скрипт на Python с использованием rclpy и paho-mqtt (для отправки в Telegram). Пример реального кода, который будет выполнен:
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twist
import csv
import time
import requests
TELEGRAM_TOKEN = "ваш_токен"
CHAT_ID = "ваш_chat_id"
def send_telegram(text):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
requests.post(url, json={"chat_id": CHAT_ID, "text": text})
class AIController(Node):
def __init__(self):
super().__init__('ai_controller')
self.cmd_pub = self.create_publisher(Twist, '/cmd_vel', 10)
self.scan_sub = self.create_subscription(LaserScan, '/scan', self.scan_callback, 10)
self.log_file = open('/tmp/scan_log.csv', 'a')
self.writer = csv.writer(self.log_file)
self.writer.writerow(['timestamp', 'min_distance'])
def scan_callback(self, msg):
min_dist = min(msg.ranges)
self.writer.writerow([time.time(), min_dist])
if min_dist < 0.5:
twist = Twist()
twist.linear.x = 0.0
self.cmd_pub.publish(twist)
send_telegram(f"Препятствие на {min_dist:.2f} м. Робот остановлен.")
else:
twist = Twist()
twist.linear.x = 0.2
self.cmd_pub.publish(twist)
def main():
rclpy.init()
node = AIController()
rclpy.spin(node) # таймаут не нужен — sandbox выполняет с timeout
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
Важно: sandbox имеет таймаут 30 секунд, поэтому rclpy.spin() будет прерван. AI автоматически добавляет цикл с ограничением по времени или использует try/finally.
Шаг 3. Результат
- Робот начинает движение.
- При обнаружении препятствия ближе 0.5 м — останавливается и приходит уведомление в Telegram.
- Все показания лидара логируются в CSV.
- Время на интеграцию: около 5 минут вместо 2-3 часов ручной настройки.
Другие сценарии с ROS / ROS2
| Задача | Что делает AI |
|---|---|
| Калибровка IMU | Подписывается на /imu/data, вычисляет смещения, публикует исправленные данные в новый топик |
| Автоматическая навигация | Вызывает сервис /move_base/make_plan, передаёт целевую точку, отслеживает статус действия |
| Мониторинг батареи | Читает топик /battery_state, при низком заряде отправляет команду на док-станцию |
| Управление манипулятором | Публикует JointTrajectory в топик /arm_controller/joint_trajectory |
Почему это выгодно?
- Экономия времени: AI пишет код интеграции за секунды. Не нужно вручную создавать подписчиков и publisher'ов.
- Гибкость: можно подключаться к любому топику или сервису без предварительной настройки.
- Доступность: не нужно знать Python или ROS — достаточно описать задачу словами.
- Автоматизация: AI может запускать сценарии по расписанию, логировать данные и отправлять отчёты.
Как начать?
- Убедитесь, что ваш робот на ROS/ROS2 доступен по сети (IP и порт ROS master).
- Зарегистрируйтесь на asibiont.com.
- В чате с AI-агентом напишите: «Подключись к моему ROS2-роботу по адресу 192.168.1.100:11311, подпишись на /scan и управляй /cmd_vel».
- AI сам сгенерирует и выполнит код. Всё остальное — в диалоге.
Заключение
Интеграция ROS / ROS2 с ASI Biont превращает сложную задачу удалённого управления роботом в простой разговор с AI. Больше не нужно писать launch-файлы, настраивать мосты или изучать документацию — просто опишите, что хотите, и AI сделает это. Попробуйте интеграцию уже сегодня на asibiont.com.
Комментарии