Mundarija:
- 1 -qadam: Qo'llab -quvvatlaydigan sxemani qo'shing (MCP3008)
- 2 -qadam: IQ sensorlarini o'rnatish
- 3 -qadam: Sinov vaqti
- 4 -qadam: Virtual sensor - AmpSensor
- 5 -qadam: Navigatsiya
- 6 -qadam: Yakuniy fikrlar, keyingi bosqich …
Video: Uolles avtonom roboti - 4 -qism - IQ masofasi va "Amp" datchiklarini qo'shing: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Salom, bugun biz Uollesning imkoniyatlarini yaxshilashning navbatdagi bosqichini boshlaymiz. Xususan, biz infraqizil masofali sensorlar yordamida to'siqlarni aniqlash va oldini olish qobiliyatini yaxshilashga harakat qilmoqdamiz, shuningdek, Roboclaw motor-boshqaruvchisining tokni kuzatish va uni virtual (dasturiy) "sensor" ga aylantirish qobiliyatidan foydalanmoqdamiz. Nihoyat, biz SLAMsiz (bir vaqtning o'zida joylashuv va xaritalash) qanday harakatlanishini ko'rib chiqamiz (hozircha), chunki robotda hozircha IMU (inertiya o'lchov birligi) yoki ToF (parvoz vaqti) datchiklari yo'q.
Navigatsiya orqali dastlab ikkita asosiy maqsad bo'ladi:
- to'siqlardan qoching
- qachondir biror joyga yopishib qolganini va hech qanday taraqqiyotga erisha olmayotganini tan ol. ("taraqqiyot" ma'nosini anglatadigan masofani oldinga siljishini bildiradi)
- mumkin bo'lgan uchinchi maqsad - bu devorga to'g'ri tekislash.
Bu loyiha robot to'plami va klaviatura va ssh aloqasi yordamida ishlashning asosiy harakatlarini olishdan boshlandi.
Ikkinchi bosqich ko'plab sensorlarni qo'shishga tayyorgarlik ko'rish uchun etarlicha qo'llab -quvvatlovchi sxemalarni qo'shish edi.
Oldingi yo'riqnomada biz bir nechta HCSR04 akustik sensorlarini qo'shdik va robot endi kvartira bo'ylab harakatlanayotganda to'siqlardan qochishi mumkin.
Bu oshxonada va koridorda yaxshi, tekis tekis yuzalar bilan yaxshi bo'lsa -da, ovqat xonasiga yaqinlashganda butunlay ko'r bo'ladi. Bu stol va stul oyoqlarini "ko'ra olmaydi".
Oddiy dvigatel oqimlarini kuzatib borish bitta yaxshilanish bo'lishi mumkin va agar qiymatlar sakrab chiqsa, robot biror narsaga urilgan bo'lishi kerak. Bu yaxshi "B" rejasi yoki hatto C. Lekin bu unga ovqatlanish joyi bo'ylab harakatlanishiga yordam bermaydi.
(Yangilash: hozircha, hozirgi kuzatuv-bu orqaga qaytishda A rejasi, chunki men vaqtincha olib tashladim va datchiklar orqa tomondan).
Ushbu bo'lim uchun video to'siqlardan qochish sensorlarining oxirgi bosqichidir.
Videoda ko'rib turganingizdek, oltita old HCSR04 akustik sensori va ikkita Sharp IR sensori. IQ sensorlar videoda unchalik katta rol o'ynamadi. Ularning kuchi, asosan, robot stol va stul oyoqlariga qaragan ovqatlanish joyida.
Sensorlardan tashqari, hozirgi monitor, ayniqsa, teskari burilish paytida, agar biror narsaga tushib qolsa, o'ynadi.
Nihoyat, u oxirgi 100 ta harakat tarixidan va bir savolga javob berish uchun ba'zi asosiy tahlillardan foydalanadi:
"Yaqinda oldinga siljish bormi (yoki u takrorlanadigan raqsga tushib qolganmi)?"
Shunday qilib, videoda siz oldinga-orqaga qaytish takrorlanganini ko'rsangiz, u aylanadi, demak u oldinga-teskari naqshni tanigan, shuning uchun boshqa narsani sinab ko'radi.
Dasturiy ta'minotning ushbu versiyasining yagona dasturlashtirilgan maqsadi oldinga siljish va to'siqlardan qochishga harakat qilish edi.
1 -qadam: Qo'llab -quvvatlaydigan sxemani qo'shing (MCP3008)
IQ sensorlarini qo'shishdan oldin, ular bilan Raspberry Pi o'rtasidagi interfeys sxemasi kerak bo'ladi.
Biz analog-raqamli MCP3008 konvertorini qo'shamiz. Bu chipni Raspberry Pi -ga qanday ulash mumkinligi haqida ko'plab onlayn manbalar mavjud, shuning uchun men bu erda ko'p gapirmayman.
Umuman olganda, bizda tanlov bor. Agar IQ sensorlarining versiyasi 3V da ishlasa, MCP3008 ham shunday bo'lishi mumkin va biz to'g'ridan -to'g'ri Raspberry -ga ulanishimiz mumkin.
[3V IQ sensori] - [MCP3008] - [Raspberrry Pi]
Ammo menimcha, men asosan 5V ishlayapman, shuning uchun bu ikki tomonlama darajali siljishni bildiradi.
[5V IR sensori]-[MCP3008]-[5V dan 3V gacha ikki tomonlama avtobus]-[Raspberry Pi]
Eslatma: IQ sensoridan faqat bitta signal chiqishi bor. U to'g'ridan -to'g'ri MCP3008 kirish analog signal liniyalaridan biriga o'tadi. MCP3008-dan Raspberry Pi-ga 4 ta ma'lumotlar liniyasi (ikki tomonlama avtobus orqali) ulanishi kerak.
Hozirgi vaqtda bizning robotimiz ikkita IQ sensori yordamida ishlaydi, lekin biz osonlikcha boshqasini qo'sha olamiz. MCP3008 sakkizta analog kirish kanallari.
2 -qadam: IQ sensorlarini o'rnatish
Sharp turli xil IQ sensorlarini ishlab chiqaradi va ularning diapazoni va qamrovi har xil. Men tasodifan GP2Y0A60SZLF modeliga buyurtma berganman. Siz tanlagan model sensorning joylashishi va yo'nalishiga ta'sir qiladi. Afsuski, men aniq sensorlar olishini aniq o'rganmaganman. Bu "ular taklif qilayotgan manbalardan qaysi birini obro'li manbadan qulay vaqtda va narxda olishim mumkin" degan qaror edi.
(Yangilash: Ammo bu muhim emas, chunki bu sensor ichki yorug'lik bilan chalkashib ketganga o'xshaydi. Men bu masalani haligacha o'rganyapman)
Bu sensorlarni robotga o'rnatishning kamida uchta usuli bor.
- Ularni oldinga, bir -biridan biroz uzoqroqqa qaragan holda joylashtiring.
- Ularni servoga joylashtiring, old tomonda, bir -biridan biroz uzoqda.
- Ularni oldinga, lekin chapga va o'ngga eng chekka burchakda, bir -biriga qarama -qarshi burchak ostida joylashtiring.
№1 tanlovni №3 tanlov bilan solishtirganda, menimcha, #3 to'qnashuv maydonini ko'proq qamrab oladi. Agar siz rasmlarga nazar tashlasangiz, 3 -sonli tanlov nafaqat sensorli maydonlar bir -birining ustiga chiqib ketishi uchun, balki ular robotning markaziy va tashqi kengligidan tashqarida ham bo'lishi mumkin.
1 -sonli tanlov bilan, sensorlar bir -biridan qanchalik uzoq bo'lsa, markazda ko'r nuqta shunchalik ko'p bo'ladi.
Biz 2 -sonni qilishimiz mumkin edi (men imkoniyat sifatida servo bilan bir nechta rasmlarni qo'shdim) va ularni supurib tashlashga majbur qildik va bu eng ko'p maydonni qamrab olishi mumkin. Biroq, men kamida ikkita sababga ko'ra, servodan foydalanishni iloji boricha kechiktirmoqchiman:
- Biz Raspberry Pi -da PWM aloqa kanallaridan birini ishlatamiz. (Buni yaxshilash mumkin, lekin baribir …)
- Servo bilan hozirgi durang muhim bo'lishi mumkin
- Bu qo'shimcha uskunalar va dasturiy ta'minotni qo'shadi
Uchish vaqti (ToF) yoki, ehtimol, kamera kabi muhim sensorlarni qo'shganda, servo variantini keyinroq qoldirmoqchiman.
Boshqa tanlovda mavjud bo'lmagan #2 tanlovining yana bir mumkin bo'lgan afzalligi bor. Yorug'likka qarab, bu IR sensorlari chalkashib ketishi mumkin. Ehtimol, robot yaqinda joylashgan ob'ektni o'qiy oladi, lekin aslida yaqin ob'ekt yo'q. 3 -sonli tanlovda, ularning maydonlari bir -birining ustiga chiqishi mumkinligi sababli, ikkala sensor ham bir xil ob'ektni (har xil burchakdan) ro'yxatdan o'tkazishi mumkin.
Shunday qilib, biz 3 -sonli joylashuv tanloviga o'tamiz.
3 -qadam: Sinov vaqti
Biz Raspberry Pi, MCP3008 ADC va Sharp IR sensorlar o'rtasidagi barcha aloqalarni o'rnatganimizdan so'ng, sinov vaqti keldi. Tizim yangi sensorlar bilan ishlayotganiga ishonch hosil qilish uchun oddiy sinov.
Oldingi ko'rsatmalarda bo'lgani kabi, iloji boricha wiringPi C kutubxonasidan foydalanaman. Ishlarni osonlashtiradi. WiringPi veb -saytini ko'rib chiqishda aniq bo'lmagan narsa shundaki, MCP3004/3008 to'g'ridan -to'g'ri qo'llab -quvvatlanadi.
Hatto ularsiz ham, siz SPI kengaytmasidan foydalanishingiz mumkin. Lekin kerak emas. Agar siz Gordonning wiringPi uchun git omboriga diqqat bilan qarasangiz, siz ulardan biri MCP3004/3008 uchun mos keladigan chiplar ro'yxatini topasiz.
Men kodni fayl sifatida biriktirishga qaror qildim, chunki bu sahifada to'g'ri ko'rsatilmagan.
4 -qadam: Virtual sensor - AmpSensor
Robotni tashqi dunyo haqida ma'lumot olishning qanchalik xilma -xil usullari bo'lsa, shuncha yaxshi bo'ladi.
Robotda hozirda sakkizta HCSR04 akustik sonar sensorlar mavjud (ular bu yo'riqnomaning diqqat markazida emas) va hozirda ikkita Sharp IR masofali sensorlar mavjud. Yuqorida aytib o'tilganidek, biz boshqa narsadan foydalanishimiz mumkin: Roboklavning motorli oqimlarni sezish xususiyati.
Biz motor nazoratchisiga qo'ng'iroqni C ++ sinfiga yig'ib, uni AmpSensor deb atashimiz mumkin.
Dasturiy ta'minotga ba'zi "aqlli" ni qo'shib, biz tekis harakat paytida (oldinga, orqaga), shuningdek aylanish harakatlarini (chap, o'ng) kuzatib, sozlashimiz mumkin. Bu kuchaytirgich diapazonini bilganimizdan so'ng, biz tanqidiy qiymatni tanlashimiz mumkin, shuning uchun agar AmpSensor dvigatelni nazorat qilish moslamasidan bu qiymatdan oshib ketsa, biz bilamizki, dvigatellar to'xtab qolgan bo'lishi mumkin va bu odatda robotning urilganligini ko'rsatadi. biror narsaga.
Agar biz dasturiy ta'minotga biroz moslashuvchanlikni qo'shsak (ish paytida buyruq qatori va / yoki klaviatura kiritish), biz tajriba davomida robotning harakatlanishiga va ob'ektlarga urilishiga yo'l qo'yib, "tanqidiy amper" chegarasini oshirishimiz / kamaytirishimiz mumkin, ham to'g'ri, ham aylanayotganda.
Dasturiy ta'minotning navigatsion qismi harakat yo'nalishini bilgani uchun, biz bu ma'lumotlarning barchasidan foydalanib, harakatni to'xtatishimiz va boshqa narsani sinab ko'rishdan oldin qisqa vaqt ichida harakatni teskari o'zgartirishga harakat qilishimiz mumkin.
5 -qadam: Navigatsiya
Hozirgi vaqtda robot real dunyodagi fikr-mulohazalar bilan cheklangan. To'siqlardan qochish uchun bir nechta yaqin masofali sensorlar mavjud va masofa sensorlar to'siqni o'tkazib yuborgan taqdirda, oqimni tortib olishning kuzatish texnikasi mavjud.
Unda kodlovchi dvigatellar va IMU (inertial-o'lchov birligi) yo'q, shuning uchun u haqiqatan ham harakatlanadimi yoki aylanadimi va qancha ekanligini bilishni qiyinlashtiradi.
Hozirda robotda joylashgan sensorlar yordamida masofani ko'rsatsa bo'ladi, ularning ko'rish doirasi keng va oldindan aytib bo'lmaydi. Akustik sonar orqaga to'g'ri aks etmasligi mumkin; infraqizilni boshqa yorug'lik yoki hatto bir nechta aks ettiruvchi yuzalar bilan chalkashtirib yuborish mumkin. Ishonchim komilki, robotning harakatlanayotganligini, qancha va qaysi yo'nalishda harakat qilayotganini bilish uchun masofadagi o'zgarishlarni kuzatib borish qiyin emas.
Men qasddan Arduino kabi mikro-boshqaruvchini ishlatmaslikni tanladim, chunki a) menga psuedo-C ++ muhiti yoqmaydi, b) va juda ko'p rivojlanish o'qish-yozish xotirasini eskiradi (?) Va men ishlab chiqish uchun asosiy kompyuter kerak bo'ladi (?). Yoki men Raspberry Pi kabi bo'lgandirman.
Biroq, Raspbian bilan ishlaydigan Pi-bu real vaqt rejimida ishlaydigan operatsion tizim emas, shuning uchun sensorlar turg'unligi va operatsion tizim har safar aniq o'qilmasa, men bu sensorlarning maqsadi to'siqlardan qochish uchun yaxshiroq bo'lganini his qildim. haqiqiy masofani o'lchash.
Bu yondashuv murakkabroq va unchalik foyda keltirmaydigan bo'lib tuyuldi, qachonki biz shu maqsadda (SLAM) yaxshiroq ToF (uchish vaqti) sensorlarini (keyinroq) ishlata olsak.
Biz foydalanishimiz mumkin bo'lgan yondashuvlardan biri, so'nggi X soniya yoki buyruqlar ichida qanday harakat-buyruqlar berilganligini kuzatib borishdir.
Misol tariqasida, robot diagonal burchakka qaragan. Datchiklarning bir qismi unga bir devorga juda yaqin ekanligini bildiradi, shuning uchun u aylanadi, lekin keyin boshqa sensorlar unga boshqa devorga juda yaqin ekanligini aytadi. Bu faqat yonma-yon naqshni takrorlash bilan tugaydi.
Yuqoridagi misol faqat bitta oddiy holat. Aqlli narsalarni qo'shish, takrorlangan naqshni yangi darajaga ko'tarishi mumkin, lekin robot burchakda qolib ketadi.
Masalan, oldinga va orqaga burilish o'rniga, u bir tomonga buriladi, bir lahzalik teskari aylanadi (keyin tanqidiy masofani ko'rsatadi), va u boshqa tomonga burilsa ham, u hali ham biron burchak bilan oldinga, burchakka buriladi., xuddi shu narsaning murakkabroq naqshini takrorlash.
Bu shuni anglatadiki, biz haqiqatan ham buyruqlar tarixidan foydalanishimiz va bu ma'lumotdan qanday foydalanish va undan foydalanish mumkinligini ko'rib chiqishimiz mumkin.
Men harakat tarixidan foydalanishning ikkita asosiy (oddiy) usulini o'ylay olaman.
- harakatlarning oxirgi X soni uchun ular Y pattternga mos keladimi? Oddiy misol bo'lishi mumkin (va bu sodir bo'lgan) "OLDINGA, OVRATING, OLGA, TERISH, …..". Shunday qilib, TRUE (naqsh topilgan) yoki FALSE (topilmadi) qaytaradigan mos keladigan funktsiya mavjud. Agar TRUE bo'lsa, dasturning navigatsiya qismida boshqa harakatlar ketma-ketligini sinab ko'ring.
- harakatlarning oxirgi X soni uchun umumiy yoki aniq oldinga harakat bormi? Haqiqiy oldinga siljish nima ekanligini qanday aniqlash mumkin? Xo'sh, bitta oson taqqoslash shundaki, oxirgi X harakatlari uchun "FORWARD" "REVERSE" dan ko'ra ko'proq sodir bo'ladi. Lekin bu yagona bo'lishi shart emas. Bunga nima deysiz: "O'ng, o'ng, chap, o'ng". Bunday holda, robot burchakdan chiqib ketish uchun to'g'ri burilish yasashi kerak yoki devorga burchak bilan yaqinlashgani uchun bu haqiqiy oldinga siljish deb hisoblanishi mumkin. Boshqa tomondan, "ChAP, O'ng, Chap, O'ng …" haqiqiy oldinga siljish deb hisoblanmasligi mumkin. Shunday qilib, agar "O'ng" "LEFT" dan ko'proq bo'lsa yoki "LEFT" "RIGHT" dan ko'proq sodir bo'lsa, demak bu haqiqiy taraqqiyot bo'lishi mumkin.
Bu ko'rsatma boshida men aytgan edimki, 3 -maqsad - bu kvadrat yoki devorga hizalanish bo'lishi mumkin. Biroq, buning uchun bizga "biz biror narsaga yaqinmiz" deganidan ko'proq narsa kerak. Masalan, agar biz oldinga qaragan ikkita akustik sensorni (bu maqolada emas) olsak, masofaga nisbatan yaxshi, barqaror javob bera olamiz, agar biri boshqasidan ancha farq qilsa, robot devorga yaqinlashgan. burchak ostida va bu qadriyatlar bir -biriga yaqinlashadimi yoki yo'qmi (devorga to'rtburchaklar bilan qaragan holda), manevr qilishga urinishi mumkin.
6 -qadam: Yakuniy fikrlar, keyingi bosqich …
Umid qilamanki, bu ko'rsatma ba'zi fikrlarni berdi.
Ko'proq sensorlarni qo'shish bir qator afzallik va qiyinchiliklarni keltirib chiqaradi.
Yuqoridagi holatda, barcha akustik sensorlar bir-biri bilan yaxshi ishlagan va bu dasturiy ta'minot bilan juda to'g'ri.
IQ sensorlari aralashmaga kiritilgach, bu biroz qiyinlashdi. Buning sababi shundaki, ularning ba'zi ko'rish sohalari akustik sensorlar bilan bir -biriga o'xshashdir. Yorug'lik nurlari sensori atrof-muhit sharoitining o'zgarishi bilan biroz sezgir va oldindan aytib bo'lmaydigan bo'lib tuyuldi, albatta, akustik sensorlarga yorug'lik ta'sir qilmaydi.
Shunday qilib, agar akustik sensor hech qanday to'siq yo'qligini aytsa, nima qilish kerak edi, lekin IQ sensori.
Hozircha, sinov va xatolikdan so'ng, narsalar birinchi o'ringa chiqdi:
- kuchaytirgich
- IQ sezgich
- akustik sezgich
Va men qilgan ishim faqat IQ sensorlarining sezgirligini pasaytirish edi, shuning uchun ular faqat juda yaqin narsalarni (masalan, stul oyoqlari) aniqlaydilar.
Hozircha ko'p tarmoqli yoki uzilishga asoslangan dasturiy ta'minotni bajarishga hojat yo'q edi, lekin men vaqti-vaqti bilan Raspberry Pi va Roboclaw motor-kontrollerlari o'rtasida boshqaruvni yo'qotishga (ketma-ket aloqani uzish) duch kelaman.
Bu erda odatda E-Stop sxemasi (oldingi ko'rsatmalarni ko'ring) ishlatiladi. Biroq, men hozircha Roboklavni ishlab chiqish vaqtida qayta tiklashni xohlamaganligim uchun va robot bu qadar tez ketmaydi va men uni kuzatib, o'chirish uchun hozirman. elektron to'xtash joyini uladi.
Oxir-oqibat, ko'p tarmoqli kerak bo'ladi.
Keyingi qadamlar…
Shu paytgacha etib kelganingiz uchun tashakkur.
Men VL53L1X IR lazerli toF (uchish vaqti) datchiklarini oldim, shuning uchun bu servo bilan birgalikda keyingi ko'rsatma mavzusi.
Tavsiya:
Uolles Animatronik musofir maxluq: 9 qadam (rasmlar bilan)
Uolles Animatronik musofir maxluq: Xush kelibsiz! Bugun men sizga Uollesni qanday yaratishni ko'rsataman, animatronik musofir jonivor, Ishni boshlash uchun sizga kerak bo'ladi: x 1 Fur Real Friends it (bu kabi: https://www.ebay.com/p/1903566719)x 5) MG996R Servos x 1 Pololu Maestro 6 kanalli Servo nazorati
SKARA- Avtonom Plus suzish havzasini qo'lda tozalash roboti: 17 qadam (rasmlar bilan)
SKARA- Avtonom Plus suzish havzasini qo'lda tozalash roboti: Vaqt puldir va qo'l mehnati qimmat. Avtomatlashtirish texnologiyalarining paydo bo'lishi va rivojlanishi bilan, uy -joy mulkdorlari, jamiyatlar va klublar uchun hovuzlarni kundalik hayotning axlati va axloqsizliklaridan tozalash uchun muammosiz echim ishlab chiqish kerak
Odamlar masofasi: 8 qadam
Odamlar masofasi: Bu buyuk Instructables loyihasining oddiy o'zgarishi: https://www.instructables.com/id/Arduino-Distance-Detector-with-a-Buzzer-and-LEDs/https://www. ko'rsatmalar
Arduino robotining masofasi, yo'nalishi va aylanish darajasi (Sharq, G'arb, Shimoliy, Janub) Bluetooth moduli va avtonom robot harakati yordamida ovoz bilan boshqariladi.: 6 qadam
Arduino roboti masofa, yo'nalish va aylanish darajasiga ega (Sharq, G'arb, Shimoliy, Janub) Bluetooth moduli va avtonom robot harakati yordamida ovoz bilan boshqariladi: Bu ko'rsatma Arduino robotini kerakli yo'nalishda qanday harakatlantirish mumkinligini tushuntiradi. , Chap, O'ng, Sharq, G'arb, Shimoliy, Janub) ovozli buyruq yordamida santimetrda masofani talab qiladi. Robotni avtonom tarzda ham ko'chirish mumkin
Ko'p maqsadli yorug'lik masofasi sensori: 5 qadam
Ko'p maqsadli yorug'lik masofasi sensori: bu yorug'lik masofasi sensori kabi ajoyib ijoddan foydalanishning bir qancha usullari mavjud! Men buni yaratishga qaror qilganimning sababi, 6-sinf o'quvchilari bilan maktabdan keyingi kodlash darsim edi. Talabalar Sphero Ollies bilan ishlaydilar va qanday qilib