[SLOT_n]
mode = rplidarS1Программный модуль лидара RPLIDAR S1: измеряет расстояние до ближайшего объекта в заданном секторе углов, дальность до 40 м.
Совместимость
Принцип работы
Лидар непрерывно сканирует окружность на 360°. Модуль отбирает точки, попадающие
в сектор между angleMinVal и angleMaxVal и в диапазон дистанций между
distMinVal и distMaxVal, после чего рапортует ближайшую из них: расстояние
(distance) и её угол (angle).
Нулевой угол сдвигается опцией angleOffset — так сектор совмещается с реальной установкой лидара. Флаг distanceReport отключает рапорт угла.
При заданном distThreshold модуль дополнительно работает как дискретный датчик:
рапортует threshold со значением 1, когда ближайший объект ближе порога.
Гистерезис thresholdHysteresis подавляет дребезг у порога.
Ошибки связи с лидаром рапортуются событием error текстовой строкой.
Топики
База топика события:
<deviceName>/lidar_<slot>— напримерmoduleBox/lidar_0
База топика действия:
<deviceName>/lidar_<slot>— напримерmoduleBox/lidar_0
Полный топик — база плюс направление и имя: moduleBox/lidar_0/event/distance.
Опции
Доступные опции:
- distMinVal — число(int), минимальная дистанция в мм - меньшее игнорируется. Диапазон 0–40000. По умолчанию 0.
- distMaxVal — число(int), максимальная дистанция в мм - большее игнорируется. Диапазон 0–40000. По умолчанию 40000.
- angleMinVal — число(int), минимальный угол сектора в градусах. Диапазон 0–360. По умолчанию 0.
- angleMaxVal — число(int), максимальный угол сектора в градусах. Диапазон 0–360. По умолчанию 360.
- angleOffset — число(int), смещение нулевого угла в градусах. Диапазон 0–360. По умолчанию 0.
- distThreshold — число(int), порог дистанции в мм для бинарного режима, больше 0 включает режим. Диапазон 0–40000. По умолчанию 0.
- thresholdInverse — флаг, инверсия порогового выхода.
- thresholdHysteresis — число(int), гистерезис порога в мм - против дребезга у порога. Диапазон 0–10000. По умолчанию 0.
- filterK — число(float), коэффициент сглаживающего фильтра (скользящее среднее), от 0 до 1. Значение 1 отключает фильтр. По умолчанию 1.
- distanceReport — флаг, флаг - рапортовать только дистанцию без угла.
- deadBand — число(int), мертвая зона - мин изменение дистанции в мм для рапорта. Диапазон 0–4096. По умолчанию 0.
- debounceGap — число(int), антидребезг рапортов в мс. Диапазон 0–60000. По умолчанию 0.
- disableOnStart — флаг, стартовать в выключенном состоянии и ждать
action/enableсо значением1. По умолчанию модуль активен сразу.
События
| Топик | Payload | Описание |
|---|---|---|
lidar_<slot>/event/distance | целое, | Расстояние до ближайшего объекта в мм |
lidar_<slot>/event/angle | целое, | Угол ближайшего объекта в градусах |
lidar_<slot>/event/threshold | 0 / 1 | Состояние порога |
lidar_<slot>/event/error | строка | Текст ошибки подключения к лидару |
lidar_<slot>/event/enable | 0 / 1 | Активен 1 или спит 0 |
Пример: топик moduleBox/lidar_0/event/distance, payload 1250.
Команды
| Топик | Payload | Описание |
|---|---|---|
lidar_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) модуль |
Примеры
[SLOT_2]
mode = rplidarS1
options = angleMinVal:150, angleMaxVal:210, distThreshold:1500, thresholdHysteresis:100
;объект ближе полутора метров в секторе перед устройством включает подсветку
crosslink = lidar_2/event/threshold:@->led_0/action/enable:@Сектор шириной 60° перед устройством, порог срабатывания 1500 мм.
[SLOT_3]
mode = rplidarS1
options = distMaxVal:6000, distanceReport, deadBand:50, filterK:0.2
;дистанция до ближайшего объекта уходит в масштабатор
crosslink = lidar_3/event/distance:@->scaler_6/action/pushVal:@Подробнее — внутренние связи (crossLink).