Isi kandungan:
- Langkah 1: Mengapa Menggunakan Unit Pengukuran Inersia?
- Langkah 2: Bagaimana Menggunakan BNO055 untuk Penyetempatan 2D?
- Langkah 3: Titik Perkakasan Vue
- Langkah 4: Bagaimana Ia Berfungsi?
- Langkah 5: Senibina dan Perisian
- Langkah 6: Apa yang Saya Pelajari?
Video: Cara Menggunakan Unit Pengukuran Inersia?: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Konteks:
Saya membina untuk bersenang-senang sebuah robot yang saya mahu bergerak secara autonomi di dalam sebuah rumah.
Ini adalah kerja yang panjang dan saya melakukan langkah demi langkah.
Saya telah menerbitkan 2 arahan untuk topik itu:
- satu mengenai membuat pengekod roda
- satu mengenai sambungan wifi
Robot saya dipacu oleh 2 motor DC dengan bantuan pengekod roda buatan rumah saya.
Saya sedang meningkatkan kawalan bergerak dan telah meluangkan masa dengan giroskop, akselerometer dan IMU. Saya ingin berkongsi pengalaman ini.
Anda ingin mengetahui lebih lanjut mengenai penyetempatan? Berikut adalah artikel mengenai cara menggabungkan kecerdasan buatan dan ultrasound untuk melokalkan robot
Langkah 1: Mengapa Menggunakan Unit Pengukuran Inersia?
Oleh itu, mengapa saya menggunakan IMU?
Sebab pertama ialah jika pengekod roda cukup tepat untuk mengawal pergerakan lurus, walaupun selepas menyetel, saya tidak dapat memperoleh ketepatan untuk putaran kurang dari + - 5 degres dan itu tidak mencukupi.
Oleh itu, saya mencuba 2 sensor yang berbeza. Pertama saya menggunakan magnetometer (LSM303D). Prinsipnya sederhana: sebelum putaran mendapatkan orientasi utara, hitung sasaran dan sesuaikan gerakan hingga target tercapai. Ia sedikit lebih baik daripada dengan pengekod tetapi dengan terlalu banyak penyebaran. Selepas itu saya cuba menggunakan giroskop (L3GD20). Prinsipnya hanyalah untuk menggabungkan kecepatan putaran yang diberikan oleh sensor untuk menghitung putaran. Dan ia berfungsi dengan baik. Saya dapat mengawal putaran pada + - 1 degre.
Walaupun begitu, saya ingin sekali mencuba beberapa IMU. Saya memilih komponen BNO055. Saya meluangkan masa untuk memahami dan menguji IMU ini. Pada akhirnya saya memutuskan untuk memilih sensor ini atas alasan berikut
- Saya dapat mengawal putaran dan juga dengan L3GD20
- Saya dapat mengesan putaran sedikit ketika bergerak lurus
- Saya perlu mendapatkan arah utara untuk penyetempatan robot dan penentukuran kompas BNO055 sangat mudah
Langkah 2: Bagaimana Menggunakan BNO055 untuk Penyetempatan 2D?
BNO055 IMU adalah sensor pintar paksi 9 Bosch yang dapat memberikan orientasi mutlak.
Lembar data menyediakan dokumentasi lengkap. Ini adalah komponen berteknologi tinggi, ia adalah produk yang agak rumit dan saya menghabiskan beberapa jam untuk belajar bagaimana ia berfungsi dan mencuba pelbagai cara menggunakannya.
Saya rasa sangat berguna untuk berkongsi pengalaman ini.
Mula-mula saya menggunakan perpustakaan Adafruit yang menyediakan alat yang baik untuk menentukur dan menemui sensor.
Pada akhir dan setelah banyak ujian saya memutuskan untuk
- gunakan perpustakaan Adafruit untuk menyimpan penentukuran sahaja
- gunakan 3 daripada semua kemungkinan mod BNO055 (NDOF, IMU, Compss)
- dedikasikan Arduino Nano untuk menghitung penyetempatan berdasarkan kaedah BNO055
Langkah 3: Titik Perkakasan Vue
BNO055 adalah komponen I2C. Oleh itu, ia memerlukan bekalan kuasa, SDA dan SCL untuk berkomunikasi.
Cukup jaga voltan Vdd mengikut produk yang anda beli. Cip Bosch berfungsi dalam julat: 2.4V hingga 3.6V dan anda boleh menemui komponen 3.3v dan 5v.
Tidak ada kesukaran untuk menghubungkan Nano dan BNO055.
- BNO055 dikuasakan oleh Nano
- SDA & SCL disambungkan dengan perintang tarik 2 x 2k.
- 3 LED disambungkan ke Nano untuk diagnosis (dengan perintang)
- 2 penyambung digunakan untuk menentukan mod selepas boot
- 1 penyambung ke arah BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 penyambung ke arah Robot / Mega (+ 9V, Gnd, sda, Scl, Pin11, Pin12)
Sedikit pematerian dan itu sahaja!
Langkah 4: Bagaimana Ia Berfungsi?
Dari sudut komunikasi vue:
- Nano adalah ketua bas I2C
- Robot / Mega dan BNO055 adalah hamba I2C
- Nano membaca daftar BNO055 secara kekal
- Robot / Mega menaikkan isyarat angka untuk meminta kata dari Nano
Dari titik pengiraan vue: Nano digabungkan dengan BNO055 memberikan
- Tajuk kompas (digunakan untuk penyetempatan)
- Tajuk relatif (digunakan untuk mengawal putaran)
- Tajuk dan kedudukan mutlak (digunakan untuk mengawal pergerakan)
Dari sudut fungsional: The Nano:
- menguruskan penentukuran BNO055
- menguruskan parameter dan perintah BNO055
Subsistem Nano & BNO055:
- hitung untuk setiap roda roda arah dan penyetempatan mutlak (dengan faktor skala)
- hitung tajuk relatif semasa putaran robot
Langkah 5: Senibina dan Perisian
Perisian utama dijalankan di Arduino Nano
- Senibina berdasarkan komunikasi I2C.
- Saya memilih untuk mendedikasikan Nano kerana Atmega yang menjalankan robot agak dimuat dan seni bina ini menjadikannya paling mudah digunakan semula di tempat lain.
- Nano membaca daftar BNO055, menghitung dan menyimpan tajuk dan penyetempatan dalam daftarnya sendiri.
- Arduino Atmega yang menjalankan kod robot, mengirimkan maklumat pengekod roda ke Nano dan membaca tajuk dan penyetempatan di dalam daftar Nano.
Terdapat kod subsistem (Nano) yang terdapat di GitHub di sini
Alat penentukuran Adafruit jika ada di GitHub (penentukuran akan disimpan di eeproom)
Langkah 6: Apa yang Saya Pelajari?
Mengenai I2C
Mula-mula saya cuba mempunyai 2 tuan (Arduino) dan 1 hamba (sensor) di bas yang sama tetapi pada akhirnya mungkin dan paling mudah untuk menetapkan hanya Nano sebagai master dan menggunakan sambungan GPIO antara 2 Arduino untuk "meminta token".
Mengenai BNO055 untuk orientasi 2D
Saya dapat menumpukan perhatian pada 3 mod berjalan yang berlainan: NDOF (giroskop gabungan, akselerometer dan Kompas) ketika robot tidak aktif, IMU (giroskop gabungan, akselerometer) ketika robot bergerak dan Kompas semasa fasa penyetempatan. Beralih antara mod ini mudah dan pantas.
Untuk mengurangkan saiz kod dan memastikan kemungkinan menggunakan gangguan BNO055 untuk mengesan perlanggaran, saya lebih suka tidak menggunakan perpustakaan Adafruit dan melakukannya sendiri.
Disyorkan:
Pengukuran Kelajuan Motor Menggunakan Arduino: 6 Langkah
Pengukuran Kelajuan Motor Menggunakan Arduino: Adakah sukar untuk mengukur rpm motor ??? Saya rasa tidak begitu. Berikut adalah satu penyelesaian mudah. Hanya satu sensor IR dan Arduino dalam kit anda yang boleh melakukannya. Dalam catatan ini saya akan memberikan tutorial ringkas yang menerangkan cara mengukur RPM mana-mana motor menggunakan sensor IR dan
Pengukuran Suhu Menggunakan XinaBox dan Thermistor: 8 Langkah
Pengukuran Suhu Menggunakan XinaBox dan Thermistor: Ukur suhu cecair menggunakan input analog xChip dari XinaBox dan probistor termistor
Pengukuran Pecutan Menggunakan ADXL345 dan Foton Partikel: 4 Langkah
Pengukuran Pecutan Menggunakan ADXL345 dan Foton Partikel: ADXL345 adalah kecil, nipis, kuasa ultralow, akselerator 3 paksi dengan pengukuran resolusi tinggi (13-bit) hingga ± 16 g. Data output digital diformat sebagai pelengkap dua-bit 16-bit dan dapat diakses melalui antara muka digital I2 C. Mengukur
ARUPI - Unit Rakaman Automatik Kos Rendah / Unit Rakaman Autonomi (ARU) untuk Ahli Ekologi Soundscape: 8 Langkah (dengan Gambar)
ARUPI - Unit Rakaman Automatik Kos Rendah / Unit Rakaman Autonomi (ARU) untuk Ahli Ekologi Soundscape: Arahan ini ditulis oleh Anthony Turner. Projek ini dibangunkan dengan banyak bantuan dari Shed in the School of Computing, University of Kent (Mr Daniel Knox sangat membantu!). Ia akan menunjukkan kepada anda bagaimana membina Rakaman Audio Automatik U
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: 4 Langkah
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: Kami akan menunjukkan kepada anda cara membuka Terminal MAC. Kami juga akan menunjukkan kepada anda beberapa ciri dalam Terminal, seperti ifconfig, mengubah direktori, mengakses fail, dan arp. Ifconfig akan membolehkan anda memeriksa alamat IP anda, dan iklan MAC anda