Mündəricat:

LEGO EV3 Maze-Driving Robotdakı AI: 13 addım
LEGO EV3 Maze-Driving Robotdakı AI: 13 addım

Video: LEGO EV3 Maze-Driving Robotdakı AI: 13 addım

Video: LEGO EV3 Maze-Driving Robotdakı AI: 13 addım
Video: AI in LEGO EV3 Maze-Driving Robot 2024, Iyul
Anonim
Image
Image
Bir labirent necə həll olunur
Bir labirent necə həll olunur

Bu, bəzi süni intellektə malik sadə, avtonom bir robotdur. Bir labirent araşdırmaq və girişdə geri yerləşdirildikdə, çıxışı keçmək və çıxılmaz nöqtələrdən qaçmaq üçün nəzərdə tutulmuşdur. Əvvəlki layihəmdən daha mürəkkəbdir, sadəcə labirintdən keçdi. Burada robot getdiyi yolu xatırlamalı, çıxılmaz yerləri çıxarmalı, yeni yolu saxlamalı və sonra yeni yolu izləməlidir.

Əvvəlki robotum burada təsvir edilmişdir:

Robot LEGO Mindstorms EV3 istifadə edərək hazırlanıb. EV3 Proqramı kompüterdə işləyir və bir proqram yaradır, sonra EV3 Brick adlı bir mikro nəzarətçiyə yüklənir. Proqramlaşdırma metodu ikon əsaslı və yüksək səviyyədədir. Çox asan və çox yönlüdür.

Təchizat

PARÇALAR

  1. LEGO Mindstorms EV3 dəsti
  2. LEGO Mindstorms EV3 ultrasəs sensoru. EV3 dəstinə daxil deyil.
  3. Labirent üçün büzməli karton. İki karton kifayət olmalıdır.
  4. Bəzi küncləri və divarları sabitləşdirmək üçün kiçik bir nazik karton parçası.
  5. Karton parçaları bir -birinə bağlamaq üçün yapışqan və bant.
  6. Labirintdən çıxışı müəyyən etmək üçün qırmızı bir təbrik kartı zərfi.

ARAÇLAR

  1. Kartonu kəsmək üçün faydalı bıçaq.
  2. Polad hökmdar kəsmə prosesinə kömək edir.

PROQRAM TƏMİNATI

Proqram burada:

Addım 1: Bir labirent necə həll olunur

MAZİZA SÜRÜCÜ METODU

Bir labirentdə gəzməyin bir neçə yolu var. Onları öyrənmək istəyirsinizsə, aşağıdakı Vikipediya məqaləsində çox yaxşı təsvir edilmişdir:

Sol tərəfdən divar izləmə üsulunu seçdim. Fikir, robotun labirintdən keçərkən aşağıdakı qərarlar verərək sol tərəfində bir divar tutmasıdır:

  1. Sola dönmək mümkündürsə, bunu edin.
  2. Əks təqdirdə, mümkünsə düz gedin.
  3. Sola və ya düz gedə bilmirsinizsə, mümkünsə sağa dönün.
  4. Yuxarıda göstərilənlərin heç biri mümkün deyilsə, bu bir çıxılmaz vəziyyət olmalıdır. Fırlanmaq.

Bir xəbərdarlıq, labirentdə bir döngə varsa, metodun uğursuz ola biləcəyidir. Döngünün yerləşdirilməsindən asılı olaraq, robot döngənin ətrafında və ətrafında gəzməyə davam edə bilər. Bu problemin mümkün həlli, robotun bir döngədə getdiyini başa düşdüyü təqdirdə sağ divar izləyicisi qaydasına keçməsi olardı. Bu zərifliyi layihəmə daxil etmədim.

Doğrudan bir yol tapmağın labirentini həll etmək

Labirentdən istifadə edərkən robot səyahət etdiyi yolu yadda saxlamalı və çıxılmaz nöqtələri aradan qaldırmalıdır. Hər bir döngəni və kəsişməni bir sıra içərisində saxlayaraq, dönmə və kəsişmələrin xüsusi birləşmələrini yoxlayaraq və bir çıxılmaz vəziyyətə daxil olan birləşmələri dəyişdirərək bunu həyata keçirir. Dönüşlərin və kəsişmələrin son siyahısı labirentdən keçən birbaşa yoldur.

Mümkün dönüşlər: Sol, Sağ, Geri (çıxılmaz vəziyyətdə) və Düz (kəsişmə nöqtəsidir).

Kombinasiyalar aşağıdakı kimi əvəz olunur:

  • "Sol, Geri, Sol" "Düz" olur.
  • "Sol, Geri, Sağ" "Geri" olur.
  • "Sol, Geri, Düz" "Sağ" halına gəlir.
  • "Sağ, Geri, Sol" "Geri" olur.
  • "Düz, Geri, Sol" "Sağ" halına gəlir.
  • "Düz, Geri, Düz" "Geri" olur.

ROBOT MƏNİZİ NECƏ QOLLAR

  1. Robot sürməyə başladıqda sağda bir boşluq görür və Straight -ı siyahıdakı siyahıda saxlayır.
  2. Sonra sola dönür və Solu siyahıya əlavə edir. Siyahıda indi var: Düz, Sol.
  3. Bir çıxılmaz vəziyyətdə, çevrilir və siyahıya geri əlavə edir. Siyahıda indi var: Düz, Sol, Geri.
  4. Girişdən istifadə etdiyi zolağı keçərək siyahıya Düz əlavə edir. Siyahıda indi var: Düz, Sol, Geri, Düz. Bir birləşməni tanıyır və Sola, Geri, Düzə Sağa dəyişir. Siyahıda indi Düz, Sağ var.
  5. Bir çıxılmaz vəziyyətdə, çevrilir və siyahıya geri əlavə edir. Siyahıda indi var: Düz, Sağ, Geri.
  6. Sola döndükdən sonra siyahıda Düz, Sağ, Geri, Sol var. Bir birləşməni tanıyır və Sağ, Geri, Soldan Arxaya dəyişir. Siyahıda artıq Düz, Geri var.
  7. Növbəti sola döndükdən sonra siyahıda Düz, Geri, Sol var. Bu birləşməni sağa dəyişir. Siyahıda indi yalnız Sağ var.
  8. Bir boşluq keçir və siyahıya Düz əlavə edir. Siyahıda indi Sağ, Düz var.
  9. Sağ döndükdən sonra siyahıda birbaşa yol olan Sağ, Düz, Sağ var.

Addım 2: Robotu Proqramlaşdırarkən Diqqət Edin

HƏR MİKROKONTROLÇÜ ÜÇÜN MÜALİCƏLƏR

Robot dönməyə qərar verdikdə ya geniş bir dönüş etməli, ya da dönməzdən əvvəl qısa müddət sonra irəli dönməli və sensoru yoxlamadan yenidən qısa bir məsafə irəli getməlidir. İlk qısa məsafənin səbəbi robotun dönüşdən sonra divara çarpmamasıdır, ikinci qısa məsafənin səbəbi isə robotun döndükdən sonra sensorun yeni gəldiyi uzun məkanı görməsidir. və robot yenidən dönməli olduğunu düşünürdü, bu düzgün deyil.

Robot sağdakı bir kəsişməni hiss etdikdə, lakin sağa dönmə deyilsə, robotun sensorlarını yoxlamadan təxminən 25 düym irəli sürməsinin yaxşı olduğunu gördüm.

LEGO MINDSTORMS EV3 ÜÇÜN XÜSUSİ DİQQƏTLƏR

LEGO Mindstorms EV3 çox yönlü olmasına baxmayaraq, bir kərpicə qoşulmuş hər növ sensordan birindən çox olmamasına imkan verir. İki və ya daha çox kərpic papatyalı ola bilərdi, amma başqa bir kərpic almaq istəmədim və buna görə də aşağıdakı sensorlardan istifadə etdim (üç ultrasəs sensoru yerinə): infraqırmızı sensor, rəng sensoru və ultrasəs sensoru. Bu yaxşı nəticə verdi.

Ancaq rəng sensoru, təxminən 2 düym (5 sm) çox qısa bir aralığa malikdir və bu, aşağıda təsvir edildiyi kimi bir neçə xüsusi mülahizəyə səbəb olur:

  1. Rəng sensoru qarşısında bir divar algıladığında və robot sağa dönmək və ya dönmək qərarına gəldikdə, divara dəymədən dönmək üçün özünə kifayət qədər yer vermək üçün əvvəlcə geri çəkilməlidir.
  2. Bəzi "Düz" kəsişmələrdə mürəkkəb bir problem yaranır. Rəng sensorunun qısa diapazonu səbəbindən robot düzgün bir "Düz" kəsişmə hiss etdiyini və ya sağa döndüyünü hiss etdiyini təyin edə bilmir. Robot hər hiss etdikdə siyahıda "Düz" saxlamaq proqramını təyin edərək bu problemi həll etməyə çalışdım və sonra siyahıda birdən çox "Düz" əleyhinə çıxdım. Bu, sağa dönmənin labirintdəki "Düz" dən sonrakı vəziyyəti düzəldir, ancaq əvvəl "Düz" olmadan sağa döndüyünüz vəziyyəti deyil. Proqramı bir "Sağdan" əvvəl bir "Düz" ə çıxarmaq üçün qurmağa çalışdım, amma sağa dönmə "Düz" dən sonra gedirsə bu işləmir. Bütün hallara uyğun bir həll tapa bilmədim, amma düşünürəm ki, robotun gediş məsafəsinə (motorun fırlanma sensörlərini oxuyaraq) baxıb "Düz" və ya doğru olduğuna qərar verməsi mümkün olardı. dönmək Bu layihədə AI konsepsiyasını nümayiş etdirmək üçün bu komplikasiyanın edilməsinə dəyər olduğunu düşünmədim.
  3. Rəng sensorunun bir üstünlüyü, divarın qəhvəyi ilə çıxışda istifadə etdiyim baryerin qırmızı rəngini ayırd etməsi və robotun labirentin bitməsinə qərar verməsinin asan bir yolunu təmin etməsidir.

Addım 3: Əsas Proqram

Əsas Proqram
Əsas Proqram

LEGO Mindstorms EV3 çox əlverişli ikon əsaslı proqramlaşdırma metoduna malikdir. Bloklar kompüterdəki ekranın altında göstərilir və bir proqram qurmaq üçün proqramlaşdırma pəncərəsinə sürükləyib atıla bilər. EV3 Kərpic kompüterə USB kabeli, Wi-Fi və ya Bluetooth ilə qoşula bilər və proqram sonra kompüterdən Kərpicə yüklənə bilər.

Proqram bir əsas proqramdan və bir neçə "Bloklarım" alt proqramlardan ibarətdir. Yüklənmiş fayl bütün proqramı ehtiva edir:

Əsas proqramdakı addımlar aşağıdakılardır:

  1. Dönüş sayma dəyişənini və dizini təyin edin və işə salın.
  2. 5 saniyə gözləyin və "Get" deyin.
  3. Bir döngə başlayın.
  4. Labirentdən keçin. Çıxış əldə edildikdə, döngədən çıxılır.
  5. Kərpicin ekranında indiyə qədər labirentdə tapılan kəsişmələri göstərin.
  6. Yolun qısaldılması lazım olub olmadığını yoxlayın.
  7. Qısaldılmış yolda kəsişmələri göstərin.
  8. 4 -cü addıma geri dönün.
  9. Döngədən sonra birbaşa yolu sürün.

Ekran görüntüsü bu əsas proqramı göstərir.

Addım 4: Bloklarım (Alt proqramlar)

Mənim Bloklarım (Alt proqramlar)
Mənim Bloklarım (Alt proqramlar)

Robotun labirent vasitəsilə necə hərəkət etdiyini idarə edən Blokumu Gəz. Çap çox kiçikdir və oxunaqlı olmaya bilər. Ancaq if-ifadələrinin (LEGO EV3 sistemində açarlar adlanır) nə qədər çox yönlü və güclü olduğuna yaxşı bir nümunədir.

  1. 1 nömrəli ox, infraqırmızı sensorun müəyyən bir məsafədən daha çox bir cisim görüb -görmədiyini yoxlayan Anahtarı göstərir. Əgər belədirsə, üst blok blokları icra olunur. Əks təqdirdə, nəzarət 2 nömrəli oxun yerləşdiyi böyük alt blok bloklarına verilir.
  2. 2 nömrəli ox, rəng sensorunun hansı rəngdə gördüyünü yoxlayan Anahtarı göstərir. 3 hal var: yuxarıda rəng yoxdur, ortada qırmızı və aşağıda qəhvəyi.
  3. 3 nömrəli iki ox, ultrasəs sensorunun müəyyən bir məsafədən daha çox bir cisim görüb görmədiyini yoxlayan açarlara işarədir. Əgər belədirsə, üst blok blokları icra olunur. Əks təqdirdə, nəzarət blokların alt seriyasına keçir.

Yolu qısaltmaq və birbaşa yolu idarə etmək üçün Bloklarım daha mürəkkəbdir və tamamilə oxunmaz olacaq və buna görə də bu sənədə daxil edilməyib.

Addım 5: Robotu Qurmağa Başlayın: Baza

Robot qurmağa başlayırıq: Baza
Robot qurmağa başlayırıq: Baza
Robot qurmağa başlayırıq: Baza
Robot qurmağa başlayırıq: Baza

Daha əvvəl də qeyd edildiyi kimi, LEGO Mindstorms EV3, bir kərpicə bağlı olan hər bir sensor növündən birindən çox olmamasına icazə verir. Aşağıdakı sensorlardan istifadə etdim (üç ultrasəs sensoru əvəzinə): infraqırmızı sensor, rəng sensoru və ultrasəs sensoru.

Aşağıdakı fotoşəkillər robotun necə qurulacağını göstərir. Hər cütlüyün ilk fotoşəkili lazım olan hissələri, ikinci fotoşəkildə isə eyni hissələri bir -birinə bağlayır.

İlk addım göstərilən hissələrdən istifadə edərək robotun əsasını qurmaqdır. Robot bazası baş aşağı göstərilir. Robotun arxasındakı kiçik L şəkilli hissə arxa dayaqdır. Robot hərəkət edərkən sürüşür. Bu yaxşı işləyir. EV3 dəstində yuvarlanan top tipli bir hissə yoxdur.

Addım 6: Baza Üstü, 1

Baza Üstü, 1
Baza Üstü, 1
Baza Üstü, 1
Baza Üstü, 1

Bu addım və sonrakı 2 addım, hamısı 10 düym (26 sm) kabellər olan robotun alt hissəsinin, rəng sensoru və kabellər üçündür.

Addım 7: Baza Üstü, 2

Baza Üstü, 2
Baza Üstü, 2
Baza Üstü, 2
Baza Üstü, 2

Addım 8: Baza Üstü, 3

Baza Üstü, 3
Baza Üstü, 3
Baza Üstü, 3
Baza Üstü, 3

Addım 9: İnfraqırmızı və Ultrasonik Sensorlar

İnfraqırmızı və ultrasəs sensorlar
İnfraqırmızı və ultrasəs sensorlar
İnfraqırmızı və ultrasəs sensorlar
İnfraqırmızı və ultrasəs sensorlar

Sonra infraqırmızı sensor (robotun sol tərəfində) və ultrasəs sensoru (sağda) var. Ayrıca, kərpicin üstünə yapışdırılması üçün 4 sancaq.

İnfraqırmızı və ultrasəs sensorlar normal üfüqi deyil, şaquli vəziyyətdədir. Bu, divarların künclərinin və ya uclarının daha yaxşı tanınmasını təmin edir.

Addım 10: Kabellər

Kabellər
Kabellər

Kabellər Kərpicə aşağıdakı kimi bağlanır:

  • Port B: sol böyük motor.
  • Port C: sağ böyük motor.
  • Port 2: ultrasəs sensoru.
  • Port 3: rəng sensoru.
  • Port 4: infraqırmızı sensor.

Addım 11: Robotun Qurulmasında Son Adım: Dekorasiya

Robotun qurulmasında son addım: dekorasiya
Robotun qurulmasında son addım: dekorasiya
Robotun qurulmasında son addım: dekorasiya
Robotun qurulmasında son addım: dekorasiya

Qanadlar və qanadlar yalnız bəzək üçündür.

Addım 12: Bir labirent qurun

Bir labirent qurun
Bir labirent qurun
Bir labirent qurun
Bir labirent qurun

Labirint üçün iki oluklu karton karton kifayət olmalıdır. Labirent divarlarını 5 düym (12,5 sm) hündürlükdə etdim, ancaq oluklu kartondan məhrum olsanız, 4 düym (10 sm) də işləməlidir.

Əvvəlcə kartonların divarlarını altdan 10 düym (25 sm) kəsdim. Sonra divarları altdan 5 düym kəsdim. Bu, 5 düymlük bir neçə divar təmin edir. Ayrıca, sabitlik üçün divarlara yapışdırılmış təxminən 1 düym (2,5 sm) buraxaraq kartonların dibini kəsdim.

Müxtəlif parçalar labirent yaratmaq üçün lazım olan hər yerdə kəsilə, yapışdırıla və ya lentlə çəkilə bilər. Yan duvarlar arasında çıxılmaz bir yolda 11 və ya 12 düym (30 sm) boşluq olmalıdır. Uzunluq 25 düymdən az olmamalıdır. Bu məsafələr robotun dönməsi üçün lazımdır.

Labirentin bəzi künclərinin möhkəmləndirilməsinə ehtiyac ola bilər, həmçinin düz karton küncləri varsa, bəzi düz divarların əyilməməsi lazımdır. Kiçik nazik karton parçaları göstərildiyi kimi həmin yerlərdə dibinə yapışdırılmalıdır.

Çıxışda göstərildiyi kimi yarı qırmızı tebrik kartı zərfindən və 2 ədəd nazik kartondan hazırlanan altdan ibarət qırmızı baryer var.

Addım 13: Maze

Maze
Maze

Bir xəbərdarlıq labirentin böyük olmamasıdır. Robotun dönüşləri uyğun olana nisbətən bir az bucaqdadırsa, uyğunsuzluqlar bir neçə dönüşdən sonra artır və robot divarlara qaça bilər. Hazırladığım kiçik labirentdən belə uğurlu bir sürüş əldə etmək üçün bir neçə dəfə növbə fırlanma parametrləri ilə əyləşməli oldum.

Bu problemin həll yolu, robotu sol divardan müəyyən bir məsafədə saxlayacaq bir yol düzəltmə qaydası daxil etməkdir. Mən bunu daxil etməmişəm. Proqram olduğu kimi kifayət qədər mürəkkəbdir və bu layihədə AI konsepsiyasını nümayiş etdirmək üçün kifayətdir.

YENİDƏN QEYDİYYAT

Bu əyləncəli bir layihə və böyük bir öyrənmə təcrübəsi idi. Ümid edirəm sizə də maraqlı gəlir.

Tövsiyə: