Mundarija:
- 1 -qadam: Nima uchun inertial o'lchov birligidan foydalanish kerak?
- 2 -qadam: 2D lokalizatsiya uchun BNO055 -dan qanday foydalanish kerak?
- 3 -qadam: Vue apparat nuqtasi
- 4 -qadam: Bu qanday ishlaydi?
- 5 -qadam: Arxitektura va dasturiy ta'minot
- 6 -qadam: Men nimani o'rgandim?
Video: Inertial o'lchov birligidan foydalanish usuli?: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Kontekst:
O'yin -kulgi uchun men uyning ichida avtonom tarzda harakatlanishni xohlayman.
Bu uzoq ish va men bosqichma -bosqich ishlayapman.
Men allaqachon bu mavzu bo'yicha 2 ta ko'rsatma nashr qildim:
- g'ildirak kodlovchi qilish haqida
- wifi aloqasi haqida
Mening robotimni o'z uyimda ishlab chiqarilgan g'ildirak kodlagichi yordamida 2 ta doimiy dvigatel boshqaradi.
Men hozirda harakatlanuvchi boshqaruvni takomillashtiryapman va bir muncha vaqtni giroskop, akselerometr va IMU bilan o'tkazdim. Men bu tajriba bilan bo'lishishdan mamnun bo'lardim.
Mahalliylashtirish haqida ko'proq bilmoqchimisiz? Mana, robotni lokalizatsiya qilish uchun sun'iy intellekt va ultratovushni qanday birlashtirish kerak
1 -qadam: Nima uchun inertial o'lchov birligidan foydalanish kerak?
Xo'sh, nima uchun men IMUdan foydalandim?
Birinchi sabab shundaki, agar g'ildirak enkoderi to'g'ri harakatni boshqarish uchun etarlicha aniq bo'lsa, sozlashdan keyin ham +5 gradusdan pastroq aylanishni aniqlay olmadim va bu etarli emas edi.
Shunday qilib, men 2 xil sensorni sinab ko'rdim. Birinchidan, men magnitometrni (LSM303D) ishlataman. Bu tamoyil oddiy edi: aylanishdan oldin shimolga yo'nalishni oling, nishonni hisoblang va maqsadga erishguncha harakatni to'g'rilang. Bu kodlovchiga qaraganda biroz yaxshiroq edi, lekin juda tarqalib ketdi. Shundan so'ng men giroskopni (L3GD20) ishlatishga harakat qildim. Printsip faqat aylanishni hisoblash uchun sensor tomonidan berilgan aylanish tezligini birlashtirish edi. Va u yaxshi ishladi. Men aylanishni +- 1 daraja nazorat qila oldim.
Shunga qaramay, men O'IHni sinab ko'rmoqchi bo'ldim. Men BNO055 komponentini tanlayman. Men bu O'IHni tushunish va sinab ko'rish uchun biroz vaqt sarfladim. Oxir -oqibat, men quyidagi sabablarga ko'ra ushbu sensorni tanlashga qaror qildim
- Men aylanishni L3GD20 bilan ham nazorat qila olaman
- To'g'ri harakatlanayotganda engil burilishni aniqlay olaman
- Men robotni lokalizatsiya qilish uchun shimoliy yo'nalishni olishim kerak va BNO055 kompasini kalibrlash juda oddiy.
2 -qadam: 2D lokalizatsiya uchun BNO055 -dan qanday foydalanish kerak?
BNO055 IMU - bu Bosch 9 eksa aqlli sensori bo'lib, u mutlaq yo'nalishni ta'minlay oladi.
Ma'lumotlar varaqasi to'liq hujjatlarni taqdim etadi. Bu yuqori texnologiyali komponent, bu juda murakkab mahsulot va men uning ishlashini o'rganish va uni ishlatishning turli usullarini sinab ko'rish uchun bir necha soat sarfladim.
Menimcha, bu tajriba bilan bo'lishish foydali bo'lishi mumkin.
Birinchidan, men sensorni kalibrlash va kashf qilish uchun yaxshi vosita bo'lgan Adafruit kutubxonasidan foydalandim.
Oxirida va ko'plab sinovlardan so'ng men qaror qildim
- faqat kalibrlashni saqlash uchun Adafruit kutubxonasidan foydalaning
- BNO055 (NDOF, IMU, Compss) mumkin bo'lgan barcha rejimlaridan 3tasini ishlating.
- BNO055 o'lchovlari asosida lokalizatsiyani hisoblash uchun Arduino Nano -ni bag'ishlang
3 -qadam: Vue apparat nuqtasi
BNO055 - I2C komponenti. Shunday qilib, u bilan aloqa qilish uchun quvvat manbai, SDA va SCL kerak.
Siz sotib olgan mahsulotga muvofiq Vdd kuchlanishiga e'tibor bering. Bosch chipi diapazonda ishlaydi: 2,4 V dan 3,6 V gacha va siz 3,3 V va 5 V komponentlarini topishingiz mumkin.
Nano va BNO055 ni ulashda hech qanday qiyinchiliklar yo'q.
- BNO055 Nano tomonidan quvvatlanadi
- SDA va SCL 2 x 2k tortish qarshiliklari bilan ulangan.
- Diagnostika uchun 3 nano ulangan LED (rezistorlar bilan)
- Yuklashdan keyin rejimni aniqlash uchun 2 ta ulagich ishlatiladi
- BNO tomon 1 ulagich (Gnd, Vdd, Sda, Scl, Int)
- Robot/Mega tomon 1 ta ulagich (+9V, Gnd, sda, Scl, Pin11, Pin12)
Bir oz lehim va bu hammasi!
4 -qadam: Bu qanday ishlaydi?
Aloqa nuqtai nazaridan:
- Nano - I2C avtobus ustasi
- Robot/Mega va BNO055 - I2C qullari
- Nano doimiy ravishda BNO055 registrlarini o'qiydi
- Robot/Mega Nano -dan so'zni so'rash uchun raqamli signalni ko'taradi
Hisoblash nuqtasidan: Nano BNO055 bilan birlashtirilgan
- Kompas sarlavhasi (lokalizatsiya uchun ishlatiladi)
- Nisbiy sarlavha (aylanishni boshqarish uchun ishlatiladi)
- Mutlaq sarlavha va pozitsiya (harakatlarni boshqarish uchun ishlatiladi)
Funktsional nuqtai nazardan: Nano:
- BNO055 kalibrini boshqaradi
- BNO055 parametrlari va buyruqlarini boshqaradi
Nano va BNO055 quyi tizimi:
- Har bir robot g'ildiragi uchun mutlaq sarlavha va lokalizatsiyani hisoblang (o'lchov koeffitsienti bilan)
- robotning aylanishi paytida nisbiy sarlavhani hisoblang
5 -qadam: Arxitektura va dasturiy ta'minot
Asosiy dasturiy ta'minot Arduino Nano -da ishlaydi
- Arxitektura I2C aloqasiga asoslangan.
- Men robotni boshqaradigan Atmega ancha yuklanganligi va bu arxitektura boshqa joyda qayta ishlatilishini osonlashtirgani uchun men nanoni bag'ishlashni tanladim.
- Nano BNO055 registrlarini o'qiydi, sarlavha va lokalizatsiyani hisoblaydi va saqlaydi.
- Arduino Atmega robot kodini boshqaradi, g'ildiraklarni kodlovchi ma'lumotlarini Nano -ga yuboradi va Nano registrlaridagi sarlavhalar va lokalizatsiyani o'qiydi.
Bu erda GitHub -da kichik tizim (Nano) kodi mavjud
Adafruit kalibrlash vositasi GitHub -da bo'lsa (kalibrlash xonada saqlanadi)
6 -qadam: Men nimani o'rgandim?
I2C haqida
Birinchidan, men bitta avtobusda 2 ta master (Arduino) va 1 ta qul (sensor) bo'lishga harakat qildim, lekin oxirigacha faqat Nanoni master qilib belgilash va 2 Arduino o'rtasida GPIO ulanishidan foydalanish "token so'rash" mumkin..
2D yo'nalish uchun BNO055 haqida
Men 3 xil ish rejimiga e'tibor qaratishim mumkin: robot ishlamay qolganda NDOF (giroskop, akselerometr va kompaslarni birlashtirish), robot harakatlanayotganda IMU (giroskop, akselerometrni birlashtirish) va lokalizatsiya bosqichida kompas. Ushbu rejimlar o'rtasida almashish oson va tez.
Kod hajmini kamaytirish va to'qnashuvni aniqlash uchun BNO055 uzilishidan foydalanish imkoniyatini saqlab qolish uchun men Adafruit kutubxonasidan foydalanmaslikni va buni o'zim qilishni afzal ko'raman.
Tavsiya:
Vaqt o'lchovi (lenta o'lchov soati): 5 qadam (rasmlar bilan)
Vaqt o'lchovi (lenta o'lchov soati): Ushbu loyiha uchun biz (Aleks Fiel va Anna Lynton) har kungi o'lchash asbobini olib, uni soatga aylantirdik! Dastlabki reja mavjud tasma o'lchovini motorli qilish edi. Shunday qilib, biz o'z qobig'imizni yaratish osonroq deb qaror qildik
Arduino Milligaussmetr - magnit o'lchov: 4 qadam
Arduino Milligaussmetr - magnit o'lchov: kuchli magnitlarni samolyotga jo'natish mumkinmi? Biz juda ko'p magnitlarni jo'natamiz va magnit materiallarni, ayniqsa samolyotda tashish bo'yicha ma'lum qoidalar mavjud. Ushbu maqolada biz qanday qilib havo tashish uchun o'zingizning milliygaussmetringizni yasashingiz mumkinligini ko'rib chiqamiz
Budilnik bilan DIY aqlli o'lchov (Wi-Fi, ESP8266, Arduino IDE va Adafruit.io bilan): 10 qadam (rasmlar bilan)
Budilnik bilan DIY aqlli o'lchov (Wi-Fi, ESP8266, Arduino IDE va Adafruit.io bilan): Oldingi loyihamda men Wi-Fi bilan aqlli hammom o'lchovini ishlab chiqdim. U foydalanuvchi vaznini o'lchashi, uni mahalliy ko'rsatishi va bulutga yuborishi mumkin. Bu haqda batafsil ma'lumotni quyidagi havola orqali olishingiz mumkin: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi
ESP32 bilan raqamli o'lchov: 12 qadam
ESP32 yordamida raqamli o'lchov: ESP32 va sensor (yuk xujayrasi deb nomlanuvchi) yordamida raqamli o'lchovni o'rnatish haqida o'ylab ko'rganmisiz? Bugun men sizga buni qanday amalga oshirishni ko'rsataman, bu boshqa laboratoriya sinovlarini o'tkazishga imkon beradi, masalan, dvigatelning kuchini aniqlash
Measurino: o'lchov g'ildiragining kontseptsiyasi: 9 qadam
Measurino: o'lchov g'ildiragining kontseptsiyasini isbotlash: Measurino g'ildirakning aylanish sonini hisoblab chiqadi va bosib o'tgan masofa g'ildirakning radiusiga to'g'ridan -to'g'ri proportsionaldir. Bu odometrning asosiy printsipi va men bu loyihani asosan qanday saqlashni o'rganish uchun boshladim