Алгоритм калибровки движущихся лазеров

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