Sisällysluettelo:
- Vaihe 1: Miksi käyttää inertiaalista mittausyksikköä?
- Vaihe 2: Kuinka käyttää BNO055: tä 2D -lokalisointiin?
- Vaihe 3: Hardware Point of Vue
- Vaihe 4: Miten se toimii?
- Vaihe 5: Arkkitehtuuri ja ohjelmisto
- Vaihe 6: Mitä olen oppinut?
Video: Tapa käyttää inertiaa mittausyksikköä?: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Konteksti:
Rakennan huvin vuoksi robottia, jonka haluan liikkua itsenäisesti talon sisällä.
Se on pitkä työ ja teen askel askeleelta.
Olen jo julkaissut kaksi ohjekirjaa aiheesta:
- yksi pyöräkooderin valmistamisesta
- yksi wifi -yhteydestä
Robottiani ohjaa 2 tasavirtamoottoria kotitekoisen pyöränkooderin avulla.
Parannan parhaillaan liikkuvuutta ja olen viettänyt jonkin aikaa gyroskoopilla, kiihtyvyysmittarilla ja IMU: lla. Haluaisin jakaa tämän kokemuksen.
Haluatko tietää enemmän lokalisoinnista? Tässä on artikkeli siitä, kuinka yhdistää tekoäly ja ultraäänet robotin lokalisoimiseksi
Vaihe 1: Miksi käyttää inertiaalista mittausyksikköä?
Joten miksi käytin IMU: ta?
Ensimmäinen syy oli se, että jos pyöränkooderi on riittävän tarkka ohjaamaan suoraa liikettä, en pystynyt edes tunneloinnin jälkeen saamaan tarkkuutta alle +5 asteen pyörimiselle, mikä ei riitä.
Kokeilin siis kahta eri anturia. Ensinnäkin käytän magnetometriä (LSM303D). Periaate oli yksinkertainen: laske pohjoinen suunta ennen pyörimistä, laske kohde ja säädä liikettä, kunnes tavoite on saavutettu. Se oli hieman parempi kuin kooderilla, mutta liian hajaantunut. Sen jälkeen yritin käyttää gyroskooppia (L3GD20). Periaate oli vain integroida anturin antama pyörimisnopeus pyörimisen laskemiseksi. Ja se toimi hyvin. Pystyin hallitsemaan pyörimistä +- 1 astetta.
Olin kuitenkin utelias kokeilemaan IMU: ta. Valitsen BNO055 -komponentin. Käytin jonkin aikaa tämän IMU: n ymmärtämiseen ja testaamiseen. Lopulta päätin valita tämän anturin seuraavista syistä
- Pystyn ohjaamaan pyörimistä yhtä hyvin kuin L3GD20: lla
- Tunnistan pienen pyörimisen, kun liikun suoraan
- Minun on saatava pohjoinen suunta robotin lokalisointia varten, ja BNO055: n kompassikalibrointi on hyvin yksinkertaista
Vaihe 2: Kuinka käyttää BNO055: tä 2D -lokalisointiin?
BNO055 IMU on Boschin 9 -akselinen älykäs anturi, joka voi tarjota täydellisen suunnan.
Tietolomake sisältää täydelliset asiakirjat. Se on korkean teknologian komponentti, se on melko monimutkainen tuote, ja vietin muutaman tunnin oppiakseni sen toiminnan ja kokeilemaan erilaisia tapoja käyttää sitä.
Mielestäni voisi olla hyödyllistä jakaa tämä kokemus.
Ensinnäkin käytin Adafruit -kirjastoa, joka tarjoaa hyvän työkalun kalibroida ja löytää anturi.
Lopussa ja monien testien jälkeen päätin
- käytä Adafruit -kirjastoa vain kalibroinnin säästämiseksi
- käytä 3 kaikkia mahdollisia BNO055 -tiloja (NDOF, IMU, Compss)
- omista Arduino Nano paikannuksen laskemiseen BNO055 -mittausten perusteella
Vaihe 3: Hardware Point of Vue
BNO055 on I2C -komponentti. Joten se tarvitsee virtalähteen, SDA: n ja SCL: n kommunikoidakseen.
Huolehdi vain Vdd -jännitteestä ostamasi tuotteen mukaan. Bosch -siru toimii alueella: 2,4 V - 3,6 V ja löydät 3,3 ja 5 voltin komponentit.
Nanon ja BNO055: n yhdistämisessä ei ole vaikeuksia.
- BNO055 saa virtansa Nanosta
- SDA & SCL on kytketty 2 x 2k vetovastusvastuksella.
- 3 LED -valoa liitetty nanoon diagnoosia varten (vastuksilla)
- 2 liitintä, joilla määritetään tila käynnistyksen jälkeen
- 1 liitin kohti BNO: ta (Gnd, Vdd, Sda, Scl, Int)
- 1 liitin kohti robottia/megaa (+9V, Gnd, sda, Scl, Pin11, Pin12)
Vähän juotosta ja siinä kaikki!
Vaihe 4: Miten se toimii?
Viestintäpisteestä:
- Nano on I2C -väylän päällikkö
- Robotti/Mega ja BNO055 ovat I2C -orjia
- Nano lukee jatkuvasti BNO055 -rekisterit
- Robotti/Mega nostaa numeerisen signaalin pyytämään sanaa nanolta
Vue -laskentapisteestä: Nano yhdessä BNO055: n kanssa tuottaa
- Kompassin otsikko (käytetään lokalisointiin)
- Suhteellinen otsikko (käytetään kiertojen hallintaan)
- Absoluuttinen suunta ja sijainti (käytetään liikkeiden ohjaamiseen)
Toiminnalliselta kannalta: Nano:
- hallitsee BNO055 -kalibrointia
- hallitsee BNO055 -parametreja ja -komentoja
Osajärjestelmä Nano & BNO055:
- laske jokaiselle robottipyörälle absoluuttinen suunta ja lokalisointi (asteikkokertoimella)
- laske suhteellinen suunta robotin pyörimisen aikana
Vaihe 5: Arkkitehtuuri ja ohjelmisto
Pääohjelmisto toimii Arduino Nano -laitteessa
- Arkkitehtuuri perustuu I2C -viestintään.
- Päätin omistaa nanon, koska robottia käyttävä Atmega oli jo ladattu ja tämä arkkitehtuuri helpottaa uudelleenkäyttöä muualla.
- Nano lukee BNO055 -rekisterit, laskee ja tallentaa otsikon ja lokalisoinnin omiin rekistereihinsä.
- Arduino Atmega, joka suorittaa robottikoodin, lähettää pyörien enkooderitiedot nanolle ja lukee otsikot ja lokalisoinnin nanorekisterien sisällä.
Siellä alijärjestelmän (Nano) koodi on saatavilla täällä GitHubissa
Adafruit -kalibrointityökalu, jos täällä GitHubissa (kalibrointi tallennetaan eeproomiin)
Vaihe 6: Mitä olen oppinut?
I2C: n suhteen
Ensinnäkin yritin saada 2 isäntää (Arduino) ja 1 orja (anturi) samaan väylään, mutta lopussa on mahdollista ja helpointa asettaa vain Nano isäntänä ja käyttää GPIO -yhteyttä kahden Arduinon välillä "pyytää tunnusta".
Mitä tulee BNO055: een 2D -suunnassa
Voin keskittyä kolmeen eri toimintatilaan: NDOF (yhdistä gyroskooppi, kiihtyvyysmittari ja kompassi), kun robotti on käyttämättömänä, IMU (yhdistetty gyroskooppi, kiihtyvyysmittari), kun robotti liikkuu, ja kompassi lokalisointivaiheen aikana. Näiden tilojen välillä vaihtaminen on helppoa ja nopeaa.
Koodin koon pienentämiseksi ja mahdollisuuden käyttää BNO055 -keskeytystä törmäyksen havaitsemiseksi en halua käyttää Adafruit -kirjastoa ja tehdä sen yksin.
Suositeltava:
Visuino Kuinka käyttää pulssinleveysmodulaatiota (PWM) LED -valon kirkkauden muuttamiseen: 7 vaihetta
Visuino Kuinka käyttää pulssinleveysmodulaatiota (PWM) LED -valon kirkkauden muuttamiseen: Tässä opetusohjelmassa käytämme Arduino UNO: hon ja Visuinoon yhdistettyä LEDiä muuttaaksesi sen kirkkautta pulssileveysmodulaatiolla (PWM)
Arduino Kuinka käyttää 1,3 tuuman OLED -näyttöä SH1106: 7 vaihetta
Arduino Kuinka käyttää 1,3 tuuman OLED -näyttöä SH1106: Tässä opetusohjelmassa opimme käyttämään 1,3 tuuman OLED -näyttöä SH1106 Arduino- ja Visuino -ohjelmistoa. Katso video
Kuinka käyttää Arduino DDS -taajuussignaaligeneraattoria AD9850: 7 vaihetta
Kuinka käyttää Arduino DDS -taajuussignaaligeneraattoria AD9850: Tässä opetusohjelmassa opimme tekemään taajuussignaaligeneraattorin käyttämällä AD9850 -moduulia ja Arduinoa. Katso video! huonompi korkeammilla taajuuksilla
Kuinka käyttää valoresistoria LEDin sytyttämiseen Aurduinolla: 12 vaihetta
Kuinka käyttää valoresistoria LEDin sytyttämiseen Aurduinon kanssa: Hyvää huomenta/iltapäivää/iltaa kaikille Arduino-harrastajille! Tänään aion demonstroida, miten valon vastusta (valokennoa) käytetään LED -valon sytyttämiseen. Tämän ohjeen mukana toimitettu koodi antaa LED -valon himmentyä normaalisti, mutta vilkkuu
Helppo tapa käyttää Makey Makey -tekniikkaa teknisellä kannella: 5 vaihetta
Helppo tapa käyttää Makey Makey -tekniikkaa teknisellä kannella: Hei. Näin äskettäin tässä kilpailussa tech -kannen makey -makey -ohjelman, joka oli todella siisti, mutta tuntui vaikealta, joten tein helpon tavan pelata pelejä tech -kannella. Jos pidät ohjeistani, äänestä sitä makey makey -kilpailussa