INHOUDSOPGAWE:

N Manier om 'n traagheidseenheid te gebruik?: 6 stappe
N Manier om 'n traagheidseenheid te gebruik?: 6 stappe

Video: N Manier om 'n traagheidseenheid te gebruik?: 6 stappe

Video: N Manier om 'n traagheidseenheid te gebruik?: 6 stappe
Video: M. Bendaoud - Hoe moet ik bidden? Stap voor stap gids voor het gebed! 2024, November
Anonim
'N Manier om 'n traagheidseenheid te gebruik?
'N Manier om 'n traagheidseenheid te gebruik?

Die konteks:

Ek bou vir die plesier 'n robot wat ek outonoom in 'n huis wil skuif.

Dit is 'n lang werk en ek doen dit stap vir stap.

Ek het reeds 2 instruksies oor die onderwerp gepubliseer:

  • een oor die maak van 'n wielkodeerder
  • een oor wifi -verbinding

My robot word met behulp van my tuisgemaakte wielkodeerder na 2 GS -motors aangedryf.

Ek verbeter tans die bewegende beheer en het 'n geruime tyd deurgebring met 'n gyroscoop, versnellingsmeter en IMU. Ek deel graag hierdie ervaring.

Wil u meer weet oor lokalisering? Hier is 'n artikel oor hoe om kunsmatige intelligensie en ultraklank te kombineer om die robot te lokaliseer

Stap 1: Waarom 'n traagmeeteenheid gebruik?

Waarom 'n traagmeeteenheid gebruik?
Waarom 'n traagmeeteenheid gebruik?

Waarom het ek 'n IMU gebruik?

Die eerste rede was dat as die wielkodeerder presies genoeg is om die reguit beweging te beheer, ek selfs na afloop nie 'n presisie kon kry vir rotasie van minder as +- 5 degres nie, en dit is nie genoeg nie.

Ek het dus 2 verskillende sensors probeer. Eerstens gebruik ek 'n magnetometer (LSM303D). Die beginsel was eenvoudig: voordat die rotasie die noordelike rigting bereik, bereken die teiken en pas die beweging aan totdat die teiken bereik is. Dit was 'n bietjie beter as met die encoder, maar met te veel verspreiding. Daarna het ek probeer om 'n gyroscoop (L3GD20) te gebruik. Die beginsel was net om die rotasiesnelheid van die sensor te integreer om die rotasie te bereken. En dit het goed gewerk. Ek kon rotasie beheer by +- 1 grade.

Tog was ek nuuskierig om IMU te probeer. Ek kies 'n BNO055 -komponent. Ek het tyd bestee om hierdie IMU te verstaan en te toets. Aan die einde het ek besluit om hierdie sensor te kies om die volgende redes

  • Ek kan sowel die rotasie as die L3GD20 beheer
  • Ek kan 'n effense draai vind as ek reguit beweeg
  • Ek moet noord -oriëntasie kry vir die lokalisering van die robot, en die kompas -kalibrasie van die BNO055 is baie eenvoudig

Stap 2: Hoe om BNO055 te gebruik vir 2D -lokalisering?

Hoe om BNO055 te gebruik vir 2D -lokalisering?
Hoe om BNO055 te gebruik vir 2D -lokalisering?

BNO055 IMU is 'n 9 -as intelligente sensor van Bosch wat absolute oriëntasie kan bied.

Die datablad bevat 'n volledige dokumentasie. Dit is 'n hoë -tegnologie komponent, is dit 'n taamlik ingewikkelde produk, en ek het 'n paar uur bestee om te leer hoe dit werk en verskillende maniere om dit te gebruik, probeer.

Ek dink dit kan nuttig wees om hierdie ervaring te deel.

Eerstens het ek die Adafruit -biblioteek gebruik wat 'n goeie hulpmiddel is om die sensor te kalibreer en te ontdek.

Aan die einde en na baie toetse het ek besluit

  • Gebruik slegs die Adafruit -biblioteek om kalibrasie te stoor
  • gebruik 3 van al die moontlike modi van BNO055 (NDOF, IMU, Compss)
  • wy 'n Arduino Nano aan om lokalisering te bereken op grond van BNO055 -metings

Stap 3: Hardware Point of Vue

Hardware Point of Vue
Hardware Point of Vue
Hardware Point of Vue
Hardware Point of Vue
Hardeware Point of Vue
Hardeware Point of Vue

BNO055 is 'n I2C -komponent. Dit benodig dus kragtoevoer, SDA en SCL om te kommunikeer.

Pas net op die Vdd -spanning volgens die produk wat u gekoop het. Die Bosch -chip werk in die reeks: 2,4V tot 3,6V, en u kan 'n komponent van 3,3V en 5V vind.

Daar is geen probleme om die Nano en die BNO055 aan te sluit nie.

  • Die BNO055 word aangedryf deur die Nano
  • SDA en SCL is verbind met 2 x 2k optrekweerstands.
  • 3 LED's gekoppel aan die Nano vir diagnose (met weerstande)
  • 2 verbindings wat gebruik word om die modus na opstart te definieer
  • 1 aansluiting na die BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 aansluiting na die Robot/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)

'N Bietjie soldeer en dit is dit!

Stap 4: Hoe werk dit?

Hoe werk dit ?
Hoe werk dit ?

Van kommunikasie oogpunt:

  • Die Nano is die I2C -busmeester
  • Die Robot/Mega en die BNO055 is I2C -slawe
  • Die Nano het die BNO055 -registers permanent gelees
  • Die Robot/Mega gee 'n numeriese sein om die woord van die Nano te vra

Vanuit berekening: die Nano in kombinasie met die BNO055 lewer

  • Die kompasopskrif (gebruik vir lokalisering)
  • 'N Relatiewe opskrif (gebruik om rotasies te beheer)
  • Die absolute koers en posisie (gebruik om bewegings te beheer)

Vanuit funksionele oogpunt: The Nano:

  • bestuur die BNO055 -kalibrasie
  • bestuur die BNO055 parameters en opdragte

Die substelsel Nano & BNO055:

  • bereken vir elke robotwiele die absolute koers en lokalisering (met 'n skaalfaktor)
  • bereken die relatiewe opskrif tydens rotasie van die robot

Stap 5: Die argitektuur en sagteware

Die argitektuur en sagteware
Die argitektuur en sagteware

Die belangrikste sagteware werk op 'n Arduino Nano

  • Argitektuur is gebaseer op I2C -kommunikasie.
  • Ek het gekies om 'n Nano toe te wy, omdat die Atmega wat die robot bestuur, eerder al gelaai was en hierdie argitektuur dit makliker maak om elders te hergebruik.
  • Die Nano lees die BNO055 -registers, bereken en stoor opskrif en lokalisering in sy eie registers.
  • Die Arduino Atmega wat die robotkode bestuur, stuur wiel -encoders -inligting na die Nano en lees die opskrifte en lokalisering binne die Nano -registers.

Daar is 'n subitem (Nano) kode hier op GitHub beskikbaar

Die Adafruit -kalibrasiehulpmiddel as dit hier op GitHub is (kalibrasie word op eeproom gestoor)

Stap 6: Wat het ek geleer?

Met betrekking tot I2C

Eerstens het ek probeer om 2 meesters (Arduino) en 1 slaaf (sensor) op dieselfde bus te hê, maar aan die einde is dit moontlik en maklik om slegs die Nano as meester in te stel en die GPIO -verbinding tussen die 2 Arduinos te gebruik om 'die teken aan te vra'.

Met betrekking tot BNO055 vir 2D -oriëntasie

Ek kan konsentreer op 3 verskillende hardloopmetodes: NDOF (kombineer gyroscoop, versnellingsmeter en Compas) as die robot ledig is, IMU (kombineer gyroscoop, versnellingsmeter) wanneer die robot beweeg en Kompas tydens die lokaliseringsfase. Dit is maklik en vinnig om tussen hierdie modusse te wissel.

Om die kode te verminder en die moontlikheid te behou dat u BNO055 interrupt gebruik om botsings op te spoor, gebruik ek verkieslik nie die Adafruit -biblioteek nie en doen dit alleen.

Aanbeveel: