VEX AI роботын кодтау

Бұл мақалада VEXlink арқылы робот пен робот байланысының күйін, сондай-ақ Jetson күйін көрсететін бақылау тақтасын көрсететін жоба үлгісі қарастырылады. ai_demo жобасы біздің Githubжүйесінде орналастырылған. Бұл демонстрациялық жоба USB сериялық қосылымы арқылы Jetson процессорынан деректерді жинайды. Деректер қабылданғаннан кейін ол V5 Brain экранында көрсетіледі және сонымен қатар VEXlink арқылы қосылған серіктес V5 роботына жіберіледі.

-ескертпе: Бұл жоба V5 үшін VS Code кеңейтімінің соңғы нұсқасын қажет етеді. V5 үшін VS Code кеңейтімін осы жерден жүктеп алыңыз.


NVIDIA Jetson Nano-дан VEX V5 Brain Communications

Jetson процессорында VEX AI бағдарламалық құралынан келесі деректерді жинайтын қолданба бар:

Орналасқан жерді бақылауға арналған роботтың орнын, бағытын және координаталық осьтерін көрсететін екі өріс диаграммасы.

Робот орны деректері:

  • Роботтың X,Y орны өрістің ортасынан метрлерде.
  • Роботтың азимуты (бағыт), биіктік (қадам), айналу (орам) барлығы радианмен.

Объектіні анықтау деректері (үш түрі):

Түсі, орналасу координаттары және қашықтық бойынша белгіленген анықталған ойын нысандары бар камера көрінісі.

Кескінді анықтау (бірінші түрі):

  • Бұл деректер VEX AI Intel камерасы арқылы анықталған нысанды көрсетеді.
  • Бұл деректер камера кескініне сілтеме жасай отырып нысанды сипаттайды.
  • X, Y, ені және биіктігі үшін мәндер пиксель бірліктерімен берілген. Пиксель мәндері кескіннің және нысанды анықтау жолағының жоғарғы сол жақ бұрышына қатысты. Кескін ажыратымдылығы 640x480.

 

X және Y координата осьтерін және X0 Y0 өрісінің ортасындағы тірек орнын көрсететін өріс диаграммасы.

Картаны анықтау (екінші түрі):

  • Бұл деректер GPS сенсорымен бірдей координаттар жүйесіндегі өрістегі нысанның орнын көрсетеді, метрлерде көрсетіледі.
  • Әрбір нысан сонымен қатар өрістің ортасына қатысты нысанның орнын қамтиды. X және Y мәндері өз осіндегі өрістің ортасынан метр бірліктерімен берілген. Z мәні өріс тақтайшаларынан (биіктік) метр болып табылады.

Анықтау нысаны (үшінші түрі):

C++ код үзіндісі анықталған нысандардың деректер құрылымдарын, соның ішінде жіктеуді, орналасуды және кескін мен карта координаттарын анықтайды.

  • Бұл анықталған нысандар туралы барлық ақпаратты инкапсуляциялайды.
  • Әрбір нысанда анықталған нысанның классификациясын көрсететін мән бар. (Сынып идентификаторы: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • Әрбір нысанда VEX AI-ның анықтауға деген сенімділігін білдіретін ықтималдық бар. Бұл модель.py ішіндегі сүзгіден кейін, ықтималдығы төмен анықтауларды жояды.
  • Сонымен қатар, нысанның тереңдігі VEX AI Intel камерасынан метрлермен хабарланады.
  • Кескінді анықтау және картаны анықтау кескіндегі объектінің координаталарын, сондай-ақ нақты әлемде көрсету үшін әрбір нысанға бекітілген.

ai_demo бағдарламасының қысқаша мазмұны:

Main.cpp

C++ код үзіндісі VEX жобасының стандартты құрамдас бөліктерін және инициализациялау параметрлерін көрсетеді.

Стандарт VEX жобаларын қамтиды:

// орналасқан жерін және басқа
алу үшін jetson класының данасын жасау // Jetson nano
//
ai::jetson jetson_comms;

Джетсон сыныбының данасын жариялаңыз. Бұл класс деректерге сұрауларды Джетсонға жіберу үшін, сондай-ақ USB сериялық қосылымы арқылы деректерді алу үшін пайдаланылады.

#МЕНЕДЖЕР_РОБОТ 1 анықтау

#define MANAGER_ROBOT 1 деп оқылатын define операторын пайдаланып менеджер мен жұмысшы робот рөлдерінің конфигурациясын көрсететін C++ код үзіндісі.

robot_link класының данасын жариялаңыз. Бұл нысан осы робот пен серіктес робот арасында деректерді қосу және тасымалдау үшін пайдаланылады. Дәл осы жобаны екі бөлек роботқа жүктеп алуға болады. Бір роботқа келесі жол қажет болады:

//#МЕНЕДЖЕР_РОБОТ 1 анықтау

Кодты екінші роботқа жүктемес бұрын, сіз осы жолға түсініктеме беруіңіз керек:

robot_link класы роботтың VEXlink қызметін орнатады және екі робот арасында деректерді жіберу мен қабылдауды басқарады. Біз бұл мақалада бұл сыныптың қалай жұмыс істейтінін егжей-тегжейлі қарастырмаймыз. Алдымен VEXlink қалай жұмыс істейтінін түсінген дұрыс. V5 VEXlink API пайдалану туралы толығырақ ақпарат алу үшін, бұл жаңа кітапханалар және оларды роботтар арасындағы байланыс үшін қалай тиімді пайдалану керектігі түсіндіріледі.

  • Жарыс оқиғаларын өңдеушілер

    Оқшаулану және өзара әрекеттесу автономды процедуралары арасында ауысатын шартты логиканы көрсететін C++ коды.

    VAIC және VRC арасындағы ең үлкен айырмашылықтардың бірі - драйверді басқару кезеңі жоқ. Оның орнына екі автономды кезең бар, оқшаулау кезеңі және өзара әрекеттесу кезеңі. Бұл мысалда әрбір автономды кезең үшін бөлек жұмыс тәртібі бар. VEX API екі түрлі кері қоңырауға қолдау көрсетпейтіндіктен, қандай процедура орындалатынын анықтау үшін бағдарламада жалауша болуы керек. Бұл бағдарлама мысалында «бірінші Автоматты жалау» оқшаулау функциясын бірінші рет автономды қосу кезінде, ал автономды екінші рет қосылғанда өзара әрекеттесу функциясын шақыру үшін пайдаланылады. Айта кететін бір жайт, егер қандай да бір себептермен сәйкестікті қалпына келтіру қажет болса, демонстрациялық бағдарламаны қайта іске қосу керек, осылайша firstAutoFlag қалпына келтірілуі мүмкін.

  • Негізгі()

    Jetson-нан деректерді алу, өңдеу және серіктес роботпен байланыс орнатудың негізгі циклінің C++ код үзіндісі.

    Бұл жобаның негізгі міндеті. Ол VEXcode ортасын дұрыс орнату үшін vexcodeInit() шақыру арқылы басталады. Әрі қарай, Jetson жүйесінен алатын деректерді сақтау үшін жергілікті AI_RECORD нысаны жарияланады. Экранды ең соңғы деректермен жаңартуды өңдеу үшін бөлек тапсырма да орнатылған. Бұл тапсырманың коды 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: