Šajā rakstā tiks apskatīts projekta piemērs, kurā tiek parādīts informācijas panelis, kas ziņo par robota un robota saziņas statusu, izmantojot VEXlink, kā arī statusu Jetson. Projekts ai_demo tiek mitināts mūsu Github. Šis demonstrācijas projekts apkopo datus no Jetson procesora, izmantojot USB seriālo savienojumu. Kad dati ir saņemti, tie tiek parādīti V5 Brain ekrānā un arī pārsūtīti uz partnera V5 robotu, kas ir savienots, izmantojot VEXlink.
piezīme. Šim projektam ir nepieciešama jaunākā VS koda paplašinājuma versija V5. Lejupielādējiet VS koda paplašinājumu V5 šeit.
NVIDIA Jetson Nano uz VEX V5 Brain Communications
Jetson procesors satur lietojumprogrammu, kas apkopo šādus datus no VEX AI programmatūras:
Robota atrašanās vietas dati:
- Robota X,Y atrašanās vieta metros no lauka centra.
- Robota azimuts (virziens), pacēlums (slīpums), rotācija (ripojums) viss radiānos.
Objektu noteikšanas dati (trīs veidi):
- Šie dati atspoguļo VEX AI Intel kameras atklātu objektu.
- Šie dati apraksta objektu, atsaucoties uz kameras attēlu.
- X, Y, platuma un augstuma vērtības ir norādītas pikseļu vienībās. Pikseļu vērtības attiecas uz attēla un objektu noteikšanas lodziņa augšējo kreiso stūri. Attēla izšķirtspēja ir 640x480.
Kartes noteikšana (otrais veids):
- Šie dati attēlo objekta atrašanās vietu uz lauka tajā pašā koordinātu sistēmā kā GPS sensors, kas norādīts metros.
- Katrs objekts satur arī objekta atrašanās vietu attiecībā pret lauka centru. X un Y vērtības ir norādītas metru vienībās no lauka centra attiecīgajā asī. Z vērtība ir metri no lauka flīzēm (augstums).
Noteikšanas objekts (trešais veids):
- Tas iekapsulē visu informāciju par atklātajiem objektiem.
- Katrs objekts satur vērtību, kas atspoguļo atklātā objekta klasifikāciju. (Klases ID: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
- Katrs objekts satur arī varbūtību, kas atspoguļo VEX AI pārliecību par noteikšanu. Tas ir pēc filtra modelī.py, kas noņem zemas varbūtības noteikšanas gadījumus.
- Turklāt no VEX AI Intel kameras tiek ziņots par objekta dziļumu metros.
- Attēla noteikšana un kartes noteikšana ir pievienota katram objektam, lai attēlotu objekta koordinātas attēlā, kā arī reālajā pasaulē.
Programmas ai_demo sadalījums:
Main.cpp
Standarts VEX projektiem ietver:
Pasludiniet Jetson klases gadījumu. Šī klase tiek izmantota, lai nosūtītu datu pieprasījumus Jetson, kā arī saņemtu datus, izmantojot USB seriālo savienojumu.
#define MANAGER_ROBOT 1
Deklarējiet klases robot_link gadījumu. Šis objekts tiks izmantots, lai savienotu un pārsūtītu datus starp šo robotu un partnerrobotu. Šo pašu projektu var lejupielādēt divos atsevišķos robotos. Vienam robotam būs nepieciešama līnija:
//#define MANAGER_ROBOT 1
Pirms koda ielādēšanas otrajā robotā jums būs jākomentē šī rindiņa:
Robot_link klase iestata robota VEXlink un apstrādā datu pārraidi un saņemšanu starp diviem robotiem. Šajā rakstā mēs nerunāsim par to, kā šī klase darbojas. Būtu laba ideja vispirms saprast, kā darbojas VEXlink. Lai iegūtu sīkāku informāciju par V5 VEXlink API izmantošanu, šajā dokumentā ir izskaidrotas jaunās bibliotēkas un kā tās efektīvi izmantot saziņai starp robotiem un robotiem.
-
Sacensību pasākumu rīkotāji
Viena no lielākajām atšķirībām starp VAIC un VRC ir tā, ka nav vadītāja kontroles perioda. Tā vietā ir divi autonomie periodi, izolācijas periods un mijiedarbības periods. Šajā piemērā katram autonomajam periodam ir atsevišķas rutīnas. Tā kā VEX API neatbalsta divus dažādus atzvanus, programmā ir jābūt karogam, lai noteiktu, kura rutīna ir jāizpilda. Šajā programmas piemērā “firstAutoFlag” tiek izmantots, lai izsauktu Izolācijas funkciju, kad pirmo reizi ir iespējota autonoma, un mijiedarbības funkciju, kad autonoma ir iespējota otro reizi. Viena lieta, kas jāņem vērā, ir tāda, ka, ja kāda iemesla dēļ atbilstība ir jāatiestata, demonstrācijas programma ir jārestartē, lai varētu atiestatīt pirmo AutoFlag.
-
Galvenais()
Tas ir šī projekta galvenais uzdevums. Tas sākas, izsaucot vexcodeInit(), lai pareizi iestatītu VEXcode vidi. Pēc tam tiek deklarēts vietējais AI_RECORD objekts, lai saglabātu datus, ko saņemam no Jetson. Atsevišķs uzdevums ir arī iestatīts, lai apstrādātu ekrāna atjaunināšanu ar jaunākajiem datiem. Šī uzdevuma kods ir ietverts failā dashboard.cpp. Autonomā atzvanīšana ir arī reģistrēta, lai to apstrādātu, kad tiek uzsākti autonomie periodi.
Galvenā while() cilpa sākas, kopējot jaunākos datus no objekta jetson_comms mūsu lokālajā AI_RECORD objektā. Pēc tam tas nodod robota atrašanās vietas informāciju saites objektam, lai to varētu pārsūtīt mūsu partnera robotam. Kad datu apstrāde ir pabeigta, tas pieprasa vairāk datu no Jetson un guļ 66 milisekundes. Šo datu aptaujas frekvence ir 15 Hz. Nav iemesla veikt aptauju ātrāk, jo AI sistēmas dati tiek atjaunināti ar aptuveni 15 Hz.
piezīme: Jetson kartes dati ir jāpieprasa tikai vienam uzdevumam.