Obsah:
- Krok 1: Proč používat inerciální měřicí jednotku?
- Krok 2: Jak používat BNO055 pro 2D lokalizaci?
- Krok 3: Hardware Point of Vue
- Krok 4: Jak to funguje?
- Krok 5: Architektura a software
- Krok 6: Co jsem se naučil?
Video: Způsob použití inerciální měřicí jednotky?: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Kontext:
Stavím pro zábavu robota, kterého chci autonomně pohybovat v domě.
Je to dlouhá práce a dělám ji krok za krokem.
Na toto téma jsem již publikoval 2 pokyny:
- jedna o výrobě kodéru kol
- jedna o wifi připojení
Můj robot je poháněn dvěma stejnosměrnými motory pomocí mého domácího kodéru kol.
V současné době zlepšuji ovládání pohybu a strávil jsem nějaký čas s gyroskopem, akcelerometrem a IMU. Rád se o tuto zkušenost podělím.
Chcete vědět více o lokalizaci? Zde je článek o tom, jak kombinovat umělou inteligenci a ultrazvuk k lokalizaci robota
Krok 1: Proč používat inerciální měřicí jednotku?
Proč jsem tedy použil IMU?
Prvním důvodem bylo to, že pokud je kodér kol dostatečně přesný na ovládání přímého pohybu, ani po vyladění jsem nebyl schopen dosáhnout přesnosti pro rotaci menší než +- 5 degresů a to nestačí.
Zkusil jsem tedy 2 různé senzory. Nejprve používám magnetometr (LSM303D). Princip byl jednoduchý: před rotací získat severní orientaci, vypočítat cíl a upravit pohyb, dokud cíle nedosáhne. Bylo to trochu lepší než s kodérem, ale s příliš velkým rozptylem. Poté jsem zkusil použít gyroskop (L3GD20). Princip spočíval pouze v integraci rychlosti otáčení poskytované senzorem pro výpočet rotace. A fungovalo to dobře. Dokázal jsem ovládat rotaci při +- 1 degre.
Přesto jsem byl zvědavý vyzkoušet nějaké IMU. Vybírám komponentu BNO055. Strávil jsem nějaký čas, abych porozuměl a otestoval tuto IMU. Nakonec jsem se rozhodl vybrat tento senzor z následujících důvodů
- Dokážu ovládat rotaci i L3GD20
- Při přímém pohybu mohu detekovat mírné otáčení
- Potřebuji získat severní orientaci pro lokalizaci robota a kalibrace kompasu BNO055 je velmi jednoduchá
Krok 2: Jak používat BNO055 pro 2D lokalizaci?
BNO055 IMU je 9osý inteligentní senzor Bosch, který by mohl zajistit absolutní orientaci.
Datasheet poskytuje kompletní dokumentaci. Jedná se o vysoce technologickou součást, je to poměrně složitý produkt a strávil jsem několik hodin, abych se naučil, jak funguje, a vyzkoušel různé způsoby použití.
Myslím, že by mohlo být užitečné sdílet tuto zkušenost.
Nejprve jsem použil knihovnu Adafruit, která poskytuje dobrý nástroj pro kalibraci a objevování senzoru.
Na konci a po mnoha testech jsem se rozhodl
- knihovnu Adafruit použijte pouze k uložení kalibrace
- použijte 3 ze všech možných režimů BNO055 (NDOF, IMU, Compss)
- věnovat Arduino Nano pro výpočet lokalizace na základě měření BNO055
Krok 3: Hardware Point of Vue
BNO055 je komponenta I2C. Ke komunikaci tedy potřebuje napájení, SDA a SCL.
Věnujte pozornost napětí Vdd podle zakoupeného produktu. Čip Bosch pracuje v rozsahu: 2,4 V až 3,6 V a najdete komponenty 3,3 V a 5 V.
Pro připojení Nano a BNO055 nejsou žádné potíže.
- BNO055 je poháněn Nano
- SDA a SCL jsou spojeny s 2 x 2k pull-up rezistory.
- 3 LED připojené k Nano pro diagnostiku (s odpory)
- 2 konektory slouží k definování režimu po spuštění
- 1 konektor směrem k BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 konektor směrem k robotu/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)
Trochu pájení a je to!
Krok 4: Jak to funguje?
Z komunikačního bodu vue:
- Nano je master sběrnice I2C
- Robot/Mega a BNO055 jsou slave I2C
- Nano trvale čte registry BNO055
- Robot/Mega zvedne numerický signál, aby si vyžádal slovo od Nano
Z bodu výpočtu vue: Nano v kombinaci s BNO055 přináší
- Nadpis kompasu (používá se k lokalizaci)
- Relativní nadpis (používá se k ovládání rotací)
- Absolutní nadpis a pozice (slouží k ovládání tahů)
Z funkčního bodu vue: The Nano:
- spravuje kalibraci BNO055
- spravuje parametry a příkazy BNO055
Subsystém Nano & BNO055:
- vypočítat pro každé kolo robota absolutní směr a lokalizaci (s faktorem měřítka)
- vypočítat relativní směr během otáčení robota
Krok 5: Architektura a software
Hlavní software běží na Arduino Nano
- Architektura je založena na komunikaci I2C.
- Rozhodl jsem se věnovat Nano kvůli tomu, že Atmega, která robota provozuje, byla již dost nabitá a tato architektura usnadňuje opětovné použití jinde.
- Nano čte registry BNO055, vypočítává a ukládá záhlaví a lokalizaci do vlastních registrů.
- Arduino Atmega, který spouští kód robota, odesílá informace o kodérech kol do Nano a čte nadpisy a lokalizaci uvnitř nano registrů.
Zde na GitHubu je k dispozici subsytem (Nano) kód
Kalibrační nástroj Adafruit, pokud je zde na GitHubu (kalibrace bude uložena na eeproom)
Krok 6: Co jsem se naučil?
Ohledně I2C
Nejprve jsem se pokusil mít 2 master (Arduino) a 1 slave (senzor) na stejné sběrnici, ale nakonec je možné a nejjednodušší nastavit jako master pouze Nano a použít GPIO spojení mezi 2 Arduiny pro „vyžádání tokenu“.
Pokud jde o BNO055 pro 2D orientaci
Mohu se soustředit na 3 různé provozní režimy: NDOF (kombinovaný gyroskop, akcelerometr a kompas), když je robot nečinný, IMU (kombinovaný gyroskop, akcelerometr), když se robot pohybuje, a kompas během lokalizační fáze. Přepínání mezi těmito režimy je snadné a rychlé.
Aby se zmenšila velikost kódu a zachovala se možnost použít k detekci kolize přerušení BNO055, raději nepoužívám knihovnu Adafruit a dělám to sám.
Doporučuje:
Propojovací ultrazvukový měřicí modul HC-SR04 s Arduino: 5 kroků
Propojovací ultrazvukový měřicí modul HC-SR04 s Arduino: Hej, co se děje, lidi! Akarsh zde od CETech. Tento můj projekt je trochu na jednodušší straně, ale stejně zábavný jako ostatní projekty. V tomto projektu propojíme modul ultrazvukového senzoru vzdálenosti HC-SR04. Tento modul pracuje generováním
DIY DC měřicí modul pro Arduino: 8 kroků
Diy Dc modul pro měření výkonu pro Arduino: V tomto projektu uvidíme, jak vytvořit modul pro měření stejnosměrného napájení pomocí Arduina
Snadný způsob použití Makey Makey s Tech Deck: 5 kroků
Snadný způsob použití Makey Makey s Tech Deck: Ahoj. Nedávno jsem v této soutěži viděl program make -up makey make -up tech, který byl opravdu skvělý, ale vypadal tvrdě, a tak jsem vytvořil jednoduchý způsob hraní her s technologickým balíčkem. Pokud se vám můj návod líbí, hlasujte pro něj v soutěži makey makey
DIGITÁLNÍ MULTIFUNKČNÍ MĚŘICÍ NÁSTROJ: 21 kroků (s obrázky)
DIGITÁLNÍ MULTIFUNKČNÍ MĚŘICÍ NÁSTROJ: Ahoj všichni. Vždy jsem chtěl zařízení, které by mi pomohlo vyrovnat postel 3D tiskárny, a nějaké další zařízení, které by mi pomohlo získat přibližnou délku zakřiveného povrchu, abych mohl snadno vystřihnout správnou délku nálepky
HC - 06 (podřízený modul) Změna „NAME“bez použití „Monitor sériového Arduina“který „funguje snadno“: bezchybný způsob!: 3 kroky
HC - 06 (podřízený modul) Změna „NAME“bez použití „Monitor sériového Arduina“… který „funguje snadno“: Bezchybný způsob!: Po " Dlouho " zkouším změnu jména na HC - 06 (podřízený modul) pomocí " sériový monitor Arduina, bez " Úspěch ", našel jsem další snadný způsob a nyní sdílím! Bavte se kamarádi