Obsah:
- Krok 1: Prečo používať inerciálnu meraciu jednotku?
- Krok 2: Ako používať BNO055 na 2D lokalizáciu?
- Krok 3: Hardvérový bod Vue
- Krok 4: Ako to funguje?
- Krok 5: Architektúra a softvér
- Krok 6: Čo som sa naučil?
Video: Spôsob, ako použiť inerciálnu meraciu jednotku?: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
Kontext:
Staviam pre zábavu robota, ktorého chcem autonómne pohybovať v dome.
Je to dlhá práca a robím ju krok za krokom.
Na túto tému som už publikoval 2 návody:
- jedna o výrobe kodéra kolies
- jeden o wifi pripojení
Môj robot je poháňaný 2 jednosmernými motormi pomocou môjho doma vyrobeného kodéra kolies.
Aktuálne zdokonaľujem ovládanie pohybu a strávil som nejaký čas s gyroskopom, akcelerometrom a IMU. Rád by som sa podelil o túto skúsenosť.
Chcete vedieť viac o lokalizácii? Tu je článok o tom, ako kombinovať umelú inteligenciu a ultrazvuk na lokalizáciu robota
Krok 1: Prečo používať inerciálnu meraciu jednotku?
Prečo som teda použil IMU?
Prvým dôvodom bolo, že ak je enkodér kolies dostatočne presný na ovládanie priameho pohybu, ani po naladení som nebol schopný dosiahnuť presnosť pri otáčaní menšom ako +- 5 degresov a to nestačí.
Skúsil som teda 2 rôzne senzory. Najprv používam magnetometer (LSM303D). Princíp bol jednoduchý: pred rotáciou získajte severnú orientáciu, vypočítajte cieľ a upravujte pohyb, kým cieľ nedosiahnete. Bolo to o niečo lepšie ako s kodérom, ale s príliš veľkým rozptylom. Potom som sa pokúsil použiť gyroskop (L3GD20). Princípom bolo integrovať rýchlosť otáčania poskytovanú snímačom na výpočet rotácie. A fungovalo to dobre. Dokázal som ovládať rotáciu pri +- 1 stupňoch.
Napriek tomu som bol zvedavý vyskúšať nejaké IMU. Vyberám komponent BNO055. Strávil som nejaký čas na to, aby som porozumel a otestoval túto IMU. Nakoniec som sa rozhodol vybrať tento snímač z nasledujúcich dôvodov
- Rotáciu môžem ovládať rovnako dobre ako pri L3GD20
- Pri rovnom pohybe dokážem zaznamenať mierne otáčanie
- Potrebujem získať severnú orientáciu pre lokalizáciu robota a kalibrácia kompasu BNO055 je veľmi jednoduchá
Krok 2: Ako používať BNO055 na 2D lokalizáciu?
BNO055 IMU je 9 -osý inteligentný senzor Bosch, ktorý by mohol poskytnúť absolútnu orientáciu.
Datasheet poskytuje kompletnú dokumentáciu. Jedná sa o high -tech komponent, je to pomerne zložitý produkt a strávil som niekoľko hodín, aby som sa dozvedel, ako funguje, a vyskúšal som rôzne spôsoby použitia.
Myslím si, že by mohlo byť užitočné podeliť sa o túto skúsenosť.
Najprv som použil knižnicu Adafruit, ktorá poskytuje dobrý nástroj na kalibráciu a objavenie senzora.
Na konci a po mnohých testoch som sa rozhodol
- knižnicu Adafruit používajte iba na ukladanie kalibrácie
- použite 3 zo všetkých možných režimov BNO055 (NDOF, IMU, Comps)
- Venujte Arduino Nano na výpočet lokalizácie na základe meraní BNO055
Krok 3: Hardvérový bod Vue
BNO055 je komponent I2C. Na komunikáciu teda potrebuje napájanie, SDA a SCL.
Dávajte si pozor na napätie Vdd podľa produktu, ktorý ste si kúpili. Čip Bosch pracuje v rozsahu: 2,4 V až 3,6 V a nájdete komponenty 3,3 V a 5 V.
S pripojením Nano a BNO055 nie sú žiadne problémy.
- BNO055 je poháňaný Nano
- SDA a SCL sú spojené s 2 x 2 k výsuvnými odpormi.
- 3 LED diódy pripojené k Nano na diagnostiku (s odpormi)
- 2 konektory slúžiace na definovanie režimu po zavedení
- 1 konektor smerom k BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 konektor smerom k robotu/Mega (+9 V, Gnd, sda, Scl, Pin11, Pin12)
Trochu spájkovania a je to!
Krok 4: Ako to funguje?
Z komunikačného bodu vue:
- Nano je master zbernice I2C
- Robot/Mega a BNO055 sú otroci I2C
- Nano trvalo čítalo registre BNO055
- Robot/Mega zdvihne číselný signál, aby si vyžiadal slovo od Nano
Z hľadiska výpočtu: Nano v kombinácii s BNO055 prináša
- Nadpis kompasu (používa sa na lokalizáciu)
- Relatívny nadpis (používa sa na ovládanie rotácií)
- Absolútne nadpis a poloha (používané na ovládanie pohybov)
Z funkčného hľadiska: The Nano:
- spravuje kalibráciu BNO055
- spravuje parametre a príkazy BNO055
Subsystém Nano & BNO055:
- vypočítajte pre každé koleso robota absolútny kurz a lokalizáciu (s faktorom mierky)
- vypočítajte relatívny kurz počas otáčania robota
Krok 5: Architektúra a softvér
Hlavný softvér beží na zariadení Arduino Nano
- Architektúra je založená na komunikácii I2C.
- Rozhodol som sa venovať nanu, pretože Atmega, ktorá robot poháňa, bola už dosť nabitá a táto architektúra uľahčuje opätovné použitie inde.
- Nano číta registre BNO055, vypočítava a ukladá záhlavie a lokalizáciu do vlastných registrov.
- Arduino Atmega, ktorý spúšťa kód robota, odosiela informácie o kodéroch kolies do Nano a číta nadpisy a lokalizáciu vo vnútri nano registrov.
Tu na GitHub je k dispozícii subsytem (Nano) kód
Kalibračný nástroj Adafruit, ak je tu na GitHub (kalibrácia bude uložená v eeproom)
Krok 6: Čo som sa naučil?
Pokiaľ ide o I2C
Najprv som sa pokúsil mať 2 master (Arduino) a 1 slave (senzor) na tej istej zbernici, ale na konci je možné a najľahšie nastaviť ako hlavný iba Nano a použiť GPIO spojenie medzi 2 Arduinmi na „vyžiadanie tokenu“.
Pokiaľ ide o BNO055 pre 2D orientáciu
Môžem sa sústrediť na 3 rôzne prevádzkové režimy: NDOF (kombinovaný gyroskop, akcelerometer a kompasy), keď je robot v nečinnosti, IMU (kombinovaný gyroskop, akcelerometer), keď sa robot pohybuje, a kompas počas fázy lokalizácie. Prepínanie medzi týmito režimami je jednoduché a rýchle.
Aby sa zmenšila veľkosť kódu a zachovala sa možnosť používať na detekciu kolízií prerušenie BNO055, knižnicu Adafruit radšej nepoužívam a urobím to sám.
Odporúča:
Visuino Ako použiť moduláciu šírky impulzu (PWM) na zmenu jasu LED: 7 krokov
Visuino Ako použiť moduláciu šírky impulzu (PWM) na zmenu jasu diódy LED: V tomto tutoriáli použijeme diódu LED pripojenú k Arduino UNO a Visuino na zmenu jasu pomocou modulácie šírky impulzu (PWM). Pozrite si ukážkové video
Ako použiť fotorezistor na osvetlenie LED diódou Aurduino: 12 krokov
Ako použiť fotorezistor na osvetlenie LED diódou Aurduino: Dobré ráno/popoludnie/večer všetkým nadšencom Arduina! Dnes budem demonštrovať, ako používať fotoodpor (fotobunku) na osvetlenie LED. Kód dodaný s týmto návodom nechá LED diódu normálne stlmiť, ale bude blikať, keď
Ovládač Imaginbot pre 1 kubickú meraciu 3D tlačiareň: 22 krokov
Ovládač Imaginbot pre 1 kubickú meraciu 3D tlačiareň: Tento ovládač bol navrhnutý tak, aby zostrojil 3D tlačiareň kubických metrov príkazom veľkých krokových motorov
Ako vytvoriť zavádzaciu jednotku Linux (a ako ju používať): 10 krokov
Ako vytvoriť zavádzaciu jednotku Linux (a ako ju používať): Toto je jednoduchý úvod, ako začať s Linuxom, konkrétne Ubuntu
Ako použiť slučku while na iteráciu poľa v Jave: 9 krokov
Ako použiť slučku while na iteráciu poľa v Jave: Dnes vám ukážem, ako použiť Javu na vytvorenie cyklu While, ktorý je možné použiť na iteráciu prostredníctvom zoznamu čísel alebo slov. Tento koncept je pre programátorov základnej úrovne a každého, kto sa chce rýchlo zoznámiť so slučkami a poľami Java