Введение
LiDAR (Light Detection and Ranging) — это технология лазерного сканирования, которая позволяет получать точные 3D-данные об окружающей среде. Устройства, такие как RPLIDAR (Slamtec) и TFmini (Benewake), широко используются в робототехнике для навигации, картографирования и избегания препятствий. Однако интеграция LiDAR с интеллектуальными системами управления часто требует написания сложного кода и настройки сетевых протоколов.
AI-агент ASI Biont меняет этот подход. Вместо того чтобы вручную писать парсеры данных, настраивать COM-порты и MQTT-брокеры, вы можете просто описать задачу на естественном языке. ASI Biont сам сгенерирует код интеграции, подключится к вашему LiDAR-сенсору и начнет анализировать данные в реальном времени. Это позволяет сосредоточиться на логике управления роботом, а не на инфраструктуре.
Зачем подключать LiDAR к AI-агенту?
LiDAR-сенсоры генерируют большие объемы данных: от 360-градусных сканов RPLIDAR до точечных измерений расстояния от TFmini. Вручную обрабатывать эти данные для принятия решений — трудоемко. AI-агент может:
- Автоматически выявлять препятствия и строить оптимальные маршруты
- Классифицировать объекты (стены, люди, мебель) на основе дальномерных данных
- Интегрировать данные с других сенсоров (IMU, одометрия) для SLAM
- Отправлять команды на моторы робота через SSH или MQTT
Способы подключения LiDAR к ASI Biont
ASI Biont поддерживает несколько протоколов для работы с оборудованием. Для LiDAR наиболее релевантны:
| Протокол | Применение для LiDAR | Преимущества |
|---|---|---|
| COM-порт (Hardware Bridge) | Подключение RPLIDAR A1/A2 через USB-UART | Прямой доступ к данным сканирования |
| SSH | Управление Raspberry Pi с подключенным TFmini | Удаленная обработка данных |
| MQTT | Агрегация данных с нескольких сенсоров | Масштабируемость |
| execute_python | Универсальный код для любого протокола | Гибкость |
Почему Hardware Bridge?
Большинство LiDAR-сенсоров (RPLIDAR, TFmini) подключаются через USB-UART и представляют собой виртуальный COM-порт (например, COM3 на Windows, /dev/ttyUSB0 на Linux). Hardware Bridge — это программа bridge.py, которую пользователь запускает на своем ПК. Она соединяется с ASI Biont через HTTP long polling и передает команды AI-агента в COM-порт. AI использует инструмент industrial_command с протоколом serial:// для отправки и получения данных.
Сценарий 1: RPLIDAR A1 — построение карты помещения
Задача
Роботу-пылесосу необходимо построить карту комнаты для планирования уборки. RPLIDAR A1 подключен к ПК через USB-UART (COM3, 115200 бод).
Шаг 1: Запуск Hardware Bridge
Пользователь запускает bridge.py с токеном и списком портов:
python bridge.py --token=YOUR_ASI_BIONT_TOKEN --ports=COM3 --default-baud=115200
Bridge подключается к ASI Biont и ожидает команд.
Шаг 2: Описание задачи в чате
Пользователь пишет:
«Подключись к RPLIDAR на COM3, скорость 115200 бод. Запусти сканирование и построй карту расстояний до ближайших препятствий каждые 2 секунды. Сохрани результат в JSON.»
Шаг 3: AI-агент генерирует и выполняет код
ASI Biont использует industrial_command для отправки команды на bridge:
# Псевдокод, который генерирует AI
from asi_biont import industrial_command
def start_lidar_scan():
# Отправляем команду на bridge для чтения данных с RPLIDAR
result = industrial_command(
protocol='serial://',
command='read',
params={
'port': 'COM3',
'baud': 115200,
'timeout': 2.0
}
)
# Парсинг протокола RPLIDAR (фреймы по 42 байта)
frames = parse_rplidar_frames(result['data'])
return frames
AI также может написать скрипт для execute_python, который обрабатывает данные, полученные от bridge, и строит карту:
import json
import numpy as np
def build_occupancy_grid(frames, resolution=0.1):
"""
Строит карту занятости на основе данных RPLIDAR.
frames: список словарей {'angle': float, 'distance': float, 'quality': int}
resolution: размер ячейки в метрах
"""
grid_size = int(10 / resolution) # 10 метров
grid = np.zeros((grid_size, grid_size), dtype=int)
center = grid_size // 2
for f in frames:
if f['quality'] > 10: # отфильтровываем шум
rad = np.deg2rad(f['angle'])
x = int(center + (f['distance'] * np.cos(rad)) / resolution)
y = int(center + (f['distance'] * np.sin(rad)) / resolution)
if 0 <= x < grid_size and 0 <= y < grid_size:
grid[x, y] = 1
return grid.tolist()
# Пример использования (в execute_python)
grid = build_occupancy_grid(frames_from_bridge)
with open('map.json', 'w') as f:
json.dump(grid, f)
print('Карта сохранена в map.json')
Результат
AI-агент каждые 2 секунды снимает показания с RPLIDAR, строит карту занятости и сохраняет её. Пользователь может запросить: «Покажи карту», и AI визуализирует её через matplotlib.
Сценарий 2: TFmini — управление сервоприводом по расстоянию
Задача
Робот-манипулятор с TFmini на конце должен останавливаться при приближении объекта ближе 20 см.
Шаг 1: Подключение через Hardware Bridge
TFmini подключен к Arduino через UART, Arduino — к ПК по USB (COM4). Bridge запущен с портом COM4.
Шаг 2: Описание задачи
«Читай данные с TFmini через COM4, скорость 115200. Если расстояние меньше 20 см, отправь команду на Arduino: 'STOP'. Если больше — 'GO'.»
Шаг 3: Генерация кода
AI пишет Python-скрипт, который через execute_python обращается к bridge:
import time
# Функция для отправки команды на bridge
def send_to_bridge(command):
# В реальности AI использует industrial_command, но для примера:
# здесь подразумевается вызов инструмента
pass
def read_tfmini():
# Чтение данных с TFmini через bridge
result = send_to_bridge({
'protocol': 'serial://',
'command': 'read',
'params': {'port': 'COM4', 'baud': 115200, 'bytes': 9}
})
# Парсинг протокола TFmini: 9 байт, 2-3 — расстояние в см
if result['data'] and len(result['data']) >= 9:
distance = result['data'][2] + (result['data'][3] << 8)
return distance
return None
def main():
while True:
dist = read_tfmini()
if dist is not None:
print(f'Расстояние: {dist} см')
if dist < 20:
send_to_bridge({
'protocol': 'serial://',
'command': 'write',
'params': {'port': 'COM4', 'baud': 115200, 'data': 'STOP\n'}
})
else:
send_to_bridge({
'protocol': 'serial://',
'command': 'write',
'params': {'port': 'COM4', 'baud': 115200, 'data': 'GO\n'}
})
time.sleep(0.1)
# ВАЖНО: execute_python имеет таймаут 30 секунд, поэтому в реальности
# AI использует циклический вызов инструментов. Этот код — иллюстрация логики.
Результат
Робот мгновенно реагирует на препятствия, не требуя программирования микроконтроллера. AI управляет логикой на высоком уровне.
Почему это выгодно?
- Ноль ручного кода: AI пишет интеграцию под ваш конкретный сенсор и задачу.
- Универсальность: Не нужно ждать поддержки нового устройства — подключайте любой LiDAR через execute_python.
- Мгновенная адаптация: Изменили задачу? Просто опишите новую — AI перепишет код.
- Безопасность: Код выполняется в sandbox-окружении с ограниченными правами.
Заключение
Интеграция LiDAR с AI-агентом ASI Biont превращает процесс разработки робототехнических систем из трудоемкого программирования в диалог на естественном языке. Вы фокусируетесь на логике, а AI берет на себя подключение, парсинг данных и управление оборудованием. Попробуйте сами на asibiont.com.
Комментарии