Talaan ng mga Nilalaman:

Isang Paraan upang Makagamit ng isang Yunit ng Pagsukat ng Inertial?: 6 Mga Hakbang
Isang Paraan upang Makagamit ng isang Yunit ng Pagsukat ng Inertial?: 6 Mga Hakbang

Video: Isang Paraan upang Makagamit ng isang Yunit ng Pagsukat ng Inertial?: 6 Mga Hakbang

Video: Isang Paraan upang Makagamit ng isang Yunit ng Pagsukat ng Inertial?: 6 Mga Hakbang
Video: Pagganyak na Gawain para sa Demo Teaching 2024, Nobyembre
Anonim
Isang Paraan upang Gumamit ng isang Yunit ng Pagsukat ng Inertial?
Isang Paraan upang Gumamit ng isang Yunit ng Pagsukat ng Inertial?

Ang konteksto:

Binubuo ko para sa kasiyahan ang isang robot na nais kong ilipat nang autonomiya sa loob ng isang bahay.

Ito ay isang mahabang trabaho at gumagawa ako ng hakbang-hakbang.

Nag-publish na ako ng 2 mga itinuturo sa paksang iyon:

  • isa tungkol sa paggawa ng isang encoder ng gulong
  • isa tungkol sa koneksyon sa wifi

Ang aking robot ay hinihimok ng sa 2 DC motors sa tulong ng aking home-wheel gulong encoder.

Kasalukuyan kong pinapabuti ang gumagalaw na kontrol at gumugol ng ilang oras sa gyroscope, accelerometer at IMU. Nais kong ibahagi ang karanasang ito.

Nais mong malaman ang tungkol sa lokalisasyon? Narito ang isang artikulo tungkol sa kung paano pagsamahin ang artipisyal na intelihensiya at mga ultrasound upang i-localize ang robot

Hakbang 1: Bakit Gumagamit ng isang Yunit ng Pagsukat ng Inertial?

Bakit Gumagamit ng Yunit ng Pagsukat ng Inertial?
Bakit Gumagamit ng Yunit ng Pagsukat ng Inertial?

Kaya bakit ako gumamit ng isang IMU?

Ang unang dahilan ay kung ang gulong encoder ay tumpak na sapat upang makontrol ang tuwid na paglipat, kahit na pagkatapos ng pag-tune ay hindi ako nakakuha ng isang katumpakan para sa pag-ikot mas mababa sa + - 5 degres at iyon ay hindi sapat.

Kaya sinubukan ko ang 2 magkakaibang mga sensor. Una gumamit ako ng isang magnetometer (LSM303D). Ang prinsipyo ay simple: bago paikutin ang hilagang oryentasyon, kalkulahin ang target at ayusin ang paglipat hanggang maabot ang target. Ito ay isang maliit na mas mahusay kaysa sa encoder ngunit may masyadong pagpapakalat. Pagkatapos nito sinubukan kong gumamit ng isang gyroscope (L3GD20). Ang prinsipyo ay upang maisama lamang ang bilis ng pag-ikot na ibinigay ng sensor upang makalkula ang pag-ikot. At gumana ito ng maayos. Nakontrol ko ang pag-ikot sa + - 1 degre.

Gayunpaman ako ay nagtataka upang subukan ang ilang IMU. Pumili ako ng isang sangkap ng BNO055. Gumugol ako ng ilang oras upang maunawaan at subukan ang IMU na ito. Sa huli nagpasya akong piliin ang sensor na ito para sa mga sumusunod na kadahilanan

  • Maaari kong makontrol ang pag-ikot pati na rin sa L3GD20
  • Mahahalata ko ang bahagyang pag-ikot kapag dumidiretso
  • Kailangan kong makakuha ng orientation ng hilaga para sa localization ng robot at ang pagkakalibrate ng kompas ng BNO055 ay napaka-simple

Hakbang 2: Paano Gumamit ng BNO055 para sa Lokalisasyong 2D?

Paano Magamit ang BNO055 para sa Lokalisasyong 2D?
Paano Magamit ang BNO055 para sa Lokalisasyong 2D?

Ang BNO055 IMU ay isang Bosch 9 axis na matalinong sensor na maaaring magbigay ng ganap na oryentasyon.

Nagbibigay ang datasheet ng isang kumpletong dokumentasyon. Ito ay isang high tech na sangkap ito ay isang kumplikadong produkto at ginugol ko ng ilang oras upang malaman kung paano ito gumagana at subukan ang iba't ibang mga paraan ng paggamit nito.

Sa palagay ko maaaring maging kapaki-pakinabang upang ibahagi ang karanasang ito.

Una ginamit ko ang Adafruit library na nagbibigay ng isang mahusay na tool upang i-calibrate at tuklasin ang sensor.

Sa pagtatapos at pagkatapos ng maraming pagsubok ay nagpasya akong

  • gumamit ng Adafruit library para sa pag-save lamang ng pagkakalibrate
  • gumamit ng 3 sa lahat ng mga posibleng mode ng BNO055 (NDOF, IMU, Compss)
  • italaga ang isang Arduino Nano upang makalkula ang lokalisasyon batay sa BNO055 mesurments

Hakbang 3: Hardware Point ng Vue

Hardware Point ng Vue
Hardware Point ng Vue
Hardware Point ng Vue
Hardware Point ng Vue
Hardware Point ng Vue
Hardware Point ng Vue

Ang BNO055 ay isang bahagi ng I2C. Kaya kailangan nito ng supply ng kuryente, SDA at SCL upang makipag-usap.

Mag-ingat lamang sa Vdd boltahe alinsunod sa produktong iyong binili. Gumagana ang chip ng Bosch sa saklaw: 2.4V hanggang 3.6V at mahahanap mo ang bahagi ng 3.3v at 5v.

Walang mga paghihirap para sa pagkonekta sa Nano at sa BNO055.

  • Ang BNO055 ay pinalakas ng Nano
  • Ang SDA & SCL ay konektado sa 2 x 2k pull-up resistors.
  • 3 LED na konektado sa Nano para sa diagnosis (na may resistors)
  • 2 konektor ang ginamit upang tukuyin ang mode pagkatapos ng boot
  • 1 konektor patungo sa BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 konektor patungo sa Robot / Mega (+ 9V, Gnd, sda, Scl, Pin11, Pin12)

Kaunting paghihinang at iyon na!

Hakbang 4: Paano Ito Gumagana?

Paano Ito Gumagana?
Paano Ito Gumagana?

Mula sa punto ng komunikasyon ng vue:

  • Ang Nano ay ang master ng bus ng I2C
  • Ang Robot / Mega at ang BNO055 ay mga alipin ng I2C
  • Permanenteng binasa ng Nano ang mga rehistro ng BNO055
  • Ang Robot / Mega ay tumataas ng isang numerong signal upang humiling ng salita mula sa Nano

Mula sa punto ng pagkalkula ng vue: Ang Nano na sinamahan ng BNO055 ay naghahatid

  • Ang heading ng compass (ginamit para sa localization)
  • Isang kamag-anak na heading (ginagamit upang makontrol ang mga pag-ikot)
  • Ang ganap na heading at posisyon (ginamit upang makontrol ang mga paggalaw)

Mula sa functional point ng vue: Ang Nano:

  • namamahala sa pagkakalibrate ng BNO055
  • namamahala sa mga parameter at utos ng BNO055

Ang subsystem Nano at BNO055:

  • kalkulahin para sa bawat gulong ng robot ang ganap na heading at lokalisasyon (na may sukat na sukat)
  • kalkulahin ang kamag-anak na heading habang umiikot ng robot

Hakbang 5: Ang Arkitektura at Software

Ang Arkitektura at Software
Ang Arkitektura at Software

Ang pangunahing software ay tumatakbo sa isang Arduino Nano

  • Ang arkitektura ay batay sa komunikasyon ng I2C.
  • Pinili kong italaga ang isang Nano dahil sa ang katunayan na ang Atmega na nagpapatakbo ng robot ay na-load na at ang arkitekturang ito ay ginagawang pinakamadaling gamitin muli sa ibang lugar.
  • Binabasa ng Nano ang mga rehistro ng BNO055, compute at store heading at localization sa sarili nitong mga rehistro.
  • Ang Arduino Atmega na nagpapatakbo ng robot code, nagpapadala ng impormasyon ng mga gulong na naka-encode sa Nano at binasa ang mga heading at lokalisasyon sa loob ng mga rehistro ng Nano.

May magagamit na subsytem (Nano) code dito sa GitHub

Ang tool ng pagkakalibrate ng Adafruit kung dito sa GitHub (ang pagkakalibrate ay itatabi sa eeproom)

Hakbang 6: Ano ang Natutuhan Ko?

Tungkol sa I2C

Una sinubukan kong magkaroon ng 2 masters (Arduino) at 1 alipin (sensor) sa parehong bus ngunit sa huli posible at pinakamadaling itakda lamang ang Nano bilang master at gamitin ang koneksyon ng GPIO sa pagitan ng 2 Arduinos upang "humiling ng token".

Tungkol sa BNO055 para sa orientasyong 2D

Maaari akong tumutok sa 3 magkakaibang mga mode na tumatakbo: NDOF (pagsamahin ang gyroscope, accelerometer at Compas) kapag ang robot ay walang ginagawa, IMU (pagsamahin ang gyroscope, accelerometer) kapag ang robot ay gumagalaw at Compass sa panahon ng lokalisasyon. Ang paglipat sa pagitan ng mga mode na ito ay madali at mabilis.

Upang mabawasan ang laki ng code at panatilihin ang posibilidad na gamitin ang BNO055 makagambala upang makita ang salpukan, mas gusto kong hindi gamitin ang Adafruit library at gawin ito sa aking sarili.

Inirerekumendang: