Taula de continguts:
- Pas 1: per què utilitzar una unitat de mesura inercial?
- Pas 2: Com utilitzar BNO055 per a la localització 2D?
- Pas 3: Punt de vista de maquinari
- Pas 4: Com funciona?
- Pas 5: Arquitectura i programari
- Pas 6: què he après?
Vídeo: Una manera d’utilitzar una unitat de mesura inercial ?: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
El context:
Estic construint per diversió un robot que vull moure de forma autònoma dins d’una casa.
És una feina llarga i estic fent pas a pas.
Ja he publicat 2 instruccions sobre aquest tema:
- una sobre la fabricació d’un codificador de rodes
- un sobre connexió wifi
El meu robot funciona amb 2 motors de corrent continu amb l'ajut del meu codificador de rodes casolà.
Actualment estic millorant el control de moviment i he passat un temps amb giroscopi, acceleròmetre i IMU. M’agradaria compartir aquesta experiència.
Voleu saber més sobre la localització? Aquí teniu un article sobre com combinar la intel·ligència artificial i els ultrasons per localitzar el robot
Pas 1: per què utilitzar una unitat de mesura inercial?
Llavors, per què he fet servir una IMU?
La primera raó va ser que si el codificador de rodes és prou precís per controlar el moviment directe, fins i tot després de sintonitzar no vaig poder obtenir una precisió de rotació inferior a + - 5 graus i això no és suficient.
Així que vaig provar 2 sensors diferents. En primer lloc, faig servir un magnetòmetre (LSM303D). El principi era senzill: abans de la rotació, obteniu l'orientació nord, calculeu l'objectiu i ajusteu el moviment fins que s'arribi a l'objectiu. Va ser una mica millor que amb el codificador, però amb massa dispersió. Després vaig intentar utilitzar un giroscopi (L3GD20). El principi era només integrar la velocitat de rotació proporcionada pel sensor per calcular la rotació. I va funcionar bé. Vaig poder controlar la rotació a + - 1 grau.
Tot i això, tenia curiositat per provar alguna IMU. Trio un component BNO055. Vaig dedicar una estona a comprendre i provar aquesta IMU. Al final, vaig decidir seleccionar aquest sensor per les següents raons
- Puc controlar la rotació, així com amb el L3GD20
- Puc detectar una lleugera rotació quan es mou recte
- Necessito orientar-me cap al nord per a la localització del robot i el calibratge de la brúixola del BNO055 és molt senzill
Pas 2: Com utilitzar BNO055 per a la localització 2D?
BNO055 IMU és un sensor intel·ligent Bosch de 9 eixos que podria proporcionar una orientació absoluta.
El full de dades proporciona una documentació completa. És un component d’alta tecnologia, és un producte bastant complex i vaig passar algunes hores per aprendre com funciona i provar diferents maneres d’utilitzar-lo.
Crec que podria ser útil compartir aquesta experiència.
En primer lloc, he utilitzat la biblioteca Adafruit que proporciona una bona eina per calibrar i descobrir el sensor.
Al final i després de moltes proves, vaig decidir fer-ho
- utilitzeu la biblioteca Adafruit només per desar el calibratge
- utilitzeu 3 de tots els modes possibles de BNO055 (NDOF, IMU, Compss)
- dediqueu un Arduino Nano per calcular la localització basada en els mesuraments BNO055
Pas 3: Punt de vista de maquinari
BNO055 és un component I2C. Per tant, necessita font d'alimentació, SDA i SCL per comunicar-se.
Només cal que tingueu cura del voltatge Vdd segons el producte que hàgiu comprat. El xip Bosch funciona en el rang: 2.4V a 3.6V i podeu trobar components de 3.3v i 5v.
No hi ha dificultats per connectar el Nano i el BNO055.
- El BNO055 funciona amb Nano
- SDA i SCL estan connectats amb resistències de tracció de 2 x 2 k.
- 3 LED connectats al Nano per al diagnòstic (amb resistències)
- 2 connectors utilitzats per definir el mode després de l'arrencada
- 1 connector cap al BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 connector cap al robot / mega (+ 9V, Gnd, sda, Scl, Pin11, Pin12)
Una mica de soldadura i ja està!
Pas 4: Com funciona?
Des del punt de vista de la comunicació:
- El Nano és el mestre d’autobusos I2C
- El Robot / Mega i el BNO055 són esclaus I2C
- El Nano va llegir permanentment els registres BNO055
- El robot / Mega fa un senyal numèric per demanar la paraula al Nano
Des del punt de vista de càlcul: el Nano combinat amb el BNO055 ofereix
- L'encapçalament de la brúixola (utilitzat per a la localització)
- Un encapçalament relatiu (utilitzat per controlar les rotacions)
- L'encapçalament i la posició absoluts (s'utilitzen per controlar els moviments)
Des del punt de vista funcional: The Nano:
- gestiona el calibratge BNO055
- gestiona els paràmetres i les ordres de BNO055
El subsistema Nano i BNO055:
- calcular per a cada roda de robot l’encapçalament i la localització absoluts (amb un factor d’escala)
- calculeu l’encapçalament relatiu durant la rotació del robot
Pas 5: Arquitectura i programari
El programari principal s’executa en un Arduino Nano
- L’arquitectura es basa en la comunicació I2C.
- Vaig escollir dedicar-li un Nano pel fet que l’Atmega que fa funcionar el robot ja estava bastant carregat i aquesta arquitectura fa que sigui més fàcil reutilitzar-lo en altres llocs.
- El Nano llegeix els registres BNO055, calcula i emmagatzema l'encapçalament i la localització en els seus propis registres.
- L'Arduino Atmega que executa el codi del robot, envia informació de codificadors de rodes al Nano i llegeix els encapçalaments i la localització dels registres Nano.
Hi ha disponible el codi subsytem (Nano) aquí a GitHub
L'eina de calibratge d'Adafruit si és aquí a GitHub (el calibratge s'emmagatzemarà a eeproom)
Pas 6: què he après?
Quant a I2C
En primer lloc, he intentat tenir 2 mestres (Arduino) i 1 esclau (sensor) al mateix bus, però al final és possible i fàcil establir només el Nano com a mestre i utilitzar la connexió GPIO entre els 2 Arduinos per "sol·licitar el testimoni"..
Respecte a BNO055 per a orientació 2D
Puc concentrar-me en 3 modes de funcionament diferents: NDOF (combinar giroscopi, acceleròmetre i Compas) quan el robot està inactiu, IMU (combinar giroscopi, acceleròmetre) quan el robot es mou i Brúixola durant la fase de localització. Canviar entre aquests modes és fàcil i ràpid.
Per reduir la mida del codi i mantenir la possibilitat d'utilitzar la interrupció BNO055 per detectar col·lisions, prefereixo no fer servir la biblioteca Adafruit i fer-ho pel meu compte.
Recomanat:
He fet una unitat de CD antiga en un robot Wifi amb Nodemcu, la unitat de motor L298N i molts més: 5 passos
He creat una antiga unitat de CD en un robot Wifi amb Nodemcu, la unitat de motor L298N i molts més: VX Robotics & Electrònica present
Manera fàcil d'utilitzar Makey Makey amb una coberta tècnica: 5 passos
Manera fàcil d'utilitzar Makey Makey amb una coberta tècnica: Hola. Fa poc vaig veure un programa de tecnologia de makey makey makey en aquest concurs, que era molt divertit, però semblava difícil, així que vaig fer una manera fàcil de jugar a jocs amb un deck de tecnologia. Si us agrada la meva instrucció, si us plau voteu-la al concurs de makey makey
ARUPI: una unitat de gravació automatitzada de baix cost / unitat de gravació autònoma (ARU) per a ecologistes del paisatge sonor: 8 passos (amb imatges)
ARUPI: una unitat de gravació automatitzada de baix cost / unitat de gravació autònoma (ARU) per a ecologistes del paisatge sonor: aquest instructiu va ser escrit per Anthony Turner. El projecte es va desenvolupar amb molta ajuda del Shed de la Facultat d'Informàtica de la Universitat de Kent (el senyor Daniel Knox va ser de gran ajuda!). Us mostrarà com construir una gravació d'àudio automatitzada en U
Com crear una unitat USB d'arrencada sense utilitzar cap programari: 3 passos
Com crear una unitat USB d'arrencada sense fer servir cap programari: per crear una unitat USB d'arrencada manualment, utilitzarem el símbol del sistema com a programa per defecte de Windows. Aquí hi ha pas a pas per crear una unitat USB d’arrencada com a suport d’instal·lació de Windows. Per crear una unitat USB d'arrencada com a instal·lació de Windows jo
Com fer que la vostra unitat flash es converteixi en una informació impenetrable de manera segura: P: 4 passos
Com fer que la vostra unitat flash es converteixi en una informació impenetrable de manera segura: P: D'acord, per tant, bàsicament el que farem és que el vostre reproductor de memòria flash o reproductor mp3 genèric (bàsicament qualsevol cosa que faci servir memòria flash …) pugui estar a salvo d'un depredador la troba i passa pel que hi guardes