Tartalomjegyzék:
- 1. lépés: A jármű összeszerelése
- 2. lépés: Motorok felszerelése
- 3. lépés: Vivado blokktervezés létrehozása
- 4. lépés: Kommunikáció a LiDAR -val
- 5. lépés: A rács feltöltése akadályokkal
- 6. lépés: Kommunikáció a motorokkal
- 7. lépés: Útvonaltervezés
Videó: Autonóm jármű: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Ez a projekt egy önállóan navigáló robot, amely megpróbálja elérni célpontját, miközben elkerüli az akadályokat. A robotot LiDAR érzékelővel látják el, amelyet a környezetében lévő tárgyak észlelésére használnak. A tárgyak észlelésekor és a robot mozgásakor a valós idejű térkép frissül. A térképet az azonosított akadályok helyének mentésére használják. Így a robot nem próbálja meg újra a sikertelen utat a célhelyzethez. Ehelyett olyan utakat próbál meg, amelyeknek nincs akadálya, vagy olyan utakat, amelyeket még nem ellenőriztek.
A robot két egyenáramú motorral hajtott kerékkel és két görgővel mozog. A motorokat egy kör alakú platform aljára kell rögzíteni. A motorokat két motorhajtó fogja irányítani. A motorvezérlők PWM parancsokat kapnak a Zynq processzortól. Az egyes motorokon található kódolók nyomon követik a jármű helyzetét és irányát. Az egész rendszer LiPo akkumulátorral fog működni.
1. lépés: A jármű összeszerelése
A robotot két motor hajtja, amelyek az oldalsó kerekekhez vannak rögzítve, majd két görgő is támogatja, az egyik elöl és a másik hátul. A platform és a motor rögzítése alumíniumlemezből készült. Motor kerékagyat vásároltak a kerekek motorhoz rögzítéséhez. Azonban egyedi közbenső csatolót kellett készíteni, mert az agy furatmintája eltér a kerék furatmintájától.
A kiválasztott motor Port Escap 12V DC motor volt, beépített kódolókkal. Ez a motor megvásárolható az ebay -en nagyon kedvező áron (lásd az anyagjegyzéket). Keresse meg a kulcsszavakat „12V Escap 16 Coreless Geared DC Motor with Encoders” az ebay -en, hogy megtalálja a motort. Általában elég sok eladó közül lehet választani. A motorok specifikációi és érintkezői az alábbi ábrákon láthatók.
A robot összeszerelése az alváz CAD -modellezésével kezdődött. Az alábbi modell az alvázhoz tervezett 2D alakú profil felülnézetét mutatja.
Javasoljuk, hogy az alvázat 2D -profilként tervezzék, hogy könnyen gyártható legyen. Vízsugaras vágóval 12”X12” méretű alumíniumlemezt vágtunk az alváz alakjába. A futómű platformot szalagfűrésszel is meg lehetett vágni.
2. lépés: Motorok felszerelése
A következő lépés a motor rögzítése. Javasoljuk, hogy a motortartókat 90 fokos fémlemezből készítsék. Ennek az alkatrésznek a segítségével a motort a két lemez segítségével a konzolra lehet rögzíteni a fémlemez egyik oldalára
A motor és a másik oldal M2 furatát a platformra lehet csavarozni. A motor tartójába lyukakat kell fúrni, hogy csavarokkal rögzíthessék a motort a motortartóra, és a motortartót a platformra. A motor rögzítése a fenti ábrán látható.
Ezután a Pololu motor agyat (lásd az anyagjegyzéket) helyezzük a motortengelyre, és húzzuk meg a mellékelt rögzítőcsavarral és imbuszkulccsal. A Pololu motor agy furatmintája nem egyezik a VEX kerék furatmintájával, ezért egyedi közbenső csatlakozót kell készíteni. Javasoljuk, hogy az alváz emelésére használt alumíniumlemez -fémhulladékot a csatoló készítésére használják. Ennek a párnak a lyukmintázata és méretei az alábbi ábrán láthatók. Az egyedi alumínium csatlakozó külső átmérője és alakja (nem kell körnek lennie) nem számít, amíg az összes lyuk elfér az alkatrészen.
3. lépés: Vivado blokktervezés létrehozása
- Kezdje egy új Vivado projekt létrehozásával, és válassza ki a Zybo Zynq 7000 Z010 eszközt.
- Ezután kattintson az új blokkterv létrehozása gombra, és adja hozzá a Zynq IP -t. Kattintson duplán a Zynq IP -re, és importálja a Zynq XPS -beállításait. Ezután engedélyezze az UART0 -t a MIO 10..11 segítségével a MIO konfigurációk lapon, és győződjön meg arról, hogy a 0. időzítő és a Watchdog időzítő engedélyezve van.
- Adjon hozzá két AXI GPIOS -t a blokk kialakításához. GPIO 0 esetén engedélyezze a kétcsatornás beállítást, és állítsa mindkettőt az összes kimenetre. Állítsa be a GPIO szélességét az 1-4 csatorna és a 2-12 csatorna esetében, ezekkel a csatornákkal lehet beállítani a motor irányát, és elküldeni a kódoló által mért kullancsok mennyiségét a processzornak. GPIO 1 esetén csak egy csatornát állítson be minden 4 bites csatorna szélességű bemenetre. Ezt arra használják, hogy adatokat fogadjanak a kódolóktól. Az összes GPIO -portot tegye külsővé.
- Következő Két AXI időzítő hozzáadása. Mindkét időzítő pwm0 portja legyen külső. Ezek azok a pwm -ek, amelyek szabályozzák a motorok forgási sebességét.
- Végül futtassa a blokk automatizálást és a kapcsolat automatizálást. Ellenőrizze, hogy a blokk kialakítása megfelel -e a megadottnak.
4. lépés: Kommunikáció a LiDAR -val
Ez a LiDAR SCIP 2.0 protokollt használ az UART -on keresztüli kommunikációhoz, a csatolt fájl leírja a teljes protokollt.
A LiDAR -val való kommunikációhoz az UART0 -t fogjuk használni. A LiDAR 682 adatpontot ad vissza, amelyek az adott szögben lévő objektum távolságát jelzik. A LiDAR az óramutató járásával ellentétes irányban pásztáz -30 és 210 fok között, 0,351 fokos lépéssel.
- Minden kommunikáció a LiDAR -hoz ASCI karakterekkel történik, lásd a SCIP protokollt a használt formátumhoz. Kezdjük azzal, hogy elküldjük a QT parancsot a LiDAR bekapcsolásához. Ezután többször elküldjük a GS parancsot, egyszerre 18 adatpontot kérve az UARTS 64 bájtos FIFO -ba. A LiDAR -ból visszaadott adatokat ezután elemzi és tárolja a SCANdata globális tömbben.
- Minden tárolt adatpont 2 bájt kódolt adat. Ha ezeket az adatokat átadja a dekódolónak, a távolság milliméterben tér vissza.
A main_av.c fájlban a következő funkciók találhatók a LiDAR -val való kommunikációhoz
sendLIDARcmd (parancs)
- Ez elküldi a bemeneti karakterláncot a LiDAR -nak az UART0 -n keresztül
recvLIDARdata ()
- Ez adatokat fog kapni, miután parancsot küldtek a LiDAR -nak, és tárolja az adatokat a RECBufferben
requestDistanceData ()
- Ez a funkció parancsok sorozatát küldi mind a 682 adatpont lekérésére. Minden egyes 18 adatpontból álló paceLIDARinput () meghívást kap az adatok elemzésére és az adatpontok fokozatos tárolására a SCANdata -ban.
5. lépés: A rács feltöltése akadályokkal
A tárolt GRID egy 2D tömb, ahol minden indexérték egy helyet jelöl. Az egyes indexekben tárolt adatok 0 vagy 1, nincs akadály vagy akadály. Az egyes indexek által jelzett négyzet távolság milliméterben megváltoztatható a vehicle.h fájl GRID_SCALE definíciójával. A 2D tömb mérete is változtatható, hogy a jármű nagyobb területet tudjon beolvasni a GRID_SIZE definíció módosításával.
Miután új távolságadat -készletet szkennelt a LiDAR -ból, a updateGrid () meghívásra kerül. Ez megismétli a SCANdata tömbben tárolt minden adatpontot, hogy meghatározza, hogy a rács mely indexei vannak akadályok. A jármű aktuális tájolását használva meghatározhatjuk az egyes adatpontoknak megfelelő szöget. Annak meghatározásához, hogy hol van az akadály, egyszerűen szorozza meg a megfelelő távolságot a szög cos/sin -jével. Ha hozzáadja ezt a két értéket a járművek aktuális x és y pozíciójához, akkor visszaállítja az indexet az akadály rácsában. Ha a művelet által visszaadott távolságot elosztjuk a GRID_SCALE értékkel, akkor megváltoztathatjuk, hogy mekkora az egyes indexek négyzetes távolsága.
A fenti képek a járművek jelenlegi környezetét és az így kapott rácsot mutatják be.
6. lépés: Kommunikáció a motorokkal
A motorokkal való kommunikációhoz a GPIO -k vezérlésének inicializálásával kezdjük a motor bepörgésének irányát. Ezután az AXI időzítőben közvetlenül a PWM -ek alapcímére történő írás lehetővé teszi számunkra, hogy beállítsunk olyan dolgokat, mint az időszak és a munkaciklus, amelyek közvetlenül vezérlik a a motor fordulatszámával.
7. lépés: Útvonaltervezés
A közeljövőben kell megvalósítani.
A korábban ismertetett rács- és motorfunkciókat használva nagyon egyszerű olyan algoritmusok megvalósítása, mint az A*. A jármű mozgása közben tovább vizsgálja a környező területet, és megállapítja, hogy az útvonal továbbra is érvényes -e
Ajánlott:
Szupergyors RC földi hatású jármű (Ekranoplan): 5 lépés (képekkel)
Szupergyors RC földi hatású jármű (Ekranoplan): Tudja, hogy a leszállások során a repülőgépek egy ideig lebegnek néhány méterrel a talaj felett, mielőtt a kerekeik ténylegesen a kifutópályára ütköznek? Ez nemcsak az utasok zökkenőmentes leszállását biztosítja, hanem a talajhatás természetes eredménye is, amelyben
Sürgősségi jármű menekülési kulcstartó: 11 lépés (képekkel)
Sürgősségi jármű menekülési kulcstartó: Autóbalesetek. Jajj! A legjobb módja annak, hogy elkerülje a balesetet, ha biztonságos vezetési technikákat alkalmaz, és mindig figyeljen arra, hová megy, és a többi autóra. Azonban minden erőfeszítése ellenére nem tudja irányítani a többi hajtást
Dönthető RC modell jármű: 21 lépés (képekkel)
Dönthető RC modell jármű: Ez a modell 1/10 billenthető jármű, két első kerékkel és egy hátsó hajtással; egy RC Arrma Vortex 1/10 elektromos modellből származik, amely az alumínium alvázból készült, és eltávolította az egész hátlapot, ahová az elektromos motort és annak motorját helyezte
DIY önkiegyenlítő egykerekű jármű: 8 lépés (képekkel)
DIY önkiegyenlítő egykerekű jármű: Érdekel az önkiegyenlítő termékek, például a segway és a solowheel trendje. Igen, bárhová elmehet, ha fáradtság nélkül lovagol a kerekén. de jó, ha magad is megkaphatod. Na, építsük fel
KEVIN a teljes autonóm jármű: 17 lépés (képekkel)
KEVIN a teljes autonóm jármű: Ez Kevin. Ez egy rádióvezérelt autó, amely képes teljes autonóm hajtásra. Az első célom az volt, hogy az autonóm járművet Arduino irányítsa. Így vettem olcsó kínai alvázat. De szörnyű volt, mert nem tudtam csatolni egyetlen c