Ez a cikk egy példaprojektet mutat be, amely egy irányítópultot jelenít meg, amely a VEXlink segítségével a robotok és a robotok közötti kommunikáció állapotát jelenti, valamint a Jetson állapotát. Az ai_demo projekt a Githubünkön található. Ez a demóprojekt adatokat gyűjt a Jetson processzorról USB soros kapcsolaton keresztül. Az adatok vétele után megjelennek a V5 Brain képernyőjén, és továbbítják a VEXlinken keresztül csatlakoztatott V5-ös partner robotnak.
megjegyzés: Ehhez a projekthez a V5-höz készült VS Code Extension legújabb verziója szükséges. Töltse le a V5 VS Code kiterjesztését innen.
Az NVIDIA Jetson Nano a VEX V5 Brain Communications-hez
A Jetson processzor tartalmaz egy alkalmazást, amely a következő adatokat gyűjti a VEX AI szoftverből:
Robot helyadatok:
- A robot X,Y helye méterben a mező közepétől.
- A robot azimutja (irány), magassága (emelkedés), elforgatása (gurulás) mind radiánban.
Objektumészlelési adatok (három típus):
- Ezek az adatok a VEX AI Intel Camera által észlelt objektumot képviselik.
- Ez az adat az objektumot a kamera képére hivatkozva írja le.
- Az X, Y, szélesség és magasság értékei pixel egységekben vannak megadva. A pixelértékek a kép- és tárgyfelismerő mező bal felső sarkára vonatkoznak. A kép felbontása 640x480.
Térképészlelés (kettes típus):
- Ezek az adatok az objektum helyét a területen a GPS-érzékelővel azonos koordinátarendszerben jelentik, méterben megadva.
- Minden objektum tartalmazza az objektum helyét a mező közepéhez képest is. Az X és Y értékei méter egységekben vannak megadva a mező középpontjától a megfelelő tengelyükön. A Z értéke méter a mezőlapkától (magasság).
Észlelési objektum (hármas típus):
- Ez magában foglalja az észlelt objektumokról szóló összes információt.
- Minden objektum tartalmaz egy értéket, amely az észlelt objektum osztályozását jelenti. (Osztályazonosító: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriball)
- Minden objektum tartalmaz egy valószínűséget is, amely a VEX AI észlelésbe vetett bizalmát jelenti. Ez a model.py szűrője után történik, amely eltávolítja az alacsony valószínűségű észleléseket.
- Ezenkívül a VEX AI Intel Camera méterben jelzi az objektum mélységét.
- A képérzékelés és a térképészlelés minden objektumhoz csatolva vannak, hogy az objektum koordinátáit a képen és a valós világban is megjelenítsék.
Az ai_demo program lebontása:
Main.cpp
A szabvány a VEX projektekhez tartalmazza:
Jelentsd meg a Jetson osztály egy példányát. Ez az osztály adatkérések küldésére szolgál a Jetsonnak, valamint adatok fogadására USB soros kapcsolaton keresztül.
#define MANAGER_ROBOT 1
Deklarálja a robot_link osztály egy példányát. Ezt az objektumot a robot és egy partnerrobot közötti kapcsolódásra és adatátvitelre fogják használni. Ugyanez a projekt két különálló robotra is letölthető. Egy robotnak szüksége lesz a következő sorra:
//#define MANAGER_ROBOT 1
Mielőtt betöltené a kódot a második robotra, megjegyzésbe kell írnia ezt a sort:
A robot_link osztály beállítja a robot VEXlinkjét, és kezeli az adatok továbbítását és fogadását a két robot között. Ebben a cikkben nem részletezzük az osztály működését. Jó ötlet lenne először megérteni a VEXlink működését. A V5 VEXlink API használatával kapcsolatos részletesebb információkért ez a dokumentum ismerteti az új könyvtárakat, és azt, hogyan lehet azokat hatékonyan használni a robotok közötti kommunikációhoz.
-
Verseny Eseménykezelők
Az egyik legnagyobb különbség a VAIC és a VRC között, hogy nincs vezetői ellenőrzési időszak. Ehelyett két autonóm időszak van, az izolációs időszak és az interakciós időszak. Ebben a példában minden autonóm időszakhoz külön rutinok vannak. Mivel a VEX API nem támogat két különböző visszahívást, a programban egy jelzőnek kell lennie annak meghatározásához, hogy melyik rutint kell végrehajtani. Ebben a példaprogramban a „firstAutoFlag” az Isolation funkció meghívására szolgál az autonóm első engedélyezésekor, és az interakciós funkció, amikor az autonóm másodszor engedélyezve van. Egy dolog, amit meg kell jegyezni, hogy ha valamilyen okból vissza kell állítani az egyezést, akkor újra kell indítani a bemutató programot, hogy az első AutoFlag visszaállítható legyen.
-
Fő()
Ez a projekt fő feladata. A VEXcode környezet megfelelő beállításához a vexcodeInit() meghívásával kezdődik. Ezután egy helyi AI_RECORD objektum deklarálva tárolja a Jetsontól kapott adatokat. Egy külön feladat is be van állítva a képernyő legfrissebb adatokkal való frissítésére. A feladat kódja a dashboard.cpp fájlban található. Az autonóm visszahívás is regisztrálva van az autonóm periódusok elindításakor.
A main while() ciklus a jetson_comms objektum legfrissebb adatainak a helyi AI_RECORD objektumunkba másolásával indul. Ezután átadja a robot helyinformációit a link objektumnak, hogy azt továbbíthassák partnerrobotunknak. Miután befejezte az adatok feldolgozását, további adatokat kér a Jetsontól, és 66 ezredmásodpercig alszik. Ezen adatok lekérdezési frekvenciája 15 Hz. Nincs ok a gyorsabb lekérdezésre, mivel az AI rendszer adatai körülbelül 15 Hz-en frissülnek.
megjegyzés: a Jetson térképadatokat csak egyetlen feladatnak kell lekérnie.