Tartalomjegyzék:

Az inerciális mérőegység használatának módja?: 6 lépés
Az inerciális mérőegység használatának módja?: 6 lépés

Videó: Az inerciális mérőegység használatának módja?: 6 lépés

Videó: Az inerciális mérőegység használatának módja?: 6 lépés
Videó: 10 pilóta nélküli járművek, amelyek megváltoztatják a világot Autonóm technológiák 2024, November
Anonim
Az inerciamérő egység használatának módja?
Az inerciamérő egység használatának módja?

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?

Miért érdemes inerciális mérőegységet használni?
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?

Hogyan kell használni a BNO055 -öt 2D lokalizációhoz?
Hogyan kell használni a BNO055 -öt 2D 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

Hardver Point of Vue
Hardver Point of Vue
Hardver Point of Vue
Hardver Point of Vue
Hardver Point of Vue
Hardver Point of 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?

Hogyan működik ?
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

Az architektúra és a szoftver
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: