7. rész – Az ég a határ

Hosszú órás fejlesztés, hibakeresés, forrasztás (és leolvasztás!) után a MAC One végre autonóm. Önállóan tudja eligazodni a környezetében, most okosabbá kell tennünk!

Először emlékezzünk arra, hogy az autonóm jármű megfelelő működéséhez több kulcsfontosságú alkatrészre van szükség:

Az akadályok felderítése és elkerülése nagyszerű. Sokkal jobb, ha képes feltérképezni a környezetét és pontosan elhelyezkedni benne. Ennek a kihívásnak a megoldásához teljes és naprakész környezeti térképre van szükség (amelyet a LiDAR kapott), valamint naplót kell adni a jármű minden korábbi tevékenységéről. Mindezzel kiszámítható a jármű aktuális helyzete. Ezt az elvet SLAM-nek hívják, a szimultán lokalizáció és leképezés rövidítésének.

Számos összetevő használható a SLAM algoritmus futtatásához szükséges adatok összegyűjtésére:

Kódolók? Mondtál már kódolókat?

Az általunk választott rovert két kódolóval szállítjuk (motoronként egyet). Ezek a kódolók képesek megmérni azokat az adatokat, amelyek leírják a motor viselkedését, például a forgási szöget, az általános irányt és a sebességet.

A kódoló működési elvei

A kódoló a következőkből áll:

Hogyan működik a MAC One kódoló?

Az elképzelés az, hogy a kódoló érzékelője fekete-fehér átmenetet (és fordítva) érzékel a kódoló lemezén. Minden átmenetet „pipának” nevezünk: megszámlálva őket (és nyomon követve a változás irányát) megtudhatjuk a kerék által megtett távolságot.

Az általunk választott rover műszaki leírása azt jelzi, hogy a kerék teljes fordulásához (20 cm) az érzékelő 333 kullancsot regisztrál.

Valamennyi kódolónak két érzékelője van (A és B tű), amelyek párhuzamosan működnek, hogy megduplázzák a mérés felbontását. A pipa számlálásához össze kell hasonlítani mindkét érintkező aktuális állapotát (fekete vagy fehér) az előző állapotukkal, és ellenőrizni kell, hogy az átmenet érvényes-e és halad-e előre (érték = 1) vagy visszafelé (érték = -1), vagy hogy az átmenet érvénytelen (érték = 0).

Amint a kerék megfordul, az ehhez a mátrixhoz elért eredményeket össze kell adni, hogy meg lehessen számolni az egyes kerekek összes kullancsát.

Oké, akkor most mi van? Mit kezdünk ezekkel az adatokkal?

Még mindig sok érdekes munkát kell elvégeznünk! Most, hogy képesek vagyunk összegyűjteni az adatokat a motorból és a kerekekből, fel kell készítenünk egy részletes modellt a rover számára elérhető lehetséges mozgási mintákról.

Az ötlet egyszerű: Manuális módban vezetjük a MAC One-ot, és megpróbálunk minél több „hasznos mozdulatot” végrehajtani, miközben az adatokat visszakeresjük a kódolókból, és megpróbáljuk összehangolni az adatokat a lépés.

Például elvégezünk egy balra fordulást, és megszámoljuk a kullancsok számát a bal oldali és a jobb oldali kódolóhoz. Ezt többször megtesszük, és minden alkalommal megtudjuk, hogyan lehet egy kicsit jobban észlelni a balra fordulást.

Minél több mozgást tudunk észlelni, annál több részletet tudunk integrálni a vezetési algoritmusba.

Később erre az információra is szükség lesz a PID-vezérlő telepítése során. Enélkül a jármű lassan jobbra sodródott, amikor hosszú „előre” parancs érkezett. Valójában a két motor nem azonos: mindegyik kicsit másképp reagál, ha azonos feszültséget és áramot alkalmaznak.

Ezért szükség van egy szinkronizációs hurok megvalósítására az egyes motorok elfogultságának kijavításához.

Néhány további pontot meg kell említenünk …

Ismét sokkal egyszerűbb lett volna járművünk szoftverének fejlesztése Arduino táblán. De mindannyian szeretjük a kihívást, ezért úgy döntöttünk, hogy ragaszkodunk a Raspberry Pi 3 használatához.

Az Arduino tábla néhány hardveroptimalizálást kínál, amely biztosítja, hogy az adatok és az állapotváltozások pontosan és megbízhatóan lehívhatók legyenek a megszakító szolgáltatási rutin (ISR) segítségével.

A Raspberry Pi nem támogatja az ISR-t. Ezt a hardverkorlátozást szoftverrel kell kompenzálni. A gyakorlatban ezt úgy lehet megtenni, hogy rendszeresen (ezredmásodpercenként) lekérdezzük a GPIO rpio.poll funkcióját, hogy észleljük a kódolók csapjainak állapotváltozásait.


Az áramköri összeállítás szintén kissé bonyolultabbnak bizonyult a vártnál: