Пользовательский код контроллера в VEXcode V5

Использование контроллера может облегчить управление и перемещение робота для выполнения задачи. Однако существуют ограничения на использование программы Drive, и в зависимости от конструкции вашего робота или поставленной задачи вам могут потребоваться разные элементы управления. Программирование контроллера позволяет оптимизировать контроллер, чтобы он лучше соответствовал вашему роботу и выполняемой задаче. Существует несколько способов кодирования контроллера в VEXcode V5. У каждого есть свои преимущества и ограничения, а некоторые методы лучше подходят для определенных ситуаций в зависимости от желаемого результата.

В этой статье вы познакомитесь с тремя различными вариантами индивидуального кодирования контроллера в VEXcode V5. Каждый метод будет описан с описанием его преимуществ, ограничений и примером использования, который поможет вам при выборе метода. Для целей этой статьи все показанные примеры кода были созданы для Clawbot. Однако те же концепции можно применить к многочисленным другим сборкам, найденным на builds.vex.com, а также к пользовательским сборкам.

Вариант 1: Назначение кнопок в конфигурации устройства

Этот вариант отлично подходит, если вы используете стандартную сборку, например Speedbot или Clawbot, и хотите быстро приступить к работе.

Эта опция позволяет назначать двигатели, трансмиссию или группы двигателей кнопкам контроллера в конфигурации устройства. Для получения дополнительной информации о назначении кнопок контроллеру в конфигурации устройства просмотрите эту статью.

Диаграмма, иллюстрирующая блоки V5 для программирования, демонстрирующая различные типы блоков и их связи в визуальном формате для облегчения понимания руководств по блочному кодированию.

Краткое описание варианта 1: назначение кнопок в конфигурации устройства

Преимущества

Ограничения

Пример ситуации

  • Быстрая настройка без необходимости кодирования
  • Самый простой метод
  • Легко регулируется
  • Можно назначать кнопкам отдельные двигатели, стандартную трансмиссию и группы двигателей.
  • Назначение кнопок ограничено количеством кнопок на контроллере.
  • Трансмиссия не может содержать более 4 двигателей и не может быть настроена индивидуально (поддерживается только стандартный привод, а не привод H, голономный или другой специальный привод).
  • Управление стандартной сборкой, такой как Speedbot, Clawbot, или простой модификацией этих стандартных сборок. Например, Speedbot с прикрепленным спереди воздухозаборником, управляемым моторной группой.
  • Быстрое управление тем, какие кнопки соответствуют различным поведениям робота, без особого программирования.

Вариант 2: использование бесконечного цикла

Если вы используете пользовательскую сборку вместо стандартной или хотите иметь больше возможностей настройки в своем контроллере, этот вариант подойдет. Использование цикла Forever — отличное введение в создание собственного кода для вашего контроллера.

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

Конкретный пример, показанный ниже, является одним из способов использования цикла Forever с роботом индивидуальной конструкции (например, роботом со специальной трансмиссией) для управления роботом и манипулирования когтем и рукой для взаимодействия с объектами.

Диаграмма, иллюстрирующая учебные пособия по блокам V5, демонстрирующая различные типы блоков и их соединения в понятной и организованной компоновке для лучшего понимания программирования робототехники VEX.

Загрузите файл проекта VEXcode V5 «Вариант 2» >

Пояснение к варианту 2 кода.

Часть кода

Объяснение

Схема, иллюстрирующая компоненты блока V5 и их функции в обучающем формате, демонстрирующая различные типы блоков и соединения для образовательных целей.

Для этого примера кода использовался Clawbot. Когда кнопки на контроллере используются для подъема и опускания рычага, как только кнопка будет отпущена, под действием силы тяжести рычаг упадет обратно вниз. Установка руки и захвата в положение «удержание» гарантирует, что и рука, и захват останутся на месте даже после того, как кнопки на контроллере будут отпущены.

