Оглавление:

Событийно-ориентированное программирование в FTC: 4 шага
Событийно-ориентированное программирование в FTC: 4 шага

Видео: Событийно-ориентированное программирование в FTC: 4 шага

Видео: Событийно-ориентированное программирование в FTC: 4 шага
Видео: Python. Пользовательские интерфейсы. Событийно-ориентированное программирование 2024, Ноябрь
Anonim
Событийно-ориентированное программирование в FTC
Событийно-ориентированное программирование в FTC

В этом году наша команда проделала большую работу по разработке программного обеспечения для нашего робота, основанного на событиях. Эти программы позволили команде точно разработать автономные программы и даже повторяемые дистанционные операции. Поскольку работа с программным обеспечением является сложной, мы решили поделиться знаниями, которые мы получили при разработке управляемого событиями кода для роботов FTC.

Шаг 1. Что такое программирование, управляемое событиями?

В общих чертах, согласно Techopedia, программирование, управляемое событиями, - это разработка программ, которые реагируют на ввод данных пользователем. В этом смысле многие программы считаются управляемыми событиями, в том числе командная программа удаленного управления, которая полагается на входные данные от управляемого человеком контроллера для выполнения каких-либо действий. Однако с точки зрения работы, которую выполняет наша команда, программирование, управляемое событиями, - это создание программного обеспечения из различных входных данных; Другими словами, мы документируем события на основе входных данных контроллеров и датчиков, затем мы можем поставить эти события в очередь и использовать файл для повторного запуска записанного события.

Такой способ разработки программ для нашего робота имеет ряд преимуществ:

  • Это позволяет нам создавать точные автономные программы. Поскольку мы создаем программное обеспечение в режиме реального времени во время прохождения события, собранные и используемые значения датчиков будут очень точными, поскольку они поступают непосредственно из исходного события.
  • Это позволяет нам быстро создавать автономные программы. Создавать автономные программы так же просто, как записывать серию событий и при необходимости корректировать событие.
  • Это позволяет нам создавать автоматические процессы для телеоперации. Для повторяющихся действий в телеоперации программирование, управляемое событиями, позволяет нам записывать эти действия и назначать событие кнопке во время периодов матчей, контролируемых водителем. На эти автоматизированные события могут влиять датчики, чтобы обеспечить их точное выполнение.

Шаг 2: логическая схема программирования, управляемого событиями

Логический поток программирования, управляемого событиями
Логический поток программирования, управляемого событиями

Следующее изображает логический поток программы, управляемой событиями: красный цвет означает создание события, а синий цвет - вызов события. Для создания события последовательность входных данных принимается через действия робота и записывается как события; эти события записываются в файл. Для вызова события этот файл считывается, и входные данные отправляются в обработчик событий, чтобы преобразовать код файла в действие робота.

Шаг 3. Создатель мероприятия

Создатель событий
Создатель событий
Создатель событий
Создатель событий

Создатели событий используются для документирования действий или «событий» на основе различных датчиков и кнопок. Когда робот выполняет действия в поле, класс создателя событий создает события для каждого из этих действий параллельно, ссылаясь на событие, классифицированное в классе событий. После создания событие помещается в очередь событий в классе событий: первое событие занимает первое место, затем второе событие занимает первое место и выталкивает все события под ним, и это продолжается до тех пор, пока программа не остановится. Когда программа останавливается, события передаются в файл в удобном для чтения формате, например в файл JSON. Этот файл можно использовать для улучшения автономных процедур.

В приведенном выше примере кода настраиваются параметры для события, которым в данном случае является поворот с использованием датчика IMU. Затем мы помещаем событие в очередь событий. Наконец, мы обрезаем событие, которое по сути сбрасывает событие, чтобы мы могли использовать его для постановки в очередь будущих событий.

Шаг 4: обработчик событий

Обработчик событий
Обработчик событий
Обработчик событий
Обработчик событий

Классы событий берут удобочитаемый файл, созданный в классе создателя событий, и делают то, что каждое событие в очереди указывает ему делать, вызывая методы, описанные в классе обработчика событий. Затем класс обработчика событий сообщает роботу, какое событие нужно воспроизвести. Будь то простое событие «движения вперед» или сложное событие, полное расстояний, поворотов и ударов, процессор воспроизведет любое заданное ему событие. Этот процесс очень полезен во время автономной работы, так как команда может записывать датчики и действия телеоператора до совпадения, а затем просто воспроизводить события в автономном режиме. Этот процесс называется воспроизведением памяти. Это позволяет настраивать автономную программу на 100% с помощью одного файла. Как только создатель и обработчик событий установлены, команда может просто изменить автономные процедуры с помощью файла, доступного для чтения человеком.

Приведенный выше пример сначала начинается с проверки файла JSON на наличие события, а затем проверки этого события с помощью оператора case, чтобы узнать, что это за событие, в данном случае поворот с использованием датчика IMU. Как только он может сказать, что наступил черед с использованием события IMU, он затем обрабатывает событие, которое обычно включает запуск кода, из которого произошло событие, с использованием переменных из события, переданных для репликации события, которое было выполнено ранее.

Рекомендуемые: