
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48


Az Nvidia Jetson Nano egy fejlesztői készlet, amely egy SoM -ből (System on Module) és egy referencia -hordozókártyából áll. Elsősorban olyan beágyazott rendszerek létrehozására irányul, amelyek nagy feldolgozási teljesítményt igényelnek a gépi tanuláshoz, a gépi látáshoz és a videófeldolgozó alkalmazásokhoz. Részletes beszámolót a YouTube -csatornámon tekinthet meg.
Az Nvidia megpróbálta a Jetson Nano-t a lehető legjobban felhasználóbaráttá és könnyen fejleszthetővé tenni. Még néhány nappal a tábla bevezetése után elindítottak egy kis tanfolyamot a robot építéséről Jetson Nano segítségével. A projekt részleteit itt találja.
Mindazonáltal nekem is volt néhány problémám a Jetbot projekttel kapcsolatban:
1) Nem volt elég EPIC számomra. A Jetson Nano egy nagyon érdekes tábla, nagy feldolgozási képességekkel, és egy egyszerű kerekes robot készítése vele csak nagyon… alázatos dolognak tűnt.
2) A hardver megválasztása. A Jetbot drága hardvert igényel, vagy más alternatívákkal helyettesíthető - például joystickot használnak a távműködéshez. Szórakozásnak tűnik, de tényleg szükségem van botkormányra a robot irányításához?
Így rögtön azután, hogy kezembe került a Jetson Nano, elkezdtem dolgozni a saját projektemen, a Jetspideren. Az ötlet az volt, hogy megismételje a Jetbot alapvető demóit, de gyakoribb hardverrel és szélesebb körű projektekre alkalmazható.
1. lépés: Készítse elő a hardvert

Ehhez a projekthez a Zuri négylábú robot korai prototípusát használtam, amelyet a Zoobotics készített. Sokáig hevert a cégünk laborjában. Felszereltem egy lézerrel vágott fa tartószerkezettel a Jetson Nano-hoz és egy kameratartóval. Kialakításuk szabadalmaztatott, így ha a Jetson Nano robothoz valami hasonlót szeretne létrehozni, akkor megnézheti a Meped projektet, amely egy hasonló négylábú, nyílt forráskódú kialakítással. Valójában, mivel a laboratóriumunkban senkinek sem volt Zuri mikrovezérlőjének (Arduino Mega) forráskódja, a Meped kódját használtam, néhány apró módosítással a lábak/lábak eltolásában.
Rendes USB Raspberry Pi kompatibilis webkamerát és Wifi USB-kulcsot használtam.
A lényeg az, hogy mivel a Pyserial -t fogjuk használni a mikrokontroller és a Jetson Nano közötti soros kommunikációhoz, a rendszer lényegében bármilyen típusú mikrokontrollert használhat, feltéve, hogy csatlakoztatható a Jetson Nano -hoz USB soros kábellel. Ha robotja egyenáramú motorokat és motorvezérlőt használ (például L298P-alapú), akkor lehetséges a motorvezérlő közvetlen csatlakoztatása a Jetson Nano GPIO-val. Sajnos azonban a szervók vezérléséhez csak egy másik mikrokontrollert vagy egy dedikált I2C szervo meghajtót használhat, mivel a Jetson Nano nem rendelkezik hardveres GPIO PWM -el.
Összefoglalva: a robot típusát bármilyen mikrokontrollerrel használhatja, amely USB adatkábellel csatlakoztatható a Jetson Nano készülékhez. Feltöltöttem az Arduino Mega kódját az oktatóanyag github -tárába, és a Jetson Nano és Arduino közötti interfészhez kapcsolódó rész itt található:
if (Serial.available ()) {switch (Serial.read ()) {
{
„1” eset:
előre();
szünet;
„2” eset:
vissza();
szünet;
„3” eset:
jobbra();
szünet;
„4” eset:
forduljon balra();
szünet;
Ellenőrizzük, hogy rendelkezésre állnak-e adatok, és ha igen, akkor továbbítsuk azokat a kapcsolóház vezérlőszerkezetének. Ügyeljen arra, hogy a sorozat adatai karakterekben jelenjenek meg, vegye figyelembe az egyetlen idézőjelet az 1, 2, 3, 4 számok körül.
2. lépés: Telepítse a szükséges csomagokat
Szerencsére számunkra az alapértelmezett Jetson Nano rendszerkép sok cuccot tartalmaz előre telepítve (például OpenCV, TensorRT stb.), Ezért csak néhány más csomagot kell telepítenünk, hogy a kód működjön és engedélyezze az SSH-t.
Kezdjük az SSH engedélyezésével arra az esetre, ha a többi munkát távolról szeretné elvégezni.
sudo apt frissítés
sudo apt install openssh-server
Az SSH szerver automatikusan elindul.
Ahhoz, hogy LAN -on keresztül csatlakozzon az Ubuntu gépéhez, csak a következő parancsot kell megadnia:
ssh felhasználónév@ip_address
Ha Windows géped van, telepítened kell az SSH klienst, például a Puttyt.
Kezdjük a Python Package Manager (pip) és a Pillow telepítésével a képmanipulációhoz.
sudo apt install python3-pip python3-pil
Ezután telepítjük a Jetbot tárolót, mivel a keretrendszer egyes részeire támaszkodunk az objektumok észlelése során.
sudo apt install python3-smbus python-pyserial
git klón
cd jetbot
sudo apt-get install cmake
sudo python3 setup.py install
Végül klónozza a Github tárhelyemet ehhez a projekthez az otthoni mappájába, és telepítse a Flask -t és néhány más csomagot a robot távirányítójához a webszerver segítségével.
git klón
CD
sudo pip3 telepítés -r követelmények -opencv
Töltse le az előre megtervezett SSD (Single Shot Detector) modellt erről a linkről, és helyezze a jetspider_demos mappába.
Most már indulhatunk is!
3. lépés: Futtassa a kódot

Két demót készítettem a Jetspider számára, az első egy egyszerű teleopráció, nagyon hasonló ahhoz, amit korábban a Banana Pi roverhez készítettem, a második pedig a TensorRT -t használja az objektumok észlelésére, és elküldi a mozgatási parancsokat a soros kapcsolaton keresztül a mikrokontrollernek..
Mivel a teleoprációs kód nagy részét a másik oktatóanyagom írja le (csak néhány apró módosítást végeztem, a videóátvitel átminősítését), itt az Objektumfelismerés részre koncentrálok.
Az objektumkövetés fő szkriptje a jetspider_object_following objektumban az object_following.py, a távműtét esetén a spider_teleop.py a jetspider_teleoperation programban.
Az objektumot követő parancsfájl a szükséges modulok importálásával és a változók és osztálypéldányok deklarálásával kezdődik. Ezután ezzel a sorral elindítjuk a Flask webszervert
app.run (host = '0.0.0.0', threaded = True)
Amint megnyitjuk a 0.0.0.0 (localhost) címet a webböngészőnkben vagy a Jetson Nano címet a hálózaton (ellenőrizhetjük az ifconfig paranccsal), ez a funkció végrehajtásra kerül
def index ():
Ez teszi a weblap sablont, amely a sablonok mappában van. A sablonba videoforrás van beágyazva, így miután befejezte a betöltést, a def video_feed (): végrehajtásra kerül, amely visszaad egy Válaszobjektumot, amelyet a generátor funkcióval inicializálnak.
A helyben történő frissítések (a képfolyam frissítése a videófolyamunk weboldalán) megvalósításának titka a többrészes válasz használata. A többrészes válaszok egy fejlécből állnak, amely tartalmazza az egyik többrészes tartalomtípust, majd azokat a részeket, amelyeket határjelző választ el, és mindegyiknek megvan a saját részspecifikus tartalomtípusa.
A def gen (): függvényben a generátor függvényt egy végtelen ciklusban valósítjuk meg, amely rögzíti a képet, elküldi a def execute (img): function funkcióhoz, és ezután egy képet küld a weboldalra.
def execute (img): függvény, ahol minden varázslat megtörténik, egy képet készít, átméretezi az OpenCV -vel, és átadja a Jetbot ObjectDetector osztálypéldánynak "model". Visszaadja az észlelések listáját, és az OpenCV segítségével kék téglalapokat rajzolunk köréjük, és megjegyzéseket írunk az objektum észlelt osztályával. Ezt követően ellenőrizzük, hogy van -e érdeklődési körünkbe tartozó objektum
Ezt a számot (53) másik számra módosíthatja a CoCo adatkészletből, ha azt szeretné, hogy robotja más objektumokat kövessen, az 53 egy alma. A teljes lista category.py fájlban található.
Végül, ha 5 másodpercig nem észlel objektumot, akkor továbbítjuk az "5" karaktert, hogy a robot megálljon a sorozat felett. Ha objektumot találunk, kiszámítjuk, hogy milyen messze van a kép közepétől, és ennek megfelelően cselekszünk (ha közel van a középponthoz, menjünk egyenesen ("1" karakter a sorozaton), ha bal oldalon, akkor balra, stb.). Játszhat ezekkel az értékekkel, hogy meghatározza a legjobbat az adott beállításhoz!
4. lépés: Utolsó gondolatok

Ez az ObjectFollowing demó lényege, ha többet szeretne megtudni a Flask webszerver Video streamingről, akkor nézze meg ezt a remek bemutatót Miguel Grinberg.
Itt megtekintheti az Nvidia Jetbot Object Detection notebookot is.
Remélem, hogy a Jetbot bemutatóim megvalósításai segítenek felépíteni robotját a Jetbot keretrendszer használatával. Nem valósítottam meg az akadályok elkerülésének bemutatóját, mivel úgy gondolom, hogy a modell megválasztása nem hoz jó akadálykerülő eredményeket.
Ha bármilyen kérdése van, vegyen fel engem a LinkedId -en, és iratkozzon fel YouTube -csatornámra, hogy értesítést kapjak a gépi tanulást és a robotikát érintő érdekesebb projektekről.
Ajánlott:
3D nyomtatott Arduino hajtású négylábú robot: 13 lépés (képekkel)

3D nyomtatott Arduino Powered Quadruped Robot: Az előző Instructables -ből valószínűleg láthatja, hogy mélyen érdekelnek a robotprojektek. Az előző Instructable után, ahol egy robotlábú robotot építettem, úgy döntöttem, hogy megpróbálok egy négylábú robotot készíteni, amely képes utánozni az állatokat, például a kutyát
GorillaBot a 3D nyomtatott Arduino autonóm sprint négylábú robot: 9 lépés (képekkel)

GorillaBot a 3D nyomtatott Arduino autonóm sprint négylábú robot: Minden évben Toulouse -ban (Franciaország) ott van a Toulouse Robot Race #TRR2021. A verseny egy 10 méteres autonóm sprintből áll kétlábú és négylábú robotok számára. A négylábúakra gyűjtött rekord jelenleg 42 másodperc 10 méteres sprint. Tehát ezzel m
A mérföldes négylábú pókrobot: 5 lépés

"Miles" a négylábú pókrobot: Az Arduino Nano alapján Miles egy pókrobot, amely 4 lábával jár és jár. 8 SG90 / MG90 szervo motort használ a lábak működtetőjeként, egy egyedi PCB -ből áll, amely a szervók és az Arduino Nano működtetésére és vezérlésére készült. A PCB dedikált
Négylábú pókrobot - GC_MK1: 8 lépés (képekkel)

Négylábú pókrobot - GC_MK1: A pókrobot, más néven GC_MK1 előre -hátra mozog, és táncolhat az Arduino -ra töltött kódtól függően. A robot 12 mikroszervómotort (SG90) használ; 3 minden lábhoz. A szervomotorok vezérlésére használt vezérlő egy Arduino Nan
A "Sup - egér a négylábú embereknek" - alacsony költségű és nyílt forráskódú: 12 lépés (képekkel)

A „Sup - egér a négylábú embereknek - alacsony költségű és nyílt forráskódú: 2017 tavaszán a legjobb barátnőm családja megkérdezte tőlem, hogy szeretnék -e Denverbe repülni, és segíteni nekik egy projektben. Van egy barátjuk, Allen, akinek egy hegyi kerékpáros baleset következtében négylábúja van. Felix (a barátom) és néhány gyors vizsgálatot végeztünk