Mundarija:

LEGO EV3 labirintli haydovchi robotidagi AI: 13 qadam
LEGO EV3 labirintli haydovchi robotidagi AI: 13 qadam

Video: LEGO EV3 labirintli haydovchi robotidagi AI: 13 qadam

Video: LEGO EV3 labirintli haydovchi robotidagi AI: 13 qadam
Video: Робототехника. Робот Lego Mindstorms EV3 проходит лабиринт 2024, Iyul
Anonim
Image
Image
Labirint qanday hal qilinadi
Labirint qanday hal qilinadi

Bu sun'iy intellektga ega oddiy avtonom robot. U labirintni kashf qilish uchun va kirish joyiga qo'yilganda, chiqish yo'lidan o'tib, o'liklardan qochish uchun mo'ljallangan. Bu mening oldingi loyihamga qaraganda ancha murakkabroq bo'lib, u shunchaki labirintni bosib o'tdi. Bu erda robot o'zi bosib o'tgan yo'lni eslab qolishi, o'liklarni olib tashlashi, yangi yo'lni saqlashi va keyin yangi yo'lni bosib o'tishi kerak.

Mening oldingi robotim bu erda tasvirlangan:

Robot LEGO Mindstorms EV3 yordamida yaratilgan. EV3 dasturiy ta'minoti kompyuterda ishlaydi va dastur ishlab chiqaradi, keyinchalik u EV3 Brick nomli mikrokontrollerga yuklanadi. Dasturlash usuli ikonkalarga asoslangan va yuqori darajada. Bu juda ko'p qirrali va oson.

Ta'minotlar

QISMLAR

  1. LEGO Mindstorms EV3 to'plami
  2. LEGO Mindstorms EV3 ultratovush sensori. U EV3 to'plamiga kiritilmagan.
  3. Labirint uchun gofrokarton. Ikkita karton etarli bo'lishi kerak.
  4. Kichkina ingichka karton, ba'zi burchaklar va devorlarni barqarorlashtirishga yordam beradi.
  5. Karton bo'laklarini bir -biriga ulash uchun elim va lenta.
  6. Labirintdan chiqish joyini aniqlash uchun qizil tabriknomali konvert.

QUROLLAR

  1. Kartonni kesish uchun yordamchi pichoq.
  2. Chelik o'lchagich kesish jarayoniga yordam beradi.

Dasturiy ta'minot

Dastur bu erda:

1 -qadam: Labirint qanday hal qilinadi

HAYVONLI HAYVONLASH USULI

Labirintda harakatlanishning bir qancha usullari mavjud. Agar siz ularni o'rganmoqchi bo'lsangiz, ular Vikipediyaning quyidagi maqolasida juda yaxshi tasvirlangan:

Men chap tomondagi devorni ta'qib qilish usulini tanladim. Gap shundaki, robot labirint paytida quyidagi qarorlarni qabul qilib, devorni chap tomonida ushlab turadi:

  1. Agar chapga burilish mumkin bo'lsa, buni qiling.
  2. Aks holda, iloji bo'lsa, to'g'ridan -to'g'ri boring.
  3. Agar u chapga yoki to'g'ri keta olmasa, iloji bo'lsa, o'ngga buriling.
  4. Agar yuqorida aytilganlarning hech biri imkonsiz bo'lsa, bu o'lik nuqta bo'lishi kerak. Ortga burilmoq.

Bir ogohlantirish shundaki, agar labirintda pastadir bo'lsa, bu usul muvaffaqiyatsiz bo'lishi mumkin. Loopning joylashishiga qarab, robot pastadir atrofida aylanib yurishi mumkin edi. Bu muammoning mumkin bo'lgan echimi, agar u aylanada ketayotganini anglab etsa, robot o'ng devorni kuzatuvchi qoidasiga o'tadi. Men bu takomillashtirishni o'z loyihamga kiritmaganman.

To'g'ridan -to'g'ri yo'lni topish uchun mo''jizani hal qilish

Labirint bo'ylab harakatlanayotganda, robot o'z yo'lini eslab qolishi va o'liklarni yo'q qilishi kerak. U buni har bir burilish va kesishishni massivda saqlash, burilishlar va kesishmalarning o'ziga xos kombinatsiyasini tekshirish va o'lik tugashni o'z ichiga olgan kombinatsiyalarni almashtirish orqali amalga oshiradi. Burilishlar va chorrahalarning yakuniy ro'yxati - labirint orqali o'tadigan to'g'ridan -to'g'ri yo'l.

Mumkin bo'lgan burilishlar: chapga, o'ngga, orqaga (o'lik nuqtada) va to'g'ri (bu kesishma).

Kombinatsiyalar quyidagicha almashtiriladi:

  • "Chapga, orqaga, chapga" "to'g'ri" ga aylanadi.
  • "Chap, Orqaga, O'ng" "Orqaga" aylanadi.
  • "Chapga, orqaga, to'g'ri" "o'ng" ga aylanadi.
  • "O'ngga, orqaga, chapga" "Orqaga" aylanadi.
  • "To'g'ri, orqaga, chapga" "o'ng" ga aylanadi.
  • "To'g'ri, Orqaga, To'g'ri" "Orqaga" aylanadi.

ROBOT MENING MAZIRIMNI QANDAY QILADI

  1. Robot haydashni boshlaganda, u o'ngdagi bo'sh joyni ko'radi va qatorni to'g'ri ro'yxatda saqlaydi.
  2. Keyin u chapga buriladi va chapga ro'yxatga qo'shiladi. Endi ro'yxatda quyidagilar mavjud: To'g'ri, Chap.
  3. Tiqilib qolganda, u orqaga burilib, ro'yxatga Orqaga qo'shiladi. Ro'yxat endi o'z ichiga oladi: to'g'ri, chapga, orqaga.
  4. Kirish joyidan ishlatilgan chiziqdan o'tib, u ro'yxatga Straight qo'shadi. Endi ro'yxatda quyidagilar mavjud: To'g'ri, Chap, Orqa, To'g'ri. U kombinatsiyani taniydi va chapga, orqaga, to'g'ri o'ngga o'zgartiradi. Endi ro'yxatda to'g'ri, o'ng bor.
  5. Tiqilib qolganda, u orqaga o'girilib, ro'yxatga Orqaga qo'shiladi. Endi ro'yxatda quyidagilar mavjud: to'g'ri, o'ng, orqaga.
  6. Chapga burilgandan so'ng, ro'yxat to'g'ri, o'ng, orqaga, chapga ega. U kombinatsiyani taniydi va o'ngga, orqaga, chapdan orqaga o'zgartiradi. Ro'yxatda endi Straight, Back bor.
  7. Keyingi chap burilishdan so'ng, ro'yxatda to'g'ri, orqaga, chapga. Bu kombinatsiyani o'ngga o'zgartiradi. Endi ro'yxat faqat o'ngni o'z ichiga oladi.
  8. U bo'sh joydan o'tadi va ro'yxatga Straight qo'shadi. Endi ro'yxatda o'ng, to'g'ri.
  9. O'ngga burilgandan so'ng, ro'yxatda o'ng yo'l, to'g'ri, to'g'ri bor.

2 -qadam: Robotni dasturlashda e'tiborga olish

QANDAY MIKROKONTROLLARNI QO'YLASH

Robot burilishga qaror qilganda, u keng burilish yasashi kerak, yoki burilishdan oldin qisqa masofani oldinga siljitish kerak va burilishdan keyin sensorni tekshirmasdan yana qisqa masofani bosib o'tish kerak. Birinchi qisqa masofaning sababi shundaki, robot burilishdan keyin devorga urilmasligi kerak, ikkinchi qisqa masofaning sababi shundaki, robot burilgandan keyin sensor yaqinda kelgan uzoq bo'shliqni ko'radi. va robot qaytishi kerak deb o'ylardi, bu to'g'ri emas.

Agar robot o'ngda chorrahani sezsa -yu, lekin bu burilish o'ngga burilmagan bo'lsa, men shuni aniqladimki, robot sensorlarini tekshirmasdan, taxminan 25 dyuym oldinga siljishi kerak.

LEGO MINDSTORMS EV3 XUSUSIY QO'YILGAN

Garchi LEGO Mindstorms EV3 juda ko'p qirrali bo'lsa -da, u bitta g'ishtga ulangan har bir turdagi sensorlardan ko'piga ruxsat bermaydi. Ikki yoki undan ortiq g'ishtni zanjirband qilish mumkin edi, lekin men boshqa g'isht sotib olmoqchi emas edim, shuning uchun men quyidagi sensorlardan foydalandim (uchta ultratovushli sensorlar o'rniga): infraqizil sensor, rang sensori va ultrasonik sensor. Bu yaxshi ishladi.

Ammo rang sensori juda qisqa diapazonga ega, taxminan 5 dyuym (5 sm), bu quyida tavsiflangan bir nechta maxsus fikrlarga olib keladi:

  1. Rang sensori oldidagi devorni aniqlaganida va robot o'ngga burilishga yoki burilishga qaror qilganida, devorga tegmasdan burilish uchun etarli joy ajratish uchun u avval zaxiralashi kerak.
  2. Ba'zi "to'g'ri" kesishmalarda murakkab muammo yuzaga keladi. Rang sensori qisqa diapazoni tufayli robot to'g'ri "to'g'ri" kesishishni sezadimi yoki o'ngga burilishni aniqlay olmaydi. Men har safar robot buni sezganda ro'yxatda "Straight" ni saqlash dasturini o'rnatib, keyin ro'yxatda ketma -ket bir nechta "Straight" ni yo'q qilib, bu muammoni hal qilishga harakat qildim. Bu o'ng burilish labirintdagi "To'g'ri" dan keyin sodir bo'ladigan vaziyatni to'g'rilaydi, lekin undan oldin "To'g'ri" bo'lmagan o'ng burilish bo'lgan vaziyatni emas. Men, shuningdek, "O'ng" dan oldin bo'lsa, "To'g'ridan -to'g'ri" ni yo'q qilish uchun dastur o'rnatishga harakat qildim, lekin o'ng burilish "To'g'ri" dan keyin bo'lsa, bu ishlamaydi. Men hamma holatlarga mos keladigan yechim topa olmadim, lekin menimcha, robot bosib o'tgan masofani ko'rib chiqishi mumkin (dvigatelning aylanish sensorlarini o'qib) va bu "to'g'ri" yoki to'g'rimi? burilish Men bu loyihada sun'iy intellekt kontseptsiyasini namoyish etish uchun bu murakkablikni qilish kerak deb o'ylamagan edim.
  3. Rang sezgichining afzalligi shundaki, u devorning jigarrang va men chiqishda ishlatgan to'siqning qizil rangini ajratib turadi va robotga labirintni qachon tugatganini aniqlashning oson yo'lini beradi.

3 -qadam: Asosiy dastur

Asosiy dastur
Asosiy dastur

LEGO Mindstorms EV3-da ikonalarga asoslangan juda qulay dasturlash usuli mavjud. Bloklar kompyuterda displey ekranining pastki qismida ko'rsatiladi va dasturni yaratish uchun uni dasturlash oynasiga sudrab tashlab yuborish mumkin. EV3 Brick kompyuterga USB kabeli, Wi-Fi yoki Bluetooth orqali ulanishi mumkin va dasturni kompyuterdan Brick-ga yuklab olish mumkin.

Dastur asosiy dasturdan va bir nechta "Mening bloklarim" dan iborat bo'lib, ular kichik dasturlardan iborat. Yuklangan faylda butun dastur mavjud:

Asosiy dasturning bosqichlari quyidagicha:

  1. Burilish sanash o'zgaruvchisi va qatorini aniqlang va ishga tushiring.
  2. 5 soniya kuting va "Bor" deb ayting.
  3. Loopni boshlang.
  4. Labirint orqali haydang. Chiqishga erishilganda, loop chiqib ketadi.
  5. G'isht ekranida, hozirgacha labirintda topilgan kesishmalar.
  6. Yo'lni qisqartirish kerakligini tekshiring.
  7. Qisqartirilgan yo'lda kesishmalarni ko'rsatish.
  8. 4 -bosqichga qayting.
  9. Loopdan keyin to'g'ridan -to'g'ri yo'lni harakatlantiring.

Ekran tasviri bu asosiy dasturni ko'rsatadi.

4 -qadam: Mening bloklarim (kichik dasturlar)

Mening bloklarim (kichik dasturlar)
Mening bloklarim (kichik dasturlar)

Robotning labirint orqali qanday haydashini boshqaruvchi Navigate My Block ko'rsatiladi. Bosma juda kichik va o'qilmasligi mumkin. Ammo bu if-iboralar (LEGO EV3 tizimidagi kalitlar deb nomlanadi) qanchalik ko'p qirrali va kuchli ekanligining yaxshi namunasidir.

  1. 1 -sonli o'q infraqizil sensorning ma'lum masofadan uzoqroq ob'ektni ko'rishini tekshiradigan kalitni ko'rsatadi. Agar shunday bo'lsa, bloklarning yuqori seriyasi bajariladi. Agar shunday bo'lmasa, u holda nazorat 2 -sonli strelka joylashgan katta, pastki bloklarga o'tkaziladi.
  2. 2 -sonli o'q, rang sensori qanday rang ko'rishini tekshiradigan kalitni ko'rsatadi. 3 ta holat bor: tepada rang yo'q, o'rtada qizil, pastda jigarrang.
  3. 3 -sonli ikkita strelkalar ultratovush sensori ma'lum masofadan uzoqroqda ob'ektni ko'rishini tekshiradigan kalitlarga ishora qiladi. Agar shunday bo'lsa, bloklarning yuqori seriyasi bajariladi. Aks holda, boshqaruv bloklarning pastki qatoriga o'tkaziladi.

Yo'lni qisqartirish va to'g'ridan -to'g'ri yurish uchun "Mening bloklarim" ancha murakkab va umuman o'qib bo'lmaydigan bo'lib qoladi, shuning uchun ular ushbu hujjatga kiritilmagan.

5 -qadam: Robotni qurishni boshlash: baza

Robotni qurishni boshlash: baza
Robotni qurishni boshlash: baza
Robotni qurishni boshlash: baza
Robotni qurishni boshlash: baza

Yuqorida aytib o'tganimizdek, LEGO Mindstorms EV3 bitta g'ishtga ulangan har bir turdagi sensorlardan ko'piga ruxsat bermaydi. Men quyidagi sensorlardan foydalandim (uchta ultratovushli sensorlar o'rniga): infraqizil sensor, rang sensori va ultrasonik sensor.

Quyidagi fotosuratlar juftligi robotni qanday yasashni ko'rsatadi. Har bir juftlikning birinchi fotosurati kerakli qismlarni, ikkinchisida esa bir -biriga bog'langan qismlarni ko'rsatadi.

Birinchi qadam, ko'rsatilgan qismlardan foydalanib, robotning asosini qurishdir. Robot bazasi tepaga qaragan holda ko'rsatilgan. Robotning orqa qismidagi L shaklidagi kichik qism-orqa tarafdagi tayanch. Robot harakatlanayotganda u siljiydi. Bu yaxshi ishlaydi. EV3 to'plamida rulonli to'p turi yo'q.

6 -qadam: bazaning yuqori qismi, 1

Baza tepasi, 1
Baza tepasi, 1
Baza tepasi, 1
Baza tepasi, 1

Bu qadam va keyingi 2 qadam robot tagining yuqori qismiga, rang sensori va kabellarga tegishli bo'lib, ularning hammasi 10 dyuymli (26 sm) kabellardir.

7 -qadam: Baza tepasi, 2

Baza tepasi, 2
Baza tepasi, 2
Baza tepasi, 2
Baza tepasi, 2

8 -qadam: Baza tepasi, 3

Baza tepasi, 3
Baza tepasi, 3
Baza tepasi, 3
Baza tepasi, 3

9 -qadam: Infraqizil va ultratovushli sensorlar

Ultrasonik va infraqizil sensorlar
Ultrasonik va infraqizil sensorlar
Ultrasonik va infraqizil sensorlar
Ultrasonik va infraqizil sensorlar

Keyin infraqizil sensor (robotning chap tomonida) va ultratovush sensori (o'ngda). Bundan tashqari, g'ishtni tepaga ulash uchun 4 ta pin.

Infraqizil va ultratovushli datchiklar oddiy gorizontal o'rniga vertikal holda joylashgan. Bu devorlarning burchaklarini yoki uchlarini yaxshiroq aniqlashni ta'minlaydi.

10 -qadam: kabellar

Kabellar
Kabellar

Kabellar g'ishtga quyidagicha ulanadi:

  • Port B: chap katta dvigatel.
  • Port C: o'ng katta dvigatel.
  • Port 2: ultratovush sensori.
  • Port 3: rang sensori.
  • Port 4: infraqizil sensor.

11 -qadam: Robot qurishning oxirgi bosqichi: bezatish

Robot qurishning oxirgi bosqichi: bezatish
Robot qurishning oxirgi bosqichi: bezatish
Robot qurishning oxirgi bosqichi: bezatish
Robot qurishning oxirgi bosqichi: bezatish

Qanotlar va qanotlar faqat bezak uchun.

12 -qadam: labirint yarating

Maze yarating
Maze yarating
Maze yarating
Maze yarating

Labirint uchun ikkita gofrokarton karton etarli bo'lishi kerak. Men labirint devorlarini 5 dyuym (12,5 sm) balandlikda qildim, lekin agar sizda gofrokarton etishmasa, 4 dyuym (10 sm) xuddi shunday ishlashi kerak.

Birinchidan, men kartonlarning devorlarini pastdan 10 dyuym (25 sm) kesib oldim. Keyin devorlarni pastdan 5 dyuym bo'ylab kesib tashladim. Bu bir nechta 5 dyuymli devorlarni ta'minlaydi. Bundan tashqari, men mustahkamlik uchun devorlarga 1 dyuymli (2,5 sm) yopishtirib, kartonlarning pastki qismini kesib tashladim.

Har xil bo'laklarni labirint hosil qilish uchun kerak bo'lganda kesish, yopishtirish yoki yopishtirish mumkin. Yon devorlar o'rtasida har qanday yo'lda o'lik bo'lgan 11 yoki 12 dyuymli (30 sm) bo'sh joy bo'lishi kerak. Uzunligi 25 dyuymdan kam bo'lmasligi kerak. Bu masofalar robotning aylanishi uchun kerak.

Labirintning ba'zi burchaklarini mustahkamlash kerak bo'lishi mumkin, shuningdek, tekislangan karton burchagi bo'lsa, ba'zi tekis devorlarni egilmasligi kerak. Yupqa kartonning kichik bo'laklari, ko'rsatilgan joylarning pastki qismiga yopishtirilgan bo'lishi kerak.

Chiqishda qizil to'siq bor, u qizil qizil tabriknoma konvertidan va 2 ta ingichka kartondan yasalgan taglikdan iborat.

13 -qadam: Labirent

Labirent
Labirent

Bir ogohlantirish shundaki, labirint katta bo'lmasligi kerak. Agar robotning burilishlari mos keladigan burilishdan bir oz burchak ostida bo'lsa, bir necha burilishdan keyin farqlar qo'shiladi va robot devorlarga yugurib ketishi mumkin. Men qilgan kichik labirint orqali ham muvaffaqiyatli haydash uchun burilishlarning aylanishi sozlamalari bilan bir necha marta o'ynashim kerak edi.

Bu muammoning echimi robotni chap devordan ma'lum masofada ushlab turadigan yo'lni to'g'rilash tartibini o'z ichiga oladi. Men buni kiritmadim. Dastur avvalgidek murakkab va bu loyihada AI kontseptsiyasini namoyish etish uchun etarli.

Xulosa

Bu qiziqarli loyiha va ajoyib o'rganish tajribasi edi. Umid qilamanki, bu sizga ham qiziqarli bo'ladi.

Tavsiya: