Мазмұны:

Jetson Nano Quadruped роботтық объектілерді анықтау оқулығы: 4 қадам
Jetson Nano Quadruped роботтық объектілерді анықтау оқулығы: 4 қадам

Бейне: Jetson Nano Quadruped роботтық объектілерді анықтау оқулығы: 4 қадам

Бейне: Jetson Nano Quadruped роботтық объектілерді анықтау оқулығы: 4 қадам
Бейне: Jetson Nano Quadruped Robot Object Detection + Teleoperation 2024, Маусым
Anonim
Image
Image

Nvidia Jetson Nano - бұл SoM (модульдегі жүйе) мен анықтамалық тасымалдаушы тақтасынан тұратын әзірлеуші жиынтығы. Бұл, ең алдымен, машиналық оқыту, машиналық көру және бейне өңдеу қосымшалары үшін жоғары өңдеу қуатын қажет ететін енгізілген жүйелерді құруға бағытталған. Толық шолуды менің YouTube каналымнан көре аласыз.

Nvidia Jetson Nano-ны қолданушыларға ыңғайлы және мүмкіндігінше оңай жобалар жасауға тырысады. Тіпті тақта іске қосылғаннан бірнеше күн өткен соң, олар роботты Jetson Nano-мен қалай жасау керектігі туралы шағын курсты бастады. Сіз бұл жобаның егжей -тегжейін мына жерден таба аласыз.

Алайда менде жоба ретінде Jetbot -пен бірнеше проблемалар болды:

1) Бұл мен үшін EPIC жеткіліксіз болды. Джетсон Нано - бұл өңдеу қабілеті өте жоғары және онымен қарапайым дөңгелекті робот жасау өте қызықты жұмыс тақтасы.

2) Жабдықты таңдау. Jetbot қымбат тұратын жабдықты қажет етеді/басқа баламалармен алмастыруға болады - мысалы, олар телеоперация үшін джойстикті қолданады. Бұл көңілді сияқты, бірақ маған роботты басқару үшін джойстик қажет пе?

Сонымен, мен Jetson Nano -ға қол жеткізгеннен кейін мен өзімнің Jetspider жобасымен жұмыс жасай бастадым. Идея Jetbot -тің негізгі демонстрациясын қайталау болды, бірақ жалпыға ортақ жабдықтармен және жобалардың кең ауқымында қолданылады.

1 -қадам: жабдықты дайындаңыз

Аппараттық құралдарды дайындаңыз
Аппараттық құралдарды дайындаңыз

Бұл жоба үшін мен Zoobotics жасаған төртбұрышты Zuri роботының алғашқы прототипін қолдандым. Ол біздің компанияның зертханасында ұзақ уақыт болды. Мен оны Jetson Nano үшін лазермен кесілген ағаш қондырғы мен камера қондырғысымен жабдықтадым. Олардың дизайны меншік болып табылады, сондықтан егер сіздің Jetson Nano роботыңызға ұқсас нәрсе жасағыңыз келсе, сіз Meped жобасын көре аласыз, ол ұқсас көзі ашық дизайнмен төрт еселенген. Шынында да, біздің зертханада Зуридің микроконтроллерінің (Arduino Mega) бастапқы коды ешкімде болмағандықтан, мен Meped кодын аяқтар/аяқтар ауытқуларында кішкене түзетулермен қолдандым.

Мен қарапайым USB Raspberry Pi үйлесімді веб-камерасын және Wifi USB кілтін қолдандым.

Ең бастысы, біз Pyserial -ді микроконтроллер мен Jetson Nano арасындағы сериялық байланыс үшін қолданатындықтан, сіздің жүйеңіз USB сериялық кабелі бар Jetson Nano -мен байланыстырылған жағдайда, кез келген микроконтроллерді қолдана алады. Егер сіздің роботыңыз тұрақты ток қозғалтқыштары мен қозғалтқыш драйверін қолданса (мысалы, L298P), мотор драйверін Jetson Nano GPIO көмегімен тікелей байланыстыруға болады. Бірақ, өкінішке орай, серверлерді басқару үшін тек басқа микроконтроллерді немесе арнайы I2C серво драйверін қолдануға болады, себебі Jetson Nano -да GPIO PWM аппараттық құралы жоқ.

