XOD meghajtású vonalkövető mBot

Az előző cikkben megtanultuk a PID-vezérlő használatát az XOD vizuális programozási környezetben. Ezenkívül a Makeblock mBot platformját egyszerű kézkövető robotokká alakítottuk. Ha fel akarja idézni a témát, vagy nem tud semmit arról, mi a PID-vezérlő, azt tanácsolom, olvassa el a sorozat első cikkét.

Ebben a cikkben folytatjuk a PID-vezérlő kísérletet. A Makeblock mBot platformját fogjuk használni, mint korábban. A következő kihívást jelentő feladat számunkra egy vonalkövető robot létrehozása. Ennek lehetővé tétele érdekében ki kell terjesztenünk az mBot képességeket. Hozzáadunk egy „Me Line Follower” érzékelőt. Mivel ezt az érzékelőt ugyanaz a gyártó gyártotta, tökéletesen illeszkedik robotunkhoz és ideális a feladatunkhoz.

Van egy XOD könyvtár a leírt példák megismétléséhez. Nézze meg az áttekintést az XOD webhelyén, és adja hozzá az XOD projektjéhez a menüben a File → File → Library hozzáadása megnyomásával és a gabbapeople / mbot-lib beírásával. A könyvtár a legutóbbi kiadás óta javult, ezért ha már megvan, feltétlenül töltse fel újra a legújabb verzió megszerzéséhez.

Vessen egy pillantást továbbfejlesztett mBotunkra.

Javítás készítése

Kezdjük a robot programozásával a beérkező értékek kiolvasásával a vonalérzékelőből. Az első csomópont, amelyet a javításba helyezünk, a mbot-line-sensor

Ez a csomópont az S1 és az S2 bemeneti csapokon keresztül kommunikál az érzékelővel. Két kimeneti csapja van: L és R a táblán lévő bal és jobb infravörös érzékelő szerint. A kimeneti tű valós értéke azt jelenti, hogy az infravörös érzékelő előtt fehér vagy élénk szín található. Viszont a hamis érték azt jelenti, hogy a szín fekete vagy sötét.

A „Me Line Follower” kék felirattal rendelkezik. Fizikailag egy megfelelő kék felirattal ellátott „1-es port” -hoz csatlakoztatjuk a vezérlőpanelen. A programba egy megfelelő rj25-port1-blue csomópontot helyezünk a javításba, és létrehozzuk a szükséges linkeket.

Milyen állapotai lehetnek a vonalérzékelőnek? Nézd meg a vázlatot.

Azonban jobb, ha digitális helyett analóg érzékelőket használunk. Ugyanakkor a vonalkövető szenzor tömb jobb, mint néhány IR LED, de rendben van, ha ezt az érzékelőt használjuk a példánkban.

PID-vezérlő esetén a bemenetnek egyetlen változónak kell lennie, míg az mbot-line-sensor párat ad ki. A probléma megoldásához hozzáadjuk a subtract csomópontot. Ez a csomópont két logikai változót von le és számot állít elő.

Ily módon a kivonás csomópont ki tudja adni az értékeket:

A bemenet készen áll, és itt az ideje összekapcsolni a pid-controller -val.

Ezt a négy helyzetet használjuk a PID-vezérlő „hiba” koncepciójának kialakításához. Ideális számunkra az a helyzet, amikor a bejövő érték 0, és mindkét IR LED egy vonalban van. Ezért állítsuk a TARG csapot 0-ra.

De ez a javítás a maga formájában csak a második és a harmadik helyzetben működhet helyesen. Amikor az mBot teljesen elveszíti a sort, a pid-controller csomópont bejövő értéke is 0 lesz. Ehhez egy speciális feltételt kell bevezetnünk.

Három további csomópontot helyezünk el: és , if-else és multiply a patch-hez, és linkeket hozunk létre az alábbi képen látható módon. Vessen egy pillantást.

A és csomópont feltételeket szab a 4. helyzetre. A if-else csomópontot használjuk az erősítési tényező együtthatójának meghatározására. Rendelje a T tűt 25 értékhez, és az F tűt 1 értékhez. Végül a multiply csomópont megszorozza a pid-controller értéket az együtthatóval, és továbbadja.

Ha nem ez a 4. helyzet, akkor az együttható 1, és a pid-controller kimenete változatlan marad. Ha igen, akkor az együttható 25, és a kimenet jelentősen megnő.

Az F csapon lévő érték megmutatja, hogy az mBot milyen gyorsan fordul meg, miközben a vonalat keresi. A 25 értéket empirikusan választjuk meg. Módosítsa a projektben, hogy megtalálja az Ön számára legmegfelelőbbet.

Most ismertetjük a második, a harmadik és a negyedik helyzetet, és csak az elsőt hagyjuk érintetlenül. Ennek kijavításához el kell helyezni az egyetlen csomópontot nor és összekapcsolni az alábbi képen látható módon.

Az első esetben mind a L , mind az R pin érték hamis, és az mBot előre lép. Nincs hiba. A nor csomópontot összekapcsoljuk a pid-controller csomópont RST gombjával, hogy megvárjuk az új bejövő eltérést.

A javítás elkészítésének utolsó lépése a megszorzott érték átadása a motoroknak. Három csomópontot mbot-motors , subtract és add adunk a javításhoz. Beállítottunk egy állandó értéket az mBot alapsebességének tárolására és linkek létrehozására. A kész javítás alább látható.

A mbot-motors csomópont vezérli a motorokat. A pozitív érték a kereket hátrafelé mozgatja, míg a negatív a haladást. Az SPD konstans csomópont tárolja az alap mBot sebességet. -1 és 0 között mozog, és -0,8-ra állítjuk. A kivonás és a add csomópontok kiszámítják a motor fordulatszámát a szorzott pid-controller kimenettel és a beállított állandóval. A javítás készen áll a tesztekre. Itt az ideje a PID-vezérlő hangolásának.

PID-vezérlő

Amint emlékszik, a PID-vezérlő három tényezőt állít be a kimeneten. Ezek az arányosak, az integrálok és a deriváltak. Ha az összes együtthatót nullával hagyja, akkor az mbot csak úgy bolyong, hogy közben semmiféle viselkedés nincs. Ahogy az előző példákban tettük, kísérleti jelleggel kell megválasztanunk az együttható értékeket.

Kp tényező

Helyezzük a 3 értéket a Kp tűbe, hagyjuk a többi együtthatót 0-nak, és töltsük fel a javítást. A robot viselkedésének teszteléséhez egy kis pályarészt készítünk a padlón.

Amint látja, ezzel az együtthatóval az oszcilláció túl magas. mBot megpróbálja követni a vonalat, de megrándul, és végül elhagyja a pályát. Állítsuk be a 0,1 Kp együtthatót.

Most, amikor a robot elveszíti a vonalat, túl sokáig tér vissza. Ez azért történik, mert a hiba túl kevés hatással van a motor fordulatszámának változására. Kipróbálással és hibával választjuk ki a megfelelő 0,7 értéket.

Vessen egy pillantást az mBot viselkedésének grafikus magyarázatára. Megmutatja, hogy a Kp érték hogyan változtatja meg a robot mozgását.

Kd tényező

A Kp együttható beállításával gördülékenyebbé tesszük a mozgást. A robot azonban mégsem tudja befejezni a pályát. Nyilvánvalóan az útjának második fordulata túl meredek, és a pid-controller csomópont lassan reagál. A probléma megoldásához be kell állítanunk egy nem nulla Kd együtthatót.

Az első alkalommal a Kd 3 értékét tesszük. Kiderült, hogy a 3 érték messze van a helyestől. Sok tesztet készítünk a megfelelő érték megtalálásához. Az 1 értéket választjuk a legjobbnak.

Az mBot befejezi a pályát. Vessen egy pillantást az alábbi vázlatra. A Kd érték növelésével megnöveljük az időtartamot, amíg a robot online marad, és csökkentjük az időtartamot, hogy veszteség esetén visszatérjen a vonalra.

Ki faktor

A kiválasztott Kp és Kd együtthatók nagyon alkalmasak robotunkra. De mi van a Ki -vel?

Valójában nem kell beállítanunk. Vonalkövető robotoknál a Ki nagyon különleges esetekben hasznos lehet.

Például. A padlón a pálya végtelenül egyenes. A robot szigorúan halad a vonal mentén, de a motorokkal kapcsolatban apró gyártási nézeteltérések vannak. Jelentős idő elteltével ez a kis kérdés kontrollálatlan rángássá válik. A Ki faktor kiküszöböli az ilyen problémákat.

Megpróbáljuk használni a Ki -ot nagyon szokatlan módon.

Ha a robot kívül van a soron, a pid-controller bemenete 0. Ha a Ki értéke 0, akkor a motorokhoz szorozva 0 is (25 * 0 = 0).

Az a helyzet, hogy a robot nem ideális körülmények között mozog. Az infravörös érzékelők mindig érintik a pálya rossz darabjait, vagy zavarják a padló sötét foltjait. Tehát amíg a robot nincs vonalban, a pid-controller bemenete nem állandóan 0. A Ki összeadásával megszabadulunk a nulla szorzó értéktől. Az if-else csomópont T tüskéjén található 25 együttható miatt a robot nagyon gyorsan forog, ha elveszíti a vonalat. A teszthez tesszük a 2 Ki értéket.

Következtetés

Hűvös vonalkövető robotot készítettünk, egyszerű XOD programmal. A PID vezérlőnek köszönhetően olyan egyszerű volt.

Feltétlenül kövesse az új cikkeket, mert új, tanulságos projekteket fogunk készíteni!