Tartalomjegyzék:
- 1. lépés: Miért érdemes inerciális mérőegységet használni?
- 2. lépés: A BNO055 használata 2D -s lokalizációhoz?
- 3. lépés: Hardverpont Vue
- 4. lépés: Hogyan működik?
- 5. lépés: Az architektúra és a szoftver
- 6. lépés: Mit tanultam?
Videó: Az inerciális mérőegység használatának módja?: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
A kontextus:
Egy szórakoztató robotot építek, amelyet autonóm módon szeretnék mozgatni egy házban.
Hosszú munka, és lépésről lépésre haladok.
Ebben a témában már közzétettem két oktatóanyagot:
- az egyik a kerékkódoló készítéséről szól
- egy a wifi kapcsolatról
A robotomat 2 egyenáramú motor hajtja, házi készítésű kerékkódoló segítségével.
Jelenleg fejlesztem a mozgásvezérlést, és egy kis időt töltöttem giroszkóppal, gyorsulásmérővel és IMU -val. Örömmel osztom meg ezt a tapasztalatot.
Szeretne többet megtudni a lokalizációról? Íme egy cikk arról, hogyan kombinálható a mesterséges intelligencia és az ultrahang a robot lokalizálásához
1. lépés: Miért érdemes inerciális mérőegységet használni?
Akkor miért használtam IMU -t?
Az első ok az volt, hogy ha a kerékkódoló elég pontos az egyenes mozgás vezérléséhez, még alagút után sem tudtam elérni a pontosságot a +- 5 fok alatti forgáshoz, és ez nem elég.
Szóval kipróbáltam 2 különböző érzékelőt. Először mágnesmérőt (LSM303D) használok. Az elv egyszerű volt: a forgatás előtt vegye ki az északi tájolást, számítsa ki a célt, és módosítsa a lépést, amíg el nem éri a célt. Kicsit jobb volt, mint a kódolóval, de túl diszpergált. Ezt követően megpróbáltam giroszkópot (L3GD20) használni. Az elv csak az volt, hogy integrálja az érzékelő által biztosított forgási sebességet a forgás kiszámításához. És jól működött. Sikerült szabályoznom a forgást +- 1 fokon.
Ennek ellenére kíváncsi voltam arra, hogy kipróbáljak néhány IMU -t. BNO055 komponenst választok. Töltöttem egy kis időt, hogy megértsem és teszteljem ezt az IMU -t. Végül úgy döntöttem, hogy ezt az érzékelőt választom a következő okok miatt
- A forgatást ugyanúgy tudom szabályozni, mint az L3GD20 -nál
- Egyenes mozgáskor enyhe forgást észlelek
- Északra kell támaszkodnom a robot lokalizálásához, és a BNO055 iránytű kalibrálása nagyon egyszerű
2. lépés: A BNO055 használata 2D -s lokalizációhoz?
A BNO055 IMU egy Bosch 9 tengelyes intelligens érzékelő, amely abszolút orientációt biztosít.
Az adatlap teljes dokumentációt tartalmaz. Ez egy high -tech komponens, meglehetősen összetett termék, és néhány órát töltöttem, hogy megtanuljam, hogyan működik, és kipróbáltam a felhasználás különböző módjait.
Szerintem hasznos lehet megosztani ezt a tapasztalatot.
Először az Adafruit könyvtárat használtam, amely jó eszköz az érzékelő kalibrálásához és felfedezéséhez.
Végül és sok teszt után úgy döntöttem
- csak az Adafruit könyvtárat használja a kalibrálás mentéséhez
- használja a BNO055 összes lehetséges módját (NDOF, IMU, Compss)
- szenteljen egy Arduino Nano -t a BNO055 mérések alapján történő lokalizáció kiszámításához
3. lépés: Hardverpont Vue
A BNO055 egy I2C komponens. Tehát tápellátásra, SDA -ra és SCL -re van szüksége a kommunikációhoz.
Csak vigyázzon a Vdd feszültségre a megvásárolt terméknek megfelelően. A Bosch chip a 2,4 V -tól 3,6 V -ig terjedő tartományban működik, és megtalálhatja a 3,3 V -os és 5 V -os komponenst.
A Nano és a BNO055 csatlakoztatása nem okoz nehézséget.
- A BNO055 tápellátását a Nano biztosítja
- Az SDA és az SCL 2 x 2k felhúzó ellenállással van összekötve.
- 3 LED csatlakozik a Nano -hoz diagnózishoz (ellenállásokkal)
- 2 csatlakozó a rendszerindítás utáni mód meghatározásához
- 1 csatlakozó a BNO felé (Gnd, Vdd, Sda, Scl, Int)
- 1 csatlakozó a robot/mega felé (+9V, Gnd, sda, Scl, Pin11, Pin12)
Egy kis forrasztás és ennyi!
4. lépés: Hogyan működik?
A kommunikáció szempontjából:
- A Nano az I2C buszmester
- A Robot/Mega és a BNO055 I2C rabszolgák
- A Nano folyamatosan olvassa a BNO055 regisztereket
- A Robot/Mega egy numerikus jelet emelve kéri a szót a Nano -tól
A számítási pontból: A Nano a BNO055 -tel kombinálva szállít
- Az iránytű fejléce (lokalizációhoz használatos)
- Relatív címsor (a forgások vezérlésére szolgál)
- Abszolút irány és pozíció (a mozgások vezérlésére szolgál)
A funkcionális szempontból: A Nano:
- kezeli a BNO055 kalibrálást
- kezeli a BNO055 paramétereit és parancsait
A Nano & BNO055 alrendszer:
- minden robotkerékre kiszámítja az abszolút irányt és a lokalizációt (léptéktényezővel)
- kiszámítja a relatív irányt a robot forgása közben
5. lépés: Az architektúra és a szoftver
A fő szoftver Arduino Nano -n fut
- Az architektúra az I2C kommunikáción alapul.
- Úgy döntöttem, hogy dedikálok egy nanót, mivel az a tény, hogy a robotot futtató Atmega már fel volt töltve, és ez az architektúra megkönnyíti máshol történő újrafelhasználását.
- A Nano beolvassa a BNO055 regisztereket, kiszámítja és tárolja a címsort és a lokalizációt a saját regisztereiben.
- Az Arduino Atmega, amely futtatja a robotkódot, kerekekódoló információkat küld a Nano számára, és elolvassa a fejléceket és a lokalizációt a Nano regisztereken belül.
Az alrendszer (Nano) kódja itt érhető el a GitHubon
Az Adafruit kalibráló eszköz, ha itt van a GitHub -on (a kalibrálás az eeproomban lesz tárolva)
6. lépés: Mit tanultam?
Az I2C -vel kapcsolatban
Először megpróbáltam 2 mestert (Arduino) és 1 slave -t (érzékelőt) ugyanazon a buszon, de a végén lehetséges és legegyszerűbb csak a Nano -t beállítani mesterként, és GPIO kapcsolatot használni a 2 Arduino között, hogy "kérje a tokent".
A BNO055 -tel kapcsolatban a 2D -s tájoláshoz
Három különböző üzemmódra tudok koncentrálni: NDOF (kombinált giroszkóp, gyorsulásmérő és Compas), amikor a robot tétlen, IMU (kombinált giroszkóp, gyorsulásmérő), amikor a robot mozog, és Iránytű a lokalizációs fázisban. Az üzemmódok közötti váltás egyszerű és gyors.
A kód méretének csökkentése és annak érdekében, hogy a BNO055 megszakítást használhassuk az ütközés észlelésére, inkább nem használom az Adafruit könyvtárat, és egyedül csinálom.
Ajánlott:
Az STM32f767zi Cube IDE használatának első lépései és egyéni vázlat feltöltése: 3 lépés
Első lépések az STM32f767zi Cube IDE -vel és a Feltöltés egyéni vázlata: VÁSÁROL (kattintson a tesztre a vásárláshoz/a weboldal megtekintéséhez) STM32F767ZISUPPORTED SZOFTVER · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORD STM mikrovezérlők programozására használják
A Raspberry Pi beállítása és használatának megkezdése: 4 lépés
Hogyan állítsunk be egy Raspberry Pi-t és kezdjük el használni: A jövő olvasói számára 2020-ban járunk. Az az év, amikor ha szerencséje van, hogy egészséges, és nem fertőzött meg a Covid-19-vel, akkor hirtelen , sokkal több szabadideje van, mint gondolta. Szóval hogyan tudnám nem túl ostoba módon elfoglalni magam? Ó, igen
Az Arduino és az Ethernet használatának első lépései: 8 lépés
Az Arduino és az Ethernet használatának első lépései: Az Arduino könnyen kommunikálhat a külvilággal vezetékes Ethernet kapcsolaton keresztül. Mielőtt azonban elkezdenénk, feltételezzük, hogy rendelkezik alapvető ismeretekkel a számítógépes hálózatokról, például a számítás csatlakoztatásának ismerete
A BeagleBone Black használatának első lépései: 11 lépés
A BeagleBone Black használatának első lépései: Miután egy ideig az Arduino -t használtam, úgy döntöttem, hogy kipróbálom a Beaglebone Black -et. Látva az Instructables tartalmának hiányát, és nehézségeket okozva az induláshoz, segíteni akartam másoknak a BeagleBone Black beállításában
A Raspbian Buster telepítése a Raspberry Pi 3 - -ra A Raspbian Buster használatának első lépései a Raspberry Pi 3b / 3b+segítségével: 4 lépés
A Raspbian Buster telepítése a Raspberry Pi 3 | -ra A Raspbian Buster használatának megkezdése a Raspberry Pi 3b / 3b+alkalmazással: Sziasztok, a közelmúltban a Raspberry pi szervezet új Raspbian operációs rendszert indított Raspbian Buster néven. Ez a Raspbian új verziója a Raspberry pi's számára. Tehát ma ebben az utasításban megtanuljuk, hogyan kell telepíteni a Raspbian Buster OS -t a Raspberry pi 3 -ra