[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/threshold0 / 1Состояние порога
lidar_<slot>/event/errorстрокаТекст ошибки подключения к лидару
lidar_<slot>/event/enable0 / 1Активен 1 или спит 0

Пример: топик moduleBox/lidar_0/event/distance, payload 1250.

Команды

ТопикPayloadОписание
lidar_<slot>/action/enable0 / 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).