Turinys:
- 1 žingsnis: Paruoškite aparatūrą
- 2 veiksmas: įdiekite reikiamus paketus
- 3 veiksmas: paleiskite kodą
- 4 žingsnis: paskutinės mintys
Video: „Jetson Nano“keturkojo roboto objekto aptikimo pamoka: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
„Nvidia Jetson Nano“yra kūrėjų rinkinys, kurį sudaro „SoM“(„System on Module“) ir etaloninė nešiklio plokštė. Jis visų pirma skirtas kurti įterptąsias sistemas, kurioms reikia didelės apdorojimo galios mašininio mokymosi, mašininio matymo ir vaizdo apdorojimo programoms. Išsamią apžvalgą galite peržiūrėti mano „YouTube“kanale.
„Nvidia“stengėsi, kad „Jetson Nano“būtų kuo patogesnis vartotojui ir būtų lengvai kuriami projektai. Jie netgi pradėjo nedidelį kursą, kaip sukurti savo robotą su „Jetson Nano“, praėjus kelioms dienoms po lentos paleidimo. Išsamią informaciją apie projektą galite rasti čia.
Tačiau aš pats turėjau keletą problemų dėl „Jetbot“kaip projekto:
1) Man to nepakako EPIC. „Jetson Nano“yra labai įdomi lenta, turinti puikias apdorojimo galimybes, o paprasto rato roboto sukūrimas su ja atrodė labai… neįtikėtinas dalykas.
2) Techninės įrangos pasirinkimas. „Jetbot“reikalinga brangi aparatūra, kurią galima pakeisti kitomis alternatyvomis, pavyzdžiui, nuotoliniam naudojimui jie naudoja vairasvirtę. Skamba kaip smagu, bet ar man tikrai reikia vairasvirtės, kad galėčiau valdyti robotą?
Taigi, iškart po to, kai į rankas paėmiau „Jetson Nano“, pradėjau dirbti su savo projektu - „Jetspider“. Idėja buvo pakartoti pagrindines „Jetbot“demonstracines versijas, tačiau su įprasta aparatine įranga ir pritaikytina įvairesniems projektams.
1 žingsnis: Paruoškite aparatūrą
Šiam projektui panaudojau ankstyvą „Zuri“keturkojo roboto prototipą, kurį sukūrė „Zoobotics“. Ilgai gulėjo mūsų įmonės laboratorijoje. Aš jį aprūpinau lazeriu pjaustytu mediniu laikikliu „Jetson Nano“ir fotoaparato laikikliu. Jų dizainas yra patentuotas, todėl jei savo „Jetson Nano“robotui norite sukurti kažką panašaus, galite pažvelgti į „Meped“projektą, kuris yra panašus keturkojis su atviro kodo dizainu. Tiesą sakant, kadangi mūsų laboratorijoje niekas neturėjo Zuri mikrovaldiklio („Arduino Mega“) šaltinio kodo, aš naudoju „Meped“kodą, šiek tiek pakoreguodamas kojas/pėdas.
Naudojau įprastą su „Raspberry Pi“suderinamą interneto kamerą ir „Wifi“USB raktą.
Pagrindinis dalykas yra tai, kad kadangi mes ketiname naudoti „Pyserial“serijiniam ryšiui tarp mikrovaldiklio ir „Jetson Nano“, jūsų sistema iš esmės gali naudoti bet kokio tipo mikrovaldiklius, jei tik jie gali būti prijungti prie „Jetson Nano“su USB nuosekliu kabeliu. Jei jūsų robotas naudoja nuolatinės srovės variklius ir variklio tvarkyklę (pavyzdžiui, L298P), galima tiesiogiai prijungti variklio tvarkyklę prie „Jetson Nano GPIO“. Tačiau, deja, valdydami servo sistemas galite naudoti tik kitą mikrovaldiklį arba specialią I2C servo tvarkyklę, nes „Jetson Nano“neturi aparatinės įrangos GPIO PWM.
Apibendrinant, galite naudoti roboto tipą su bet kokiu mikrovaldikliu, kurį galima prijungti prie „Jetson Nano“naudojant USB duomenų kabelį. Aš įkėliau „Arduino Mega“kodą į šios pamokos „github“saugyklą, o dalis, susijusi su „Jetson Nano“sąsaja su „Arduino“, yra čia:
if (Serial.available ()) {switch (Serial.read ()) {
{
atvejis „1“:
Persiųsti();
pertrauka;
atvejis „2“:
atgal ();
pertrauka;
atvejis „3“:
Pasukite į dešinę();
pertrauka;
atvejis „4“:
Pasukite į kairę();
pertrauka;
Mes patikriname, ar yra duomenų, ir, jei yra, perduodame juos jungiklių dėklo valdymo struktūrai. Atkreipkite dėmesį, kad serijos duomenys pateikiami kaip simboliai, atkreipkite dėmesį į vieną kabutę aplink skaičius 1, 2, 3, 4.
2 veiksmas: įdiekite reikiamus paketus
Mūsų laimei, numatytasis „Jetson Nano“sistemos vaizdas turi daug iš anksto įdiegtų dalykų (pvz., „OpenCV“, „TensorRT“ir kt.), Todėl mums reikia įdiegti tik porą kitų paketų, kad kodas veiktų ir įjungtų SSH.
Pradėkime nuo SSH įgalinimo, jei visą likusį darbą norite atlikti nuotoliniu būdu.
sudo apt atnaujinimas
sudo apt install openssh-server
SSH serveris bus paleistas automatiškai.
Norėdami prisijungti prie „Ubuntu“kompiuterio per LAN, turite įvesti tik šią komandą:
ssh vartotojo vardas@ip_address
Jei turite „Windows“mašiną, turėsite įdiegti SSH klientą, pavyzdžiui, „Putty“.
Pradėkime diegdami „Python Package Manager“(pip) ir „Pillow“, skirtą manipuliuoti vaizdais.
sudo apt įdiegti python3-pip python3-pil
Tada įdiegsime „Jetbot“saugyklą, nes objektų aptikimui naudojame kai kurias jos sistemos dalis.
sudo apt įdiegti python3-smbus python-pyserial
git klonas
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py įdiegti
Galiausiai klonuokite mano šio projekto „Github“saugyklą į savo namų aplanką ir įdiekite „Flask“ir kai kuriuos kitus roboto nuotolinio valdymo paketus naudodami žiniatinklio serverį.
git klonas
cd
sudo pip3 įdiegti -r reikalavimai -opencv
Atsisiųskite iš anksto parengtą SSD (vieno šūvio detektoriaus) modelį iš šios nuorodos ir įdėkite jį į aplanką jetspider_demos.
Dabar mums gera eiti!
3 veiksmas: paleiskite kodą
Sukūriau dvi „Jetspider“demonstracines versijas, pirmoji yra paprasta teleoperacija, labai panaši į tą, kurią anksčiau padariau „Banana Pi“roveriui, o antroji naudoja „TensorRT“objektų aptikimui ir siunčia judesio komandas per nuoseklųjį ryšį į mikrovaldiklį..
Kadangi didžioji dalis teleopracijos kodo yra aprašyta kitoje mano pamokoje (aš padariau tik keletą nedidelių pakeitimų, vaizdo įrašų perdavimo pertvarkymas), čia sutelksiu dėmesį į objekto aptikimo dalį.
Pagrindinis scenarijus sekančiam objektui yra object_following.py, esantis jetspider_object_following, o nuotolinis veikimas yra spider_teleop.py, esantis jetspider_teleoperation.
Objektą sekantis scenarijus prasideda importuojant reikiamus modulius ir deklaruojant kintamuosius bei klasės egzempliorius. Tada šia eilute paleidžiame „Flask“žiniatinklio serverį
app.run (pagrindinis kompiuteris = '0.0.0.0', sriegis = tiesa)
Kai tik atidarysime 0.0.0.0 (localhost) adresą savo interneto naršyklėje arba „Jetson Nano“adresą tinkle (galima patikrinti naudojant komandą ifconfig), ši funkcija bus vykdoma
def indeksas ():
Tai pateikia tinklalapio šabloną, kurį turime šablonų aplanke. Šablone yra įterptas vaizdo įrašo šaltinis, todėl kai jis bus baigtas įkelti, bus vykdomas def video_feed ():, kuris grąžins atsakymo objektą, kuris yra inicijuotas naudojant generatoriaus funkciją.
Įdiegimo vietoje (vaizdo įrašo srauto tinklalapio vaizdo atnaujinimo) paslaptis yra kelių dalių atsako naudojimas. Daugialypius atsakymus sudaro antraštė, apimanti vieną iš kelių dalių turinio tipų, po to einančios dalys, atskirtos ribos žymekliu ir kiekviena turinti tam tikros dalies turinio tipą.
Def gen (): funkcija mes įgyvendiname generatoriaus funkciją begalinėje kilpoje, kuri užfiksuoja vaizdą, siunčia jį į „def execute“(img): function, o po to gaunamas vaizdas, kuris turi būti išsiųstas į tinklalapį.
def execute (img): funkcija yra ta vieta, kur vyksta visa magija, ji paima vaizdą, pakeičia jo dydį su „OpenCV“ir perduoda jį „Jetbot ObjectDetector“klasės egzemplioriui „modelis“. Jis grąžina aptikimų sąrašą, o mes naudojame „OpenCV“, kad aplink juos nubrėžtume mėlynus stačiakampius ir rašytume komentarus su aptikta objekto klase. Po to patikriname, ar yra aptiktas mūsų dominantis objektas
Galite pakeisti šį skaičių (53) į kitą skaičių iš „CoCo“duomenų rinkinio, jei norite, kad jūsų robotas sektų kitus objektus, 53 yra obuolys. Visas sąrašas yra kategorijų.py faile.
Galiausiai, jei 5 sekundes nėra aptinkamas objektas, mes perduodame simbolį „5“, kad robotas sustotų per seriją. Jei objektas yra rastas, mes apskaičiuojame, kiek jis yra nuo vaizdo centro, ir atitinkamai elgiamės (jei arti centro, eikite tiesiai (simbolis „1“serijoje), jei kairėje, eikite į kairę ir tt). Galite žaisti su šiomis vertybėmis, kad nustatytumėte geriausią jūsų konkrečiai sąrankai!
4 žingsnis: paskutinės mintys
Tai yra „ObjectFollowing“demonstracinės versijos esmė, jei norite daugiau sužinoti apie „Flask“žiniatinklio serverio vaizdo įrašų transliaciją, galite pažvelgti į šią puikią Miguelio Grinbergo pamoką.
Čia taip pat galite pažvelgti į „Nvidia Jetbot Object Detection“bloknotą.
Tikiuosi, kad mano įdiegtos „Jetbot“demonstracinės versijos padės sukurti jūsų robotą naudojant „Jetbot“sistemą. Aš neįdiegiau kliūčių vengimo demonstracinės versijos, nes manau, kad pasirinktas modelis neduos gerų kliūčių vengimo rezultatų.
Jei turite klausimų, pridėkite mane „LinkedId“ir užsiprenumeruokite mano „YouTube“kanalą, kad gautumėte pranešimą apie įdomesnius projektus, susijusius su mašininiu mokymusi ir robotika.
Rekomenduojamas:
„Pixy2Bot“objekto sekėjas (servo kodas): 4 žingsniai
„Pixy2Bot“objektų sekėjas (servo kodas): statykite paprastą objektą, sekantį robotą (be pasukimo/pakreipimo mechanizmo) su „Arduino Uno + Motor Shield“, dviem pigiomis nuolatinėmis servo sistemomis ir „Pixy2“. Vaizdo įrašas: https://youtu.be/lxBLt5DJ5BM
Objekto aptikimas naudojant „Sipeed MaiX“plokštes („Kendryte K210“): 6 žingsniai
Objektų aptikimas naudojant „Sipeed MaiX“plokštes („Kendryte K210“): tęsdamas ankstesnį straipsnį apie vaizdo atpažinimą naudojant „Sipeed MaiX Boards“, nusprendžiau parašyti dar vieną mokymo programą, daugiausia dėmesio skiriant objektų aptikimui. Neseniai pasirodė įdomi aparatinė įranga su „Kendryte K210“mikroschema, įskaitant S
Keturkojo voro robotas „Miles“: 5 žingsniai
Keturkojo voro robotas „Miles“: Remdamasis „Arduino Nano“, „Miles“yra voras robotas, kuris vaikšto ir manevruoja naudodamas savo keturias kojas. Jis naudoja 8 SG90 / MG90 servo variklius kaip kojų pavaras, susideda iš pasirinktinio PCB, skirto maitinti ir valdyti servo, ir „Arduino Nano“. PCB turi
„Nvidia Jetson Nano“pamoka - Pirmasis žvilgsnis su AI ir ML: 7 žingsniai
„Nvidia Jetson Nano“pamoka | Pirmas žvilgsnis su AI ir ML: Ei, vaikinai! Akarsh čia iš „CETech“. Šiandien mes pažvelgsime į naują „Nvidia“SBC, kuris yra „Jetson Nano“, „Jetson Nano“yra orientuotas į dirbtinio intelekto metodus, tokius kaip vaizdo atpažinimas ir kt
„Arduino“šviesos aptikimo pamoka: 3 žingsniai (su nuotraukomis)
„Arduino“šviesos aptikimo pamoka: Baigę šią pamoką sužinosite, kaip galite aptikti jus supančių šviesos lygių pokyčius. Šio projekto dalis pateikė Kumanas. Juos galite rasti jų „Arduino UNO“pradiniame rinkinyje