Робототехника на базе ROS 2 (Robot Operating System 2) давно перестала быть экзотикой. Сегодня это стандарт для исследовательских лабораторий, промышленных складов и стартапов в сфере автономной мобильности. ROS 2 предоставляет гибкую архитектуру для управления узлами, топиками и сервисами, но его настройка и написание интеграционных скриптов требуют времени и глубоких знаний Python, C++ и распределённых систем. Что если бы инженер мог просто описать задачу на естественном языке — и AI-агент сам бы написал код, подключился к ROS 2 мастеру, опубликовал топики и запустил пайплайн компьютерного зрения? Именно так работает интеграция ASI Biont с ROS 2.
Что такое ROS 2 и зачем подключать к нему AI-агента
ROS 2 (Robot Operating System 2) — это middleware для распределённых робототехнических систем. Он состоит из узлов (nodes), которые общаются между собой через топики (topics), сервисы (services) и экшены (actions). Типичная задача: запустить узел компьютерного зрения, который публикует координаты объектов в топик /detected_objects, а узел навигации подписывается на этот топик и планирует маршрут. Проблема в том, что написание такого пайплайна вручную — десятки строк кода, отладка соединений, проверка типов сообщений (msg-файлы). ASI Biont решает это через execute_python — AI пишет код на Python с использованием библиотеки rclpy (официальный клиент ROS 2 для Python), выполняет его в sandbox-окружении на сервере ASI Biont (Railway) и может подключаться к вашему ROS 2 master по сети. Всё, что нужно пользователю — указать IP-адрес и порт ROS 2 master (обычно localhost:11311 для локальной сети или реальный IP для удалённого доступа).
Как ASI Biont подключается к ROS 2: два способа
У ASI Biont нет предустановленной кнопки «добавить ROS 2». Вместо этого AI использует универсальный механизм execute_python — вы просто описываете в чате, к какому устройству и как подключиться, а AI сам генерирует Python-скрипт и выполняет его в защищённом sandbox. Для ROS 2 доступны два основных подхода:
- Прямое подключение через execute_python — AI пишет скрипт с
rclpy, который подключается к вашему ROS 2 master по сети. Скрипт может публиковать сообщения в топики, подписываться на них, вызывать сервисы и запускать экшены. Этот способ подходит, если ваша ROS 2-система доступна по IP (например, одноплатник Raspberry Pi в той же локальной сети). - Hardware Bridge + COM-порт — если ваш робот работает на микроконтроллере (Arduino, ESP32) и управляется через последовательный порт, AI подключается через bridge.py (скачивается из дашборда ASI Biont). Bridge открывает COM-порт (например, COM3 на 115200 baud) и передаёт команды от AI к устройству. Это удобно для прототипов, где ROS 2 запущен на ПК, а моторы управляются через UART.
В этой статье мы сосредоточимся на первом способе — execute_python с rclpy, так как он наиболее универсален для ROS 2.
Сценарий 1: Управление роботом через топики ROS 2
Представьте, что у вас есть мобильная платформа на ROS 2 с драйвером колёс, который подписывается на топик /cmd_vel (geometry_msgs/Twist). Чтобы робот поехал вперёд, нужно опубликовать сообщение с линейной скоростью. Вручную вы бы написали:
import rclpy
from geometry_msgs.msg import Twist
from rclpy.node import Node
class CmdPublisher(Node):
def __init__(self):
super().__init__('cmd_publisher')
self.pub = self.create_publisher(Twist, '/cmd_vel', 10)
timer_period = 0.5
self.timer = self.create_timer(timer_period, self.publish_cmd)
def publish_cmd(self):
msg = Twist()
msg.linear.x = 0.5
self.pub.publish(msg)
def main():
rclpy.init()
node = CmdPublisher()
rclpy.spin(node)
if __name__ == '__main__':
main()
С ASI Biont вы просто пишете в чате: «Подключись к ROS 2 мастеру на 192.168.1.100:11311, опубликуй в топик /cmd_vel сообщение с линейной скоростью 0.5 м/с, держи публикацию 3 секунды, потом останови». AI-агент сам генерирует аналогичный скрипт, выполняет его в sandbox и управляет роботом. Вам не нужно помнить типы сообщений, импорты и структуру узла — AI делает всё за секунды.
Сценарий 2: Чтение данных с лидара и анализ через AI
Допустим, ваш робот оснащён 2D-лидаром (например, RPLIDAR A1), который публикует данные в топик /scan (sensor_msgs/LaserScan). Вы хотите, чтобы AI-агент проанализировал последние 10 сканов и определил, есть ли препятствие слева. В чате вы пишете: *«Подпишись на топик /scan, собери 10 сообщений, проверь, есть ли точки с расстоянием меньше 0.5 метра в секторе от -30 до 30 градусов. Если есть — напиши в чат
Комментарии