Satura rādītājs:

Jetson Nano četrkājaino robotu objektu noteikšanas apmācība: 4 soļi
Jetson Nano četrkājaino robotu objektu noteikšanas apmācība: 4 soļi

Video: Jetson Nano četrkājaino robotu objektu noteikšanas apmācība: 4 soļi

Video: Jetson Nano četrkājaino robotu objektu noteikšanas apmācība: 4 soļi
Video: Обзор микрокомпьютера Nvidia Jetson Nano: распаковка и установка системы 2024, Jūnijs
Anonim
Image
Image

Nvidia Jetson Nano ir izstrādātāju komplekts, kas sastāv no SoM (System on Module) un atsauces nesēja plates. Tas galvenokārt ir paredzēts, lai izveidotu iegultās sistēmas, kurām nepieciešama liela apstrādes jauda mašīnmācīšanās, mašīnredzes un video apstrādes lietojumprogrammām. Jūs varat skatīties detalizētu pārskatu par to manā YouTube kanālā.

Nvidia ir mēģinājis padarīt Jetson Nano pēc iespējas draudzīgāku un viegli izstrādājamus projektus. Dažas dienas pēc tāfeles izlaišanas viņi pat uzsāka nelielu kursu par robota izveidi, izmantojot Jetson Nano. Sīkāku informāciju par šo projektu varat atrast šeit.

Tomēr man pašam bija dažas problēmas ar projektu Jetbot:

1) Man tas nebija pietiekami EPIC. Jetson Nano ir ļoti interesanta tāfele ar lieliskām apstrādes iespējām, un ar to vienkārša riteņu robota izgatavošana šķita ļoti… nepārspējama lieta.

2) aparatūras izvēle. Jetbot ir nepieciešama aparatūra, kas ir dārga/kuru var aizstāt ar citām alternatīvām - piemēram, tālvadībai viņi izmanto kursorsviru. Izklausās jautri, bet vai man tiešām ir nepieciešama kursorsvira, lai vadītu robotu?

Tātad, tūlīt pēc tam, kad es saņēmu rokās Jetson Nano, es sāku strādāt pie sava projekta - Jetspider. Ideja bija atkārtot Jetbot pamata demonstrācijas, taču ar izplatītāku aparatūru un piemērojamu plašākam projektu klāstam.

1. darbība: sagatavojiet aparatūru

Sagatavojiet aparatūru
Sagatavojiet aparatūru

Šim projektam es izmantoju agrīnu Zuri četrkājaina robota prototipu, ko izgatavoja Zoobotics. Tas ilgu laiku gulēja mūsu uzņēmuma laboratorijā. Es to aprīkoju ar lāzera grieztu koka stiprinājumu Jetson Nano un kameras stiprinājumu. To dizains ir patentēts, tādēļ, ja savam Jetson Nano robotam vēlaties izveidot kaut ko līdzīgu, varat apskatīt Meped projektu, kas ir līdzīgs četrkājains ar atvērtā koda dizainu. Faktiski, tā kā mūsu laboratorijā nevienam nebija Zuri mikrokontrollera (Arduino Mega) avota koda, es izmantoju Meped kodu, veicot nelielas korekcijas kāju/pēdu nobīdē.

Es izmantoju parastu ar USB Raspberry Pi saderīgu tīmekļa kameru un Wifi USB dongle.

Galvenais ir tas, ka, tā kā sērijveida saziņai starp mikrokontrolleru un Jetson Nano mēs izmantosim Pyserial, jūsu sistēma būtībā var izmantot jebkura veida mikrokontrolleru, ja vien to var savienot ar Jetson Nano ar USB seriālo kabeli. Ja jūsu robots izmanto līdzstrāvas motorus un motora draiveri (piemēram, uz L298P bāzes), ir iespējams tieši savienot motora draiveri ar Jetson Nano GPIO. Diemžēl servo vadīšanai varat izmantot tikai citu mikrokontrolleri vai īpašu I2C servo draiveri, jo Jetson Nano nav aparatūras GPIO PWM.

Rezumējot, jūs varat izmantot robota veidu ar jebkuru mikrokontrolleri, ko var savienot ar Jetson Nano, izmantojot USB datu kabeli. Es augšupielādēju Arduino Mega kodu šīs apmācības github krātuvē, un daļa, kas attiecas uz Jetson Nano saskarni ar Arduino, ir šeit:

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

