Введение
Робототехника на базе ROS и ROS2 — это стандарт де-факто для современных роботизированных систем: от промышленных манипуляторов и автономных мобильных платформ до исследовательских прототипов. Однако разработка интеграционных скриптов для сбора данных с лидаров, камер, одометрии и управления приводами требует глубоких знаний Python, C++ и специфики ROS-топиков. Каждый новый датчик или исполнительное устройство — это часы отладки, тестирования и написания кода.
ASI Biont — это AI-агент, который подключается к ROS/ROS2-устройству через SSH (наиболее универсальный способ для одноплатников и встроенных систем) или через MQTT (если робот уже использует MQTT-брокер для внешней связи). Пользователь просто описывает в чате, к какому хосту подключиться, какие топики читать, какие команды отправлять — и AI сам генерирует и выполняет Python-код с использованием paramiko или paho-mqtt. Никаких панелей управления, никаких кнопок «добавить устройство» — вся интеграция происходит через диалог.
Что такое ROS / ROS2 и зачем подключать к AI-агенту
ROS (Robot Operating System) — это middleware для робототехники, предоставляющий стандартизированные механизмы обмена сообщениями между узлами (nodes). ROS2 — преемник, построенный на DDS (Data Distribution Service), обеспечивающий реальное время, поддержку множества языков и безопасность. Типичное ROS-устройство — это одноплатный компьютер (Raspberry Pi, NVIDIA Jetson, Orange Pi) с установленным ROS 2 Humble или Foxy, на котором запущены узлы, публикующие данные с датчиков (LIDAR, IMU, камеры) и подписанные на команды управления (скорость, положение сервоприводов).
Подключение AI-агента к такому устройству открывает возможности:
- Автоматическое логирование и анализ данных с сенсоров в реальном времени.
- Дистанционное изменение параметров узлов (PID-коэффициенты, частоты публикации).
- Запуск и остановка узлов по расписанию или при обнаружении аномалий.
- Интеграция с внешними сервисами (Telegram, Slack, базы данных) для оповещений и хранения логов.
Как ASI Biont подключается к ROS / ROS2
ASI Biont поддерживает несколько способов подключения к устройствам, но для ROS/ROS2 наиболее релевантны два:
| Способ | Инструмент | Когда использовать |
|---|---|---|
| SSH | execute_python + paramiko |
Робот на одноплатнике (Raspberry Pi, Jetson) с SSH-доступом. Самый гибкий: можно выполнять любые команды, запускать скрипты, копировать файлы. |
| MQTT | industrial_command / execute_python + paho-mqtt |
Если на устройстве уже запущен MQTT-брокер (например, Mosquitto) и узлы публикуют данные в топики. Позволяет подписаться на топики и публиковать команды без прямого доступа к ОС. |
SSH-подключение (рекомендуемый способ)
SSH — это протокол удалённого управления, доступный на любом Linux-устройстве. AI-агент использует библиотеку paramiko (доступна в sandbox execute_python) для подключения к хосту, аутентификации по паролю или SSH-ключу, выполнения команд ROS2 CLI (ros2 topic list, ros2 topic echo, ros2 param set) и запуска Python-скриптов, которые напрямую работают с ROS2 API (rclpy).
Пример сценария: Пользователь пишет в чате: «Подключись к моему роботу на Raspberry Pi по SSH (IP: 192.168.1.100, логин: ubuntu, пароль: raspberry), прочитай текущее значение топика /odom и если линейная скорость меньше 0.1 м/с, отправь мне уведомление в Telegram». AI генерирует и выполняет следующий код:
import paramiko
import json
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='ubuntu', password='raspberry', timeout=10)
stdin, stdout, stderr = ssh.exec_command('source /opt/ros/humble/setup.bash && ros2 topic echo /odom --once --field pose.pose.position.x')
line = stdout.read().decode().strip()
print(f"Position X: {line}")
# Проверка условия
x = float(line)
if x < 0.1:
import requests
requests.post('https://api.telegram.org/bot<TOKEN>/sendMessage', json={'chat_id': '<CHAT_ID>', 'text': f'Робот почти остановился: x={x:.3f}'})
ssh.close()
MQTT-подключение
Если ваш ROS2-робот публикует данные в MQTT-брокер (например, через ros2 bag или специальный bridge), AI-агент может подписаться на топики и публиковать команды без SSH. Пользователь описывает параметры брокера и нужные топики.
Пример: «Подключись к MQTT-брокеру по адресу mqtt://192.168.1.50:1883, подпишись на топик robot/sensors/temperature и если температура превышает 50°C, опубликуй в топик robot/cmd/stop сообщение "stop"». AI генерирует:
import paho.mqtt.client as mqtt
import json
BROKER = '192.168.1.50'
PORT = 1883
def on_message(client, userdata, msg):
data = json.loads(msg.payload.decode())
temp = data.get('temperature', 0)
print(f"Температура: {temp}")
if temp > 50:
client.publish('robot/cmd/stop', 'stop')
print("Опубликована команда остановки")
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.subscribe('robot/sensors/temperature')
client.loop_start()
# Sandbox выполнит код и через 30 секунд остановит loop
Конкретный сценарий: управление мобильным роботом TurtleBot3
Устройство: TurtleBot3 (Raspberry Pi 4 + OpenCR + LIDAR) с ROS2 Humble.
Задача: Пользователь хочет, чтобы AI-агент каждые 10 секунд считывал расстояние до препятствия из топика /scan (LIDAR), и если минимальное расстояние меньше 0.3 метра, отправлял команду на остановку колёс через топик /cmd_vel, а также оповещал в Telegram.
Шаг 1. Пользователь описывает задачу в чате: «Подключись по SSH к моему TurtleBot3 (IP: 10.0.0.42, логин: ubuntu, ключ: ~/.ssh/id_rsa.pub), установи пакет rclpy, напиши скрипт, который будет раз в 10 секунд читать /scan, находить минимальное расстояние и если < 0.3 м, публиковать Twist(0,0,0) в /cmd_vel и слать мне сообщение в Telegram».
Шаг 2. AI-агент генерирует Python-скрипт, который использует rclpy (ROS2 client library) и paramiko для копирования скрипта на устройство и запуска его через ros2 run или напрямую.
Шаг 3. AI выполняет код (внутри execute_python) — подключается к Raspberry Pi по SSH, создаёт файл /home/ubuntu/stop_node.py с содержимым:
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twist
import numpy as np
import requests
class SafetyNode(Node):
def __init__(self):
super().__init__('safety_node')
self.subscription = self.create_subscription(LaserScan, '/scan', self.scan_callback, 10)
self.publisher = self.create_publisher(Twist, '/cmd_vel', 10)
self.timer = self.create_timer(10.0, self.check_distance)
self.min_distance = float('inf')
def scan_callback(self, msg):
self.min_distance = min(msg.ranges)
def check_distance(self):
if self.min_distance < 0.3:
stop_msg = Twist()
self.publisher.publish(stop_msg)
requests.post('https://api.telegram.org/bot<TOKEN>/sendMessage', json={'chat_id': '<CHAT_ID>', 'text': 'Препятствие близко! Робот остановлен.'})
def main(args=None):
rclpy.init(args=args)
node = SafetyNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
Шаг 4. AI запускает скрипт на устройстве через SSH: python3 /home/ubuntu/stop_node.py &.
Результат: Робот автоматически останавливается при обнаружении препятствия, а пользователь получает Telegram-уведомление. Всё это — без единой строки кода, написанной человеком.
Почему это выгодно
- Экономия времени: Интеграция, на которую у разработчика ушёл бы день, выполняется за минуту. AI пишет код, подключается к устройству, запускает — всё в одном диалоге.
- Безопасность: Код выполняется в sandbox-окружении ASI Biont, а на устройство передаются только проверенные команды. Пользователь контролирует параметры подключения.
- Гибкость: Не нужно ждать обновлений платформы — AI поддерживает любой протокол (SSH, MQTT, Modbus, HTTP) и генерирует код под конкретную задачу. Подключите что угодно: от Arduino до промышленного PLC.
- Доступность: Для интеграции не нужно быть экспертом в ROS или Python. Достаточно описать задачу естественным языком.
Заключение
Интеграция ROS/ROS2-устройства с AI-агентом ASI Biont — это практичный способ автоматизировать сбор данных, мониторинг и управление роботом без написания кода вручную. Используя SSH или MQTT, AI-агент подключается к вашему одноплатнику или брокеру, читает топики, анализирует данные и принимает решения — всё через простой диалог в чате.
Попробуйте сами: зайдите на asibiont.com, опишите своё устройство и задачу — AI-агент подключится к нему за секунды. Никаких панелей, никаких кнопок «добавить устройство» — просто чат и результат.
Комментарии