[SLOT_n]
mode = benewakeTOFПрограммный модуль лазерного дальномера Benewake TOF. Рапортует расстояние до объекта в миллиметрах, дальность до 12 м.
Совместимость
Принцип работы
Датчик опрашивается непрерывно; модуль рапортует расстояние, когда оно изменилось больше, чем на deadBand.
Режим работы задаётся опцией threshold:
0— аналоговый режим: рапортуется само расстояние (distance) и его доля от диапазона измерений (ratio);- больше нуля — дискретный режим: рапортуется
thresholdсо значением1, когда объект ближе порога, и0, когда дальше.
Диапазон измерений ограничивается опциями minVal и maxVal, дребезг у порога подавляется опциями debounceGap и cooldownTime, шум — фильтром filterK.
Топики
База топика события:
<deviceName>/distanceSens_<slot>— напримерmoduleBox/distanceSens_0
База топика действия:
<deviceName>/distanceSens_<slot>— напримерmoduleBox/distanceSens_0
Полный топик — база плюс направление и имя: moduleBox/distanceSens_0/event/distance.
Опции
Доступные опции:
- disableOnStart — флаг, стартовать в выключенном состоянии и ждать
action/enableсо значением1. По умолчанию модуль активен сразу. - deadBand — число(int), мертвая зона - минимальное изменение значения для рапорта. Диапазон 0–4096. По умолчанию 0.
- maxVal — число(int), максимальное значение диапазона измерений. Диапазон 1–65536. По умолчанию 65536.
- minVal — число(int), минимальное значение диапазона измерений. Диапазон 0–65536. По умолчанию 0.
- debounceGap — число(int), антидребезг порога в мс - новое состояние держится это время до рапорта. Диапазон 1–4096. По умолчанию 10.
- threshold — число(int), порог бинарного выхода вкл/выкл, при 0 - аналоговый датчик. Диапазон 0–4096. По умолчанию 0.
- cooldownTime — число(int), время cooldown после срабатывания порога мс. Диапазон 0–60000. По умолчанию 0.
- filterK — число(float), коэффициент сглаживающего фильтра (скользящее среднее), от 0 до 1. Значение 1 отключает фильтр. По умолчанию 1.
События
| Топик | Payload | Описание |
|---|---|---|
distanceSens_<slot>/event/distance | целое, | Текущее расстояние в мм |
distanceSens_<slot>/event/ratio | 0.0–1.0 | Текущее расстояние в формате float (от 0.0 до 1.0) |
distanceSens_<slot>/event/threshold | 0 / 1 | Состояние порогового датчика 0/1 |
distanceSens_<slot>/event/enable | 0 / 1 | Состояние модуля - активен (1) или спит (0) |
Пример: топик moduleBox/distanceSens_0/event/distance, payload 156.
В аналоговом режиме (threshold = 0) рапортуются distance и ratio, в дискретном — threshold.
Команды
| Топик | Payload | Описание |
|---|---|---|
distanceSens_<slot>/action/enable | 0 / 1 | Включить (1) или выключить (0) модуль |
Примеры
[SLOT_3]
mode = benewakeTOF
options = threshold:1500, filterK:0.05
;при срабатывании датчика проиграть трек с индексом ноль
crosslink = distanceSens_3/event/threshold:1->player_0/action/play:0Датчик настроен как дискретный выход с порогом срабатывания 1500 и высокой степенью сглаживания сигнала.
[SLOT_4]
mode = benewakeTOF
options = minVal:200, maxVal:6000, deadBand:20
;расстояние уходит в масштабатор, тот - в яркость подсветки
crosslink = distanceSens_4/event/distance:@->scaler_6/action/pushVal:@Аналоговый режим: рапортуется расстояние в рабочем диапазоне, изменения меньше 20 единиц игнорируются.
Подробнее — внутренние связи (crossLink).