{

gadījums “1”:

uz priekšu ();

pārtraukums;

gadījums “2”:

atpakaļ ();

pārtraukums;

gadījums “3”:

nogriezieties pa labi();

pārtraukums;

gadījums “4”:

pagriezies pa kreisi();

pārtraukums;

Mēs pārbaudām, vai ir pieejami dati, un, ja tādi ir, nododam tos slēdžu vadības struktūrai. Pievērsiet uzmanību, ka sērijas dati ir rakstzīmes, ievērojiet pēdiņas ap cipariem 1, 2, 3, 4.

2. darbība: instalējiet nepieciešamos iepakojumus

Par laimi, mums pēc noklusējuma Jetson Nano sistēmas attēla ir daudz iepriekš instalētu lietu (piemēram, OpenCV, TensorRT utt.), Tāpēc mums ir jāinstalē tikai dažas citas paketes, lai kods darbotos un iespējotu SSH.

Sāksim ar SSH iespējošanu, ja vēlaties visu pārējo darbu veikt attālināti.

sudo apt atjauninājums

sudo apt instalēt openssh-server

SSH serveris sāksies automātiski.

Lai izveidotu savienojumu ar savu Ubuntu mašīnu, izmantojot LAN, jums jāievada tikai šāda komanda:

ssh lietotājvārds@ip_address

Ja jums ir Windows mašīna, jums būs jāinstalē SSH klients, piemēram, Putty.

Sāksim, instalējot Python Package Manager (pip) un spilvenu attēlu apstrādei.

sudo apt instalēt python3-pip python3-pil

Pēc tam mēs instalēsim Jetbot krātuvi, jo mēs paļaujamies uz dažām tās ietvara daļām, lai veiktu objektu noteikšanu.

sudo apt instalēt python3-smbus python-pyserial

git klons

cd jetbot

sudo apt-get install cmake

sudo python3 setup.py instalēt

Visbeidzot, klonējiet manu šī projekta Github krātuvi savā mājas mapē un instalējiet Flask un dažas citas paketes robota tālvadībai, izmantojot tīmekļa serveri.

git klons

cd

sudo pip3 instalēt -r prasības -opencv

Lejupielādējiet iepriekš sagatavoto SSD (viena šāviena detektora) modeli no šīs saites un ievietojiet to mapē jetspider_demos.

Tagad mums ir labi doties!

3. darbība: palaidiet kodu

Palaidiet kodu
Palaidiet kodu

Es izveidoju divas demonstrācijas Jetspider, pirmā ir vienkārša teleoprācija, kas ir ļoti līdzīga tai, ko es iepriekš izveidoju Banana Pi roverim, bet otrā izmanto TensorRT objektu noteikšanai un nosūta kustības komandas, izmantojot seriālo savienojumu, uz mikrokontrolleri.

Tā kā lielākā daļa teleoprācijas koda ir aprakstīta manā citā apmācībā (es veicu tikai dažus nelielus pielāgojumus, pārraidot video pārraidi), šeit es koncentrēšos uz objektu noteikšanas daļu.

Galvenais skripts sekojošajiem objektiem ir object_following.py, kas atrodas vietnē jetspider_object_following, bet teleoperācija ir spider_teleop.py sadaļā jetspider_teleoperation.

Skripta objekts sākas ar nepieciešamo moduļu importēšanu un mainīgo un klases gadījumu deklarēšanu. Pēc tam mēs sākam Flask tīmekļa serveri ar šo rindu

app.run (resursdators = '0.0.0.0', vītņots = True)

Tiklīdz mēs atvērsim 0.0.0.0 (localhost) adresi mūsu tīmekļa pārlūkprogrammā vai Jetson Nano adresi tīklā (var pārbaudīt ar komandu ifconfig), šī funkcija tiks izpildīta

def indekss ():

Tas atveido tīmekļa lapas veidni, kas mums ir veidņu mapē. Veidnē ir iestrādāts video avots, tāpēc, tiklīdz tā tiks ielādēta, tiks izpildīts def video_feed ():, kas atgriež atbildes objektu, kas ir inicializēts ar ģeneratora funkciju.

Vietējo atjauninājumu ieviešanas noslēpums (attēla atjaunināšana mūsu video straumes tīmekļa lapā) ir daudzdaļīgas atbildes izmantošana. Daudzdaļīgas atbildes sastāv no galvenes, kas ietver vienu no daudzdaļīga satura veidiem, kam seko daļas, kuras atdala robežas marķieris un kurām katrai ir savs daļas tips.

Funkcijā def gen (): mēs ieviešam ģeneratora funkciju bezgalīgā cilpā, kas uztver attēlu, nosūta to def execute (img): function, iegūstot attēlu, kas pēc tam jānosūta uz tīmekļa lapu.

def izpildīt (img): funkcija ir vieta, kur notiek visa maģija, tā uzņem attēlu, maina tā izmēru ar OpenCV un nodod to Jetbot ObjectDetector klases instancē "modelis". Atgriež atgriež atklājumu sarakstu, un mēs izmantojam OpenCV, lai ap tiem uzzīmētu zilus taisnstūrus un rakstītu anotācijas ar objektu noteikto klasi. Pēc tam mēs pārbaudām, vai ir kāds mūsu interesējošs objekts

Jūs varat nomainīt šo skaitli (53) uz citu skaitli no CoCo datu kopas, ja vēlaties, lai jūsu robots seko citiem objektiem, 53 ir ābols. Viss saraksts ir failā category.py.

Visbeidzot, ja 5 sekundes netiek atklāts neviens objekts, mēs pārraidām rakstzīmi "5", lai robots apstātos virs sērijas. Ja objekts ir atrasts, mēs aprēķinām, cik tālu tas ir no attēla centra, un attiecīgi rīkojamies (ja tuvu centram, dodieties taisni (sērijas rakstzīme "1"), ja pa kreisi, dodieties pa kreisi utt.). Jūs varat spēlēt ar šīm vērtībām, lai noteiktu labāko konkrētajam iestatījumam!

4. solis: pēdējās domas

Pēdējās domas
Pēdējās domas

Šī ir ObjectFollowing demonstrācijas būtība, ja vēlaties uzzināt vairāk par Flask tīmekļa servera video straumēšanu, varat apskatīt šo lielisko Migela Grinberga apmācību.

Šeit varat apskatīt arī piezīmjdatoru Nvidia Jetbot Object Detection.

Es ceru, ka mana Jetbot demonstrāciju ieviešana palīdzēs izveidot jūsu robotu, izmantojot Jetbot ietvaru. Es neīstenoju šķēršļu novēršanas demonstrāciju, jo, manuprāt, modeļa izvēle nedos labus šķēršļu novēršanas rezultātus.

Ja jums ir kādi jautājumi, pievienojiet mani vietnē LinkedId un abonējiet manu YouTube kanālu, lai saņemtu paziņojumu par interesantākiem projektiem, kas saistīti ar mašīnmācīšanos un robotiku.

Ieteicams: