projeler · robot proje · 2012-09-18 · OTOKON Bilişim Ekibi

Robotların kullanım alanlarının artmasıyla birlikte, yeni robotik problemleriyle karşılaşılmaktadır. Bunlardan en önemlilerinden biri, bir işi gerçeklemek amacıyla beraber çalışmak üzere programlanan robotların birbirleri ile haberleşmesidir. Sürü robotlar, belirli haberleşme protokollerini kullanarak kablolu veya kablosuz şekillerde hem merkezdeki ana aygıtla (master) hem de kendi aralarında (slave) iletişim ağını sağlamakta, bu sayede istenilen görevleri koordinasyon içinde yerine getirebilmektedirler.

Genellikle doğadaki hayvan sürülerinden esinlenilerek ortaya çıkarılan sürü robotlar oldukça geniş kullanım alanlarına sahiptir. Yirminci yüzyılın ikinci yarısından sonra özellikle uzayda keşif amacıyla kullanılan bu sürüler; askeri çalışmalarda, insanların çalışamayacağı tehlikeli bölgelerde, arama kurtarma görevlerinde veya insansız hava araçları kontrolü gibi birçok alanda kullanılabilmektedirler.

Grup robotlar alanında yapılan çalışmaların tüm dünyada hızla yaygınlaşmasına ayak uydurabilmek amacıyla İTÜRO’da senaryo kategorisi fikri ortaya atılmıştır. Bu kategoride, her sene yarışmacılardan yeni bir görevi yerine getirmeleri istenecektir. Verilen görevler sayesinde, yarışmacıların bireysel robotlar dışında, işbirliği içinde çalışan robotlar üzerine de çalışmaları amaçlanmaktadır. Bu çalışmalar ışığında, görüntü işleme, kablosuz haberleşme protokolleri, sürü robot algoritmaları, haritalama, mesafe optimizasyonu gibi konuların araştırılması ve gerçeklenmesine yönelik ilginin arttırılması beklenmektedir.

Senaryo kategorisinin bu seneki görevi olan top taşıma görevinde, iki robottan oluşan takımlar iki farklı katı olan pistte, üst kattaki, belirlenen bir noktadan topu alıp işbirliği içerisinde alt katta belirtilen alana bırakacaklardır. Üst kattaki robot, kendisine ZigBee protokolü üzerinden gönderilen veri doğrultusunda top alma noktasının belirtilen bölümünden topu alıp alt kattaki robota aktaracak, bu robot da belirlenen noktaya topu bırakacaktır.

Robotların hareketinde sağlanması gereken hassaslık sebebiyle bu projenin mekanik kısmı herhangi bir robot tasarımından daha fazla önem taşımaktadır. Mekanik tasarımı başarıyla yapmak amacıyla bilgisayar ortamında çizimler yapılmıştır. Robotlar, genel hatlarıyla step motorlarla kontrol edilen iki teker, ön ve arkada iki sarhoş teker, üst tarafta topun alınması ve taşınması için bir hazne ve ön tarafında topun bırakılması için bir kapaktan oluşmaktadır.

Robotların hareketlerinin iyi kontrol edilmesi ve hareket esnekliği için, robotlarda sıkça tercih edilen, eksenleri robotun merkeziyle çakışan iki motor ve bunlara bağlı tekerlekler kullanılmıştır. Robotun ana malzemesi olan 8mm’lik MDF parçadan üretilen ara parçalar ile step motorlar şase üzerine civata ile tespit edilmiştir. Motorların tekerleklerle bağlantısında ise set-screw yardımıyla motorun miline, civatalar yardımıyla tekerleklere bağlanan alüminyum aparatlar kullanılmıştır.

Hareketi sağlayan tekerleklere ek olarak, robotun dört noktadan yerle olan dengesini sağlaması için sarhoş tekerlekler kullanılmıştır. Bunlar da robotun ön ve arkasında şaseye civatalar yardımıyla yerleştirilmiştir.

Görev gereği üst kattaki robotun top alma bölgesinden top alması, bunu takım arkadaşı olan alt kattaki robota aktarması ve alt kattaki robotun da bu topu top bırakma bölgesine bırakması gerekir. Robotların üst kısmında tabanı, topun aşağı yuvarlanmasını sağlamak için eğimli olan ve top alma sırasında rahatlık sağlaması için, genişçe bir hazne bulunmaktadır. Topun hazneden düşmemesi için haznenin etrafında 2mm pvc levhadan yapılan duvarlar ve bu sistemin önünde topun bırakılmasını sağlamak için açılıp kapanabilen bir kapaktan oluşan sistem, topların başarıyla alınması, taşınması ve bırakılması için iki robotta da kullanılmıştır.

Topun bırakılmasını sağlayacak olan kapak bir servo motor tarafından kontrol edilir. Bu servo motor da şaseye vidalanarak yerleştirilmiştir. Topun bırakılması, kapağın topun düşeceği tarafa dik şekilde, saat yönünün tersine 90° dönerek açılmasıyla sağlanır.

Ayrıca robotların içinde bulunması gereken devreler ve pil de gövdenin arka kısmındaki boşluğa üst üste gelecek şekilde yerleştirilmiştir. Devrelerin yükseltilmesinde 35mm’lik yükseltme parçalarıyla bunları sıkacak ve şaseyle birleştirecek civatalar kullanılmıştır. 4cm x 7cm x 3cm büyüklüğündeki pil ise yükseltilen devrelerin altına yerleştirilmiştir.

Robot, yarışma başlangıcında sisteme gideceği kapıların bilgisini almak için 4 basamaklı veri gönderir. Bu veri paketi 3 temel parçadan oluşmaktadır. İlk 2 veri daha önceden belirlenmiş olan ve sistemin gelen bilginin robottan olduğunu anlamasını sağlayacak header bölümüdür. Robotun sisteme gönderdiği bilgide header olarak “YR” harfleri seçilmiştir. Gönderilen 3. veri sistemden bilgi istendiğini sembolize etmekte ve “1” olarak yollanmaktadır. Son veri değeri ise 4 basamaklı veri paketinin sonuna gelindiğini gösteren footer’dır ve bu “E” olarak seçilmiştir. Yani robot yarışma başlangıcında sisteme veri olarak “YR1E” yollar ve sistemden gideceği kapı bilgilerinin gelmesini bekler. Sistemden gelen veri robota ulaştığında robot bu verileri tek tek (basamak basamak) okumaya başlar. Sistemden gelen bu veri 10 basamaklıdır. Verinin ilk 2 verisi yine bilginin sistemden geldiğinin belli olması için header bölümüdür. Sistemin robota yolladığı veride header olarak “RZ” harfleri seçilmiştir. Robot kendisine veri gelmeye başladığı zaman gelen verileri kontrol etmeye başlar ve “R” harfi gelene kadar bekler. Eğer robot “R” alırsa daha sonra “Z” harfini beklemeye başlar. Eğer “R” harfinden hemen sonra “Z” harfi gelmez ise bu verinin yanlış olduğu anlamına gelir ve hiçbir şey yapmayıp yeniden “R” harfini beklemeye başlar. Gelen bilgi doğru ise “RZ” harflerini içeriyorsa daha sonradan gelen 7 basamağı bir diziye atar. Gelen verinin 3. basamağı verinin gönderildiği zamanı ifade eder. Üçüncü basamak “1” ise robot top alma bölgesinde, “0” ise robot yarışmanın başlangıcındadır. Dördüncü basamak -eğer robot top alma bölgesindeyse-, o anda aldığı topun sırasını ifade eder. Beşinci basamak -eğer robot top alma bölgesindeyse- , robotun hangi kapıda bulunduğunu ifade eder. Altıncı basamak, robotun bir sonraki alacağı topun sırasını ifade eder. Yedinci basamak, robotun bir sonraki topu alacağı kapı adını ifade eder. Sekizinci basamak, robotun iki sonraki alacağı topun sırasını ifade eder. Dokuzuncu basamak, robotun iki sonraki topu alacağı kapı adını ifade eder. Robot bu 7 basamağı bir dizinin içine tek tek attıktan sonra son olarak verinin 10. basamağına yani son basamağına bakar. Bu basamak footer olarak seçilmiştir ve daha önceden “E” harfi olarak belirlenmiştir. Robot 10. Basamağa bakar ve eğer “E” harfini okursa gelen verinin doğru olduğunu kabul edip veri alama işini bitirir. Gelen veri “E” harfi değil ise gelen verinin yanlış olduğuna karar verip tekrar en başa döner ve “R” harfini beklemeye başlar. Gönderilen verilerde header ve footer kullanılmasının nedeni veri gönderirken olası veri kayıplarını anlayıp hatalı bilgiyi kullanmamaktır.

