Программирование робота VEX AI

В этой статье будет рассмотрен пример проекта, в котором отображается информационная панель, сообщающая о состоянии связи между роботами с помощью VEXlink, а также о состоянии Jetson. Проект ai_demo размещен на нашем Github. Этот демонстрационный проект собирает данные с процессора Jetson через последовательное соединение USB. Как только данные получены, они отображаются на экране V5 Brain, а также передаются партнерскому роботу V5, подключенному через VEXlink.

ПримечаниеДля этого проекта требуется последняя версия расширения VS Code Extension для V5. Загрузите расширение VS Code для V5 здесь.


NVIDIA Jetson Nano для VEX V5 Brain Communications

Процессор Jetson содержит приложение, которое собирает следующие данные из программного обеспечения VEX AI:

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

Данные о местоположении робота:

  • Местоположение робота по X,Y в метрах от центра поля.
  • Азимут (курс), высота (тангаж), вращение (крен) робота — все в радианах.

Данные обнаружения объектов (три типа):

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

Обнаружение изображения (тип первый):
  • Эти данные представляют собой объект, обнаруженный камерой VEX AI Intel.
  • Эти данные описывают объект со ссылкой на изображение с камеры.
  • Значения X, Y, ширины и высоты указаны в пикселях. Значения пикселей относятся к верхнему левому углу изображения и поля обнаружения объектов. Разрешение изображения 640x480.

 

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

Обнаружение карты (тип два):

  • Эти данные представляют собой местоположение объекта на поле в той же системе координат, что и GPS-датчик, и сообщается в метрах.
  • Каждый объект также содержит местоположение объекта относительно центра поля. Значения X и Y указаны в метрах от центра поля по соответствующей оси. Значение Z — это метры от тайлов поля (высота).

Объект обнаружения (тип третий):

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

  • При этом инкапсулируется вся информация об обнаруженных объектах.
  • Каждый объект содержит значение, которое представляет классификацию обнаруженного объекта. (Идентификатор класса: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • Каждый объект также содержит вероятность, которая отражает уверенность ИИ VEX в обнаружении. Это после фильтра в model.py, который удаляет обнаружения с низкой вероятностью.
  • Кроме того, камера VEX AI Intel Camera сообщает глубину объекта в метрах.
  • Обнаружение изображения и обнаружение карты прикреплены к каждому объекту и представляют координаты объекта на изображении, а также в реальном мире.

Разбивка программы ai_demo:

Main.cpp

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

Стандарт для проектов VEX включает:

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

Объявите экземпляр класса Jetson. Этот класс используется для отправки запросов на данные в Jetson, а также для получения данных через последовательное соединение USB.

#define MANAGER_ROBOT 1

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

Объявите экземпляр класса robot_link. Этот объект будет использоваться для подключения и передачи данных между этим роботом и роботом-партнером. Этот же проект можно загрузить на двух отдельных роботов. Одному роботу понадобится строка:

//#определить MANAGER_ROBOT 1

Прежде чем загрузить код во второго робота, вам нужно будет закомментировать эту строку:

Класс robot_link устанавливает VEXlink робота и управляет передачей и получением данных между двумя роботами. В этой статье мы не будем подробно останавливаться на том, как работает этот класс. Было бы неплохо сначала понять, как работает VEXlink. Более подробную информацию об использовании API V5 VEXlink в этом документе. описываются новые библиотеки и способы их эффективного использования для взаимодействия роботов.

  • Обработчики событий соревнований

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

    Одно из самых больших различий между VAIC и VRC заключается в отсутствии периода контроля водителя. Вместо этого есть два автономных периода: период изоляции и период взаимодействия. В этом примере для каждого автономного периода предусмотрены отдельные процедуры. Поскольку API VEX не поддерживает два разных обратных вызова, в программе должен быть флаг, определяющий, какая процедура должна быть выполнена. В этом примере программы «firstAutoFlag» используется для вызова функции изоляции при первом включении автономного режима и функции взаимодействия при втором включении автономного режима. Следует отметить, что если по какой-то причине совпадение необходимо сбросить, демонстрационную программу необходимо будет перезапустить, чтобы можно было сбросить первый AutoFlag.

  • Основной()

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

    Это основная задача данного проекта. Он начинается с вызова vexcodeInit() для правильной настройки среды VEXcode. Далее объявляется локальный объект AI_RECORD для хранения данных, которые мы получаем от Jetson. Также настроена отдельная задача для обновления экрана самыми актуальными данными. Код этой задачи содержится в файле Dashboard.cpp. Автономный обратный вызов также регистрируется для обработки инициирования автономных периодов.

    Основной цикл while() начинается с копирования последних данных из объекта jetson_comms в наш локальный объект AI_RECORD. Затем он передает информацию о местоположении робота объекту ссылки, чтобы ее можно было передать нашему роботу-партнеру. После завершения обработки данных он запрашивает дополнительные данные у Jetson и переходит в режим ожидания 66 миллисекунд. Частота опроса этих данных составляет 15 Гц. Нет смысла проводить опрос быстрее, поскольку данные системы искусственного интеллекта обновляются с частотой около 15 Гц.

    Примечание: данные карты Jetson необходимо запрашивать только для одной задачи.

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

Last Updated: