Sisukord:
- Samm: valmistage riistvara ette
- Samm: installige vajalikud paketid
- Samm: käivitage kood
- 4. samm: lõplikud mõtted
Video: Jetson Nano neljajalgsete robotobjektide tuvastamise õpetus: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Nvidia Jetson Nano on arenduskomplekt, mis koosneb SoM -ist (System on Module) ja võrdluskandjaplaadist. See on peamiselt mõeldud sisseehitatud süsteemide loomiseks, mis nõuavad suurt töötlemisvõimsust masinõppe, masina nägemise ja videotöötluse rakenduste jaoks. Selle üksikasjalikku ülevaadet saate vaadata minu YouTube'i kanalil.
Nvidia on püüdnud muuta Jetson Nano võimalikult kasutajasõbralikuks ja hõlpsasti arendatavaks. Nad käivitasid isegi väikese kursuse, kuidas Jetson Nanoga oma robotit ehitada, mitu päeva pärast plaadi käivitamist. Selle projekti üksikasjad leiate siit.
Kuid mul endal oli Jetboti kui projektiga paar probleemi:
1) See ei olnud minu jaoks piisavalt eepiline. Jetson Nano on väga huvitav plaat, millel on suurepärased töötlemisvõimalused ja lihtsa ratastega roboti tegemine sellega tundus lihtsalt väga… alatu.
2) riistvara valik. Jetbot vajab mõnda riistvara, mis on kallis/asendatav muude alternatiividega - näiteks kasutavad nad kaugjuhtimiseks juhtkangi. Kõlab nagu lõbus, aga kas ma tõesti vajan juhtkangi, et robotit juhtida?
Niisiis, kohe pärast seda, kui olin Jetson Nano kätte saanud, hakkasin tegelema oma projektiga, Jetspideriga. Idee oli korrata Jetboti põhilisi demosid, kuid tavalisema riistvaraga ja rakendatav suuremale hulgale projektidele.
Samm: valmistage riistvara ette
Selle projekti jaoks kasutasin Zobi neljajalgse roboti varajast prototüüpi, mille on valmistanud Zoobotics. See lebas pikka aega meie ettevõtte laboris. Varustasin selle laseriga lõigatud puidust kinnitusega Jetson Nano jaoks ja kaamera kinnitusega. Nende disain on varaline, nii et kui soovite oma Jetson Nano roboti jaoks midagi sarnast luua, saate vaadata Mepedi projekti, mis on sarnane avatud lähtekoodiga neljajalgne. Tegelikult, kuna kellelgi polnud meie laboris Zuri mikrokontrolleri (Arduino Mega) lähtekoodi, kasutasin Mepedi koodi koos väikeste muudatustega jalgade/jalgade nihutamisel.
Kasutasin tavalist USB Raspberry Pi-ga ühilduvat veebikaamerat ja Wifi USB-donglit.
Peamine on see, et kuna me hakkame mikrokontrolleri ja Jetson Nano vaheliseks jadaühenduseks kasutama Pyserialit, saab teie süsteem sisuliselt kasutada mis tahes tüüpi mikrokontrollerit, kui seda saab ühendada Jetson Nano USB -jadakaabliga. Kui teie robot kasutab alalisvoolumootoreid ja mootori draiverit (näiteks L298P-põhist), on võimalik mootori draiverit otse Jetson Nano GPIO-ga liidestada. Kahjuks saate servode juhtimiseks kasutada ainult teist mikrokontrollerit või spetsiaalset I2C servo draiverit, kuna Jetson Nano ei sisalda riistvara GPIO PWM -i.
Kokkuvõtteks võite kasutada robotitüüpi mis tahes mikrokontrolleriga, mille saab Jetson Nano abil USB -andmesidekaabli abil ühendada. Laadisin Arduino Mega koodi selle õpetuse jaoks githubi hoidlasse üles ja Jetson Nano Arduinoga liidestamiseks oluline osa on siin:
if (Serial.available ()) {switch (Serial.read ()) {
{
juhtum '1':
edasi ();
murda;
juhtum '2':
tagasi();
murda;
juhtum '3':
pööra paremale();
murda;
juhtum '4':
pööra vasakule();
murda;
Kontrollime, kas andmed on saadaval, ja kui on, siis edastame need lülituskorpuse juhtimisstruktuurile. Pöörake tähelepanu sellele, et seeria andmed tulevad tähemärkidena, pange tähele jutumärke numbrite 1, 2, 3, 4 ümber.
Samm: installige vajalikud paketid
Meie õnneks on vaikimisi Jetson Nano süsteemi kujutisega kaasas palju eelinstallitud asju (nt OpenCV, TensorRT jne), seega peame koodi töötamiseks ja SSH lubamiseks installima vaid paar muud paketti.
Alustuseks lubage SSH juhuks, kui soovite kogu ülejäänud töö kaugjuhtimisega teha.
sudo apt värskendus
sudo apt install openssh-server
SSH -server käivitub automaatselt.
Oma Ubuntu masinaga ühenduse loomiseks LAN -i kaudu peate sisestama ainult järgmise käsu:
ssh kasutajanimi@ip_address
Kui teil on Windowsi masin, peate installima SSH -kliendi, näiteks Putty.
Alustuseks paigaldame Python Package Manageri (pip) ja Pillow pildiga manipuleerimiseks.
sudo apt install python3-pip python3-pil
Seejärel installime Jetboti hoidla, kuna objektide tuvastamisel toetume selle raamistiku mõnele osale.
sudo apt install python3-smbus python-pyserial
git kloon
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py install
Lõpuks kloonige minu projekti jaoks mõeldud Githubi hoidla oma kodukataloogi ja installige veebiserveri abil Flask ja mõned muud paketid roboti kaugjuhtimiseks.
git kloon
cd
sudo pip3 install -r nõuded -opencv
Laadige sellelt lingilt alla eelnevalt ettevalmistatud SSD (Single Shot Detector) mudel ja asetage see kausta jetspider_demos.
Nüüd on meil hea minna!
Samm: käivitage kood
Tegin Jetspideri jaoks kaks demot, esimene on lihtne teleoperatsioon, mis on väga sarnane sellele, mille tegin varem Banana Pi roveri jaoks ja teine kasutab TensorRT -d objektide tuvastamiseks ja saadab liigutuskäsud jadaühenduse kaudu mikrokontrollerile.
Kuna enamikku teleoperatsioonikoodist on kirjeldatud minu teises õpetuses (tegin vaid mõningaid väiksemaid muudatusi, video edastamise ümberhäälestamine), keskendun siin objekti tuvastamise osale.
Objekti järgimise põhiskript on objektis jetspider_object_following object_following.py, kaugtöö puhul on jetspider_teleoperation spider_teleop.py.
Skripti järgnev objekt algab vajalike moodulite importimisega ning muutujate ja klassi eksemplaride deklareerimisega. Seejärel käivitame selle reaga Flaski veebiserveri
app.run (host = '0.0.0.0', threaded = True)
Niipea kui avame 0.0.0.0 (localhost) aadressi meie veebibrauseris või Jetson Nano aadressi võrgus (saab kontrollida käsuga ifconfig), käivitatakse see funktsioon
def indeks ():
See renderdab mallide kaustas oleva veebilehe malli. Malli on sisse lülitatud videoallikas, nii et kui laadimine on lõpule viidud, käivitatakse def video_feed ():, mis tagastab vastusobjekti, mis lähtestatakse generaatorifunktsiooniga.
Kohapealsete värskenduste (meie videovoo veebilehe pildi värskendamine) rakendamise saladus on mitmeosalise vastuse kasutamine. Mitmeosalised vastused koosnevad päisest, mis sisaldab ühte mitmeosalisest sisutüübist, millele järgnevad piirimärgiga eraldatud osad ja igaühel on oma osa spetsiifiline sisutüüp.
Funktsioonis def gen (): rakendame generaatori funktsiooni lõpmatus silmusesse, mis jäädvustab pildi, saadab selle def execute (img): function, saades pildi, mis saadetakse pärast seda veebilehele.
def execute (img): funktsioon on koht, kus kogu maagia juhtub, see võtab pildi, muudab selle suurust OpenCV abil ja edastab selle Jetbot ObjectDetector klassi eksemplarile "model". Tagastab tagastab tuvastuste loendi ja me kasutame OpenCV abil nende ümber siniseid ristkülikuid ja kirjutame märkmeid objekti tuvastatud klassiga. Pärast seda kontrollime, kas meie huvipakkuv objekt on tuvastatud
Kui soovite, et teie robot järgiks teisi objekte, saate selle numbri (53) muuta CoCo andmekogumist teisele numbrile, 53 on õun. Kogu loend on kategoorias.py.
Lõpuks, kui 5 sekundi jooksul objekti ei tuvastata, edastame märgi "5", et robot saaks seeria kohal peatuda. Kui objekt leitakse, arvutame välja, kui kaugel see on kujutise keskpunktist, ja tegutseme vastavalt (kui keskpunkti lähedal, minge otse (seerias märk 1), vasakul vasakul jne). Nende väärtustega saate mängida, et valida oma konkreetse seadistuse jaoks parim!
4. samm: lõplikud mõtted
See on ObjectFollowing demo põhisisu. Kui soovite Flaski veebiserveri video voogesituse kohta rohkem teada saada, saate vaadata seda suurepärast Miguel Grinbergi õpetust.
Siin saate vaadata ka Nvidia Jetbot Object Detection märkmikku.
Loodan, et minu Jetboti demode rakendused aitavad teie robotit Jetboti raamistiku abil üles ehitada. Ma ei rakendanud takistuste vältimise demot, kuna arvan, et mudeli valik ei anna häid takistuste vältimise tulemusi.
Kui teil on küsimusi, lisage mind LinkedIdi ja tellige minu YouTube'i kanal, et saada märguandeid huvitavamate masinõppe ja robootikaga seotud projektide kohta.
Soovitan:
Suitsu tuvastamise korral SMS -ide saatmine (Arduino+GSM SIM900A: 5 sammu
Suitsu tuvastamise korral SMS -ide saatmine (Arduino+GSM SIM900A: Tere kõigile! Esimesel juhendamisel teen gaasialarmi, mis saadab reostuse tuvastamisel kasutajale sõnumi. See on lihtne prototüüp, mis kasutab Arduino, GSM -moodulit ja elektrokeemiat suitsuandurit. Tulevikus saab seda laiendada
Värvi TCS3200 tuvastamise kasutamine SkiiiD -ga: 9 sammu
Kuidas kasutada funktsiooni Detect Color TCS3200 koos SkiiiD -ga: õpetus värvi TCS3200 tuvastamiseks koos skiiiD -ga
Smart Watchz koroonasümptomite tuvastamise ja andmete registreerimisega: 10 sammu
Smart Watchz koroonasümptomite tuvastamise ja andmete registreerimisega: see on nutikell, millel on koroonasümptomite tuvastamine, kasutades LM35 ja kiirendusmõõturit koos andmete logimisega serveris. Rtc -d kasutatakse aja kuvamiseks ja telefoniga sünkroonimiseks ning andmete salvestamiseks. Esp32 kasutatakse ajuna koos ajukoore kontrolleriga, millel on sinine
Nvidia Jetson Nano õpetus - Esimene pilk AI ja ML abil: 7 sammu
Nvidia Jetson Nano õpetus | Esimene pilk AI ja ML -ga: Hei, mis toimub, poisid! Akarsh siin CETechist. Täna vaatame Nvidia uut SBC -d, mis on Jetson Nano, Jetson Nano on keskendunud tehisintellekti tehnikatele, nagu pildituvastus jne
Arduino valguse tuvastamise õpetus: 3 sammu (piltidega)
Arduino valguse tuvastamise õpetus: pärast selle õpetuse lõpetamist saate teada, kuidas saate tuvastada muutusi teie ümbritseva valguse tasemes. Selle projekti osad andis Kuman. Need leiate nende Arduino UNO stardikomplektist