Robot pist üzerinde yönünü ve konumunu saptamak için koordinat sistemini kullanır. Pisti eşit karelere bölerek her bir kareye (x,y) şeklinde x ve y koordinatları verir ve hareketini bir karenin merkezinden diğer karenin merkezine olacak şekilde yapar. Robot bu koordinat sistemi sayesinde hareket ettiğinde gittiği yolu ve yönü hesaplayarak hangi kareye gittiğini anlayabilir. Robot bu sistemi uygularken şu şekilde bir algoritma kullanmaktadır. Öncelikle robotun başlamış olduğu kare bilindiğinden o karenin x ve y koordinatları robota o anki konum olarak aktarılır. Aynı şekilde robota yön olarak hangi yöne baktığı da yön bilgisi olarak işlenir. Daha sonra robot bir kareye gitmek istediğinde bulunduğu karenin koordinatlarını ve gitmek istediği karenin koordinatlarını kontrol etmeye başlar. Öncelikle gitmek istediği karenin Y ekseni bileşenine gitmek için işlem yapılır. Robot konumunun ve hedefinin Y ekseni bileşenlerine bakar ve yönünü +y veya –y olarak ayarlar. Örneğin robotun bulunduğu konumda y=5 olsun, gitmek istediği yerin konumu ise y=2 olsun. Robot hedefine ulaşması için yönünü –y olarak ayarlaması gerektiğini hesaplar. Yönünü –y olarak ayarlayıp y=2 olana kadar hareket etmeye başlar. Robot Y ekseninde istediği yere geldikten sonra aynı işlemleri bu sefer X ekseni için yapar ve tam olarak istediği kareye gitmiş olur.

Haberleşme işlemleri bittikten sonra robot ilk olarak gideceği hedefi belirler. Bunu haberleşme kısmında aldığı 10 basamaklı verinin 7. basamağından alır. 7. basamaktaki veri ilk olarak gideceği kapıyı söyler ve kapıları simgeleyen A, B, C, ve D harflerinden birini içerir. Robot kapı bilgisini aldıktan sonra hedef olarak kapının koordinatlarını belirler ve yukarıda anlatılan hedefe gitme algoritmasını uygulayarak kapıya ulaşır. Kapı önündeki kareye ulaştıktan sonra robot, yönünü kapıya girecek şekilde düzeltir ve kapıdan içeri girer. içeri girdikten sonra geldiği kapının doğru olduğunu teyit etmek için sisteme bilgi isteğinde bulunur. Bunu yarışma başlangıcında olduğu gibi sisteme “YR1E” yollayarak yapar. Gelen cevabın aynı ilk haberleşmede olduğu gibi header ve footerları kontrol eder. Gelen bilginin 5. basamağına bakar. Bu basamak robotun o anda bulunduğu kapı bilgisini içerir. Robot hedefindeki kapı ile gelen veriden öğrendiği kadarıyla, bulunduğu kapıyı kontrol eder. Doğru kapıda ise topu alacak kadar bir süre bekler ve topu alıp diğer robota vermek için harekete geçer. Fakat yanlış kapıda ise tekrar hareket edip doğru kapıya gider.

Tasarım safhasında planlanan mekanik, elektronik ve yazılımsal hedeşer gerçeklenmiş, robotların başarılı şekilde top alış verişi yapması sağlanmıştır. Sistem üzerine iyileştirme ve geliştirme çalışmaları sürdürülecektir.