Алгоритм калибровки движущихся лазеров
LSСписок значимых переменных
- MaxKT - максимально допустимый показатель КТ
- MaxdPS - максимально допустимая паразитная прибавка
- МinLDiff - минимальная яркость лазера
- MMSDiff - Максимально допустимая разница светлого состояния
- Sensetiv - Чувствительность
- Parazitiv - Коэффициент влияния паразитной засветки
- XDiff - Защита от самопересечений
- Для каждой из 24 возможных пластин-сенсоров отводятся поля под:
- КТ (внешняя засветка + свет кнопок + свет синей светодиодной ленты)
- ПС (паразитная прибавка от статичных лазеров)
- Минимум света
- Максимум света
- Порог срабатывания
- Активность (флаг участия сенсора в калибровке)
- Подключение (флаг программного исключения сенсоров из процесса калибровки и игры)
- Шаг ошибки
- Пин ошибки
MOVСписок значимых переменных
- Коллекция пластин (последовательность и расположение пластин-сенсоров относительно движ. лазера)
- Флаг результата калибровки
LSПроверка линковки
Если сенсор не сопряжен с движущимся лазером, то калибровка не запустится, а на сервер придет сообщение “Sensor is not linked”
MOVПроверка линковки
Если движ. лазер не сопряжен ни с каким сенсором, то калибровка не запустится, а на сервер придет сообщение “Laser is not linked” ##
##
##
MOV Подготовка
- Обнуление коллекции пластин
- Выключение лазера
- Выключение автоматического движения луча
- Установка максимальной скорости движения
- Перемещение в левый угол ##
##
##
##
LSСброс значений
- Обнуление шага и пина ошибки
- Для каждого сенсора:
- Установка минимума света >4095
- Обнуление КТ, ПС, Максимума света и Порога
- Сброс активности сенсора
- Ожидание 300мс ##
##
##
##
LSЗамер КТ
- На протяжении 50мс замер максимального значения КТ для каждой из подключенных пластин. ##
##
##
##
LSПроверка КТ
Если на какой-то пластине значение КТ превышает MaxKT, то:
- установка 1 шага ошибки
- установка номера пина первого из непрошедших проверку сенсоров
- завершение калибровки ##
##
##
##
LSПроверка паразитной прибавки
- Ожидание 2300мс
- На протяжении 50мс замер максимального значения ПС для каждой из подключенных пластин:
ПС = Текущее значение - КТ- Если ПС больше, чем MaxdPS, то:
- установка 2 шага ошибки
- установка номера пина, первого из непрошедших проверку сенсоров
- завершение калибровки ##
##
##
##
MOVВключение лазера
- Включение лазера
- Установка скорости движения 10
- Начало автоматического движения луча ##
##
##
##
LSЗамер света
- Ожидание 2300мс
- Следующие 1300мс:
- замер значений на всех пластинах
- поиск самой яркой пластины
- определение Минимума света на этой пластине за всё время замера
- определение Максимума света на этой пластине за все время замера
- Деактивация пластин, по которым не проезжал лазер ##
##
##
##
LSПроверка попадания (яркости)
Если на каком-то из активных сенсоров разница между минимальным светом и КТ+ПС больше, чем MinLDiff, то:
- установка 3 шага ошибки
- установка номера пина, первого из не прошедших проверку сенсоров
- завершение калибровки ##
##
##
##
LSФиксация провалов
Если на каком-то из активных сенсоров разница между Максимальным и Минимальным светом больше, чем MMSDiff, то:
- установка 4 шага ошибки
- установка номера пина, первого из не прошедших проверку сенсоров
- завершение калибровки ##
##
##
##
LSВычисление порога срабатывания
Для всех активных сенсоров:
Порог = (1 - Sensetiv%) * ((Parazitiv% * ПС + КТ) + Sensetiv% * Минимум света)
##
##
##
##
LSПроверка возможности самопересечения
Выявление пластин, на которых может быть ложное срабатывание при убирании паразитного света (мигании светодиодки, погасании статичных лазеров, или кнопок).
Если на каком-то из активных сенсоров Порог + XDiff > Минимума света - ПС, то
- установка 5 шага ошибки
- установка номера пина, первого из не прошедших проверку сенсоров
- завершение калибровки ##
##
##
##
LSПроверка наличия скалибровавшихся пластин
Если все пластины в процессе калибровки стали неактивны (или не были подключены), то:
- установка 6 шага ошибки
- завершение калибровки ##
##
##
##
MOVЗавершение калибровки
- Выключение лазера
- Выключение автоматического движения луча
- Возврат сохранённой скорости движения
- Отправка мотора в левый угол
- Отправка на сервер последовательности и координат пластин
Changelog
12.06.2018 epicstrike init
Posts
subscribe via RSS