Mündəricat:

İnertial Ölçmə Birimindən İstifadə Bir Yol? 6 addım
İnertial Ölçmə Birimindən İstifadə Bir Yol? 6 addım

Video: İnertial Ölçmə Birimindən İstifadə Bir Yol? 6 addım

Video: İnertial Ölçmə Birimindən İstifadə Bir Yol? 6 addım
Video: Обзор и сравнение BSIDE ZT-Y2 и мультиметра BSIDE ZT-Y ну и мультиметр BSIDE ZT-X 2024, Noyabr
Anonim
İnertial Ölçmə Birimindən İstifadə Etməyin Bir Yolu?
İnertial Ölçmə Birimindən İstifadə Etməyin Bir Yolu?

Kontekst:

Əylənmək üçün bir evin içərisində müstəqil şəkildə hərəkət etmək istədiyim bir robot qururam.

Uzun bir işdir və addım -addım edirəm.

Artıq bu mövzuda 2 təlimat dərc etmişəm:

  • təkər kodlayıcısı hazırlamaq haqqında
  • wifi bağlantısı haqqında

Robotum ev təkər kodlayıcısının köməyi ilə 2 DC mühərriklə idarə olunur.

Hal -hazırda hərəkətli idarəetməni təkmilləşdirirəm və bir müddət giroskop, akselerometr və IMU ilə keçirdim. Bu təcrübəni bölüşməkdən məmnun olardım.

Yerləşdirmə haqqında daha çox bilmək istəyirsiniz? Robotu lokallaşdırmaq üçün süni intellekt və ultrasəsləri necə birləşdirə biləcəyiniz haqqında bir məqalə

Addım 1: Niyə İnertial Ölçmə Birimindən istifadə etməlisiniz?

Niyə İnertial Ölçmə Birimindən istifadə etməliyəm?
Niyə İnertial Ölçmə Birimindən istifadə etməliyəm?

Bəs niyə IMU -dan istifadə etdim?

Birinci səbəb, təkər kodlayıcısının düz hərəkəti idarə etmək üçün kifayət qədər dəqiq olmasıdır, hətta tüninqdən sonra da +- 5 dərəcədən aşağı fırlanma dəqiqliyi əldə edə bilməmişəm və bu kifayət deyil.

Buna görə 2 fərqli sensoru sınadım. Əvvəlcə bir maqnitometrdən (LSM303D) istifadə edirəm. Prinsip sadə idi: fırlanmadan əvvəl şimal istiqamətini əldə edin, hədəfi hesablayın və hədəfə çatana qədər hərəkəti tənzimləyin. Enkoderdən bir az daha yaxşı idi, amma çox dağınıq idi. Bundan sonra bir giroskop (L3GD20) istifadə etməyə çalışdım. Prinsip, fırlanmanı hesablamaq üçün sensor tərəfindən verilən fırlanma sürətini birləşdirmək idi. Və yaxşı işləyirdi. +- 1 dərəcə fırlanmanı idarə edə bildim.

Buna baxmayaraq, bəzi İİB -ləri sınamaq mənə maraqlı gəldi. BNO055 komponentini seçirəm. Bu İB -ni anlamaq və sınamaq üçün bir az vaxt sərf etdim. Sonda aşağıdakı səbəblərə görə bu sensoru seçməyə qərar verdim

  • L3GD20 ilə fırlanmanı da idarə edə bilərəm
  • Düz hərəkət edərkən bir az fırlanma hiss edə bilərəm
  • Robot lokalizasiyası üçün şimal istiqamətini almalıyam və BNO055 -in pusula kalibrlənməsi çox sadədir

Addım 2: 2D Lokalizasiya üçün BNO055 -dən necə istifadə olunur?

2D Lokalizasiya üçün BNO055 -dən necə istifadə olunur?
2D Lokalizasiya üçün BNO055 -dən necə istifadə olunur?

BNO055 IMU, mütləq istiqamətləndirmə təmin edə bilən Bosch 9 oxlu ağıllı bir sensordur.

Məlumat cədvəli tam bir sənəd təqdim edir. Yüksək texnologiyalı bir komponentdir, olduqca mürəkkəb bir məhsuldur və necə işlədiyini öyrənmək və istifadə etməyin müxtəlif yollarını sınamaq üçün bir neçə saat sərf etdim.

Bu təcrübəni paylaşmağın faydalı ola biləcəyini düşünürəm.

Əvvəlcə sensoru kalibr etmək və kəşf etmək üçün yaxşı bir vasitə təmin edən Adafruit kitabxanasından istifadə etdim.

Sonda və bir çox sınaqlardan sonra qərar verdim

  • yalnız kalibrləmə saxlamaq üçün Adafruit kitabxanasından istifadə edin
  • BNO055 -in bütün mümkün rejimlərindən 3 -dən istifadə edin (NDOF, IMU, Compss)
  • BNO055 mesurments əsasında lokalizasiyanı hesablamaq üçün bir Arduino Nano ayırın

Addım 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 komponentidir. Beləliklə, ünsiyyət qurmaq üçün enerji təchizatı, SDA və SCL lazımdır.

Yalnız aldığınız məhsula görə Vdd gərginliyinə diqqət yetirin. Bosch çipi 2.4V - 3.6V aralığında işləyir və 3.3v və 5v komponentləri tapa bilərsiniz.

Nano ilə BNO055 -i birləşdirməkdə heç bir çətinlik yoxdur.

  • BNO055 Nano ilə təchiz edilmişdir
  • SDA & SCL, 2 x 2k çəkmə dirənçləri ilə bağlıdır.
  • Diaqnoz üçün Nanoya qoşulmuş 3 LED (rezistorlu)
  • Yükləndikdən sonra rejimi təyin etmək üçün 2 bağlayıcı istifadə olunur
  • BNO -ya doğru 1 bağlayıcı (Gnd, Vdd, Sda, Scl, Int)
  • Robot/Mega tərəf 1 bağlayıcı (+9V, Gnd, sda, Scl, Pin11, Pin12)

Bir az lehimləmə və budur!

Addım 4: Necə işləyir?

Bu necə işləyir ?
Bu necə işləyir ?

Vue ünsiyyət nöqtəsindən:

  • Nano, I2C avtobus ustasıdır
  • Robot/Mega və BNO055 I2C qullarıdır
  • Nano, BNO055 qeydlərini daimi olaraq oxuyur
  • Robot/Mega, Nanodan söz istəmək üçün rəqəmsal bir siqnal qaldırır

Vue hesablama nöqtəsindən: BNO055 ilə birlikdə Nano verir

  • Pusula başlığı (lokalizasiya üçün istifadə olunur)
  • Nisbi bir başlıq (rotasiyanı idarə etmək üçün istifadə olunur)
  • Mütləq başlıq və mövqe (hərəkətləri idarə etmək üçün istifadə olunur)

Fəaliyyət baxımından: Nano:

  • BNO055 kalibrini idarə edir
  • BNO055 parametrlərini və əmrlərini idarə edir

Nano və BNO055 alt sistemi:

  • hər bir robot təkəri üçün mütləq başlıq və lokalizasiyanı hesablayın (miqyas faktoru ilə)
  • robotun fırlanması zamanı nisbi başlığı hesablayın

Addım 5: Memarlıq və Proqram

Memarlıq və Proqram təminatı
Memarlıq və Proqram təminatı

Əsas proqram Arduino Nano üzərində işləyir

  • Memarlıq I2C ünsiyyətinə əsaslanır.
  • Robotu işlədən Atmega -nın kifayət qədər yüklənmiş olması və bu arxitekturanın başqa yerdə təkrar istifadəni asanlaşdırması səbəbindən bir Nano həsr etməyi seçdim.
  • Nano, BNO055 qeydlərini oxuyur, başlıq və lokalizasiyanı öz qeydlərində hesablayır və saxlayır.
  • Robot kodunu işlədən, təkərlərin kodlayıcı məlumatlarını Nanoya göndərən Arduino Atmega, Nano qeydlərindəki başlıqları və lokalizasiyanı oxuyur.

Alt sistem (Nano) kodu burada GitHub -da mövcuddur

GitHub -da Adafruit kalibrləmə vasitəsi (kalibrləmə eeproomda saxlanılacaq)

Addım 6: Nə Öyrəndim?

I2C ilə əlaqədar

Əvvəlcə eyni avtobusda 2 usta (Arduino) və 1 qul (sensor) olmağa çalışdım, amma sonunda yalnız Nanonu master olaraq təyin etmək və 2 Arduino arasındakı GPIO bağlantısından istifadə edərək "nişan tələb etmək" mümkün və ən asandır..

2D oriyentasiya üçün BNO055 ilə əlaqədar

3 fərqli iş rejiminə konsentrasiya ola bilərəm: robot boşdaykən NDOF (giroskop, akselerometr və Kompaları birləşdir), robot hərəkət edərkən IMU (giroskopu, akselerometri birləşdir) və lokalizasiya mərhələsində Kompas. Bu rejimlər arasında keçid asan və sürətlidir.

Kodun ölçüsünü azaltmaq və toqquşma aşkar etmək üçün BNO055 kəsilməsini istifadə etmək ehtimalını saxlamaq üçün Adafruit kitabxanasından istifadə etməməyi və özüm etməyi üstün tuturam.

Tövsiyə: