Sadržaj:

Način korištenja inercijske mjerne jedinice?: 6 koraka
Način korištenja inercijske mjerne jedinice?: 6 koraka

Video: Način korištenja inercijske mjerne jedinice?: 6 koraka

Video: Način korištenja inercijske mjerne jedinice?: 6 koraka
Video: Pretvaranje mjernih jedinica - brzo i jednostavno! 2024, Studeni
Anonim
Način korištenja inercijske mjerne jedinice?
Način korištenja inercijske mjerne jedinice?

Kontekst:

Za zabavu gradim robota kojeg želim autonomno kretati unutar kuće.

To je dug posao i radim ga korak po korak.

Već sam objavio 2 uputstva na tu temu:

  • jedan o izradi kodera za kotače
  • jedan o wifi vezi

Mog robota pokreću dva istosmjerna motora uz pomoć domaćeg enkodera.

Trenutno poboljšavam kontrolu kretanja i proveo sam neko vrijeme sa žiroskopom, akcelerometrom i IMU -om. Bilo bi mi drago podijeliti ovo iskustvo.

Želite li znati više o lokalizaciji? Evo članka o tome kako kombinirati umjetnu inteligenciju i ultrazvuk za lokalizaciju robota

Korak 1: Zašto koristiti inercijsku mjernu jedinicu?

Zašto koristiti inercijsku mjernu jedinicu?
Zašto koristiti inercijsku mjernu jedinicu?

Zašto sam onda koristio IMU?

Prvi razlog bio je taj što ako je koder kotača dovoljno precizan da kontrolira ravno kretanje, čak i nakon ugađanja nisam mogao postići preciznost za rotaciju manju od +- 5 stupnjeva, a to nije dovoljno.

Pa sam isprobao 2 različita senzora. Prvo koristim magnetometar (LSM303D). Princip je bio jednostavan: prije rotacije postavite sjevernu orijentaciju, izračunajte cilj i prilagodite potez dok se cilj ne dosegne. Bilo je malo bolje nego s enkoderom, ali s previše disperzije. Nakon toga sam pokušao upotrijebiti žiroskop (L3GD20). Princip je bio samo integriranje brzine rotacije koju daje senzor za izračunavanje rotacije. I radilo je dobro. Uspio sam kontrolirati rotaciju pri +- 1 stupnju.

Ipak, bio sam znatiželjan isprobati neki IMU. Biram komponentu BNO055. Proveo sam neko vrijeme kako bih razumio i testirao ovaj IMU. Na kraju sam odlučio odabrati ovaj senzor iz sljedećih razloga

  • Mogu kontrolirati rotaciju, kao i s L3GD20
  • Mogu otkriti laganu rotaciju kada se krećem ravno
  • Moram dobiti sjevernu orijentaciju za lokalizaciju robota, a kalibracija kompasa BNO055 je vrlo jednostavna

Korak 2: Kako koristiti BNO055 za 2D lokalizaciju?

Kako koristiti BNO055 za 2D lokalizaciju?
Kako koristiti BNO055 za 2D lokalizaciju?

BNO055 IMU je Boschev 9 -osni inteligentni senzor koji može pružiti apsolutnu orijentaciju.

Tehnički list pruža potpunu dokumentaciju. To je visokotehnološka komponenta, prilično je složen proizvod i proveo sam nekoliko sati kako bih naučio kako radi i isprobao različite načine njegove uporabe.

Mislim da bi moglo biti korisno podijeliti ovo iskustvo.

Prvo sam koristio biblioteku Adafruit koja pruža dobar alat za kalibraciju i otkrivanje senzora.

Na kraju i nakon puno testova odlučio sam

  • biblioteku Adafruit koristite samo za spremanje kalibracije
  • koristiti 3 od svih mogućih načina rada BNO055 (NDOF, IMU, Compss)
  • posvetiti Arduino Nano za izračunavanje lokalizacije na temelju BNO055 poruka

Korak 3: Hardverska točka Vue

Hardverska točka Vue
Hardverska točka Vue
Hardverska točka Vue
Hardverska točka Vue
Hardverska točka Vue
Hardverska točka Vue

BNO055 je komponenta I2C. Za komunikaciju mu je potrebno napajanje, SDA i SCL.

Samo pazite na Vdd napon prema proizvodu koji ste kupili. Bosch čip radi u rasponu: 2,4 V do 3,6 V, a možete pronaći komponente od 3,3 V i 5 V.

Nema poteškoća pri povezivanju Nano i BNO055.

  • BNO055 pokreće Nano
  • SDA i SCL spojeni su 2 x 2k pull-up otpornicima.
  • 3 LED spojena na Nano za dijagnostiku (s otpornicima)
  • 2 konektora za definiranje načina rada nakon pokretanja
  • 1 konektor prema BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 priključak prema Robotu/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)

Malo lemljenja i to je to!

Korak 4: Kako to funkcionira?

Kako radi ?
Kako radi ?

S komunikacijske točke vue:

  • Nano je magistar I2C sabirnica
  • Robot/Mega i BNO055 su I2C robovi
  • Nano trajno čita registre BNO055
  • Robot/Mega podiže numerički signal kako bi zatražio riječ od Nano

Od točke proračuna vue: Nano u kombinaciji s BNO055 isporučuje

  • Zaglavlje kompasa (koristi se za lokalizaciju)
  • Relativni naslov (koristi se za kontrolu rotacija)
  • Apsolutni smjer i položaj (koristi se za kontrolu poteza)

S funkcionalne točke gledišta: Nano:

  • upravlja kalibracijom BNO055
  • upravlja parametrima i naredbama BNO055

Podsistem Nano & BNO055:

  • izračunati za svaki kotač robota apsolutni smjer i lokalizaciju (s faktorom razmjera)
  • izračunati relativni smjer tijekom rotacije robota

Korak 5: Arhitektura i softver

Arhitektura i softver
Arhitektura i softver

Glavni softver radi na Arduino Nano -u

  • Arhitektura se temelji na I2C komunikaciji.
  • Odlučio sam se posvetiti Nanou zbog činjenice da je Atmega koja pokreće robota već bila prilično učitana i da je zbog ove arhitekture najjednostavnije ponovno korištenje na drugom mjestu.
  • Nano čita registre BNO055, izračunava i pohranjuje zaglavlje i lokalizaciju u vlastite registre.
  • Arduino Atmega koji pokreće kod robota, šalje podatke kodera kotača u Nano i čita naslove i lokalizaciju unutar Nano registara.

Kod podsistema (Nano) dostupan je ovdje na GitHubu

Alat za kalibraciju Adafruit ako je ovdje na GitHubu (kalibracija će biti pohranjena na eeproomu)

Korak 6: Što sam naučio?

Vezano za I2C

Prvo sam pokušao imati 2 master (Arduino) i 1 slave (senzor) na istoj sabirnici, ali na kraju je moguće i najjednostavnije postaviti samo Nano kao glavnog i koristiti GPIO vezu između 2 Arduina za "traženje tokena".

Vezano za BNO055 za 2D orijentaciju

Mogu se koncentrirati na 3 različita načina rada: NDOF (kombinirati žiroskop, akcelerometar i kompas) dok je robot u mirovanju, IMU (kombinirani žiroskop, akcelerometar) dok se robot kreće i kompas tijekom faze lokalizacije. Prebacivanje između ovih načina rada je jednostavno i brzo.

Kako bih smanjio veličinu koda i zadržao mogućnost korištenja prekida BNO055 za otkrivanje sudara, radije ne koristim biblioteku Adafruit i to činim sam.

Preporučeni: