Daftar Isi:
- Langkah 1: Mengapa Menggunakan Unit Pengukuran Inersia?
- Langkah 2: Bagaimana Menggunakan BNO055 untuk Lokalisasi 2D?
- Langkah 3: Titik Perangkat Keras Vue
- Langkah 4: Bagaimana Cara Kerjanya?
- Langkah 5: Arsitektur dan Perangkat Lunak
- Langkah 6: Apa yang Saya Pelajari?
Video: Cara Menggunakan Satuan Pengukuran Inersia ?: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Isi:
Saya sedang membangun untuk bersenang-senang robot yang ingin saya gerakkan secara mandiri di dalam rumah.
Ini adalah pekerjaan yang panjang dan saya melakukan langkah demi langkah.
Saya sudah menerbitkan 2 instruksi tentang topik itu:
- satu tentang membuat encoder roda
- satu tentang koneksi wifi
Robot saya digerakkan oleh 2 motor DC dengan bantuan wheel encoder buatan saya.
Saat ini saya meningkatkan kontrol bergerak dan telah menghabiskan beberapa waktu dengan giroskop, akselerometer, dan IMU. Saya akan senang untuk berbagi pengalaman ini.
Anda ingin tahu lebih banyak tentang lokalisasi? Berikut adalah artikel tentang cara menggabungkan kecerdasan buatan dan ultrasound untuk melokalisasi robot
Langkah 1: Mengapa Menggunakan Unit Pengukuran Inersia?
Jadi mengapa saya menggunakan IMU?
Alasan pertama adalah jika wheel encoder cukup presisi untuk mengontrol gerakan lurus, bahkan setelah penyetelan, saya tidak bisa mendapatkan presisi untuk rotasi kurang dari +- 5 derajat dan itu tidak cukup.
Jadi saya mencoba 2 sensor yang berbeda. Pertama saya menggunakan magnetometer (LSM303D). Prinsipnya sederhana: sebelum rotasi mendapatkan orientasi utara, hitung target dan sesuaikan gerakan hingga target tercapai. Itu sedikit lebih baik daripada dengan encoder tetapi dengan terlalu dispersi. Setelah itu saya mencoba menggunakan giroskop (L3GD20). Prinsipnya hanya mengintegrasikan kecepatan putaran yang disediakan oleh sensor untuk menghitung putaran. Dan itu bekerja dengan baik. Saya dapat mengontrol rotasi pada +- 1 derajat.
Meskipun demikian saya penasaran untuk mencoba beberapa IMU. Saya memilih komponen BNO055. Saya meluangkan waktu untuk memahami dan menguji IMU ini. Pada akhirnya saya memutuskan untuk memilih sensor ini karena alasan berikut:
- Saya dapat mengontrol rotasi serta dengan L3GD20
- Saya dapat mendeteksi sedikit rotasi saat bergerak lurus
- Saya perlu mendapatkan orientasi utara untuk pelokalan robot dan kalibrasi kompas BNO055 sangat sederhana
Langkah 2: Bagaimana Menggunakan BNO055 untuk Lokalisasi 2D?
BNO055 IMU adalah sensor cerdas 9 sumbu Bosch yang dapat memberikan orientasi mutlak.
Datasheet menyediakan dokumentasi lengkap. Ini adalah komponen berteknologi tinggi apakah itu produk yang agak rumit dan saya menghabiskan beberapa jam untuk mempelajari cara kerjanya dan mencoba berbagai cara menggunakannya.
Saya pikir itu bisa berguna untuk berbagi pengalaman ini.
Pertama saya menggunakan perpustakaan Adafruit yang menyediakan alat yang bagus untuk mengkalibrasi dan menemukan sensor.
Pada akhirnya dan setelah banyak tes, saya memutuskan untuk
- gunakan perpustakaan Adafruit untuk menyimpan kalibrasi saja
- gunakan 3 dari semua kemungkinan mode BNO055 (NDOF, IMU, Compss)
- mendedikasikan Arduino Nano untuk menghitung lokalisasi berdasarkan pengukuran BNO055
Langkah 3: Titik Perangkat Keras Vue
BNO055 adalah komponen I2C. Sehingga dibutuhkan power supply, SDA dan SCL untuk berkomunikasi.
Perhatikan saja voltase Vdd sesuai dengan produk yang Anda beli. Chip Bosch bekerja dalam kisaran: 2.4V hingga 3.6V dan Anda dapat menemukan komponen 3.3v dan 5v.
Tidak ada kesulitan untuk menghubungkan Nano dan BNO055.
- BNO055 didukung oleh Nano
- SDA & SCL dihubungkan dengan resistor pull-up 2 x 2k.
- 3 LED terhubung ke Nano untuk diagnosis (dengan resistor)
- 2 konektor yang digunakan untuk menentukan mode setelah boot
- 1 konektor menuju BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 konektor menuju Robot/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)
Sedikit penyolderan dan hanya itu!
Langkah 4: Bagaimana Cara Kerjanya?
Dari titik komunikasi vue:
- Nano adalah master bus I2C
- Robot/Mega dan BNO055 adalah budak I2C
- Nano secara permanen membaca register BNO055
- Robot/Mega memunculkan sinyal numerik untuk meminta kata dari Nano
Dari titik perhitungan vue: Nano yang dikombinasikan dengan BNO055 memberikan
- Judul kompas (digunakan untuk pelokalan)
- Judul relatif (digunakan untuk mengontrol rotasi)
- Judul dan posisi absolut (digunakan untuk mengontrol gerakan)
Dari titik fungsional vue: The Nano:
- mengelola kalibrasi BNO055
- mengelola parameter dan perintah BNO055
Subsistem Nano & BNO055:
- menghitung untuk setiap roda robot, heading dan lokalisasi absolut (dengan faktor skala)
- menghitung heading relatif selama rotasi robot
Langkah 5: Arsitektur dan Perangkat Lunak
Perangkat lunak utama berjalan pada Arduino Nano
- Arsitektur didasarkan pada komunikasi I2C.
- Saya memilih untuk mendedikasikan Nano karena fakta bahwa Atmega yang menjalankan robot sudah dimuat dan arsitektur ini membuatnya paling mudah untuk digunakan kembali di tempat lain.
- Nano membaca register BNO055, menghitung dan menyimpan heading dan lokalisasi dalam registernya sendiri.
- Arduino Atmega yang menjalankan kode robot, mengirimkan informasi encoder roda ke Nano dan membaca heading dan lokalisasi di dalam register Nano.
Ada kode subsistem (Nano) tersedia di sini di GitHub
Alat kalibrasi Adafruit jika di sini di GitHub (kalibrasi akan disimpan di eeproom)
Langkah 6: Apa yang Saya Pelajari?
Mengenai I2C
Pertama saya mencoba memiliki 2 master (Arduino) dan 1 slave (sensor) pada bus yang sama tetapi pada akhirnya dimungkinkan dan paling mudah untuk mengatur hanya Nano sebagai master dan menggunakan koneksi GPIO antara 2 Arduino untuk "meminta token".
Mengenai BNO055 untuk orientasi 2D
Saya dapat berkonsentrasi pada 3 mode lari yang berbeda: NDOF (gabungkan giroskop, akselerometer, dan Kompas) saat robot dalam keadaan diam, IMU (gabungkan giroskop, akselerometer) saat robot bergerak dan Kompas selama fase lokalisasi. Beralih di antara mode ini mudah dan cepat.
Untuk mengurangi ukuran kode dan menjaga kemungkinan penggunaan interupsi BNO055 untuk mendeteksi tabrakan, saya memilih untuk tidak menggunakan pustaka Adafruit dan melakukannya sendiri.
Direkomendasikan:
Pengukuran Kecepatan Motor Menggunakan Arduino: 6 Langkah
Pengukuran Kecepatan Motor Menggunakan Arduino: Apakah sulit untuk mengukur rpm motor ???Saya rasa tidak. Berikut adalah satu solusi sederhana. Hanya satu sensor IR dan Arduino di kit Anda yang dapat melakukannya. Dalam posting ini saya akan memberikan tutorial sederhana yang menjelaskan cara mengukur RPM motor apa pun menggunakan sensor IR dan A
Pengukuran Suhu Menggunakan XinaBox dan Termistor: 8 Langkah
Pengukuran Suhu Menggunakan XinaBox dan Termistor: Ukur suhu cairan menggunakan input analog xChip dari XinaBox dan probe termistor
Pengukuran Percepatan Menggunakan ADXL345 dan Foton Partikel: 4 Langkah
Pengukuran Percepatan Menggunakan ADXL345 dan Foton Partikel: ADXL345 adalah akselerometer 3-sumbu 3-sumbu kecil, tipis, dan berdaya ultra rendah dengan pengukuran resolusi tinggi (13-bit) hingga ±16 g. Data keluaran digital diformat sebagai pelengkap berpasangan 16-bit dan dapat diakses melalui antarmuka digital I2 C. Ini mengukur
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: 4 Langkah
Cara Menggunakan Terminal Mac, dan Cara Menggunakan Fungsi Utama: Kami akan menunjukkan cara membuka Terminal MAC. Kami juga akan menunjukkan kepada Anda beberapa fitur di dalam Terminal, seperti ifconfig, mengubah direktori, mengakses file, dan arp. Ifconfig akan memungkinkan Anda untuk memeriksa alamat IP Anda, dan iklan MAC Anda
Cara Membuat Satuan Telepon Pisang (Land-line) dan Pisang Dasar: 20 Langkah (dengan Gambar)
Cara Membuat Satuan Telepon Pisang (Land-line) dan Pisang Basis: Ini dia. Anda hanya punya beberapa minggu sebelum Natal, dan Anda perlu menemukan hadiah yang benar-benar orisinal dan menunjukkan betapa hebatnya Anda. Ada ribuan pilihan, tetapi satu hal yang benar-benar ingin Anda buat adalah telepon pisang