Sadržaj:
- Korak 1: Pripremite svoj hardver
- Korak 2: Instalirajte potrebne pakete
- Korak 3: Pokrenite kôd
- Korak 4: Završne misli
Video: Jetson Nano Četveronožni robotski objekt za otkrivanje objekata: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Nvidia Jetson Nano je komplet za razvojne programere, koji se sastoji od SoM -a (System on Module) i referentne ploče nositelja. Prvenstveno je namijenjen stvaranju ugrađenih sustava koji zahtijevaju veliku procesorsku snagu za aplikacije strojnog učenja, strojnog vida i video obrade. Detaljnu recenziju možete pogledati na mom YouTube kanalu.
Nvidia je nastojala učiniti Jetson Nano što jednostavnijim i lakšim za razvoj projekata. Čak su pokrenuli i mali tečaj o tome kako izgraditi svog robota s Jetsonom Nanom, nekoliko dana nakon što je ploča pokrenuta. Detalje o tom projektu možete pronaći ovdje.
Međutim, i sam sam imao nekoliko problema s Jetbotom kao projektom:
1) Nije mi bilo dovoljno EPIC. Jetson Nano je vrlo zanimljiva ploča s velikim mogućnostima obrade i izrada jednostavnog robota na kotačima s njom samo se činila kao vrlo… nepotrebna stvar za napraviti.
2) Odabir hardvera. Jetbotu je potreban skup hardver/koji se može zamijeniti drugim alternativama - na primjer, za rad u daljinskom upravljaču koriste joystick. Zvuči zabavno, ali trebam li doista joystick za upravljanje robotom?
Tako sam odmah nakon što sam se dočepao Jetsona Nanoa počeo raditi na svom projektu, Jetspideru. Ideja je bila replicirati osnovne demonstracije koje je Jetbot imao, ali s uobičajenijim hardverom i primjenjivim na širok spektar projekata.
Korak 1: Pripremite svoj hardver
Za ovaj projekt koristio sam rani prototip Zuri četveronožnog robota, koji je izradio Zoobotics. Dugo je ležao u laboratoriju naše tvrtke. Opremio sam ga laserski izrezanim drvenim držačem za Jetson Nano i postoljem za kameru. Njihov je dizajn vlasnički, pa ako za svog robota Jetson Nano želite stvoriti nešto slično, možete pogledati projekt Meped, koji je sličan četveronožac s dizajnom otvorenog koda. Zapravo, budući da nitko nije imao izvorni kod za Zurijev mikrokontroler (Arduino Mega) u našem laboratoriju, koristio sam kod iz Mepeda s nekim manjim prilagodbama pomaka nogu/stopala.
Koristio sam običnu web kameru kompatibilnu s USB Raspberry Pi i USB ključ za Wifi.
Glavna stvar je da budući da ćemo koristiti Pyserial za serijsku komunikaciju između mikrokontrolera i Jetson Nano, vaš sustav u biti može koristiti bilo koju vrstu mikrokontrolera, sve dok se može povezati s Jetson Nano s USB serijskim kabelom. Ako vaš robot koristi istosmjerne motore i upravljački program motora (na primjer L298P), moguće je izravno sučelje upravljačkog programa motora s Jetson Nano GPIO. No, nažalost, za upravljanje servo pogonima možete koristiti samo drugi mikrokontroler ili namjenski I2C servo upravljački program, budući da Jetson Nano nema hardverski GPIO PWM.
Ukratko, možete koristiti vrstu robota sa bilo kojim mikrokontrolerom koji se može povezati s Jetson Nano pomoću USB podatkovnog kabela. Prenio sam kôd za Arduino Mega u spremište github za ovaj vodič, a dio relevantan za povezivanje Jetsona Nanoa s Arduinom nalazi se ovdje:
if (Serial.available ()) {switch (Serial.read ()) {
{
slučaj '1':
naprijed();
pauza;
slučaj '2':
leđa();
pauza;
slučaj '3':
skrenuti desno();
pauza;
slučaj '4':
skrenite lijevo();
pauza;
Provjeravamo postoje li dostupni podaci, a ako jesu, prosljeđujemo ih upravljačkoj strukturi razvodne kutije. Obratite pažnju da podaci iz serije dolaze kao znakovi, uočite jedan navodnik oko brojeva 1, 2, 3, 4.
Korak 2: Instalirajte potrebne pakete
Srećom po nas, zadana slika sustava Jetson Nano dolazi s puno unaprijed instaliranih stvari (poput OpenCV-a, TensorRT-a itd.), Pa moramo samo instalirati nekoliko drugih paketa kako bi kôd funkcionirao i omogućio SSH.
Počnimo s omogućavanjem SSH -a u slučaju da želite daljnji dio posla obaviti na daljinu.
sudo apt ažuriranje
sudo apt install openssh-server
SSH poslužitelj automatski će se pokrenuti.
Za povezivanje s Ubuntu strojem putem LAN -a potrebno je samo unijeti sljedeću naredbu:
ssh korisničko ime@ip_adresa
Ako imate Windows stroj, morat ćete instalirati SSH klijent, na primjer Putty.
Počnimo s instaliranjem programa Python Package Manager (pip) i Pillow za manipulaciju slikama.
sudo apt install python3-pip python3-pil
Zatim ćemo instalirati Jetbot spremište, budući da se oslanjamo na neke dijelove njegova okvira za izvođenje otkrivanja objekata.
sudo apt install python3-smbus python-pyserial
git clone
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py install
Konačno klonirajte moje spremište Github za ovaj projekt u svoju kućnu mapu i instalirajte Flask i neke druge pakete za robotsko daljinsko upravljanje pomoću web poslužitelja.
git klon
CD
sudo pip3 install -r requirements -opencv
Preuzmite unaprijed obučeni model SSD -a (Single Shot Detector) s ove veze i postavite ga u mapu jetspider_demos.
Sada smo spremni za pokret!
Korak 3: Pokrenite kôd
Napravio sam dvije demonstracije za Jetspider, prva je jednostavna teleopracija, vrlo slična onoj koju sam ranije napravio za rover Banana Pi, a druga koristi TensorRT za otkrivanje objekata i šalje naredbe kretanja preko serijske veze na mikrokontroler.
Budući da je većina teleopracionog koda opisana u mom drugom vodiču (napravio sam samo neke manje izmjene, nadograđujući prijenos videozapisa) ovdje ću se usredotočiti na dio Otkrivanje objekata.
Glavna skripta za slijedeći objekt je object_following.py u jetspider_object_following, za teleoperaciju je spider_teleop.py u jetspider_teleoperation.
Skripta objekta koja slijedi počinje uvozom potrebnih modula i deklariranjem varijabli i instanci klase. Zatim ovom linijom pokrećemo Flask web poslužitelj
app.run (host = '0.0.0.0', threaded = True)
Čim otvorimo 0.0.0.0 (localhost) adresu u našem web pregledniku ili Jetson Nano adresu na mreži (može se provjeriti pomoću naredbe ifconfig), ova će se funkcija izvršiti
def indeks ():
On prikazuje predložak web stranice koji imamo u mapi predlošci. Predložak ima ugrađen video izvor, pa će se po dovršetku učitavanja izvršiti def video_feed (): koji vraća objekt odgovora koji je inicijaliziran funkcijom generatora.
Tajna za implementaciju ažuriranja na mjestu (ažuriranje slike na web stranici za naš video stream) je korištenje odgovora s više dijelova. Višečlani odgovori sastoje se od zaglavlja koje uključuje jednu od višedijelnih vrsta sadržaja, nakon čega slijede dijelovi, odvojeni graničnom oznakom i svaki ima svoju vrstu sadržaja specifičnu za dio.
U def gen (): funkciji implementiramo funkciju generatora u beskonačnoj petlji koja snima sliku, šalje je na def execute (img): function, dajući sliku koja se nakon toga šalje na web stranicu.
def execute (img): funkcija je mjesto gdje se događa sva čarolija, ona uzima sliku, mijenja joj veličinu pomoću OpenCV -a i prosljeđuje je Jetbot ObjectDetector klasi instance "model". On vraća popis otkrivanja, a mi koristimo OpenCV za crtanje plavih pravokutnika oko njih i pisanje napomena s klasom otkrivenih objekata. Nakon toga provjeravamo postoji li otkriven objekt od našeg interesamatching_detections = [d za d u detekcijama [0] ako je d ['oznaka'] == 53]
Taj broj (53) možete promijeniti u drugi broj iz CoCo skupa podataka ako želite da vaš robot prati druge objekte, 53 je jabuka. Cijeli popis nalazi se u datoteci categories.py.
Konačno, ako nema otkrivenog objekta tijekom 5 sekundi, prenosimo znak "5" da bi se robot zaustavio preko serije. Ako se objekt pronađe, izračunamo koliko je udaljen od središta slike i ponašamo se u skladu s tim (ako je blizu središta, idite ravno (znak "1" na serijskom dijelu), ako je s lijeve strane, idite lijevo itd.). Možete se igrati s tim vrijednostima kako biste odredili najbolje za svoju postavku!
Korak 4: Završne misli
Ovo je srž demonstracije ObjectFollowinga, ako želite saznati više o streamingu videa na web poslužitelju Flask, možete pogledati ovaj sjajni vodič Miguela Grinberga.
Ovdje također možete pogledati bilježnicu Nvidia Jetbot Object Detection.
Nadam se da će moje implementacije Jetbot demonstracija pomoći u izgradnji vašeg robota pomoću Jetbot okvira. Nisam proveo demonstraciju izbjegavanja prepreka, jer mislim da odabir modela neće dati dobre rezultate izbjegavanja prepreka.
Dodajte me na LinkedId ako imate pitanja i pretplatite se na moj YouTube kanal kako biste primali obavijesti o zanimljivijim projektima koji uključuju strojno učenje i robotiku.
Preporučeni:
Otkrivanje objekata s Sipeed MaiX pločama (Kendryte K210): 6 koraka
Otkrivanje objekata pomoću Sipeed MaiX ploča (Kendryte K210): Kao nastavak mog prethodnog članka o prepoznavanju slika sa Sipeed MaiX pločama, odlučio sam napisati još jedan vodič s naglaskom na otkrivanje objekata. Nedavno se pojavio neki zanimljiv hardver s čipom Kendryte K210, uključujući S
MASINA PI Pi OTKRIVANJE OBJEKATA S VISE KAMERA: 3 koraka
RASPBERRY PI Pi OTKRIVANJE OBJEKATA S VISE KAMERA: Uvod ću kratko opisati, jer sam naslov sugerira koja je glavna svrha instrukcija. U ovom uputstvu korak po korak objasnit ću vam kako spojiti više kamera poput 1-pi kamere i barem jednu USB kameru ili 2 USB kamere
[Uradi sam] Spider Robot (četveronožni, četveronožni): 14 koraka (sa slikama)
[DIY] Spider Robot (četveronožni, četveronožni): Ako trebate dodatnu podršku od mene, bit će bolje da mi date neku prikladnu donaciju: http: //paypal.me/RegisHsu2019-10-10 ažuriranje: Novi prevoditelj uzrokovat će problem izračuna plutajućeg broja. Već sam izmijenio kôd. 2016-03-26
Otkrivanje objekata W/ Dragonboard 410c ili 820c pomoću OpenCV -a i Tensorflow .: 4 koraka
Object Detection W/ Dragonboard 410c ili 820c pomoću OpenCV -a i Tensorflow -a .: Ove upute opisuju kako instalirati OpenCV, Tensorflow i okvire strojnog učenja za Python 3.5 za pokretanje aplikacije Object Detection
Otkrivanje objekata tijekom vožnje RC automobilom: 9 koraka
Otkrivanje objekata tijekom vožnje RC automobila: Ovaj projekt govori o upotrebi ultrazvučnih senzora na automobilu za otkrivanje prepreka