"Enter"a basıp içeriğe geçin

ANKAKİT Labirent Algoritması

Uzun bir süre sonra tekrar bir şeyler yazmak çok güzel. Yüksek lisans iş sınav derken paylaşımlarıma ara vermek zorunda kalmıştım. Bir çoğu düzene girdi. Bugün RoboGazi’de Cevat ile çok güzel bir projeye başladık. DörtGöz’ü ayağa kaldırmakla kalmayıp çok işlevli bir arayüz yaptık. Bir çok robotun performansını değerlendirebileceğimiz şu an için güzel görünümlü olmasa da işlevli bir  arayüz oldu.

Bir labirentte ilerlerken 4 yönümüz vardır. İleri – Geri – Sağa – Sola, ancak robot ileri hareketini her zaman yaparken sağa sola ve geri hareketini sadece kesişim noktalarında kullanmakta.  Yapılacak olan hareketler için bir karar mekanizması ve bir kaç kabullenme yapmak gerekmektedir. Şekil1’de labirentlerde karar verirken maksimum 3 farklı yönden birini seçerken genelde 2 farklı yoldan biri tercih edilir.

  • 3 olasılık 1 tane
  • 2 olasılık 3 tane
  • 1 olasılık 1 tane
labirent_olasiliklar
Şekil1- Labirent olasılıklar

3.,4. ve 7. olasılıklarda tek bir yön olduğu için buralarda bir öncelik olmayacak. ancak 1.,2.,5. ve 6. olasılıklarda 3 olasılıktan birinin seçilmesi lazım. Biz kendi algoritmamızda birinci öncelik düz, ikinci öncelik sola ve ücüncü öncelik ise sağa olacak. Böylelikle 1., 5. ve 6  olasılıkta robot düz giderken, 2. olasılıkta sola dönecek.

Robot hareketlendiğinde sürekli ileri gidecek bir karar vermesi gerekiyorsa sağa ya da sola dönecek. Eğer 7. olasılık yani çıkmaz yol gelirse iki kez sola dönecek.

Labirentin ise 4 yönü var. Kuzey Güney Doğu ve Batı. Robotun yönün nereye baktığını biliyor olacağız. Geliştireceğimiz encoder sayesinde kaç adım gittiğini sayıp her bir labirent yolunun uzunluğunu kordinatıyla birlikte kayıt edeceğiz. Örneğin: K40. Bu  40 adım gittikten sonra Kuzeye dönüldüğünü anlatmaktadır.

Merkez 250,250 olduğu var sayılır ve 0,0 noktası en sol üst köşe olarak düşünülürse.

  • Kuzey Y’de azalma
  • Güney Y’de artma
  • Doğu X’de artma
  • Batı X’de azalmaya neden olacaktır.

Sağa önceliği olan bir robot aşağıdaki gibi bir algoritmayı boşuna işlemiş olacaktır. Çünkü son hamlesi olan B1 ile ilk hamlesiyle gelmiş olduğu K3 hamlesine tekrar geldiği için ezberleme işlemi yapıldığında K3 hamlesinden sonra D1 değil de B4 hamlesi yapılmalıdır.

  • K3 -Kuzeye 4 adım git
  • D1 – Doğuya 0 adım git
  • G3 – Güneye 4 adım git (Öncelik ileride olduğu için )
  • D4 – Doğuya 5 adım git
  • B4 – Batıya 5 adım git
  • K2 – Kuzeye 3 adım git
  • D4 – Doğuya 5 adım githn
  • B4 – Batıya 5 adım git
  • K1 – Kuzeye 2 adım git
  • B1 – Batıya 2 adım git
labirent ornek
Şekil2- Örnek Labirent

Bugünlük bu kadar Ankakit ile yapmış olduğumuz uygulamanın fotoğraflarını da yayınlayıp bir sonraki yazıda bu algoritmaları DörtGöz’e nasıl uyarladığımızı anlatacağım.

ankakit_labirent_uygulama
Serial Bluetooth ile c# arayüzüyle haberleşirken
ankakit_labirent
c# arayüzü, (Ankakit içerinde kaydedilmiş olan hamlelerin seriport üzerinden alınarak çizdirilmesi)

İlk Yorumu Siz Yapın

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir