Tartalomjegyzék:

Készítse el saját önvezető autóját - (ez az utasítás folyamatban van): 7 lépés
Készítse el saját önvezető autóját - (ez az utasítás folyamatban van): 7 lépés

Videó: Készítse el saját önvezető autóját - (ez az utasítás folyamatban van): 7 lépés

Videó: Készítse el saját önvezető autóját - (ez az utasítás folyamatban van): 7 lépés
Videó: FIX TV | Restart | 2016.07.04. 2024, November
Anonim
Image
Image

Helló, Ha megnézi a másik Instructable on Drive Robot Remote USB Gamepad programot, ez a projekt hasonló, de kisebb léptékben. A Youtube-on követheti vagy segítséget vagy inspirációt kaphat a robotika, a saját hangfelismerés vagy az Önvezető autók lejátszási listáiból.

A nagy robottal kezdtem (Wallace 4), de mivel helyi Meetup csoportot alapítottam, szükségem volt valamire kisebb méretben, és a csoportot nagyon érdekelte a számítógépes látás.

Így találkoztam ezzel az Udemy tanfolyammal: Építsd meg saját önvezető autódat, ami adta az ötletet ehhez a projekthez.

Ha érdekli az Udemy tanfolyam, továbbra is ellenőrizheti; időről időre óriási kedvezményre kerül. Megjegyzés: van az 1. és a 2. rész - meg kell vizsgálnia, hogyan lehet a két tanfolyamot csomagként beszerezni (kedvezményes áron).

Ennek az utasításnak a célja kettős. Először is, hogy adjon néhány mutatót és alternatívát a tanfolyam bizonyos részeihez (például az alkatrészekhez és a hardverhez). Másodszor pedig a tanfolyam bővítése.

Az Udemy tanfolyam fő célja:

az, hogy egy kisméretű kerekes robotkocsit képes legyen önállóan vezetni egy kicsinyített kétsávos úton.

Fel kell ismernie a sávcsíkokat, és amikor elérte az út végét.

Meg kell ismernie a stoptáblát (és a stop -ot).

Továbbá egy PIROS és ZÖLD közlekedési jelzőtábla.

Azt is fel kell ismernie és manővereznie kell egy akadályt (másik autó).

Amit ez az Instructable hozzáad a tanfolyamhoz:

Vezesse a kis autót egy távoli USB Gamepad segítségével, nagyjából ugyanúgy, mint ebben a másik Instructable -ben.

Mondjon néhány alternatívát a tanfolyam nyújtotta lehetőségekhez.

Lehet, hogy nem is kell megvennie a tanfolyamot:

Ez az utasítás lehet minden, amire szüksége van az induláshoz.

Kellékek

A legfontosabb (javasolt) részek:

Egy robot alváz

Négy motor

Arduino

Raspberry Pi (3, 3B+, 4)

Kamera (USB webkamera vagy Picamera modul)

Akkumulátor

Be/Ki kapcsolók

jumper vezetékek

stand-off (műanyag és talán fém is)

Kérjük, nézze át a teljes Instructable -t és a videókat is, mielőtt alkatrészeket szeretne vásárolni.

A projekt elvégzése után rájövök, hogy a pontos részek nem annyira kritikusak.

Lépés: További részletek az alkatrészekről…

Image
Image
További részletek az alkatrészekről…
További részletek az alkatrészekről…
További részletek az alkatrészekről…
További részletek az alkatrészekről…

A kapcsolódó videó részletesen bemutatja az alkatrészeket, és néhány problémát, amelyeket találtam.

  • Nézzen körül a különböző alvázak / motorok között
  • A motoroknak már forrasztott vezetékekkel kell rendelkezniük
  • Érdemes fúrót és fúrókat használni, VAGY több lyukú alvázat
  • Ne feledje, hogy a súly kérdés. Mindennek a lehető legkönnyebbnek kell lennie.
  • Az L298 H-Bridge motor meghajtója remekül működik. MEGJEGYZÉS: szerezzen be egyet a csavaros sorkapcsokkal (lásd a fotót)
  • Valószínűleg műanyagra és fémre is szüksége lesz, az M3 -as méret valószínűleg a legjobb választás.

A műanyag rögzítőelemek alkalmasak a táblák alvázra szerelésére (motorvezérlő, Arduino, Málna, tápegység, be/ki kapcsoló stb.).

A fémállványok jóak az alváz összeszereléséhez (szilárdság), és különösen akkor, amikor fejlesztenek (programozás, tesztelés). A fejlesztés érdekében a fémállványok gólyalábakként szolgálhatnak. Csakúgy, mint ha valódi autón dolgozna, úgy szeretné emelni az autót, hogy a kerekek a levegőben legyenek és szabadon mozoghassanak. Ez nagyon fontos! Hibázni fog, és nem akarja, hogy az autó csak felszálljon és lezuhanjon.

Fúró + fúrószárak

Nagyon szeretném hangsúlyozni a fúró használatát, ha teheti, és a kétoldalas ragasztószalag helyett az eltéréseket. Nagyon valószínű, hogy a projekt során többször eltávolítja és újra elhelyezi a táblákat stb., És a szalag használata nagyon rendetlenné válik.

A fúró használata nagyon megkönnyíti az újrapozícionálást (különösen, ha a ház műanyag), és professzionálisabbnak tűnik.

2. lépés: Az autó áramellátása a fejlesztés során

Az autó áramellátása a fejlesztés során
Az autó áramellátása a fejlesztés során
Az autó áramellátása a fejlesztés során
Az autó áramellátása a fejlesztés során

Véleményem szerint a leggyorsabb és legegyszerűbb módja a projekt elindításának:

  • szoftver Arduino vázlatfejlesztéshez csak csatlakoztassa az Arduino -t a számítógéphez USB -n keresztül
  • a Raspberry Pi szoftverhez 5 V -os USB -tápellátással kell rendelkeznie, amely legalább 3 Amper tápellátást biztosít. És legyen benne ki/be kapcsoló. Hacsak nincs jó, táplált USB hub csatlakoztatva a számítógéphez, akkor valószínűleg nem tudja közvetlenül a számítógépről táplálni a Raspberry -t.
  • Ha készen áll a motorok/kerekek tesztelésére, akkor a legegyszerűbb (lásd a fotót) egy jó tápegység. Ezek azonban nem olcsók.

Ebben a részben azt szeretném mondani, hogy a fejlesztés során nem akarja használni az akkumulátort, mert ez jelentősen lelassítja a fejlődést.

Továbbá, ha valami hasonlót tesz a fenti javaslatokhoz, nem kell (még) aggódnia, hogy pontosan hogyan fogja táplálni az autót. Ezt a döntést késleltetheti a projekt későbbi szakaszában.

3. lépés: Az autó áramellátása tényleges használat közben

Az autó áramellátása tényleges használat közben
Az autó áramellátása tényleges használat közben
Az autó áramellátása tényleges használat közben
Az autó áramellátása tényleges használat közben

Ha úgy dönt, hogy követi a logika logikáját (vagy amit én tettem) az 5 V -os tápellátáshoz, akkor vegye figyelembe, hogy nem minden 5 V -os USB -tápbank alkalmas erre a projektre.

A lényeg itt az, hogy 5 V -ra van szüksége, de legalább 3 A -ra! Gondolj csak bele - olyan Powerbank -t szeretnél, amely (talán) egy laptop számítógépet táplál.

Ha az Egyesült Államokban él, akkor szerintem az egyik legjobb módja ennek a Best Buy -ból való vásárlás. Miért? 14 napos pénzvisszafizetési politikájuk miatt.

Valójában három különböző powerbankot kellett kipróbálnom, mielőtt találtam egyet, ami működni fog. A többi miatt a Raspberry Pi panaszkodik az alulfeszültségre.

A legolcsóbb powerbankkal kezdtem, és csak próbáltam a következő modellt (ez többe került), amíg találtam egyet, ami működött.

Hogyan lehet áram alá helyezni az Arduino -t

Az Udemy tanfolyamon a szerző úgy döntött, hogy az Arduino -t közvetlenül a powerbank -ról táplálja (az általa készített egyedi PCB -n keresztül), és tápcsapokat használt az Arduino GPIO -csatlakozóján.

Én azonban úgy döntöttem, hogy az Arduino -t csak a Raspberry Pi -ről táplálom, USB -kábelen keresztül.

El kell döntenie, melyik a jobb.

A motorok/motorhajtó áramellátása

Az Udemy tanfolyamon a szerző úgy döntött, hogy a motorokat/meghajtókat közvetlenül az 5 V -os tápegységről táplálja. Két szempont van, ha ezt a módszert alkalmazza.

  1. Amikor a motorok először forogni kezdenek, a legnagyobb áramot veszik fel. Ez a feszültséget 5V alá süllyesztheti (le), és a Málna visszaállhat.
  2. Ha csak 5 V -ot használ a motorok táplálására, az azt jelenti, hogy nem biztosít annyi energiát, mint amennyit tudna a motoroknak, és az autó lassabban (lassabban) fog mozogni. A motorokat (ezzel a tápegységgel) (lásd a fotót) legalább 9 V -ra teszteltem. 9V -nál jól működnek.

Megfigyelések 9V (vagy több) feszültségről

Ha megnézte az Instructable összes fotóját és videóját, észrevette, hogy összeállítottam egy egyedi NYÁK -t a saját 9 V -os áramforrás létrehozásához. Útközben tanultam néhány dolgot.

Jelenleg több (3) 9V -os elemcellát használok párhuzamosan a motorok táplálására. Mind alkáli, mind NiMH akkumulátorokat használtam.

Tanulási tapasztalat #1: Hosszú ideig (sok óráig) tart a NiMH 9V akkumulátorok megfelelő feltöltése.

Lehetséges megoldás: Fektessen be egy több akkumulátoros NiMH töltőbe. "Okos" töltőnek kell lennie.

Hátránya: nem olcsóak.

Tanulási tapasztalat #2: A 9 V -os akkumulátorok valójában több kis belső cellából állnak. Ha az egyik cella elhal, a teljes akkumulátor haszontalan. NEM volt ilyen problémám, de olvastam róla.

Tanulási tapasztalat #3: Nem minden 9V -os elem azonos feszültségű. Ez fontos. Mert minél nagyobb a feszültség, annál nagyobb sebesség lehetséges. Egyes akkumulátorcellák (és töltők) csak 8,4 V feszültségűek. Egyesek még kevésbé. Némelyik 9,6 V -os.

Tanulási élmény #4: A 9 V -os elemek, különösen a NiMH akkumulátorok, könnyűek. Egy jó dolog. A legtöbbjük azonban csak mA kimeneti áramot biztosít. Ezért párhuzamosan kellett elhelyezni őket. Szinte 2 amper áramerősségre van szüksége, még rövid időre is.

Tanulási tapasztalat #5: Léteznek 9,6 V-os akkumulátorok, például rádióvezérelt autókhoz. Még nem használtam egyet, de úgy gondolom, hogy nagyobb áramot szolgáltatnak, mint a párhuzamos 9 V -os elemek, mint én. Ezenkívül az egységet is töltheti. A csomagok különböző méretűek. És van súlymegfontolás. És akkor a csomagot használja az egész autó, vagy csak a motorok áramellátására? Ha az egész autóra vonatkozik, akkor szüksége lesz egy 5 V-os lépcsős szabályozóra a Raspberry Pi számára.

Az L298 H-Bridge képes arra, hogy 5 V-ot adjon ki erre a célra, de aggódom, hogy mennyi áramot tud termelni a Raspberry Pi számára, és hogy túl nagy terhelést jelent-e az L298 kártyára.

Ha úgy dönt, hogy két külön áramforrást használ, akkor súlyproblémája lehet (túl nehéz).

4. lépés: Szoftverprogramozás a Gamepad meghajtásához

Azt hiszem, ennek a résznek a nagy részét már leírtam a Robot által vezérelt távoli USB Gamepad Instructable programban, ezért ezt itt nem ismétlem meg.

A másik Instructable programozási/szoftver részei csak javaslatok. Azt hiszem, az ember többet tanul a próba és hiba útján.

5. lépés: Kamera hozzáadása

Kamera hozzáadása
Kamera hozzáadása
Kamera hozzáadása
Kamera hozzáadása
Kamera hozzáadása
Kamera hozzáadása

Az Udemy tanfolyamon úgy gondolom, hogy a szerző kerek fa dübeleket és ragasztópisztolyt használ a kamera felemelésére.

A kamerát úgy kell felemelnie, hogy lefelé nézzen a kétsávos útra, így könnyebben felismeri a sávokat.

Ahol az Egyesült Államokban élek, a fa tiplik nagyon olcsók voltak. Megveheti őket a Lowe's -ban vagy a Home Depotban. A kerek tiplik helyett szögletes tipliket választottam.

Úgy döntöttem, hogy szilárdabb alapot készítek a kameratoronyhoz, és eltávolítottam az egész tornyot az autóból, hogy játszhassak és kísérletezhessek, hogy mi a legjobb helyzet az autóban.

Ezenkívül a tornyot azzal a gondolattal készítettem, hogy egy USB webkamerával kezdek, de később áttérhetek a Picamera modul használatára.

Érdemes befektetni egy halszem típusú fényképezőgépbe.

Vettem egy nagyon olcsó forró ragasztópisztolyt, de jobban meg akartam erősíteni a torony alapját, ezért előre fúrtam néhány csavarlyukat, és csavarokat adtam hozzá, hogy mindent jobban összetartsak.

Aztán az alapot az autó alvázára csavartam.

Ha később meg akarom mozgatni a dolgokat, csak lecsavarom az alapot az alvázról, új lyukakat fúrok az alváz új helyére, és visszacsavarozom a tornyot az alvázra.

Átvittem a "kövess" Python és Node.js kódot a nagy robotból (Wallace Robot 4), hogy mindent tesztelhessek. Kérjük, tekintse meg az ebben a részben található fotókat a youtubek listájához, amelyek sokkal részletesebben szolgálnak a "követés" témáról.

Mint már említettem, egyszerűbb volt először csatlakoztatni egy USB webkamerát. Később fel tudom szerelni a Picamera modult.

6. lépés: Arcfelismerés - Határozza meg a pozíciót

Image
Image

Ez a rész nem az Udemy tanfolyam középpontjában áll, de szórakoztató gyakorlat volt.

Ha a weben keresi a "python opencv arcfelismerés" kifejezést, akkor sok jó példát talál erre, és mindegyik nagyjából ugyanazokat a lépéseket követi.

  1. töltse be a "haar" arcfájlt
  2. inicializálja a kamerát
  3. indíts egy ciklust, ahol megragadsz egy keretet
  4. konvertálja a színes képet szürkeárnyalatosra
  5. adja meg az opencv -nek, hogy megtalálja az arcát
  6. indítson el egy belső ciklust (minden talált arc esetén) (esetemben kódot adok hozzá a megszakításhoz, ha több mint 1 arc)

Ebből a célból itt, miután észleltünk egy arcot, ismerjük az arcot körvonalazó képzeletbeli négyzet X, Y, W és H betűit.

Ha azt szeretné, hogy a robot előre vagy hátra mozogjon, akkor csak a W -t kell figyelembe vennie. Ha W túl nagy (túl közel), akkor vegye vissza a robotot. Ha W túl kicsi (túl messze), akkor a robot haladjon előre.

A bal/jobb mozgás egy kicsit bonyolultabb, de nem őrült. Vessen egy pillantást ennek a résznek a képére, amely részletezi a bal és jobb arc helyzetének meghatározását.

JEGYZET:

Ha a webes OpenCV -példák bármelyikét futtatja, akkor mindegyik a tényleges nézetet mutatja, hogy mit lát az opencv, és az arc négyzetben van körvonalazva. Ha megfigyeljük, akkor ez a négyzet nem állandó (állandó), még akkor sem, ha nem mozog.

Ezek a változó értékek azt eredményeznék, hogy a robot folyamatosan mozgásban van, előre vagy hátra, balra vagy jobbra.

Így szükség lesz valamilyen delta -ra mind előre/hátra, mind balra/jobbra.

Vegyük balra jobbra:

Miután kiszámította a bal és a jobb oldalt, akkor kapja meg a különbséget (delta):

delta = hasizom (bal - jobb)

Az abszolútumot kell választanod, mert nem tudod, melyik lesz a nagyobb szám.

Ezután feltételes kódot ad hozzá a mozgatási kísérlethez, ha a delta nagyobb, mint a minimális.

Ugyanezt tenné előre és hátra.

7. lépés: Arcpozíció - Mozgó robot

Ha már tudja, hogy a robotnak balra vagy jobbra, előre vagy hátra kell mozognia, hogyan kell ezt megtenni?

Mivel ez az Instructable egy folyamatban lévő munka, jelenleg csak lemásoltam a kódot a nagy robotomból, hogy ezt a projektet használjam. Kérjük, nézze meg a Robotics lejátszási listámat a youtube -on, ahol mindezt részletezi.

Röviden, a kód rétegekben van.

A Python arcfelismerő szkript http kéréseket küld a Node.js szervernek

A Node.js szerver figyeli az áthelyezési utasítások http -kéréseit, ezeket egyedi soros protokollmá alakítja

Egyedi soros protokoll a Node.js szerver és az Arduino között

Arduino vázlat, amely végrehajtja a robot mozgatására vonatkozó tényleges parancsokat

Az Udemy tanfolyam nem ezt teszi, mint fent. De mivel jó előrehaladást akartam elérni, és a tényleges képfelismerésre akartam koncentrálni, egyelőre újra felhasználtam a korábbi kódomat.

Ajánlott: