İçindekiler:

LEGO EV3 Labirent Sürüş Robotunda Yapay Zeka: 13 Adım
LEGO EV3 Labirent Sürüş Robotunda Yapay Zeka: 13 Adım

Video: LEGO EV3 Labirent Sürüş Robotunda Yapay Zeka: 13 Adım

Video: LEGO EV3 Labirent Sürüş Robotunda Yapay Zeka: 13 Adım
Video: LEGO MINDSTORM EV3 | Çocuklar İçin Eğitici Kodlama Seti | YouTube Kids | Lego Eğitimi 2024, Kasım
Anonim
Image
Image
Bir Labirent Nasıl Çözülür?
Bir Labirent Nasıl Çözülür?

Bu, biraz yapay zekaya sahip basit, özerk bir robottur. Bir labirenti keşfetmek ve girişe geri yerleştirildiğinde çıkışa gitmek ve çıkmaz sokaklardan kaçınmak için tasarlanmıştır. Sadece labirentten geçen önceki projemden çok daha karmaşık. Burada robot kat ettiği yolu hatırlamalı, çıkmazları ortadan kaldırmalı, yeni yolu kaydetmeli ve ardından yeni yolu izlemelidir.

Önceki robotum burada açıklanıyor:

Robot, LEGO Mindstorms EV3 kullanılarak yapılmıştır. EV3 Yazılımı bir bilgisayarda çalışır ve daha sonra EV3 Brick adı verilen bir mikro denetleyiciye indirilen bir program oluşturur. Programlama yöntemi simge tabanlı ve üst düzeydir. Çok kolay ve çok yönlü.

Gereçler

PARÇALAR

  1. LEGO Mindstorms EV3 seti
  2. LEGO Mindstorms EV3 ultrasonik sensör. EV3 setine dahil değildir.
  3. Labirent için oluklu mukavva. İki karton yeterli olacaktır.
  4. Bazı köşeleri ve duvarları sabitlemeye yardımcı olmak için küçük bir parça ince karton.
  5. Karton parçalarını birbirine bağlamak için yapıştırıcı ve bant.
  6. Labirentin çıkışını belirtmek için kırmızı bir tebrik kartı zarfı.

ALETLER

  1. Karton kesmek için maket bıçağı.
  2. Kesme işlemine yardımcı olmak için çelik cetvel.

YAZILIM

Program burada:

Adım 1: Bir Labirent Nasıl Çözülür?

LAZERSİZ SÜRÜŞ YÖNTEMİ

Bir labirentte gezinmenin birkaç yöntemi vardır. Bunları incelemekle ilgileniyorsanız, aşağıdaki Wikipedia makalesinde çok iyi açıklanmıştır:

Sol duvar takip yöntemini seçtim. Buradaki fikir, robotun labirentten geçerken aşağıdaki kararları vererek bir duvarı sol tarafında tutmasıdır:

  1. Sola dönmek mümkünse, bunu yapın.
  2. Aksi takdirde, mümkünse düz gidin.
  3. Sola veya düz gidemiyorsa, mümkünse sağa dönün.
  4. Yukarıdakilerin hiçbiri mümkün değilse, bu bir çıkmaz sokak olmalıdır. Arkanı dön.

Dikkat edilmesi gereken bir nokta, labirentte bir döngü varsa yöntemin başarısız olabileceğidir. Döngünün yerleşimine bağlı olarak robot, döngünün etrafında ve çevresinde dönmeye devam edebilir. Bu problem için olası bir çözüm, robotun bir döngüye girdiğini fark etmesi durumunda sağ duvar takipçisi kuralına geçmesi olabilir. Bu iyileştirmeyi projeme dahil etmedim.

DOĞRUDAN BİR YOL BULMAK İÇİN LABİREYİ ÇÖZMEK

Labirentte sürerken robot, gittiği yolu ezberlemeli ve çıkmazları ortadan kaldırmalıdır. Bunu, her dönüşü ve kavşağı bir dizide saklayarak, giderken belirli dönüş ve kavşak kombinasyonlarını kontrol ederek ve bir çıkmaz içeren kombinasyonları değiştirerek gerçekleştirir. Dönüşlerin ve kavşakların son listesi, labirentten geçen doğrudan yoldur.

Olası dönüşler şunlardır: Sol, Sağ, Geri (çıkmaz noktada) ve Düz (bir kavşaktır).

Kombinasyonlar aşağıdaki gibi değiştirilir:

  • "Sol, Geri, Sol", "Düz" olur.
  • "Sol, Geri, Sağ", "Geri" olur.
  • "Sol, Geri, Düz", "Sağ" olur.
  • "Sağ, Geri, Sol", "Geri" olur.
  • "Düz, Geri, Sol", "Sağ" olur.
  • "Düz, Geri, Düz", "Geri" olur.

ROBOT LABİRMENİMİ NASIL BAŞARIYOR

  1. Robot sürmeye başladığında sağda bir boşluk görür ve dizideki listede Düz'ü kaydeder.
  2. Sonra sola döner ve listeye Sola ekler. Liste şimdi şunları içeriyor: Düz, Sol.
  3. Bir çıkmazla, döner ve listeye Geri ekler. Liste artık şunları içeriyor: Düz, Sol, Geri.
  4. Girişten kullandığı şeritten geçerek listeye Düz ekler. Liste artık şunları içeriyor: Düz, Sol, Geri, Düz. Bir kombinasyonu tanır ve Sol, Geri, Düz olarak Sağa değişir. Liste şimdi Düz, Sağ içeriyor.
  5. Çıkmaz ile döner ve listeye Geri ekler. Liste şimdi şunları içeriyor: Düz, Sağ, Geri.
  6. Sola döndükten sonra liste Düz, Sağ, Geri, Sol içerir. Bir kombinasyonu tanır ve Sağ, Geri, Soldan Geriye değişir. Liste şimdi Düz, Geri içerir.
  7. Bir sonraki sola dönüşten sonra liste Düz, Geri, Sol içerir. Bu kombinasyonu Sağ olarak değiştirir. Liste artık yalnızca Sağ'ı içeriyor.
  8. Bir boşluk bırakır ve listeye Düz ekler. Liste şimdi Sağ, Düz'ü içeriyor.
  9. Sağa döndükten sonra liste, doğrudan yol olan Sağ, Düz, Sağ'ı içerir.

Adım 2: Robotu Programlarken Dikkat Edilmesi Gerekenler

HERHANGİ BİR MİKROKONTROLÖR İÇİN HUSUSLAR

Robot dönmeye karar verdiğinde ya geniş bir dönüş yapmalı ya da dönmeden önce kısa bir mesafe ileri gitmeli ve döndükten sonra sensörü kontrol etmeden tekrar kısa bir mesafe ileri gitmelidir. İlk kısa mesafenin nedeni, dönüşten sonra robotun duvara çarpmaması, ikinci kısa mesafenin nedeni, robot döndükten sonra sensörün az önce geldiği uzun alanı görmesidir., ve robot tekrar dönmesi gerektiğini düşünürdü ki bu yapılacak doğru şey değil.

Robot sağda bir kavşak algıladığında ancak bu sağa dönüş olmadığında, robotun sensörlerini kontrol etmeden yaklaşık 25 cm ileri gitmesini sağlamanın iyi olduğunu gördüm.

LEGO MINDSTORMS EV3 İÇİN ÖZEL HUSUSLAR

LEGO Mindstorms EV3 çok yönlü olmasına rağmen, bir Brick'e bağlı her sensör türünden birden fazlasına izin vermez. İki veya daha fazla Tuğla zincirleme bağlanabilir, ancak başka bir Tuğla satın almak istemedim ve bu nedenle şu sensörleri kullandım (üç ultrasonik sensör yerine): kızılötesi sensör, renk sensörü ve ultrasonik sensör. Bu iyi sonuç verdi.

Ancak renk sensörünün çok kısa bir aralığı vardır, yaklaşık 2 inç (5 cm), bu da aşağıda açıklandığı gibi birkaç özel hususa yol açar:

  1. Renk sensörü önünde bir duvar algıladığında ve robot sağa dönmeye veya dönmeye karar verdiğinde, duvara çarpmadan dönecek yeterli alan sağlamak için önce geri dönmelidir.
  2. Bazı "Düz" kavşaklarda karmaşık bir sorun oluşur. Renk sensörünün kısa menzili nedeniyle robot, uygun bir "Düz" kavşak mı yoksa sağa dönüşe giden yolu mu algıladığını belirleyemez. Programı, robot her algıladığında listede bir "Düz" kaydedecek ve ardından listede arka arkaya birden fazla "Düz" i kaldıracak şekilde ayarlayarak bu sorunu çözmeye çalıştım. Bu, labirentte sağa dönüşün bir "Düz"ü izlediği durumu düzeltir, ancak önünde "Düz" olmayan bir sağa dönüşün olmadığı durumu düzeltir. Ayrıca programı, "Sağ"dan hemen önceyse "Düz"ü ortadan kaldıracak şekilde ayarlamayı denedim, ancak sağa dönüş "Düz"ü takip ederse bu işe yaramaz. Tüm durumlara uyan bir çözüm bulamadım, ancak robotun kat edilen mesafeye (motor dönüş sensörlerini okuyarak) bakması ve bunun “Düz” veya sağ olup olmadığına karar vermesi mümkün olacağını düşünüyorum. dönüş. Bu projede yapay zeka konseptini göstermek amacıyla bu karmaşıklığın yapılmaya değer olduğunu düşünmedim.
  3. Renk sensörünün bir avantajı, bir duvarın kahverengisi ile çıkışta kullandığım bariyerin kırmızısını ayırt etmesi ve robotun labirenti ne zaman bitirdiğine karar vermesi için kolay bir yol sağlamasıdır.

Adım 3: Ana Program

Ana Program
Ana Program

LEGO Mindstorms EV3, simge tabanlı çok kullanışlı bir programlama yöntemine sahiptir. Bloklar, bilgisayardaki ekranın alt kısmında gösterilir ve bir program oluşturmak için programlama penceresine sürükleyip bırakılabilir. EV3 Brick bilgisayara bir USB kablosu, Wi-Fi veya Bluetooth ile bağlanabilir ve ardından program bilgisayardan Brick'e indirilebilir.

Program bir ana program ve birkaç alt program olan “Bloklarım”dan oluşur. Yüklenen dosya, burada bulunan programın tamamını içerir:

Ana programdaki adımlar aşağıdaki gibidir:

  1. Sıra sayma değişkenini ve diziyi tanımlayın ve başlatın.
  2. 5 saniye bekleyin ve “Git” deyin.
  3. Bir döngü başlatın.
  4. Labirentin içinden sürün. Çıkışa ulaşıldığında, döngüden çıkılır.
  5. Brick ekranında şimdiye kadar labirentte bulunan kavşakları görüntüleyin.
  6. Yolun kısaltılması gerekip gerekmediğini kontrol edin.
  7. Kısaltılmış yoldaki kavşakları görüntüleyin.
  8. 4. adıma geri dönün.
  9. Döngüden sonra doğrudan yolu sürün.

Ekran görüntüsü bu ana programı gösterir.

Adım 4: Bloklarım (Alt Programlar)

Bloklarım (Alt Programlar)
Bloklarım (Alt Programlar)

Robotun labirentten nasıl geçtiğini kontrol eden Bloğumda Gezinme gösterilir. Baskı çok küçük ve okunaklı olmayabilir. Ancak if ifadelerinin (LEGO EV3 sisteminde Anahtarlar olarak adlandırılır) ne kadar çok yönlü ve güçlü olduğuna dair güzel bir örnek.

  1. 1 numaralı ok, kızılötesi sensörün belirli bir mesafeden daha uzaktaki bir nesneyi görüp görmediğini kontrol eden bir Anahtarı gösterir. Eğer öyleyse, en üstteki blok serisi yürütülür. Değilse, kontrol, #2 okunun bulunduğu büyük, alt blok serisine geçirilir.
  2. 2 numaralı ok, renk sensörünün hangi rengi gördüğünü kontrol eden bir Anahtarı gösterir. 3 durum vardır: üstte renk yok, ortada kırmızı ve altta kahverengi.
  3. İki ok #3, ultrasonik sensörün belirli bir mesafeden daha uzaktaki bir nesneyi görüp görmediğini kontrol eden Anahtarları gösterir. Eğer öyleyse, en üstteki blok serisi yürütülür. Değilse, kontrol alt blok serisine geçirilir.

Yolu kısaltmak ve doğrudan yolu sürmek için Bloklarım daha karmaşıktır ve tamamen okunaksızdır ve bu nedenle bu belgeye dahil edilmemiştir.

Adım 5: Robotu İnşa Etmeye Başlama: Temel

Robotu İnşa Etmeye Başlamak: Temel
Robotu İnşa Etmeye Başlamak: Temel
Robotu İnşa Etmeye Başlamak: Temel
Robotu İnşa Etmeye Başlamak: Temel

Daha önce belirtildiği gibi, LEGO Mindstorms EV3, bir Brick'e bağlı her sensör türünden birden fazlasına izin vermez. Aşağıdaki sensörleri kullandım (üç ultrasonik sensör yerine): kızılötesi sensör, renk sensörü ve ultrasonik sensör.

Aşağıdaki fotoğraf çiftleri robotun nasıl oluşturulacağını göstermektedir. Her çiftin ilk fotoğrafı gerekli parçaları gösterir ve ikinci fotoğraf birbirine bağlı aynı parçaları gösterir.

İlk adım, gösterilen parçaları kullanarak robotun tabanını oluşturmaktır. Robot tabanı baş aşağı gösterilir. Robotun arkasındaki küçük L şeklindeki kısım, sırt için bir destektir. Robot hareket ettikçe kayar. Bu iyi çalışıyor. EV3 kitinde yuvarlanan top tipi bir parça yoktur.

Adım 6: Tabanın Üstü, 1

Tabanın Üstü, 1
Tabanın Üstü, 1
Tabanın Üstü, 1
Tabanın Üstü, 1

Bu adım ve sonraki 2 adım, robotun tabanının üst kısmı, renk sensörü ve tümü 10 inç (26 cm) olan kablolar içindir.

Adım 7: Tabanın Üstü, 2

Tabanın Üstü, 2
Tabanın Üstü, 2
Tabanın Üstü, 2
Tabanın Üstü, 2

Adım 8: Tabanın Üstü, 3

Tabanın Üstü, 3
Tabanın Üstü, 3
Tabanın Üstü, 3
Tabanın Üstü, 3

9. Adım: Kızılötesi ve Ultrasonik Sensörler

Kızılötesi ve Ultrasonik Sensörler
Kızılötesi ve Ultrasonik Sensörler
Kızılötesi ve Ultrasonik Sensörler
Kızılötesi ve Ultrasonik Sensörler

Ardından, kızılötesi sensör (robotun sol tarafında) ve ultrasonik sensör (sağda) bulunur. Ayrıca, Tuğlayı üste takmak için 4 pim.

Kızılötesi ve ultrasonik sensörler, normal yatay yerine dikey olarak yerleştirilmiştir. Bu, duvarların köşelerinin veya uçlarının daha iyi tanımlanmasını sağlar.

Adım 10: Kablolar

kablolar
kablolar

Kablolar Brick'e şu şekilde bağlanır:

  • Port B: sol büyük motor.
  • Port C: sağ büyük motor.
  • Port 2: ultrasonik sensör.
  • Bağlantı noktası 3: renk sensörü.
  • Port 4: kızılötesi sensör.

Adım 11: Robotu İnşa Etmenin Son Adımı: Dekorasyon

Robotu İnşa Etmenin Son Adımı: Dekorasyon
Robotu İnşa Etmenin Son Adımı: Dekorasyon
Robotu İnşa Etmenin Son Adımı: Dekorasyon
Robotu İnşa Etmenin Son Adımı: Dekorasyon

Kanatlar ve yüzgeçler sadece dekorasyon amaçlıdır.

Adım 12: Bir Labirent İnşa Edin

Bir Labirent İnşa Et
Bir Labirent İnşa Et
Bir Labirent İnşa Et
Bir Labirent İnşa Et

Labirent için iki oluklu mukavva karton yeterli olmalıdır. Labirent duvarlarını 5 inç (12,5 cm) yüksekliğinde yaptım, ancak oluklu mukavvanız azsa 4 inç (10 cm) de işe yarayacaktır.

İlk olarak, kartonların duvarlarını alttan 10 inç (25 cm) olacak şekilde kestim. Sonra duvarları alttan 5 inç kestim. Bu, birkaç 5 inçlik duvar sağlar. Ayrıca, stabilite için duvarlara yaklaşık 1 inç (2,5 cm) bağlı kalacak şekilde kartonların alt kısımlarını kestim.

Çeşitli parçalar kesilip yapıştırılabilir veya labirenti oluşturmak için gereken her yere bantlanabilir. Çıkmazlı herhangi bir yolda yan duvarlar arasında 11 veya 12 inç (30 cm) boşluk olmalıdır. Uzunluk 10 inçten (25 cm) az olmamalıdır. Bu mesafeler robotun dönmesi için gereklidir.

Labirentin bazı köşelerinin güçlendirilmesi gerekebilir, Ayrıca, düzleştirilmiş bir karton köşe içeriyorsa bazı düz duvarların bükülmemesi gerekir. Bu yerlerin altına küçük ince karton parçaları gösterildiği gibi yapıştırılmalıdır.

Çıkışta gösterildiği gibi yarım kırmızı tebrik kartı zarfı ve 2 parça ince kartondan yapılmış bir tabandan oluşan kırmızı bir bariyer vardır.

Adım 13: Labirent

Labirent
Labirent

Bir uyarı, labirentin büyük olmaması gerektiğidir. Robotun dönüşleri uygun olandan hafif bir açıdaysa, tutarsızlıklar birkaç dönüşten sonra toplanır ve robot duvarlara çarpabilir. Yaptığım küçük labirentte bile başarılı bir sürüş elde etmek için dönüşlerin Rotasyon ayarlarıyla birkaç kez oynamam gerekti.

Bu sorunu aşmanın bir yolu, robotu sol duvardan belirli bir mesafede tutacak bir yol düzleştirme rutini eklemektir. Bunu dahil etmedim. Program olduğu gibi yeterince karmaşık ve bu projede AI konseptini göstermek için yeterli.

SON SÖZ

Bu eğlenceli bir proje ve harika bir öğrenme deneyimiydi. Umarım siz de ilginç bulursunuz.

Önerilen: