Бұл мақалада 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.
Картаны анықтау (екінші түрі):
- Бұл деректер GPS сенсорымен бірдей координаттар жүйесіндегі өрістегі нысанның орнын көрсетеді, метрлерде көрсетіледі.
- Әрбір нысан сонымен қатар өрістің ортасына қатысты нысанның орнын қамтиды. X және Y мәндері өз осіндегі өрістің ортасынан метр бірліктерімен берілген. Z мәні өріс тақтайшаларынан (биіктік) метр болып табылады.
Анықтау нысаны (үшінші түрі):
- Бұл анықталған нысандар туралы барлық ақпаратты инкапсуляциялайды.
- Әрбір нысанда анықталған нысанның классификациясын көрсететін мән бар. (Сынып идентификаторы: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
- Әрбір нысанда VEX AI-ның анықтауға деген сенімділігін білдіретін ықтималдық бар. Бұл модель.py ішіндегі сүзгіден кейін, ықтималдығы төмен анықтауларды жояды.
- Сонымен қатар, нысанның тереңдігі VEX AI Intel камерасынан метрлермен хабарланады.
- Кескінді анықтау және картаны анықтау кескіндегі объектінің координаталарын, сондай-ақ нақты әлемде көрсету үшін әрбір нысанға бекітілген.
ai_demo бағдарламасының қысқаша мазмұны:
Main.cpp
Стандарт VEX жобаларын қамтиды:
Джетсон сыныбының данасын жариялаңыз. Бұл класс деректерге сұрауларды Джетсонға жіберу үшін, сондай-ақ USB сериялық қосылымы арқылы деректерді алу үшін пайдаланылады.
#МЕНЕДЖЕР_РОБОТ 1 анықтау
robot_link класының данасын жариялаңыз. Бұл нысан осы робот пен серіктес робот арасында деректерді қосу және тасымалдау үшін пайдаланылады. Дәл осы жобаны екі бөлек роботқа жүктеп алуға болады. Бір роботқа келесі жол қажет болады:
//#МЕНЕДЖЕР_РОБОТ 1 анықтау
Кодты екінші роботқа жүктемес бұрын, сіз осы жолға түсініктеме беруіңіз керек:
robot_link класы роботтың VEXlink қызметін орнатады және екі робот арасында деректерді жіберу мен қабылдауды басқарады. Біз бұл мақалада бұл сыныптың қалай жұмыс істейтінін егжей-тегжейлі қарастырмаймыз. Алдымен VEXlink қалай жұмыс істейтінін түсінген дұрыс. V5 VEXlink API пайдалану туралы толығырақ ақпарат алу үшін бұл құжат жаңа кітапханаларды және оларды роботтан роботқа байланысу үшін тиімді пайдалану жолын түсіндіреді.
-
Жарыс оқиғаларын өңдеушілер
VAIC және VRC арасындағы ең үлкен айырмашылықтардың бірі - драйверді басқару кезеңі жоқ. Оның орнына екі автономды кезең бар, оқшаулау кезеңі және өзара әрекеттесу кезеңі. Бұл мысалда әрбір автономды кезең үшін бөлек жұмыс тәртібі бар. VEX API екі түрлі кері қоңырауға қолдау көрсетпейтіндіктен, қандай процедура орындалатынын анықтау үшін бағдарламада жалауша болуы керек. Бұл бағдарлама мысалында «бірінші Автоматты жалау» оқшаулау функциясын бірінші рет автономды қосу кезінде, ал автономды екінші рет қосылғанда өзара әрекеттесу функциясын шақыру үшін пайдаланылады. Айта кететін бір жайт, егер қандай да бір себептермен сәйкестікті қалпына келтіру қажет болса, демонстрациялық бағдарламаны қайта іске қосу керек, осылайша firstAutoFlag қалпына келтірілуі мүмкін.
-
Негізгі()
Бұл жобаның негізгі міндеті. Ол VEXcode ортасын дұрыс орнату үшін vexcodeInit() шақыру арқылы басталады. Әрі қарай, Jetson жүйесінен алатын деректерді сақтау үшін жергілікті AI_RECORD нысаны жарияланады. Экранды ең соңғы деректермен жаңартуды өңдеу үшін бөлек тапсырма да орнатылған. Бұл тапсырманың коды dashboard.cpp файлында қамтылған. Автономды кері шақыру автономды кезеңдерді бастаған кезде өңдеу үшін де тіркеледі.
Негізгі while() циклі jetson_comms нысанындағы соңғы деректерді жергілікті AI_RECORD нысанына көшіру арқылы басталады. Содан кейін ол роботтың орналасқан жері туралы ақпаратты серіктес роботқа жіберу үшін сілтеме нысанына жібереді. Деректерді өңдеуді аяқтағаннан кейін ол Jetson құрылғысынан қосымша деректерді сұрайды және 66 миллисекунд бойы ұйықтайды. Бұл деректер үшін дауыс беру жылдамдығы 15 Гц. Сауалнамаға жылдамырақ себеп жоқ, өйткені AI жүйесі деректері шамамен 15 Гц жиілікте жаңартылады.
ескертпе: Джетсон картасы деректері тек бір тапсырма арқылы сұралуы керек.