Кодування робота 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 AI та їхню взаємодію, висвітлюючи ключові функції та функціональні можливості в рамках робототехнічної платформи V5.

  • Це інкапсулює всю інформацію про виявлені об’єкти.
  • Кожен об’єкт містить значення, яке представляє класифікацію виявленого об’єкта. (Ідентифікатор класу: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • Кожен об’єкт також містить ймовірність, яка представляє впевненість VEX AI у виявленні. Це після фільтра в model.py, який видаляє виявлення з низькою ймовірністю.
  • Крім того, камера VEX AI Intel повідомляє про глибину об’єкта в метрах.
  • Виявлення зображення та виявлення карти додаються до кожного об’єкта для відображення координат об’єкта на зображенні, а також у реальному світі.

Розбивка програми 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. Цей об’єкт використовуватиметься для з’єднання та передачі даних між цим роботом і роботом-партнером. Цей самий проект можна завантажити на двох окремих роботів. Для одного робота знадобиться рядок:

//#define MANAGER_ROBOT 1

Перш ніж завантажити код на другого робота, вам потрібно буде закоментувати цей рядок:

Клас robot_link встановлює VEXlink робота та керує передачею та отриманням даних між двома роботами. У цій статті ми не будемо вдаватися в подробиці того, як працює цей клас. Було б гарною ідеєю спочатку зрозуміти, як працює VEXlink. Для отримання більш детальної інформації про використання V5 VEXlink API, цей документ пояснює нові бібліотеки та те, як їх ефективно використовувати для спілкування між роботами.

  • Організатори змагань

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

    Однією з найбільших відмінностей між VAIC і VRC є те, що немає періоду контролю водія. Натомість є два автономних періоди, період ізоляції та період взаємодії. У цьому прикладі існують окремі підпрограми для кожного автономного періоду. Оскільки VEX API не підтримує два різні зворотні виклики, у програмі має бути позначка, щоб визначити, яку процедуру потрібно виконати. У цьому прикладі програми «firstAutoFlag» використовується для виклику функції ізоляції, коли автономний увімкнено вперше, і функції взаємодії, коли автономний увімкнено вдруге. Слід зазначити, що якщо з якоїсь причини збіг потрібно скинути, демонстраційну програму потрібно буде перезапустити, щоб можна було скинути firstAutoFlag.

  • Головна()

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

    Це головне завдання для цього проекту. Він починається з виклику vexcodeInit(), щоб правильно налаштувати середовище VEXcode. Далі оголошується локальний об’єкт AI_RECORD для зберігання даних, які ми отримуємо від Jetson. Також встановлюється окреме завдання для оновлення екрана з найновішими даними. Код для цього завдання міститься у файлі dashboard.cpp. Автономний зворотний виклик також зареєстрований для обробки, коли ініціюються автономні періоди.

    Основний цикл while() починається з копіювання останніх даних з об’єкта jetson_comms у наш локальний об’єкт AI_RECORD. Потім він передає інформацію про місцезнаходження робота об’єкту посилання, щоб її можна було передати нашому роботу-партнеру. Після завершення обробки даних він запитує додаткові дані від Jetson і перебуває в режимі сну на 66 мілісекунд. Частота опитування для цих даних становить 15 Гц. Немає причин проводити опитування швидше, оскільки дані системи AI оновлюються приблизно з частотою 15 Гц.

    Примітка: дані карти Джетсона потрібно запитувати лише одним завданням.

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

Last Updated: