Sisällysluettelo:

Tapa käyttää inertiaa mittausyksikköä?: 6 vaihetta
Tapa käyttää inertiaa mittausyksikköä?: 6 vaihetta

Video: Tapa käyttää inertiaa mittausyksikköä?: 6 vaihetta

Video: Tapa käyttää inertiaa mittausyksikköä?: 6 vaihetta
Video: Haulikot vertailussa: Inertia- ja kaasumäntä-toimiset 2024, Marraskuu
Anonim
Tapa käyttää inertiamittausyksikköä?
Tapa käyttää inertiamittausyksikköä?

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öä?

Miksi käyttää inertiaa mittaavaa yksikköä?
Miksi käyttää inertiaa mittaavaa yksikköä?

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?

Kuinka käyttää BNO055: tä 2D -lokalisointiin?
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

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

Kuinka se toimii ?
Kuinka 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

Arkkitehtuuri ja ohjelmistot
Arkkitehtuuri ja ohjelmistot

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: