Turinys:
- 1 žingsnis: Kodėl naudoti inercinį matavimo įrenginį?
- 2 veiksmas: kaip naudoti BNO055 2D lokalizavimui?
- 3 žingsnis: „Hardue Point of Vue“
- 4 žingsnis: kaip tai veikia?
- 5 žingsnis: architektūra ir programinė įranga
- 6 žingsnis: Ką aš išmokau?
Video: Inercinio matavimo įrenginio naudojimo būdas?: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Kontekstas:
Aš linksmybėms kuriu robotą, kurį noriu savarankiškai perkelti namo viduje.
Tai ilgas darbas, kurį darau žingsnis po žingsnio.
Aš jau paskelbiau 2 instrukcijas šia tema:
- vienas apie ratų kodavimo įrenginio gamybą
- vienas apie wifi ryšį
Mano robotą valdo 2 nuolatinės srovės varikliai, naudojant mano namuose pagamintą ratų kodavimo įrenginį.
Šiuo metu tobulinu judėjimo valdymą ir kurį laiką praleidau su giroskopu, akselerometru ir IMU. Norėčiau pasidalinti šia patirtimi.
Ar norite daugiau sužinoti apie lokalizaciją? Čia yra straipsnis, kaip sujungti dirbtinį intelektą ir ultragarsą, kad būtų galima lokalizuoti robotą
1 žingsnis: Kodėl naudoti inercinį matavimo įrenginį?
Taigi kodėl aš naudoju IMU?
Pirmoji priežastis buvo ta, kad jei ratų kodavimo įrenginys yra pakankamai tikslus, kad galėtų valdyti tiesioginį judėjimą, net ir po tuningo nepavyko pasiekti tikslumo, kad sukimasis būtų mažesnis nei +- 5 laipsniai, ir to nepakanka.
Taigi išbandžiau 2 skirtingus jutiklius. Pirmiausia naudoju magnetometrą (LSM303D). Principas buvo paprastas: prieš sukimąsi nustatykite šiaurės kryptį, apskaičiuokite tikslą ir koreguokite judesį, kol bus pasiektas tikslas. Tai buvo šiek tiek geriau nei naudojant kodavimo įrenginį, tačiau su per dideliu išsisklaidymu. Po to bandžiau naudoti giroskopą (L3GD20). Principas buvo tik integruoti sukimosi greitį, kurį pateikė jutiklis, kad būtų galima apskaičiuoti sukimąsi. Ir gerai veikė. Galėjau valdyti sukimąsi +- 1 laipsniu.
Nepaisant to, man buvo įdomu išbandyti IMU. Aš renkuosi BNO055 komponentą. Praleidau šiek tiek laiko, kad suprasčiau ir išbandyčiau šį IMU. Pabaigoje nusprendžiau pasirinkti šį jutiklį dėl šių priežasčių
- Aš galiu valdyti sukimąsi taip pat, kaip ir su L3GD20
- Aš galiu aptikti nedidelį sukimąsi judant tiesiai
- Turiu gauti orientaciją į šiaurę robotui lokalizuoti, o BNO055 kompaso kalibravimas yra labai paprastas
2 veiksmas: kaip naudoti BNO055 2D lokalizavimui?
BNO055 IMU yra „Bosch“9 ašių išmanusis jutiklis, galintis užtikrinti absoliučią orientaciją.
Duomenų lape pateikiami visi dokumentai. Tai yra aukštųjų technologijų komponentas, ar tai gana sudėtingas produktas, ir aš praleidau kelias valandas, norėdamas sužinoti, kaip jis veikia, ir išbandyti įvairius jo naudojimo būdus.
Manau, būtų naudinga pasidalinti šia patirtimi.
Pirmiausia naudojau „Adafruit“biblioteką, kuri yra geras įrankis kalibruoti ir atrasti jutiklį.
Pabaigoje ir po daugybės bandymų nusprendžiau
- naudokite „Adafruit“biblioteką tik taupydami kalibravimą
- naudokite 3 iš visų galimų BNO055 režimų (NDOF, IMU, Compss)
- skirkite „Arduino Nano“, kad apskaičiuotumėte lokalizaciją, pagrįstą BNO055 matavimais
3 žingsnis: „Hardue Point of Vue“
BNO055 yra I2C komponentas. Taigi, norint bendrauti, reikia maitinimo šaltinio, SDA ir SCL.
Tiesiog pasirūpinkite Vdd įtampa pagal įsigytą produktą. „Bosch“lustas veikia diapazone: nuo 2,4 V iki 3,6 V, o jūs galite rasti 3,3 ir 5 voltų komponentą.
Jungiant „Nano“ir „BNO055“nėra jokių sunkumų.
- „BNO055“maitina „Nano“
- SDA ir SCL yra prijungti prie 2 x 2k ištraukiamųjų rezistorių.
- 3 šviesos diodai, prijungti prie „Nano“diagnostikai (su rezistoriais)
- 2 jungtys, naudojamos režimui apibrėžti po įkrovos
- 1 jungtis link BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 jungtis link roboto/mega (+9V, Gnd, sda, Scl, Pin11, Pin12)
Šiek tiek litavimo ir viskas!
4 žingsnis: kaip tai veikia?
Iš bendravimo taško:
- „Nano“yra I2C autobusų meistras
- Robotas/Mega ir BNO055 yra I2C vergai
- „Nano“nuolat skaito BNO055 registrus
- Robotas/Mega pakelia skaitmeninį signalą ir paprašo žodžio iš „Nano“
Iš skaičiavimo taško: „Nano“kartu su „BNO055“veikia
- Kompaso antraštė (naudojama lokalizavimui)
- Santykinė antraštė (naudojama sukimams valdyti)
- Absoliuti kryptis ir padėtis (naudojama judesiams valdyti)
Funkciniu požiūriu: Nano:
- valdo BNO055 kalibravimą
- valdo BNO055 parametrus ir komandas
Posistemis Nano & BNO055:
- kiekvienam roboto ratui apskaičiuoti absoliučią kryptį ir lokalizaciją (naudojant mastelio koeficientą)
- Apskaičiuokite santykinę kryptį roboto sukimosi metu
5 žingsnis: architektūra ir programinė įranga
Pagrindinė programinė įranga veikia „Arduino Nano“
- Architektūra pagrįsta I2C komunikacija.
- Aš nusprendžiau skirti „Nano“dėl to, kad „Atmega“, valdanti robotą, buvo gana jau įkelta ir dėl šios architektūros ją lengviau naudoti kitur.
- „Nano“skaito BNO055 registrus, apskaičiuoja ir saugo antraštes bei lokalizaciją savo registruose.
- „Arduino Atmega“, valdanti roboto kodą, siunčia ratų kodavimo informaciją „Nano“ir skaito antraštes bei lokalizaciją „Nano“registruose.
„GitHub“čia yra posistemio („Nano“) kodas
„Adafruit“kalibravimo įrankis, jei esate čia „GitHub“(kalibravimas bus saugomas „eeproom“)
6 žingsnis: Ką aš išmokau?
Kalbant apie I2C
Pirma, aš bandžiau turėti 2 šeimininkus („Arduino“) ir 1 vergą (jutiklį) tame pačiame magistralėje, bet galiausiai galima ir paprasčiausiai nustatyti tik „Nano“kaip pagrindinį ir naudoti GPIO ryšį tarp 2 „Arduinos“, kad „paprašytumėte žetono“.
Kalbant apie BNO055 2D orientacijai
Galiu sutelkti dėmesį į 3 skirtingus veikimo režimus: NDOF (kombinuotas giroskopas, akselerometras ir kompasai), kai robotas neveikia, IMU (kombinuotas giroskopas, akselerometras), kai robotas juda, ir kompasas lokalizacijos etape. Perjungimas tarp šių režimų yra lengvas ir greitas.
Norėdami sumažinti kodo dydį ir išlaikyti galimybę naudoti „BNO055“pertrauką, kad aptiktų susidūrimą, aš nenoriu naudoti „Adafruit“bibliotekos ir tai daryti savarankiškai.
Rekomenduojamas:
Naudojimo monitoriaus pridėjimas prie namų termostato: 4 žingsniai
Naudojimo monitoriaus pridėjimas prie namų termostato: seniai, labai seniai, buvo toks dalykas kaip " protingas " termostatas, turėjau namų termostatą, kuris kasdien (manau - gal kas savaitę) iš viso davė " laiku " mano šildymo ir oro kondicionavimo sistemai. Viskas pasikeitė
„Sol-EZ“solenoidinio vairuotojo komplekto naudojimo vadovas: 9 žingsniai
„Sol-EZ“solenoidinio vairuotojo komplekto naudojimo vadovas: ATSAKOMYBĖ: TAI GAMINIO NAUDOJIMO VADOVAS: „SOL-EZ SOLENOID DRIVER KIT“. Tai nėra „pasidaryk pats“projektas. Kas yra „Sol-EZ“solenoidinio vairuotojo rinkinys? Trumpai tariant, „Sol-EZ“solenoidinio vairuotojo rinkiniai yra rinkiniai, kurie labai supaprastina solenoidų naudojimą
Vieno kaiščio klaviatūros „Raspberry Pi“naudojimo vadovas: 9 žingsniai
Vieno kaiščio klaviatūros „Raspberry Pi“naudojimo vadovas: ATSAKYMAS: TAI NAUDOJIMO VADOVAS ATVIRAMAM ŠALTINIAM PRODUKTUI: VIENAM PIN kodui. TAI NĖRA DIY PROJEKTAS. JEI NORITE PADARYTI LENTAS SAVE, EAGLE FILES GALIMA RASTI PAMOKOS PABAIGOJE. Kas yra vieno kaiščio klaviatūra? Vieno kaiščio klaviatūra
Pradedančiųjų DHT11/ DHT22 jutiklių W/ Arduino naudojimo vadovas: 9 žingsniai
Pradedančiųjų DHT11/ DHT22 jutiklių naudojimo vadovas „W/ Arduino“: šią ir kitas nuostabias pamokas galite perskaityti oficialioje „ElectroPeak“svetainėje Apžvalga Šioje pamokoje sužinosite, kaip nustatyti DHT11 ir DHT22 jutiklius, išmatuoti aplinkos temperatūrą ir drėgmę. Sužinokite: DHT11 ir DHT22
Pilnas dirvožemio drėgmės jutiklio naudojimo vadovas su praktiniu pavyzdžiu: 7 žingsniai
Pilnas dirvožemio drėgmės jutiklio naudojimo vadovas W/ praktinis pavyzdys: šią ir kitas nuostabias pamokas galite perskaityti oficialioje „ElectroPeak“svetainėje Apžvalga Šioje pamokoje sužinosite, kaip naudoti dirvožemio drėgmės jutiklį. Taip pat pateikiami praktiniai pavyzdžiai, padedantys įsisavinti kodą. Ką sužinosite: kaip dirvožemis