Sisällysluettelo:
- Vaihe 1: Valmistele laitteisto
- Vaihe 2: Asenna tarvittavat paketit
- Vaihe 3: Suorita koodi
- Vaihe 4: Viimeiset ajatukset
Video: Jetson Nanon nelijalkainen robottiobjektin tunnistusopetus: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Nvidia Jetson Nano on kehittäjäpaketti, joka koostuu SoM -järjestelmästä (System on Module) ja viitekortista. Se on tarkoitettu ensisijaisesti sulautettujen järjestelmien luomiseen, jotka vaativat suurta prosessointitehoa koneoppimiseen, konenäköön ja videonkäsittelyyn. Voit katsoa sen yksityiskohtaisen arvostelun YouTube -kanavallani.
Nvidia on yrittänyt tehdä Jetson Nanosta mahdollisimman käyttäjäystävällisen ja helposti kehitettävän projektin. He jopa aloittivat pienen kurssin robotin rakentamisesta Jetson Nanon kanssa päiviä levyn julkaisun jälkeen. Löydät projektin yksityiskohdat täältä.
Minulla oli kuitenkin muutamia ongelmia Jetbotin kanssa projektina:
1) Se ei ollut tarpeeksi EPIC minulle. Jetson Nano on erittäin mielenkiintoinen levy, jolla on erinomaiset käsittelyominaisuudet ja yksinkertaisen pyörillä varustetun robotin tekeminen sen kanssa vain tuntui erittäin… aliarvioivalta.
2) Laitteiston valinta. Jetbot vaatii kalliita laitteistoja, jotka voidaan korvata muilla vaihtoehdoilla - esimerkiksi he käyttävät ohjaussauvaa etäkäyttöön. Kuulostaa hauskalta, mutta tarvitsenko todella ohjaussauvan robotin ohjaamiseen?
Joten heti sen jälkeen, kun sain käsiini Jetson Nanon, aloin työskennellä oman projektini, Jetspiderin, parissa. Ajatuksena oli toistaa Jetbotin perusdemot, mutta yleisemmällä laitteistolla ja sovellettavissa laajempaan valikoimaan projekteja.
Vaihe 1: Valmistele laitteisto
Tässä projektissa käytin Zooboticsin valmistamaa Zuri -nelijalkaisen robotin varhaista prototyyppiä. Se makasi yrityksemme laboratoriossa pitkään. Varustin sen laserleikatulla puukiinnikkeellä Jetson Nanolle ja kameratelineellä. Niiden muotoilu on oma, joten jos haluat luoda Jetson Nano -robotillesi jotain vastaavaa, voit tutustua Meped-projektiin, joka on samanlainen nelijalkainen avoimen lähdekoodin suunnittelulla. Itse asiassa, koska kenelläkään ei ollut laboratoriossamme Zurin mikrokontrollerin (Arduino Mega) lähdekoodia, käytin Mepedin koodia pienillä säätöillä jaloissa/jaloissa.
Käytin tavallista USB Raspberry Pi -yhteensopivaa verkkokameraa ja Wifi-USB-sovitinta.
Pääasia on, että koska aiomme käyttää Pyseriaa sarjaliikenteeseen mikro -ohjaimen ja Jetson Nanon välillä, järjestelmäsi voi käytännössä käyttää mitä tahansa mikro -ohjainta, kunhan se voidaan liittää Jetson Nanon kanssa USB -sarjakaapelilla. Jos robotti käyttää tasavirtamoottoreita ja moottoriajuria (esimerkiksi L298P-pohjainen), moottorin ohjain voidaan liittää suoraan Jetson Nano GPIO -laitteeseen. Mutta valitettavasti servojen ohjaamiseen voit käyttää vain toista mikro -ohjainta tai omaa I2C -servo -ohjainta, koska Jetson Nano ei sisällä laitteistokäyttöistä GPIO PWM -tekniikkaa.
Yhteenvetona voidaan sanoa, että robottityyppiä voidaan käyttää minkä tahansa mikro -ohjaimen kanssa, joka voidaan liittää Jetson Nano -laitteeseen USB -datakaapelilla. Latasin Arduino Megan koodin tämän opetusohjelman github -arkistoon, ja osa, joka liittyy Jetson Nanon liittämiseen Arduinon kanssa, on täällä:
if (Serial.available ()) {switch (Serial.read ()) {
{
tapaus '1':
eteenpäin();
tauko;
tapaus '2':
takaisin();
tauko;
tapaus '3':
käänny oikealle();
tauko;
tapaus '4':
käänny vasemmalle();
tauko;
Tarkistamme, onko tietoja saatavilla, ja jos on, välitämme ne kytkentäkotelon ohjausrakenteelle. Huomaa, että sarjan tiedot tulevat merkkinä, huomaa lainausmerkki numeroiden 1, 2, 3, 4 ympärillä.
Vaihe 2: Asenna tarvittavat paketit
Meille onneksi Jetson Nano -järjestelmän oletuskuvan mukana tulee paljon esiasennettua tavaraa (kuten OpenCV, TensorRT jne.), Joten meidän on asennettava vain pari muuta pakettia, jotta koodi toimii ja SSH otetaan käyttöön.
Aloitetaan ottamalla SSH käyttöön, jos haluat tehdä kaiken muun työn etänä.
sudo apt päivitys
sudo apt install openssh-server
SSH -palvelin käynnistyy automaattisesti.
Jos haluat muodostaa yhteyden Ubuntu -koneeseesi lähiverkon kautta, sinun tarvitsee vain syöttää seuraava komento:
ssh -käyttäjänimi@ip_address
Jos sinulla on Windows -kone, sinun on asennettava SSH -asiakas, esimerkiksi Putty.
Aloitetaan asentamalla Python Package Manager (pip) ja Pillow kuvankäsittelyyn.
sudo apt asenna python3-pip python3-pil
Asennamme sitten Jetbot -arkiston, koska luotamme joidenkin sen puitteiden osiin objektien havaitsemiseen.
sudo apt asentaa python3-smbus python-pyserial
git-klooni
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py install
Kloonaa lopulta Github -arkistoni tätä projektia varten kotikansioosi ja asenna Flask ja muut paketit robotin kauko -ohjausta varten verkkopalvelimen avulla.
git -klooni
CD
sudo pip3 asenna -r vaatimukset -opencv
Lataa esivalmistettu SSD (Single Shot Detector) -malli tästä linkistä ja aseta se jetspider_demos -kansioon.
Nyt on hyvä lähteä!
Vaihe 3: Suorita koodi
Tein kaksi demoa Jetspiderille, ensimmäinen on yksinkertainen teleoperaatio, joka on hyvin samanlainen kuin mitä tein aiemmin Banana Pi roverille, ja toinen käyttää TensorRT: tä objektien havaitsemiseen ja lähettää liikekomennot sarjayhteyden kautta mikrokontrolleriin.
Koska suurin osa teleopraatiokoodista on kuvattu toisessa opetusohjelmassani (tein vain pieniä hienosäätöjä, videon lähetyksen uudelleenluokittelua), keskityn tässä objektin tunnistusosaan.
Objektien seuraamisen pääskripti on object_following.py in jetspider_object_following, teleoperaatio on spider_teleop.py in jetspider_teleoperation.
Objektia seuraava komentosarja alkaa tarvittavien moduulien tuomisella ja muuttujien ja luokka -ilmentymien ilmoittamisella. Sitten aloitamme Flask -verkkopalvelimen tällä rivillä
app.run (isäntä = '0.0.0.0', threaded = True)
Heti kun avaamme 0.0.0.0 (localhost) -osoitteen verkkoselaimessamme tai Jetson Nano -osoitteen verkossa (voi tarkistaa ifconfig -komennolla), tämä toiminto suoritetaan
def -indeksi ():
Se tekee Web -sivumallin, joka meillä on Mallit -kansiossa. Malliin on upotettu videolähde, joten kun lataus on valmis, suoritetaan def video_feed ():, joka palauttaa vastausobjektin, joka on alustettu generaattoritoiminnolla.
Paikan päällä olevien päivitysten (videovirran verkkosivun kuvan päivittäminen) salaisuus on käyttää moniosaista vastausta. Moniosaiset vastaukset koostuvat otsikosta, joka sisältää yhden moniosaisista sisältötyypeistä, joita seuraa osat, jotka on erotettu rajamerkillä ja joilla jokaisella on oma osakohtainen sisältötyypinsä.
Def gen (): -funktiossa toteutamme generaattoritoiminnon äärettömässä silmukassa, joka kaappaa kuvan ja lähettää sen def execute (img): function -toimintoon, jolloin kuva lähetetään sen jälkeen verkkosivulle.
def execute (img): toiminto on missä kaikki taikuus tapahtuu, se ottaa kuvan, muuttaa sen kokoa OpenCV: llä ja välittää sen Jetbot ObjectDetector -luokan esiintymälle "model". Se palauttaa palauttaa havaitsemisluettelon ja piirtämme OpenCV: n avulla siniset suorakulmiot niiden ympärille ja kirjoitamme huomautuksia objektin havaitsemalla luokalla. Tämän jälkeen tarkistamme, onko kiinnostavaa kohdetta havaittumatching_detections = [d d d havainnoissa [0] jos d ['label'] == 53]
Voit muuttaa tämän numeron (53) toiseksi CoCo -tietojoukon numeroksi, jos haluat, että robotti seuraa muita kohteita, 53 on omena. Koko luettelo on category.py -tiedostossa.
Lopuksi, jos mitään kohdetta ei havaita 5 sekuntiin, lähetämme merkin "5", jotta robotti pysähtyy sarjan yli. Jos kohde löytyy, laskemme kuinka kaukana se on kuvan keskustasta ja toimimme sen mukaisesti (jos lähellä keskustaa, mene suoraan (sarja "1"), jos vasemmalla, mene vasemmalle jne.). Voit pelata näiden arvojen avulla määrittääksesi parhaiten asetuksellesi!
Vaihe 4: Viimeiset ajatukset
Tämä on ObjectFollowing -esittelyn ydin, jos haluat tietää lisää Flask -verkkopalvelimen videon suoratoistosta, voit katsoa tätä Miguel Grinbergin hienoa opetusohjelmaa.
Voit myös katsoa Nvidia Jetbot Object Detection -muistikirjaa täältä.
Toivon, että Jetbot -esittelyjeni toteutukset auttavat rakentamaan robottisi Jetbot -kehyksen avulla. En toteuttanut esteiden välttämisen esittelyä, koska mielestäni mallin valinta ei tuota hyviä esteiden välttämisen tuloksia.
Lisää minut LinkedIdiin, jos sinulla on kysyttävää, ja tilaa YouTube -kanavani, niin saat ilmoituksen mielenkiintoisimmista koneoppimista ja robotiikkaa koskevista projekteista.
Suositeltava:
3D -tulostettu Arduino -käyttöinen nelijalkainen robotti: 13 vaihetta (kuvilla)
3D -painettu Arduino -käyttöinen nelijalkainen robotti: Aiemmista Instructables -ohjelmista näet todennäköisesti, että olen syvästi kiinnostunut robottiprojekteista. Edellisen Instructable -ohjelman jälkeen, jossa rakensin kaksijalkaisen robotin, päätin kokeilla ja tehdä nelijalkaisen robotin, joka kykenee matkimaan eläimiä, kuten koiraa
GorillaBot 3D -painettu Arduino -itsenäinen sprintin nelijalkainen robotti: 9 vaihetta (kuvilla)
GorillaBot 3D -painettu Arduino -autonomiset sprintin nelijalkaiset robotit: Joka vuosi Toulousessa (Ranska) järjestetään Toulousen robottikilpailu #TRR2021Kilpailu koostuu 10 metrin itsenäisestä sprintistä kaksijalkaisille ja nelijalkaisille roboteille. 10 metrin sprintti, joten metreissä
Aloittaminen edullisen RPLIDARin avulla Jetson Nanon avulla: 5 vaihetta
Aloittaminen edullisen RPLIDAR-laitteen kanssa Jetson Nanon käyttö: Lyhyt katsaus Valon tunnistus ja etäisyys (LiDAR) toimii samalla tavalla kuin ääniaaltojen sijasta käytetään laserpulssilla varustettuja ultraääni-etäisyysmittaria. Yandex, Uber, Waymo ja muut investoivat voimakkaasti LiDAR -tekniikkaan autonomisessa autossaan
Jetson Nanon pakkauksen purkaminen ja pika-aloitus kahden vision esittelyyn: 4 vaihetta
Jetson Nanon pakkauksen purkaminen ja pika-aloitus kahden vision esittelyyn: Yhteenveto Kuten tiedät, Jetson Nano on nyt tähtituote. Ja se voi laajasti ottaa käyttöön hermoverkkotekniikkaa sulautetuissa järjestelmissä. Tässä on pakkauksen avaamaton artikkeli tuotteen yksityiskohdista, käynnistysprosessista ja kahdesta visuaalisesta esittelystä … Sanamäärä: 800
Arduino -valon tunnistusopetus: 3 vaihetta (kuvilla)
Arduino -valon tunnistusopetus: Tämän opetusohjelman suorittamisen jälkeen opit tunnistamaan muutokset ympärilläsi olevissa valotasoissa. Osat tähän projektiin toimitti Kuman. Löydät ne Arduino UNO -aloituspaketista