Модуль управления

Control

Техническое описание

модуль1
Рис. 1. Модуль Control

Таблица 1. Таблица портов модуля.
таблица1

Таблица 2. Таблица параметров модуля.
таблица2

Общее описание работы модуля

Модуль Control осуществляет:

  • приём байта управления от модуля интерфейса и выполнение команды: движение платформы, управление фарами и звуком;
  • при задании из вне (по кнопке управления) переключение в автономный режим и движение вперед, приём в этом режиме данных от датчика освещенности и автоматическое управление (вкл/откл) фар по данным с этого датчика;
  • контроль движения «вперед» в любом режиме путём постоянного опроса датчика расстояния, изменение движения вперед в автономном режимеработы.
  • Общее описание алгоритма работы

    После старта происходит проверка режима работы.

    Если установлен штатный режим, то опрашивается интерфейсный модуль. В случае получения команды она выполняется. В целях безопасности прежде чем выполнять команду движения вперед проверяется наличие помех для движения вперед (опрос модуля сонара), если преград нет – команда выполняется.

    Если установлен автономный режим, то опрашивается датчик освещенности и по его показаниям принимается решение о вкл/откл фар. Затем опрашивается модуль сонара. Если преград нет, то выполняется движение вперёд, иначе выполняется алгоритм поворота, который пытается развернуть платформу. Если платформа долгое время движется вперед, то в замкнутом пространстве возможна ситуация с ее застреванием, в этом случае выполняется движение назад с последующим запуском алгоритма поворота.

    Алгоритм поворота устроен таким образом, чтобы случайным образом произвести поворот в какую-либо сторону. Затем опрашивается модуль сонара. Если есть препятствие, то происходит еще 2 поворота в ту же сторону, затем – выход из алгоритма. Если от препятствия все равно не удалось вывернуть при следующем выполнении этого алгоритма может сработать другая ветвь, которая может привести к более успешному результату. Случайный поворот обеспечивается путем следующим механизмом: к некоему числу прибавляется ограниченное значение текущего времени и результат ограничивается до требуемой разрядности (разрядности используемого числа), полученное число является исходным для следующей итерации получения числа, на базе четности/нечетности, а так же вхождению в подмножества [0…max/2] и [max/2…max] этого числа принимается решение о направлении и длительности поворота.

    Ввиду того, что весь код реализуется на Си и программа является последовательной алгоритм модуля учитывает последовательность запуска модулей и получения данных.

    Алгоритм работы схемы управления:

    алгоритм_схемы управления

    Алгоритм поворота:
    алгоритм_поворота