Диаграмма, иллюстрирующая компоненты блоков V5 и их функциональные возможности, использованная в разделе «Учебники по блокам» Базы знаний VEX, демонстрирующая различные типы блоков и их соединения в образовательных целях. Схема, иллюстрирующая блоки V5 с маркированными компонентами и соединениями, используемая в учебных пособиях для понимания блочного программирования в робототехнике VEX.

Для этого примера кода использовался Clawbot. Когда кнопки на контроллере используются для подъема и опускания рычага, как только кнопка будет отпущена, под действием силы тяжести рычаг упадет обратно вниз. Установка руки и захвата в положение «удержание» гарантирует, что и рука, и захват останутся на месте даже после того, как кнопки на контроллере будут отпущены.

Цикл Forever используется для постоянной проверки того, какие кнопки нажимаются на контроллере.

Блоки [Установить скорость двигателя] используются для установки скорости двигателя в соответствии с текущим положением контроллера по осям 2 и 3. Это эквивалентно включению автомобиля в движение. Это не обязательно заставляет машину двигаться, а просто приводит ее в движение.

Каждая ось джойстика возвращает значение от -100 до +100 и возвращает нулевое значение при центрировании. Это означает, что оси джойстика при нажатии соответствуют от -100% до 100%. Чем дальше к 100 или -100 сдвинуты оси, тем быстрее будет вращаться двигатель.

Затем блок [Spin] используется для фактического перемещения двигателя. Это эквивалентно нажатию газа на автомобиле после того, как направление было задано. Это позволяет управлять каждым двигателем по одной из четырех осей контроллера.

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

Для этого примера кода использовался Clawbot. Когда кнопки на контроллере используются для подъема и опускания рычага, как только кнопка будет отпущена, под действием силы тяжести рычаг упадет обратно вниз. Установка руки и захвата в положение «удержание» гарантирует, что и рука, и захват останутся на месте даже после того, как кнопки на контроллере будут отпущены.

Блок [If then else if then else] используется для сопоставления определенного поведения с кнопками, нажимаемыми или отпускаемыми на контроллере. В этом разделе кода устанавливаются условия, если нажаты кнопки «Вверх» или «Вниз». Если да, то произойдет определенное поведение, например, поднятие и опускание руки. Существует также другая часть условия: если ни одна кнопка не нажата, рука прекращает движение.

Обратите внимание, что следующий раздел кода проекта Claw следует тому же объяснению.

Краткое описание варианта 2: использование бесконечного цикла

Преимущества

Ограничения

Пример ситуации

  • Возможна установка нестандартных сборок, особенно трансмиссий с более чем 4 двигателями.
  • Можно назначить несколько вариантов поведения одной кнопке.
  • Можно назначать поведение различным осям контроллера (в отличие от единственных вариантов «Левая аркада», «Правая аркада», «Разделенная аркада» и «Движение танка» в конфигурации устройства).
  • Требуются некоторые знания программирования (условия, циклы и знание кнопок/джойстиков на контроллере).
  • Возможно замедление выполнения проекта или задержка времени отклика кнопок. Поскольку все команды содержатся в одном цикле Forever, выполнение кода может выполняться медленно в зависимости от установленных условий и длины кода.
  • Использование контроллера с роботом, созданным по индивидуальному заказу, особенно с нестандартной трансмиссией.
  • Если вы хотите назначить несколько вариантов поведения одной кнопке. Например, при нажатии кнопки «Вверх» «Коготь» может раскрыться, двигаться вперед, а затем сомкнуться вокруг объекта.

Вариант 3: Использование событий

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

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

Иллюстрация блоков V5, используемых в учебных пособиях, демонстрирующая различные типы блоков и их соединения, а также демонстрирующая, как собирать и программировать робототехнику с помощью VEX V5.

Загрузите файл проекта VEXcode V5 «Вариант 3» >

Пояснение к варианту 3 кода.

Часть кода

Объяснение

Схема, иллюстрирующая различные блоки V5, используемые в учебных пособиях по робототехнике, демонстрирующая их функции и соединения в образовательных целях.

Для этого примера кода использовался Clawbot. Когда кнопки на контроллере используются для подъема и опускания рычага, как только кнопка будет отпущена, под действием силы тяжести рычаг упадет обратно вниз. Установка руки и захвата в положение «удержание» гарантирует, что и рука, и захват останутся на месте даже после того, как кнопки на контроллере будут отпущены.

Схема, иллюстрирующая блоки V5 в учебнике по робототехнике, демонстрирующая различные типы блоков и их соединения для задач программирования. Схема, иллюстрирующая блоки V5 с маркированными компонентами и соединениями, используемая в учебных пособиях для понимания блочного программирования в робототехнике VEX.

Для этого примера кода использовался Clawbot. Когда кнопки на контроллере используются для подъема и опускания рычага, как только кнопка будет отпущена, под действием силы тяжести рычаг упадет обратно вниз. Установка руки и захвата в положение «удержание» гарантирует, что и рука, и захват останутся на месте даже после того, как кнопки на контроллере будут отпущены.

{When controller axis} Блоки событий используются для запуска определенного поведения при изменении одной из четырех осей контроллера с помощью джойстиков.

Блоки [Установить скорость двигателя] используются для установки скорости двигателя в соответствии с текущим положением контроллера по осям A и D. Это эквивалентно включению автомобиля в движение. Это не обязательно заставляет машину двигаться, а просто приводит ее в движение.

Каждая ось джойстика возвращает значение от -100 до +100 и возвращает нулевое значение при центрировании. Это означает, что оси джойстика при нажатии соответствуют от -100% до 100%. Чем дальше к 100 или -100 сдвинуты оси, тем быстрее будет вращаться двигатель.

Затем блок [Spin] используется для фактического перемещения двигателя. Это эквивалентно нажатию газа на автомобиле после того, как направление было задано. Это позволяет управлять каждым двигателем по одной из четырех осей контроллера.

Диаграмма, иллюстрирующая блоки V5, используемые в учебных пособиях по программированию, демонстрирующая различные типы блоков и их функции в системе VEX Robotics.

Для этого примера кода использовался Clawbot. Когда кнопки на контроллере используются для подъема и опускания рычага, как только кнопка будет отпущена, под действием силы тяжести рычаг упадет обратно вниз. Установка руки и захвата в положение «удержание» гарантирует, что и рука, и захват останутся на месте даже после того, как кнопки на контроллере будут отпущены.

{When controller axis} Блоки событий используются для сопоставления определенного поведения с кнопками, нажимаемыми или отпускаемыми на контроллере. В этом разделе кода устанавливаются условия, если нажаты кнопки «Вверх» или «Вниз». Если да, то произойдет определенное поведение, например, поднятие, опускание или остановка руки.

Обратите внимание, что последний раздел кода проекта Claw следует тому же объяснению.

Краткое описание варианта 3: использование событий

Преимущества

Ограничения

Пример ситуации

  • Возможна установка нестандартных сборок, особенно трансмиссий с более чем 4 двигателями.
  • Можно назначить несколько вариантов поведения одной кнопке.
  • Можно назначать поведение различным осям контроллера (в отличие от единственных вариантов «Левая аркада», «Правая аркада», «Разделенная аркада» и «Движение танка» в конфигурации устройства).
  • Более быстрое выполнение кода и, следовательно, более быстрое реагирование кнопок (поскольку каждое условие вызывается отдельно, а не встроено в один стек кода)
  • Требует максимальных знаний в области кодирования параметров (условия, циклы, события и знание кнопок/джойстиков на контроллере).
  • Использование контроллера с роботом, созданным по индивидуальному заказу, особенно с нестандартной трансмиссией.
  • Если вы хотите назначить несколько вариантов поведения одной кнопке без задержек. Например, при нажатии кнопки «Вверх» «Коготь» может раскрыться, двигаться вперед, а затем сомкнуться вокруг объекта.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: