Kódování robota VEX AI

Tento článek se bude zabývat příkladem projektu, který zobrazuje řídicí panel oznamující stav komunikace mezi robotem a robotem pomocí VEXlink a také stav Jetson. Projekt ai_demo je hostován na našem Github. Tento demo projekt shromažďuje data z procesoru Jetson přes sériové připojení USB. Jakmile jsou data přijata, zobrazí se na obrazovce V5 Brain a také se přenesou do partnerského robota V5, který je připojen přes VEXlink.

Poznámka: Tento projekt vyžaduje nejnovější verzi rozšíření VS Code Extension pro V5. Stáhněte si rozšíření VS Code Extension pro V5 zde.


Komunikace mozku NVIDIA Jetson Nano to VEX V5

Procesor Jetson obsahuje aplikaci, která shromažďuje následující data ze softwaru VEX AI:

OverUnder.png

Údaje o poloze robota:

  • Umístění robota X,Y v metrech od středu pole.
  • Azimut robota (směr), nadmořská výška (naklonění), rotace (rolování) vše v radiánech.

Data detekce objektů (tři typy):

Pixel (0,0).png

Detekce obrazu (typ jedna):
  • Tato data představují objekt detekovaný kamerou VEX AI Intel.
  • Tato data popisují objekt s odkazem na obraz kamery.
  • Hodnoty X, Y, šířka a výška jsou v jednotkách pixelů. Hodnoty pixelů se vztahují k levému hornímu rohu pole detekce obrazu a objektu. Rozlišení obrázku je 640x480.

 

AI XY (1).png

Detekce mapy (typ dva):

  • Tato data představují polohu objektu na poli ve stejném souřadnicovém systému jako senzor GPS, uváděnou v metrech.
  • Každý objekt také obsahuje umístění objektu vzhledem ke středu pole. Hodnoty pro X a Y jsou v jednotkách metrů od středu pole v jejich příslušné ose. Hodnota Z jsou metry od polí (výška).

Objekt detekce (typ tři):

Struktury.PNG

  • Tím jsou zapouzdřeny všechny informace o detekovaných objektech.
  • Každý objekt obsahuje hodnotu, která představuje klasifikaci detekovaného objektu. (ID třídy: 0 = GreenTriBall, 1 = RedTriBall, 2 = BlueTriBall)
  • Každý objekt také obsahuje pravděpodobnost, která představuje důvěru VEX AI v detekci. Toto je po filtru v model.py, který odstraňuje detekce s nízkou pravděpodobností.
  • Hloubka objektu je navíc hlášena v metrech z VEX AI Intel Camera.
  • Detekce obrazu a detekce mapy jsou připojeny ke každému objektu, aby reprezentovaly souřadnice objektu na snímku i v reálném světě.

Rozpis programu ai_demo:

Main.cpp

image5.png

Standard zahrnuje pro projekty VEX:

image7.png

Deklarujte instanci třídy Jetson. Tato třída se používá k odesílání požadavků na data do Jetson a také k přijímání dat přes sériové připojení USB.

#define MANAGER_ROBOT 1

Define_manager_robot_1.png

Deklarujte instanci třídy robot_link. Tento objekt bude použit k propojení a přenosu dat mezi tímto robotem a partnerským robotem. Tento stejný projekt lze stáhnout do dvou samostatných robotů. Jeden robot bude potřebovat linku:

//#define MANAGER_ROBOT 1

Než načtete kód do druhého robota, budete muset tento řádek okomentovat:

Třída robot_link nastavuje VEXlink robota a zajišťuje přenos a příjem dat mezi dvěma roboty. V tomto článku se nebudeme podrobně zabývat tím, jak tato třída funguje. Bylo by dobré nejprve pochopit, jak VEXlink funguje. Pro podrobnější informace o používání V5 VEXlink API tento dokument vysvětluje nové knihovny a jak je efektivně používat pro komunikaci mezi roboty.

  • Pořadatelé soutěžních událostí

    firstAutoFlag.png

    Jedním z největších rozdílů mezi VAIC a VRC je, že neexistuje žádná doba kontroly řidiče. Místo toho existují dvě autonomní období, období izolace a období interakce. V tomto příkladu existují samostatné rutiny pro každé autonomní období. Protože rozhraní VEX API nepodporuje dvě různá zpětná volání, musí být v programu příznak, který určí, která rutina se má provést. V tomto příkladu programu se „firstAutoFlag“ používá k vyvolání funkce Isolation, když je poprvé aktivována autonomní funkce, a funkce interakce, když je autonomní aktivována podruhé. Jedna věc, kterou je třeba poznamenat, je, že pokud z nějakého důvodu musí být zápas resetován, bude nutné restartovat demo program, aby bylo možné resetovat první AutoFlag.

  • Hlavní()

    Hlavní (1).PNG

    To je hlavní úkol tohoto projektu. Začíná voláním vexcodeInit(), aby se správně nastavilo prostředí VEXcode. Dále je deklarován místní objekt AI_RECORD pro ukládání dat, která obdržíme od Jetsonu. Je také nastavena samostatná úloha pro aktualizaci obrazovky o nejaktuálnější data. Kód pro tuto úlohu je obsažen v souboru dashboard.cpp. Autonomní zpětné volání je také registrováno pro zpracování při zahájení autonomních období.

    Hlavní smyčka while() začíná zkopírováním nejnovějších dat z objektu jetson_comms do našeho místního objektu AI_RECORD. Poté předá informace o poloze robota objektu spojení, aby je bylo možné přenést do našeho partnerského robota. Jakmile je zpracování dat dokončeno, vyžádá si další data z Jetson a uspí po dobu 66 milisekund. Rychlost dotazování pro tato data je 15 Hz. Není žádný důvod k rychlejšímu dotazování, protože data systému AI se aktualizují přibližně 15 Hz.

    Poznámka: Mapová data Jetson je třeba vyžádat pouze jednou úlohou.

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

Last Updated: