Բովանդակություն:

Իներցիոն չափման միավորի օգտագործման միջոց?: 6 քայլ
Իներցիոն չափման միավորի օգտագործման միջոց?: 6 քայլ

Video: Իներցիոն չափման միավորի օգտագործման միջոց?: 6 քայլ

Video: Իներցիոն չափման միավորի օգտագործման միջոց?: 6 քայլ
Video: Հակագրավիտացիա | Ապագայի սուպեր գիտությունը | brane cosmology (ենթագրերով) 2024, Նոյեմբեր
Anonim
Իներցիոն չափման միավորի օգտագործման միջոց?
Իներցիոն չափման միավորի օգտագործման միջոց?

Համատեքստ

Ես զվարճանքի համար կառուցում եմ ռոբոտ, որը ցանկանում եմ ինքնուրույն տեղաշարժվել տան ներսում:

Դա երկար աշխատանք է, և ես քայլ առ քայլ անում եմ:

Ես արդեն հրապարակել եմ 2 ուսանելի նյութ այդ թեմայով.

  • մեկը ՝ անիվի կոդավորիչ պատրաստելու մասին
  • մեկը wifi կապի մասին

Իմ տնային անիվի կոդավորիչի օգնությամբ իմ ռոբոտը շարժվում է 2 DC շարժիչով:

Ես այժմ բարելավում եմ շարժվող հսկողությունը և որոշ ժամանակ անցկացրել եմ գիրոսկոպի, արագացուցիչի և IMU- ի հետ: Ես հաճույքով կկիսվեի այս փորձով:

Ուզու՞մ եք ավելին իմանալ տեղայնացման մասին: Ահա մի հոդված, թե ինչպես կարելի է համատեղել արհեստական ինտելեկտն ու ուլտրաձայնը ՝ ռոբոտին տեղայնացնելու համար

Քայլ 1. Ինչու՞ օգտագործել իներցիոն չափման միավոր:

Ինչու՞ օգտագործել իներցիոն չափման միավոր
Ինչու՞ օգտագործել իներցիոն չափման միավոր

Ուրեմն ինչու ես օգտագործեցի IMU:

Առաջին պատճառն այն էր, որ եթե անիվի կոդավորիչը բավականաչափ ճշգրիտ է ուղիղ շարժումը վերահսկելու համար, նույնիսկ թյունինգից հետո ես չկարողացա +- 5 աստիճանից ցածր պտույտի ճշգրտություն ստանալ, և դա բավարար չէ:

Այսպիսով, ես փորձեցի 2 տարբեր սենսորներ: Նախ ես օգտագործում եմ մագնիսաչափ (LSM303D): Սկզբունքը պարզ էր. Ռոտացիայից առաջ ստացեք հյուսիսային կողմնորոշում, հաշվարկեք թիրախը և կարգավորեք քայլը մինչև նպատակին հասնելը: Դա մի փոքր ավելի լավ էր, քան կոդավորողը, բայց չափազանց ցրված: Դրանից հետո ես փորձեցի օգտագործել գիրոսկոպ (L3GD20): Սկզբունքը պարզապես սենսորից տրամադրվող պտտման արագության ինտեգրումն էր ՝ պտույտը հաշվարկելու համար: Եվ դա լավ աշխատեց: Ես կարողացա վերահսկել պտույտը +- 1 աստիճանի դեպքում:

Այնուամենայնիվ, ես հետաքրքրված էի ինչ -որ IMU փորձելու համար: Ես ընտրում եմ BNO055 բաղադրիչը: Որոշ ժամանակ ծախսեցի այս IMU- ն հասկանալու և փորձարկելու համար: Վերջում որոշեցի ընտրել այս տվիչը հետևյալ պատճառներով

  • Ես կարող եմ վերահսկել պտույտը, ինչպես նաև L3GD20- ով
  • Ես կարող եմ հայտնաբերել մի փոքր պտույտ ուղիղ շարժվելիս
  • Ռոբոտի տեղայնացման համար ես պետք է հյուսիսային կողմնորոշում ստանամ, և BNO055- ի կողմնացույցի չափագրումը շատ պարզ է

Քայլ 2. Ինչպե՞ս օգտագործել BNO055- ը 2D տեղայնացման համար:

Ինչպե՞ս օգտագործել BNO055- ը 2D տեղայնացման համար
Ինչպե՞ս օգտագործել BNO055- ը 2D տեղայնացման համար

BNO055 IMU- ն Bosch 9 առանցքի խելացի սենսոր է, որը կարող է ապահովել բացարձակ կողմնորոշում:

Տվյալների թերթիկը տրամադրում է ամբողջական փաստաթղթավորում: Դա բարձր տեխնոլոգիական բաղադրիչ է, դա բավականին բարդ ապրանք է, և ես մի քանի ժամ անցկացրել եմ `սովորելու, թե ինչպես է այն աշխատում և փորձել դրա օգտագործման տարբեր եղանակներ:

Կարծում եմ, որ օգտակար կլինի կիսվել այս փորձով:

Նախ օգտագործեցի Adafruit գրադարանը, որը լավ գործիք է տալիս սենսորը չափաբերելու և հայտնաբերելու համար:

Վերջում և բազմաթիվ փորձարկումներից հետո որոշեցի

  • օգտագործեք Adafruit գրադարանը միայն չափագրումը խնայելու համար
  • օգտագործել BNO055- ի բոլոր հնարավոր ռեժիմներից 3 -ը (NDOF, IMU, Compss)
  • նվիրել Arduino Nano- ին BNO055 չափումների հիման վրա տեղայնացման հաշվարկման համար

Քայլ 3: Hardware Point of Vue

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

BNO055- ը I2C բաղադրիչ է: Այսպիսով, հաղորդակցության համար անհրաժեշտ է էներգիայի մատակարարում, SDA և SCL:

Պարզապես հոգ տանել Vdd լարման մասին `ըստ գնված ապրանքի: Bosch չիպը աշխատում է միջակայքում `2.4V- ից 3.6V, և դուք կարող եք գտնել 3.3v և 5v բաղադրիչ:

Nano- ի և BNO055- ի միացման համար դժվարություններ չկան:

  • BNO055- ը սնուցվում է Nano- ով
  • SDA & SCL- ը միացված են 2 x 2k քաշվող դիմադրիչներով:
  • 3 LED միացված Նանոյին ախտորոշման համար (ռեզիստորներով)
  • 2 միակցիչ, որոնք օգտագործվում են բեռնաթափումից հետո ռեժիմը սահմանելու համար
  • 1 միակցիչ դեպի BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 միակցիչ դեպի Robot/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)

Մի փոքր զոդում և վերջ:

Քայլ 4: Ինչպե՞ս է այն աշխատում:

Ինչպես է դա աշխատում ?
Ինչպես է դա աշխատում ?

Հաղորդակցության տեսանկյունից

  • Նանոն I2C ավտոբուսի վարպետն է
  • Robot/Mega- ն և BNO055- ը I2C ստրուկներ են
  • Նանոն մշտապես կարդում է BNO055 գրանցամատյանները
  • Ռոբոտը/Մեգան բարձրացնում է թվային ազդանշան ՝ բառը Նանոյից պահանջելու համար

Vue հաշվարկի կետից. Nano- ն BNO055- ի հետ համատեղ մատուցում է

  • Կողմնացույցի վերնագիր (օգտագործվում է տեղայնացման համար)
  • Հարաբերական վերնագիր (օգտագործվում է պտույտները վերահսկելու համար)
  • Բացարձակ վերնագիր և դիրք (օգտագործվում է շարժումները վերահսկելու համար)

Գործունեության տեսանկյունից `Nano:

  • կառավարում է BNO055 տրամաչափումը
  • կառավարում է BNO055 պարամետրերն ու հրամանները

Nano & BNO055 ենթահամակարգը.

  • յուրաքանչյուր ռոբոտի անիվների համար բացարձակ վերնագիր և տեղայնացում (մասշտաբի գործոնով)
  • ռոբոտի ռոտացիայի ժամանակ հաշվարկել հարաբերական վերնագիրը

Քայլ 5: Archարտարապետություն և ծրագրակազմ

Theարտարապետություն և ծրագրակազմ
Theարտարապետություն և ծրագրակազմ

Հիմնական ծրագրակազմը աշխատում է Arduino Nano- ի վրա:

  • Archարտարապետությունը հիմնված է I2C հաղորդակցության վրա:
  • Ես որոշեցի նվիրել Նանոյին այն բանի շնորհիվ, որ ռոբոտին աշխատող Atmega- ն բավականին արդեն բեռնված էր, և այս ճարտարապետությունը դարձնում է ամենահեշտը այլուր օգտագործելը:
  • Նանոն կարդում է BNO055 գրանցամատյանները, հաշվարկում և պահում է վերնագիրն ու տեղայնացումը սեփական գրանցամատյաններում:
  • Arduino Atmega- ն, որն աշխատում է ռոբոտի ծածկագրով, անիվներ է փոխանցում տեղեկատվություն Nano- ին և կարդում է վերնագրերը և տեղայնացումը Nano գրանցամատյաններում:

Այնտեղ ենթաթեմայի (Նանո) ծածկագիրը հասանելի է այստեղ ՝ GitHub- ում

Adafruit calibration գործիք, եթե այստեղ GitHub- ում (չափագրումը կպահվի eeproom- ում)

Քայլ 6: Ի՞նչ սովորեցի:

I2C- ի վերաբերյալ

Սկզբում ես փորձեցի երկու վարպետ (Arduino) և 1 ստրուկ (սենսոր) ունենալ նույն ավտոբուսում, բայց վերջում հնարավոր է և ամենահեշտը `միայն Nano- ն որպես վարպետ և օգտագործել 2 Arduinos- ի GPIO կապը` «խորհրդանիշ պահանջելու» համար:.

Ինչ վերաբերում է BNO055- ին 2D կողմնորոշման համար

Կարող եմ կենտրոնանալ վազքի 3 տարբեր ռեժիմների վրա ՝ NDOF (միավորել գիրոսկոպ, արագացուցիչ և կողմնացույցներ), երբ ռոբոտը անգործության է մատնված, IMU (միավորել գիրոսկոպ, արագացուցիչ), երբ ռոբոտը շարժվում է և կողմնացույց տեղայնացման փուլում: Այս ռեժիմների միջև անցումը հեշտ և արագ է:

Կոդի չափը նվազեցնելու և բախումը հայտնաբերելու համար BNO055 ընդհատումը օգտագործելու հնարավորությունը պահպանելու համար ես նախընտրում եմ չօգտագործել Adafruit գրադարանը և դա անել ինքնուրույն:

Խորհուրդ ենք տալիս: