Satura rādītājs:
- 1. darbība. Kāpēc izmantot inerciālās mērīšanas vienību?
- 2. darbība. Kā lietot BNO055 2D lokalizācijai?
- 3. solis: aparatūras punkts Vue
- 4. darbība. Kā tas darbojas?
- 5. darbība: arhitektūra un programmatūra
- 6. solis: Ko es iemācījos?
Video: Inerciālās mērīšanas vienības izmantošanas veids?: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
Konteksts:
Es izklaidei būvēju robotu, kuru vēlos autonomi pārvietot mājas iekšienē.
Tas ir ilgs darbs, un es to daru soli pa solim.
Es jau publicēju 2 pamācības par šo tēmu:
- viens par riteņu kodētāja izgatavošanu
- viens par wifi savienojumu
Ar manu mājās ražoto riteņu kodētāju manu robotu vada divi līdzstrāvas motori.
Pašlaik es uzlaboju kustību vadību un kādu laiku esmu pavadījis kopā ar žiroskopu, akselerometru un IMU. Es labprāt dalītos šajā pieredzē.
Vai vēlaties uzzināt vairāk par lokalizāciju? Šeit ir raksts par to, kā apvienot mākslīgo intelektu un ultraskaņu, lai lokalizētu robotu
1. darbība. Kāpēc izmantot inerciālās mērīšanas vienību?
Kāpēc tad es izmantoju IMU?
Pirmais iemesls bija tas, ka, ja riteņu kodētājs ir pietiekami precīzs, lai kontrolētu taisnu kustību, pat pēc tuningēšanas es nevarēju iegūt precizitāti rotācijai, kas mazāka par +- 5 grādiem, un ar to nepietiek.
Tāpēc es izmēģināju 2 dažādus sensorus. Pirmkārt, es izmantoju magnetometru (LSM303D). Princips bija vienkāršs: pirms rotācijas iegūstiet ziemeļu orientāciju, aprēķiniet mērķi un pielāgojiet kustību, līdz mērķis ir sasniegts. Tas bija nedaudz labāk nekā ar kodētāju, bet ar pārāk lielu izkliedi. Pēc tam es mēģināju izmantot žiroskopu (L3GD20). Princips bija tikai integrēt rotācijas ātrumu, ko nodrošina sensors, lai aprēķinātu rotāciju. Un tas strādāja labi. Es varēju kontrolēt rotāciju pie +- 1 grāda.
Tomēr man bija interesanti izmēģināt kādu IMU. Es izvēlos BNO055 komponentu. Es pavadīju kādu laiku, lai saprastu un pārbaudītu šo IMU. Beigās es nolēmu izvēlēties šo sensoru šādu iemeslu dēļ
- Es varu kontrolēt rotāciju tikpat labi kā ar L3GD20
- Es varu noteikt nelielu rotāciju, pārvietojoties taisni
- Lai lokalizētu robotu, man ir jāiegūst ziemeļu orientācija, un BNO055 kompasa kalibrēšana ir ļoti vienkārša
2. darbība. Kā lietot BNO055 2D lokalizācijai?
BNO055 IMU ir Bosch 9 asu viedais sensors, kas varētu nodrošināt absolūtu orientāciju.
Datu lapa nodrošina pilnu dokumentāciju. Tas ir augsto tehnoloģiju komponents, vai tas ir diezgan sarežģīts produkts, un es pavadīju dažas stundas, lai uzzinātu, kā tas darbojas, un izmēģinātu dažādus tā izmantošanas veidus.
Es domāju, ka varētu būt noderīgi dalīties šajā pieredzē.
Pirmkārt, es izmantoju Adafruit bibliotēku, kas nodrošina labu instrumentu sensora kalibrēšanai un atklāšanai.
Beigās un pēc daudziem testiem es nolēmu
- izmantojiet Adafruit bibliotēku, lai saglabātu tikai kalibrēšanu
- izmantojiet 3 no visiem iespējamajiem BNO055 režīmiem (NDOF, IMU, Compss)
- veltiet Arduino Nano, lai aprēķinātu lokalizāciju, pamatojoties uz BNO055 mērījumiem
3. solis: aparatūras punkts Vue
BNO055 ir I2C sastāvdaļa. Tātad, lai sazinātos, ir nepieciešams barošanas avots, SDA un SCL.
Vienkārši rūpējieties par Vdd spriegumu atbilstoši iegādātajam produktam. Bosch mikroshēma darbojas diapazonā: 2.4V līdz 3.6V, un jūs varat atrast 3.3v un 5v komponentu.
Nav nekādu grūtību savienot Nano un BNO055.
- BNO055 darbina Nano
- SDA un SCL ir savienoti ar 2 x 2k pievilkšanas rezistoriem.
- 3 gaismas diodes, kas savienotas ar Nano diagnostikai (ar rezistoriem)
- 2 savienotāji, ko izmanto, lai definētu režīmu pēc palaišanas
- 1 savienotājs virzienā uz BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 savienotājs pret robotu/mega (+9V, Gnd, sda, Scl, Pin11, Pin12)
Mazliet lodēt un viss!
4. darbība. Kā tas darbojas?
No saziņas punkta:
- Nano ir I2C autobusu meistars
- Robots/Mega un BNO055 ir I2C vergi
- Nano pastāvīgi nolasa BNO055 reģistrus
- Robots/Mega paceļ ciparu signālu, lai pieprasītu vārdu no Nano
No aprēķina punkta: Nano kopā ar BNO055 nodrošina
- Kompasa virsraksts (izmanto lokalizācijai)
- Relatīvs virsraksts (izmanto, lai kontrolētu rotācijas)
- Absolūtais kurss un pozīcija (izmanto kustību kontrolei)
No funkcionālā viedokļa: Nano:
- pārvalda BNO055 kalibrēšanu
- pārvalda BNO055 parametrus un komandas
Apakšsistēma Nano & BNO055:
- aprēķina katram robota ritenim absolūto virzienu un lokalizāciju (ar mēroga koeficientu)
- aprēķiniet relatīvo virzienu robota rotācijas laikā
5. darbība: arhitektūra un programmatūra
Galvenā programmatūra darbojas ar Arduino Nano
- Arhitektūras pamatā ir I2C komunikācija.
- Es izvēlējos veltīt Nano, jo Atmega, kas vada robotu, jau bija ielādēta un šī arhitektūra atvieglo atkārtotu izmantošanu citur.
- Nano nolasa BNO055 reģistrus, aprēķina un uzglabā virsrakstu un lokalizāciju savos reģistros.
- Arduino Atmega, kas vada robota kodu, nosūta riteņiem kodētāja informāciju Nano un nolasa virsrakstus un lokalizāciju Nano reģistros.
Tur apakšsistēmas (Nano) kods ir pieejams šeit vietnē GitHub
Adafruit kalibrēšanas rīks, ja atrodaties šeit GitHub (kalibrēšana tiks saglabāta eeproom)
6. solis: Ko es iemācījos?
Attiecībā uz I2C
Pirmkārt, es mēģināju, lai vienā autobusā būtu 2 meistari (Arduino) un 1 vergs (sensors), bet beigās ir iespējams un visvieglāk iestatīt tikai Nano kā galveno un izmantot GPIO savienojumu starp 2 Arduinos, lai "pieprasītu marķieri".
Attiecībā uz BNO055 2D orientācijai
Es varu koncentrēties uz 3 dažādiem darbības režīmiem: NDOF (kombinēt žiroskopu, akselerometru un kompasas), kad robots ir dīkstāvē, IMU (kombinēt žiroskopu, akselerometru), kad robots pārvietojas, un kompasu lokalizācijas fāzē. Pārslēgšanās starp šiem režīmiem ir vienkārša un ātra.
Lai samazinātu koda lielumu un saglabātu iespēju izmantot sadursmes noteikšanai BNO055 pārtraukumu, es labāk neizmantoju Adafruit bibliotēku un daru to pats.
Ieteicams:
Arduino temperatūras un mitruma mērīšanas sistēma - Technic Joe: 3 soļi
Arduino temperatūras un mitruma mērīšanas sistēma | Tehniskais Džo: Izveidojis divas bezjēdzīgas spēles ar Arduino un iztērējis laiku, spēlējot tās, es gribēju ar Arduino izveidot kaut ko noderīgu. Man radās ideja par temperatūras un gaisa mitruma mērīšanas sistēmu augiem. Lai projekts kļūtu nedaudz mo
Diy Dc jaudas mērīšanas modulis Arduino: 8 soļi
Diy līdzstrāvas jaudas mērīšanas modulis Arduino: Šajā projektā mēs redzēsim, kā izveidot līdzstrāvas jaudas mērīšanas moduli, izmantojot Arduino
Veļas mazgājamās mašīnas cilindra radošās izmantošanas iespējas: 5 soļi
Veļas mazgājamās mašīnas cilindra radošās izmantošanas iespējas: šī apmācība ir paredzēta, lai iedvesmotu un aplūkotu izmestos objektus alternatīvā veidā. To nav paredzēts dublēt obligāti, bet gan sniegt jums idejas par veļas mazgājamās mašīnas cilindra iespējamo pielietojumu, kas parasti netiktu ņemts vērā. Mans priekšstats
Arduino tastatūras izmantošanas demonstrācija (HID) un novēršana: 4 soļi (ar attēliem)
Arduino tastatūras izmantošanas demonstrācija (HID) un novēršana: Šajā projektā mēs izmantosim arduino leonardo, lai simulētu iespējamo USB uzbrukumu, izmantojot HID (humain interfeisa ierīce). Es esmu izveidojis šo pamācību, lai nepalīdzētu hakeriem, bet lai parādītu jums dažas reālas briesmas un to, kā pasargāt sevi no šiem
Bezvadu mājas maršrutētājs ar analogo izmantošanas mērītāju: 5 soļi (ar attēliem)
Bezvadu mājas maršrutētājs ar analogo izmantošanas mērītāju: es uzaugu laivās un ap tām, veidojot vadu stelles un vadības paneļus, un man ir mērinstrumentu kolekcija. ciparnīcas, kuras parasti varētu atrast savienotas ar maziem jūras dīzeļdzinējiem. Šodien es strādāju par dizaineri, veidojot saskarnes tīklam