Sisukord:

Inertsiaalse mõõteseadme kasutamise viis?: 6 sammu
Inertsiaalse mõõteseadme kasutamise viis?: 6 sammu
Anonim
Inertsiaalse mõõteseadme kasutamise viis?
Inertsiaalse mõõteseadme kasutamise viis?

Kontekst:

Ma ehitan oma lõbuks robotit, mida tahan majas iseseisvalt liigutada.

See on pikk töö ja ma teen seda samm -sammult.

Ma avaldasin sellel teemal juba 2 juhendit:

  • üks ratta kodeerija tegemisest
  • üks wifi -ühenduse kohta

Minu robotit juhivad minu kodus valmistatud rattakodeerija abil kaks alalisvoolumootorit.

Parandan praegu liigutamise juhtimist ja olen mõnda aega veetnud güroskoobi, kiirendusmõõturi ja IMU -ga. Jagan hea meelega seda kogemust.

Kas soovite lokaliseerimise kohta rohkem teada saada? Siin on artikkel, kuidas kombineerida tehisintellekti ja ultraheli roboti lokaliseerimiseks

Samm: miks kasutada inertsiaalset mõõteseadet?

Miks kasutada inertsiaalset mõõteseadet?
Miks kasutada inertsiaalset mõõteseadet?

Miks ma siis IMU -d kasutasin?

Esimene põhjus oli see, et kui rataste kodeerija on sirgjoonelise liikumise juhtimiseks piisavalt täpne, ei suutnud ma isegi pärast tunnelimist saada täpsust pöörlemisel alla +- 5 kraadi ja sellest ei piisa.

Nii proovisin 2 erinevat andurit. Esiteks kasutan magnetomeetrit (LSM303D). Põhimõte oli lihtne: enne pöörlemist pöörake põhja suunas, arvutage sihtmärk ja reguleerige käiku, kuni sihtmärk on saavutatud. See oli natuke parem kui kodeerijaga, kuid liiga hajutatud. Pärast seda proovisin kasutada güroskoopi (L3GD20). Põhimõte oli lihtsalt anduri poolt ette nähtud pöörlemiskiiruse integreerimine pöörlemise arvutamiseks. Ja see töötas hästi. Pöörlemist suutsin reguleerida +- 1 kraadi juures.

Sellegipoolest oli mul uudishimulik proovida mõnda IMU -d. Valin komponendi BNO055. Kulutasin mõnda aega selle IMU mõistmiseks ja testimiseks. Lõpuks otsustasin selle anduri valida järgmistel põhjustel

  • Pöörlemist saan juhtida sama hästi kui L3GD20
  • Suudan otse liikudes tuvastada kerget pöörlemist
  • Pean roboti lokaliseerimiseks põhja poole saama ja BNO055 kompassi kalibreerimine on väga lihtne

Samm: kuidas kasutada BNO055 2D lokaliseerimiseks?

Kuidas kasutada BNO055 2D lokaliseerimiseks?
Kuidas kasutada BNO055 2D lokaliseerimiseks?

BNO055 IMU on Boschi 9 -teljeline intelligentne andur, mis võib pakkuda absoluutset orientatsiooni.

Andmeleht sisaldab täielikku dokumentatsiooni. See on kõrgtehnoloogiline komponent, see on üsna keeruline toode ja veetsin mõned tunnid, et õppida selle toimimist ja proovida erinevaid kasutusviise.

Arvan, et sellest kogemusest oleks kasu.

Esiteks kasutasin Adafruit raamatukogu, mis pakub head tööriista anduri kalibreerimiseks ja avastamiseks.

Lõpuks ja pärast paljusid katseid otsustasin

  • kasutage Adafruit raamatukogu ainult kalibreerimise säästmiseks
  • kasutage 3 võimalikku BNO055 režiimi (NDOF, IMU, Compss)
  • pühendage Arduino Nano lokaliseerimise arvutamiseks BNO055 mõõtmiste põhjal

3. samm: riistvara punkt Vue

Riistvara punkt Vue
Riistvara punkt Vue
Riistvara punkt Vue
Riistvara punkt Vue
Riistvara punkt Vue
Riistvara punkt Vue

BNO055 on I2C komponent. Seega vajab see suhtlemiseks toiteallikat, SDA -d ja SCL -i.

Lihtsalt hoolitsege Vdd pinge eest vastavalt ostetud tootele. Boschi kiip töötab vahemikus: 2,4 V kuni 3,6 V ning leiate 3,3 ja 5 v komponendi.

Nano ja BNO055 ühendamisel pole raskusi.

  • BNO055 toiteallikaks on Nano
  • SDA ja SCL on ühendatud 2 x 2k tõmbetakistiga.
  • 3 LED -i, mis on diagnoosimiseks ühendatud Nano -ga (takistitega)
  • 2 pistikut, mida kasutatakse režiimi määratlemiseks pärast käivitamist
  • 1 pistik BNO poole (Gnd, Vdd, Sda, Scl, Int)
  • 1 pistik roboti/mega poole (+9V, Gnd, sda, Scl, Pin11, Pin12)

Natuke jootmist ja ongi kõik!

4. samm: kuidas see toimib?

Kuidas see töötab ?
Kuidas see töötab ?

Suhtluspunktist:

  • Nano on I2C bussimeister
  • Robot/Mega ja BNO055 on I2C orjad
  • Nano luges pidevalt BNO055 registreid
  • Robot/Mega tõstab numbrilise signaali, et Nanolt sõna küsida

Arvutuspunktist: Nano koos BNO055 -ga annab tulemuse

  • Kompassi pealkiri (kasutatakse lokaliseerimiseks)
  • Suhteline rubriik (kasutatakse pöörete juhtimiseks)
  • Absoluutne suund ja asukoht (kasutatakse käikude juhtimiseks)

Funktsionaalsest punktist: Nano:

  • juhib BNO055 kalibreerimist
  • haldab BNO055 parameetreid ja käske

Allsüsteem Nano & BNO055:

  • arvutage iga robotratta absoluutne suund ja lokaliseerimine (skaalafaktoriga)
  • arvutage suhteline suund roboti pöörlemise ajal

Samm: arhitektuur ja tarkvara

Arhitektuur ja tarkvara
Arhitektuur ja tarkvara

Peamine tarkvara töötab Arduino Nano peal

  • Arhitektuur põhineb I2C kommunikatsioonil.
  • Otsustasin pühendada Nano tänu sellele, et robotit käivitav Atmega oli üsna juba laaditud ja selle arhitektuuri abil on mujal hõlpsam taaskasutada.
  • Nano loeb BNO055 registreid, arvutab ja salvestab pealkirja ja lokaliseerimise oma registritesse.
  • Arduino Atmega, mis juhib robotikoodi, saadab ratastele kodeerijatele teavet Nano ja loeb Nano registrite pealkirju ja lokaliseerimist.

Seal on alamsüsteemi (Nano) kood saadaval siin GitHubis

Adafruit'i kalibreerimistööriist, kui see on siin GitHubis (kalibreerimine salvestatakse eeproomile)

6. samm: mida ma õppisin?

I2C kohta

Esiteks proovisin, et samas bussis oleks 2 meistrit (Arduino) ja 1 alam (andur), kuid lõpuks on võimalik ja kõige lihtsam seadistada ainult Nano masteriks ja kasutada 2 Arduino vahelist GPIO -ühendust, et "tokenit taotleda".

Seoses BNO055 -ga 2D -orientatsiooni jaoks

Saan keskenduda kolmele erinevale töörežiimile: NDOF (kombineeri güroskoop, kiirendusmõõtur ja kompas), kui robot on jõude, IMU (kombineeritud güroskoop, kiirendusmõõtur), kui robot liigub, ja kompass lokaliseerimise faasis. Nende režiimide vahel vahetamine on lihtne ja kiire.

Koodi suuruse vähendamiseks ja kokkupõrke tuvastamiseks BNO055 katkestamise võimaluse säilitamiseks eelistan ma Adafruit'i teeki mitte kasutada ja teha seda iseseisvalt.

Soovitan: