Kazalo:
- 1. korak: Pripravite strojno opremo
- 2. korak: Namestite potrebne pakete
- 3. korak: Zaženite kodo
- 4. korak: Zadnje misli
Video: Vadnica za odkrivanje štirikratnih robotskih objektov Jetson Nano: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Nvidia Jetson Nano je komplet za razvijalce, ki je sestavljen iz SoM (System on Module) in referenčne nosilne plošče. Namenjen je predvsem ustvarjanju vgrajenih sistemov, ki zahtevajo veliko procesorsko moč za aplikacije strojnega učenja, strojnega vida in obdelave videa. Podroben pregled zanj si lahko ogledate na mojem kanalu YouTube.
Nvidia je poskušala narediti Jetson Nano čim bolj prijaznim in enostavnim za razvoj projektov. Nekaj dni po predstavitvi plošče so celo uvedli majhen tečaj o tem, kako z Jetsonom Nanom sestaviti svojega robota. Podrobnosti o tem projektu najdete tukaj.
Vendar sem imel sam nekaj projektov z Jetbotom kot projektom:
1) Ni mi bilo dovolj EPIC. Jetson Nano je zelo zanimiva plošča z odličnimi zmožnostmi obdelave in izdelava preprostega robota na kolesih se je zdela zelo… neprijetna stvar.
2) Izbira strojne opreme. Jetbot zahteva nekaj strojne opreme, ki jo je mogoče zamenjati z drugimi možnostmi - na primer za krmiljenje na daljavo uporabljajo krmilno palčko. Sliši se zabavno, a res potrebujem igralno palico za nadzor robota?
Tako sem takoj, ko sem prišel v roke Jetsona Nana, začel delati na svojem projektu, Jetspiderju. Zamisel je bila ponoviti osnovne predstavitve, ki jih je imel Jetbot, vendar s pogostejšo strojno opremo in uporabno za več različnih projektov.
1. korak: Pripravite strojno opremo
Za ta projekt sem uporabil zgodnji prototip štirinožnega robota Zuri, ki ga je izdelal Zoobotics. Dolgo je ležal v laboratoriju našega podjetja. Opremil sem ga z lasersko izrezanim lesenim nosilcem za Jetson Nano in nosilcem za kamero. Njihova zasnova je lastniška, zato, če želite za svojega robota Jetson Nano ustvariti nekaj podobnega, si lahko ogledate projekt Meped, ki je podobno štirikotni z odprtokodno zasnovo. Pravzaprav, ker nihče ni imel izvorne kode za Zurijev mikrokrmilnik (Arduino Mega) v našem laboratoriju, sem uporabil kodo iz Mepeda z nekaj manjšimi prilagoditvami odmika nog/stopal.
Uporabil sem običajno spletno kamero, združljivo z USB Raspberry Pi, in USB ključek Wifi.
Glavna stvar je, da ker bomo Pyserial uporabljali za serijsko komunikacijo med mikrokrmilnikom in Jetson Nano, lahko vaš sistem v bistvu uporablja katero koli vrsto mikrokrmilnika, če je le -ta lahko povezan z Jetson Nano s serijskim kablom USB. Če vaš robot uporablja enosmerne motorje in gonilnik motorja (na primer L298P), je mogoče neposredno povezati gonilnik motorja z Jetson Nano GPIO. Na žalost pa za krmiljenje servomotorjev lahko uporabite le drug mikrokrmilnik ali namenski gonilnik servomotorja I2C, saj Jetson Nano nima strojne opreme GPIO PWM.
Če povzamemo, lahko uporabite tip robota s katerim koli mikrokrmilnikom, ki ga lahko povežete z Jetson Nano s podatkovnim kablom USB. Kodo za Arduino Mega sem naložil v skladišče github za to vadnico, del pomemben za povezovanje Jetson Nano z Arduinom pa je tukaj:
if (Serial.available ()) {switch (Serial.read ()) {
{
primer '1':
naprej ();
zlom;
primer '2':
nazaj ();
zlom;
primer '3':
zavij desno();
zlom;
primer '4':
zavijemo levo();
zlom;
Preverimo, ali so na voljo podatki, in če so, jih posredujemo v krmilno strukturo stikalne omarice. Bodite pozorni, da so podatki iz serije na voljo kot znaki, opazite enojni narekovaj okoli številk 1, 2, 3, 4.
2. korak: Namestite potrebne pakete
Na srečo privzeta sistemska slika Jetson Nano vsebuje veliko vnaprej nameščenih stvari (na primer OpenCV, TensorRT itd.), Zato moramo namestiti le nekaj drugih paketov, da bo koda delovala in omogočila SSH.
Začnimo z omogočanjem SSH, če želite vse ostalo delo opraviti na daljavo.
sudo apt posodobitev
sudo apt namestite strežnik openssh
Strežnik SSH se bo samodejno zagnal.
Če se želite povezati z računalnikom Ubuntu prek LAN -a, morate vnesti le naslednji ukaz:
ssh uporabniško ime@ip_address
Če imate računalnik z operacijskim sistemom Windows, boste morali namestiti odjemalca SSH, na primer Putty.
Začnimo z namestitvijo Python Package Manager (pip) in Pillow za manipulacijo slik.
sudo apt namestite python3-pip python3-pil
Nato bomo namestili skladišče Jetbot, saj se za odkrivanje objektov zanašamo na nekatere dele njegovega okvira.
sudo apt namestite python3-smbus python-pyserial
git clone
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py install
Končno klonirajte moje skladišče Github za ta projekt v domačo mapo in namestite Flask in nekatere druge pakete za robotski daljinski upravljalnik prek spletnega strežnika.
git clone
cd
sudo pip3 install -r requirements -opencv
Prenesite predhodno usposobljeni model SSD (Single Shot Detector) s te povezave in ga postavite v mapo jetspider_demos.
Zdaj smo pripravljeni!
3. korak: Zaženite kodo
Za Jetspider sem naredil dve predstavitvi, prva je preprosta teleoperacija, zelo podobna tisti, ki sem jo prej naredil za rover Banana Pi, druga pa uporablja TensorRT za zaznavanje predmetov in pošilja ukaze za premikanje prek serijske povezave na mikrokrmilnik.
Ker je večina kode teleoperacije opisana v mojem drugem vodiču (naredil sem le nekaj manjših popravkov in prenovil video prenos), se bom tukaj osredotočil na del Odkrivanje objektov.
Glavni skript za sledenje objektu je object_following.py v jetspider_object_following, za teleoperacijo pa spider_teleop.py v jetspider_teleoperation.
Skript predmeta, ki sledi, se začne z uvozom potrebnih modulov in razglasitvijo spremenljivk in primerkov razreda. Nato s to vrstico zaženemo spletni strežnik Flask
app.run (host = '0.0.0.0', threaded = True)
Takoj, ko v spletnem brskalniku odpremo naslov 0.0.0.0 (localhost) ali naslov Jetson Nano v omrežju (lahko preverite z ukazom ifconfig), bo ta funkcija izvedena
indeks def ():
Upodobi predlogo spletne strani, ki jo imamo v mapi predloge. V predlogo je vgrajen video vir, zato se po končanem nalaganju izvede def video_feed ():, ki vrne objekt Response, ki se inicializira s funkcijo generatorja.
Skrivnost izvajanja posodobitev na mestu (posodabljanje slike na spletni strani za naš video tok) je uporaba večoddelnega odgovora. Večdelni odzivi so sestavljeni iz glave, ki vključuje eno od večdelnih vrst vsebine, ki ji sledijo deli, ločeni z robnim označevalnikom in vsak ima svojo vrsto vsebine, značilno za del.
V funkciji def gen (): implementiramo funkcijo generatorja v neskončno zanko, ki zajame sliko, jo pošlje v funkvo def execute (img): funkcijo, po kateri se slika pošlje na spletno stran.
def execute (img): funkcija je tam, kjer se zgodi vsa čarovnija, vzame sliko, ji spremeni velikost z OpenCV in jo posreduje primerku razreda "model" Jetbot ObjectDetector. Vrne vrne seznam zaznav, z OpenCV -jem pa okoli njih narišemo modre pravokotnike in napišemo opombe z razredom zaznanih objektov. Po tem preverimo, ali je odkrit predmet, ki nas zanima, matching_detections = [d za d v zaznavanjih [0], če je d ['oznaka'] == 53]
To številko (53) lahko spremenite v drugo številko iz nabora podatkov CoCo, če želite, da vaš robot sledi drugim predmetom, 53 je jabolko. Celoten seznam je v datoteki categories.py.
Nazadnje, če v 5 sekundah ni zaznanega nobenega predmeta, pošljemo znak "5", da se robot ustavi nad serijo. Če najdemo predmet, izračunamo, kako daleč je od središča slike, in ukrepamo v skladu s tem (če je blizu središča, pojdite naravnost (znak "1" na zaporedju), če je na levi, pojdite levo itd.). Lahko se igrate s temi vrednostmi, da določite najboljše za svojo nastavitev!
4. korak: Zadnje misli
To je bistvo predstavitve ObjectFollowing. Če želite izvedeti več o pretakanju videa s spletnega strežnika Flask, si lahko ogledate to odlično vadnico Miguela Grinberga.
Tukaj si lahko ogledate tudi prenosni računalnik Nvidia Jetbot Object Detection.
Upam, da bodo moje implementacije predstavitev Jetbota pomagale pri izdelavi vašega robota z uporabo okvira Jetbot. Nisem izvedel demonstracije izogibanja oviram, saj menim, da izbira modela ne bo prinesla dobrih rezultatov izogibanja oviram.
Če imate kakršno koli vprašanje, me dodajte na LinkedId in se naročite na moj YouTube kanal, da boste obveščeni o zanimivejših projektih, ki vključujejo strojno učenje in robotiko.
Priporočena:
Top 5 robotskih avtomobilov Arduino, ki vas bodo navdušili: 11 korakov
Top 5 robotskih avtomobilov Arduino, ki vas bodo navdušili. Pozdravljeni prijatelji, v tej vadnici bomo videli top 5 inteligentnih robotskih avtomobilov leta 2020 s popolnimi koraki, kodo in vezjem. V zgornjem videu si lahko ogledate delovanje vseh teh robotov. V teh projektih boste vmesnik: " Izogibanje robu mize
Odkrivanje objektov Raspberry Pi: 7 korakov
Odkrivanje objektov Raspberry Pi: Ta priročnik vsebuje navodila po korakih za nastavitev API-ja za zaznavanje objektov TensorFlow na Raspberry Pi. Če sledite korakom v tem priročniku, boste lahko z vašo Raspberry Pi uporabili zaznavanje predmetov na videoposnetku v živo iz naprave P
MALINA PI Pi Odkrivanje objektov z več kamerami: 3 koraki
RASPBERRY PI Pi DETEKCIJA OBJEKTOV Z VEČ KAMERAMI: V uvodu bom kratek, saj že sam naslov pove, kaj je glavni namen poučevanja. V tem navodilu po korakih vam bom razložil, kako povezati več kamer, na primer 1-pi kamero in vsaj eno kamero USB ali 2 kameri USB.
Odkrivanje objektov W/ Dragonboard 410c ali 820c z uporabo OpenCV in Tensorflow .: 4 koraki
Object Detection W/ Dragonboard 410c ali 820c z uporabo OpenCV in Tensorflow .: Ta navodila opisujejo, kako namestiti ogrodja OpenCV, Tensorflow in strojnega učenja za Python 3.5 za zagon aplikacije Object Detection
HC -SR04 VS VL53L0X - Test 1 - Uporaba za uporabo v robotskih avtomobilih: 7 korakov
HC -SR04 VS VL53L0X - Test 1 - Uporaba za uporabo v robotskih avtomobilih: Ta navodila predlagajo preprost (čeprav čim bolj znanstveni) poskusni postopek za približno primerjavo učinkovitosti dveh najpogostejših senzorjev razdalje, ki sta popolnoma različnega fizičnega delovanja. HC-SR04 uporablja ultras