Қысқаша айтқанда, сіз USB деректер кабелі арқылы Jetson Nano -мен қосылатын кез келген микроконтроллері бар робот түрін қолдана аласыз. Мен Arduino Mega кодын осы оқулыққа арналған github репозиторийіне жүктедім және Arduino -мен Jetson Nano интерфейсіне қатысты бөлігі мына жерде:

if (Serial.available ()) {switch (Serial.read ()) {

{

'1' жағдайы:

алға ();

үзіліс;

'2' жағдайы:

артқа ();

үзіліс;

'3' жағдайы:

Оңға бұрылыңыз();

үзіліс;

'4' жағдайы:

Солға бұрылыңыз();

үзіліс;

Біз деректердің бар-жоғын тексереміз, егер ол болса, оны коммутаторлық басқару құрылымына жібереміз. Назар аударыңыз, сериалдағы деректер кейіпкер ретінде келеді, 1, 2, 3, 4 сандарының айналасындағы жалғыз тырнақшаға назар аударыңыз.

2 -қадам: Қажетті пакеттерді орнатыңыз

Бақытымызға орай, Jetson Nano жүйелік әдепкі суреті алдын ала орнатылған көптеген материалдармен бірге келеді (OpenCV, TensorRT және т.

Қалған жұмысты қашықтан орындағыңыз келсе, SSH қосудан бастайық.

sudo apt жаңарту

sudo apt install openssh-server орнатыңыз

SSH сервері автоматты түрде іске қосылады.

LAN арқылы Ubuntu компьютеріне қосылу үшін келесі пәрменді енгізу қажет:

ssh пайдаланушы аты@ip_address

Егер сізде Windows машинасы болса, сізге SSH клиентін орнату қажет болады, мысалы Putty.

Кескінді өңдеуге арналған Python Package Manager (pip) пен жастықты орнатудан бастайық.

sudo apt install python3-pip python3-pil

Содан кейін біз Jetbot репозиторийін орнатамыз, себебі біз объектіні анықтау үшін оның құрылымының кейбір бөліктеріне сүйенеміз.

sudo apt install python3-smbus python-pyserial

git clone

cd jetbot

sudo apt-get install cmake

sudo python3 setup.py орнату

Ақырында, бұл жобаға арналған менің Github репозиторийімді үй қалтасына клондап, Flask пен роботты қашықтан басқаруға арналған басқа пакеттерді веб -сервер арқылы орнатыңыз.

git clone

cd

sudo pip3 install -r талаптар -opencv

Алдын ала дайындалған SSD (Single Shot Detector) моделін осы сілтемеден жүктеп алып, оны jetspider_demos қалтасына салыңыз.

Енді біз барғанымыз жақсы!

3 -қадам: кодты іске қосыңыз

Кодты іске қосыңыз
Кодты іске қосыңыз

Мен Jetspider үшін екі демонстрация жасадым, біріншісі - қарапайым телеотерация, бұрын Banana Pi роверінде жасағанға өте ұқсас, екіншісі - объектілерді анықтау үшін TensorRT қолданады және микроконтроллерге сериялық қосылым арқылы қозғалыс пәрмендерін жібереді..

Телеотация кодының көп бөлігі менің басқа оқулықта сипатталғандықтан (мен тек бейнежазбаны реттейтін кішігірім түзетулер жасадым) мұнда мен объектілерді анықтау бөлігіне тоқталамын.

Объектіні қадағалаудың негізгі сценарийі - jetspider_object_following ішіндегі object_following.py, ал телеоперация үшін - jetspider_teleoperation бағдарламасында spider_teleop.py.

Сценарий келесі объекті қажетті модульдерді импорттаудан және айнымалылар мен сынып даналарын жариялаудан басталады. Содан кейін біз Flask веб -серверін осы жолмен бастаймыз

app.run (хост = '0.0.0.0', ағын = True)

Біз веб -шолғышта 0.0.0.0 (localhost) мекенжайын немесе желідегі Jetson Nano мекенжайын ашқаннан кейін (ifconfig пәрменімен тексеруге болады), бұл функция орындалады.

def индексі ():

Ол шаблондар қалтасындағы веб -беттің үлгісін көрсетеді. Үлгіде бейне көзі бар, сондықтан ол жүктеуді аяқтаған кезде, def video_feed (): орындалады, ол генератор функциясымен инициализацияланған Response объектісін қайтарады.

Орында жаңартуларды енгізудің құпиясы (біздің бейне ағыны үшін веб-беттегі суретті жаңарту)-көп бөлікті жауапты қолдану. Көп бөліктік жауаптар көп бөлікті мазмұн түрлерінің бірін қамтитын тақырыптан тұрады, одан кейін бөліктер, шекара белгісімен бөлінген және әрқайсысының жеке мазмұн түріне ие.

Def gen (): функциясында біз генератор функциясын шексіз циклде жүзеге асырамыз, ол кескінді түсіреді, оны def execute (img): функциясына жібереді, содан кейін кескін веб -бетке жіберіледі.

def execute (img): функция - бұл барлық сиқырлық болатын жерде, ол суретті алады, оны OpenCV көмегімен өзгертеді және оны Jetbot ObjectDetector класының «үлгісіне» береді. Ол анықтамалар тізімін қайтарады және біз OpenCV көмегімен көк тіктөртбұрыштар саламыз және объект анықталған сыныппен аннотация жазамыз. Осыдан кейін біз қызығушылық тудыратын объектінің бар -жоғын тексереміз: match_detections = [d үшін анықтамаларда [0], егер d ['белгі'] == 53]

Егер сіз роботтың басқа объектілерді ұстануын қаласаңыз, бұл санды (53) CoCo деректер жиынтығынан басқа нөмірге өзгертуге болады, 53 - бұл алма. Бүкіл тізім категория.py файлында.

Ақырында, егер 5 секунд ішінде ешқандай объект анықталмаса, біз роботқа серияның үстінде тоқтауы үшін «5» таңбасын береміз. Егер объект табылса, біз оның кескіннің ортасынан қаншалықты алыс екенін есептейміз және соған сәйкес әрекет етеміз (егер орталыққа жақын болса, түзу жүріңіз (серияда «1» таңбасы), егер сол жақта болса, солға қарай жүріңіз және т. Сіз өзіңіздің жеке қондырғыңыз үшін ең жақсысын анықтау үшін сол мәндермен ойнай аласыз!

4 -қадам: Қорытынды ойлар

Қорытынды ойлар
Қорытынды ойлар

Бұл ObjectFollowing демонстрациясының мәні, егер сіз Flask веб -серверінің бейне ағыны туралы көбірек білгіңіз келсе, сіз Мигель Гринбергтің осы керемет оқулығын қарай аласыз.

Сіз сонымен қатар Nvidia Jetbot объектілерді анықтау жазу кітапшасын көре аласыз.

Менің Jetbot демонстрацияларым Jetbot негізін қолдана отырып, сіздің роботты құруға көмектеседі деп үміттенемін. Мен кедергілерді болдырмау демонстрациясын қолданған жоқпын, себебі менің ойымша, модельді таңдау кедергілерден аулақ болудың жақсы нәтижесін бермейді.

Егер сізде сұрақтар туындаса, мені LinkedId -ке қосыңыз және менің YouTube каналыма жазылыңыз, машиналық оқыту мен робототехникаға қатысты қызықты жобалар туралы хабардар болыңыз.

Ұсынылған: