mrsbyte.com€¦  · web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan...

115
KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ KOORDİNATLARI BİLİNMEYEN ÇOK ROBOTLU SİSTEMLERDE VERİLEN ŞEKLİN OLUŞTURULMASI BİTİRME PROJESİ Edanur BAYAT Burhan SEHER

Upload: others

Post on 17-Aug-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

KARADENİZ TEKNİK ÜNİVERSİTESİMÜHENDİSLİK FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

KOORDİNATLARI BİLİNMEYEN ÇOK ROBOTLU SİSTEMLERDEVERİLEN ŞEKLİN OLUŞTURULMASI

BİTİRME PROJESİ

Edanur BAYATBurhan SEHER

2019-2020 BAHAR DÖNEMİ

Page 2: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

KARADENİZ TEKNİK ÜNİVERSİTESİMÜHENDİSLİK FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

KOORDİNATLARI BİLİNMEYEN ÇOK ROBOTLU SİSTEMLERDEVERİLEN ŞEKLİN OLUŞTURULMASI

BİTİRME PROJESİ

Edanur BAYATBurhan SEHER

2019-2020 BAHAR DÖNEMİ

Page 3: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

IEEE Etik KurallarıIEEE Code of Ethics

Mesleğime karşı şahsi sorumluluğumu kabul ederek, hizmet ettiğim toplumlara ve üyelerine en yüksek etik ve mesleki davranışta bulunmaya söz verdiğimi ve aşağıdaki etik kurallarını kabul ettiğimi ifade ederim:

1. Kamu güvenliği, sağlığı ve refahı ile uyumlu kararlar vermenin sorumluluğunu kabul etmek ve kamu veya çevreyi tehdit edebilecek faktörleri derhal açıklamak;

2. Mümkün olabilecek çıkar çatışması, ister gerçekten var olması isterse sadece algı olması, durumlarından kaçınmak. Çıkar çatışması olması durumunda, etkilenen taraflara durumu bildirmek;

3. Mevcut verilere dayalı tahminlerde ve fikir beyan etmelerde gerçekçi ve dürüst olmak;

4. Her türlü rüşveti reddetmek;5. Mütenasip uygulamalarını ve muhtemel sonuçlarını gözeterek teknoloji anlayışını

geliştirmek;6. Teknik yeterliliklerimizi sürdürmek ve geliştirmek, yeterli eğitim veya tecrübe olması

veya işin zorluk sınırları ifade edilmesi durumunda ancak başkaları için teknolojik sorumlulukları üstlenmek;

7. Teknik bir çalışma hakkında yansız bir eleştiri için uğraşmak, eleştiriyi kabul etmek ve eleştiriyi yapmak; hatları kabul etmek ve düzeltmek; diğer katkı sunanların emeklerini ifade etmek;

8. Bütün kişilere adilane davranmak; ırk, din, cinsiyet, yaş, milliyet, cinsi tercih, cinsiyet kimliği, veya cinsiyet ifadesi üzerinden ayırımcılık yapma durumuna girişmemek;

9. Yanlış veya kötü amaçlı eylemler sonucu kimsenin yaralanması, mülklerinin zarar görmesi, itibarlarının veya istihdamlarının zedelenmesi durumlarının oluşmasından kaçınmak;

10. Meslektaşlara ve yardımcı personele mesleki gelişimlerinde yardımcı olmak ve onları desteklemek.

IEEE Yönetim Kurulu tarafından Ağustos 1990’da onaylanmıştır.

II

Page 4: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

ÖNSÖZ

Hazırlamış olduğumuz bu bitirme projesinde öncelikle danışmanımız KaradenizTeknik Üniversitesi, Mühendislik Fakültesi, Bilgisayar Mühendisliği öğretim görevlisi, SayınProf. Dr. Vasıf NABIYEV’e ve desteklerini esirgemeyen bölümümüzün tüm öğretim üyesive araştırma görevlilerine teşekkür ederiz.

Edanur BAYATBurhan SEHER

Trabzon 2020

III

Page 5: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

İÇİNDEKİLER

IEEE Etik Kuralları................................................................................................................IIÖNSÖZ....................................................................................................................................IIIİÇİNDEKİLER......................................................................................................................IVŞEKİLLER DİZİNİ...............................................................................................................VIÖZET......................................................................................................................................IX1. GENEL BİLGİLER.............................................................................................................1

1.1. Giriş.................................................................................................................................11.2. Robotlar ve Robotik Sistemler........................................................................................21.2.1. Robot Nedir?................................................................................................................21.2.2. Robotik Nedir?.............................................................................................................21.2.3. Robotlar Nasıl Çalışır?.................................................................................................21.2.4. Gezgin Robotlar...........................................................................................................31.2.5. Algılama.......................................................................................................................31.2.6. Haberleşme...................................................................................................................31.2.7. Otonom Robotlar..........................................................................................................31.3. Çok Erkinli Sistemler......................................................................................................41.4. Algoritma........................................................................................................................41.5. Düzen/Dizilim Denetimi (Formation Control)................................................................4

2. PROJE...................................................................................................................................82.1. Proje Tasarımı.................................................................................................................82.1.1. Konumlandırma............................................................................................................82.1.2. Şekil Gönderimi.........................................................................................................112.1.3. Şekli Oluşturma..........................................................................................................122.1.3.1. Minimum Yola Göre Şekil Oluşturma....................................................................122.1.3.1.1. Kaba Kuvvet (Brute Force) Algoritması..............................................................142.1.3.1.2. Açgözlü Algoritma..............................................................................................142.1.3.1.3. A* Algoritması....................................................................................................162.1.3.1.4. Dijkstra Arama Algoritması................................................................................172.1.3.1.5. D* Algoritması....................................................................................................182.1.3.1.6. Odaklanmış (Focused) D* Algoritması..............................................................192.1.3.1.7. D* Lite Algoritması............................................................................................192.1.3.2. Şeklin Belirlenen t Süresi Sonunda Oluşturulması.................................................312.1.3.2.1. Bezier Eğrileri......................................................................................................322.2. Robotların Tasarımı......................................................................................................34

IV

Page 6: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

2.2.1. Donanım.....................................................................................................................372.3. Yazılım..........................................................................................................................422.4. Uygulama......................................................................................................................432.4.1. Robotun Fiziksel Yapısı.............................................................................................432.4.2. Robotun Elektriksel Yapısı........................................................................................442.4.3. Arduino Kodlama.......................................................................................................442.4.4. Web Arayüzü ve Yönetim Platformu.........................................................................44

3. DAHA ÖNCE YAPILMIŞ ÇALIŞMALAR....................................................................454. SONUÇLAR.......................................................................................................................485. KAYNAKLAR....................................................................................................................496. STANDARTLAR ve KISITLAR FORMU......................................................................547. EKLER................................................................................................................................56

Ek 1. Her Robot İçin Ortak Arduino Kodu..........................................................................56Ek 2. Robotların Kontrolü Ve Görselleştirilmesi İçin Web Platform Kodları.....................68

V

Page 7: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

ŞEKİLLER DİZİNİ

Şekil 1.1.1. El Cezeri’nin yapmış olduğu otomatik makinelere örnek.................................... 1

Şekil 1.5.1. Sanal Yapı Yaklaşımı [11]. ................................................................................ 5

Şekil 1.5.2. Ayrı Ayrı Yönlendirme [11] .................................................................................6

Şekil 2.1.1.1. Trilateration [26] .............................................................................................. 9

Şekil 2.1.1.2 Cihazın Konumlandırılması. [28] .......................................................................9

Şekil 2.1.1.3. Yapay Potansiyeller Yöntemi Genel Dizilim Kontrolü Senaryosu [30]. .........10

Şekil 2.1.2.1. Sobel Filtresi uygulaması. ................................................................................11

Şekil 2.1.3.1. Gezgin robotların engelleri tespit etmesi ve ortak harita (temsili). ..................12

Şekil 2.1.3.1.1. Açgözlü Algoritma ile elde edilen sonuç……………………………………14

Şekil 2.1.3.1.2. Aynı hedefi seçen robotların bir sonraki en yakın hedeflerinden mesafesi küçük olanının o yeni hedefi seçmesi ile elde edilen sonuç......................................15

Şekil 2.1.3.1.3. Şekli Oluşturma bölümünde minimum yola göre verilen yöntem ile elde edilen sonuç. ....................................................................................................................15

Şekil 2.1.3.1.4. Kaba Kuvvet Algoritması ile elde edilen sonuç. ...........................................16

Şekil 2.1.3.1.3.1. A* Algoritması ile yolun belirlenmesi [36]................................................17

Şekil 2.1.3.1.4.1 Dijkstra Arama Algoritması örnek alan [38]................................................17

Şekil 2.1.3.1.5.1. D* Algoritması ile ilk rotanın hesaplanması. [41].......................................19

Şekil 2.1.3.1.5.2. Engel tespiti sonrası D* Algoritması ile yeni rotanın hesaplanması. [41]. 19

Şekil 2.1.3.1.7.1. Düğümler arası ilişki grafiği [38]................................................................20

Şekil 2.1.3.1.7.2. D* Lite Algoritması örneği başlangıç durumu [38]……………………… 21

Şekil 2.1.3.1.7.3. Yol maliyetlerinin hesaplanması [38]. ........................................................21

Şekil 2.1.3.1.7.4. Başlangıç durumunda her düğüm için yol maliyetleri [38]. .......................22

Şekil 2.1.3.1.7.5. Hedef düğümü açık listeye alındı [38].........................................................22

Şekil 2.1.3.1.7.6. rhs değerlerinin hesaplanması [38]..............................................................23

Şekil 2.1.3.1.7.7. (0,1) düğümünün güncellenmesi [38]..........................................................23

VI

Page 8: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

Şekil 2.1.3.1.7.8. (0,1) seleflerinin açık listeye eklenmesi [38]...............................................24

Şekil 2.1.3.1.7.9. (1,0) ‘ın güncellenmesi ve tutarlı hale gelip açık listeden çıkarılması [38].24

Şekil 2.1.3.1.7.10. (0,2) ‘nin genişletilmesi [38].....................................................................25

Şekil 2.1.3.1.7.11. (1,2) ‘nin açılması [38]..............................................................................25

Şekil 2.1.3.1.7.12. (2,2) ‘nin genişletilmesi [38].....................................................................26

Şekil 2.1.3.1.7.13. (3,2) ‘nin genişletilmesi [38].....................................................................26

Şekil 2.1.3.1.7.14. Başlangıç noktasından hedefe doğru yolun izlenmesi [38].......................27

Şekil 2.1.3.1.7.15. (2,3) ‘ün yeniden açık listeye alınması [38]..............................................28

Şekil 2.1.3.1.7.16. (3,1) ‘in açık listeye alınması [38].............................................................28

Şekil 2.1.3.1.7.17. (3,2) ‘nin genişletilmesi [38].....................................................................29

Şekil 2.1.3.1.7.18. (3,1) hala açık listede [38].........................................................................30

Şekil 2.1.3.1.7.19. Yolun oluşturulması [38]...........................................................................30

Şekil 2.1.3.2.1. Kübik Bezier eğrisi [42].................................................................................32

Şekil 2.1.3.2.2. Karesel Bezier eğrisi [44]...............................................................................33

Şekil 2.2.1. Robotun tepeden görünüşü...................................................................................34

Şekil 2.2.2. Robotun önden görünüşü......................................................................................35

Şekil 2.2.3. Robotun alttan görünüşü.......................................................................................35

Şekil 2.2.4. Robotun üst kapak olmadan görünüşü..................................................................36

Şekil 2.2.5. Parçaların robot içerisinde yerleşimi....................................................................36

Şekil 2.2.6. Robot taban - alt kapak tasarımı...........................................................................37

Şekil 2.2.1.1. ESP-32S Modülü [45]........................................................................................37

Şekil 2.2.1.2. HMC5883L 3 Eksenli Pusula Sensörü - Manyetometre - GY-271 [46]...........38

Şekil 2.2.1.3. HC-SR04 Arduino Ultrasonik Mesafe Sensörü [47].........................................38

Şekil 2.2.1.4. 7,4V 2S Airsoft Lipo Batarya 1500mAh 20C - (16x25x67) [48]......................39

Şekil 2.2.1.5. 3.3 V/5 V Breadboard Güç Kartı [49]...............................................................39

VII

Page 9: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

Şekil 2.2.1.6. Mini Ayarlanabilir 3 A Voltaj Regülatör Kartı - LM2596-ADJ [50]................39

Şekil 2.2.1.7. 28 BYJ-48 Redüktörlü Step Motor ve ULN2003A Step Motor Sürücü Kartı [51]..................................................................................................................................40

Şekil 2.2.1.8. Mini Soğutucu [52]. ..........................................................................................40

Şekil 2.2.1.9. 50x11 mm Yeşil Renk Geçmeli Tekerlek [53]..................................................40

Şekil 2.2.1.10. 12,7 mm Sarhoş Tekerlek [54]........................................................................40

Şekil 2.2.1.11. Lipo Seviye Ölçer ve Alarm Modülü [55].......................................................41

Şekil 2.2.1.12. Parça birleşim şeması......................................................................................41

Şekil 2.4.1.1. Robot için üç boyutlu tasarlanıp temin edilen bazı parçalar..............................43

Şekil 2.4.4.1. Web Arayüzü (Üst Sol: Robot ve Çevre Engeller, Üst Sağ: Robottan Gelen Veriler, Alt: Robota Komut Gönderme Butonları)........................................................44

Şekil 3.1. Dayanıklı Dağıtılmış Düzlemsel Dizilim Kontrolü (Robust Distributed Planar Formation Control for Higher-Order Holonomic and Nonholonomic Agents) [61]... .45

Şekil 3.2. Üç adet robot ile nesnenin hedef konuma taşınması [65]........................................46

Şekil 3.3. Lider takip eden çoklu drone sistemi [66]...............................................................46

Şekil 3.4. Geometrik alan hesabına dayalı yaklaşım [72]........................................................47

VIII

Page 10: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

ÖZET

Teknolojinin gelişmesiyle makineler, çevreyle daha fazla iletişim yeteneğine sahip olup çok karmaşık görevleri yerine getirebilir hale geldiler. İnsana göre daha hızlı, hatasız üretim yapan ve daha ucuz iş gücüne sahip bu makineler, sadece sanayi alanında kalmayıp yaşamın her alanına yayıldılar. Bununla birlikte bu sistemlerde otonomluğun ve güvenliğinartırılmasına ihtiyaç duyuldu.

Uzay bilimlerinden evimizdeki en küçük elektronik birimlere kadar yayılmış olan buotonom sistemler görevlerini icra ederlerken daha zor ve sınırlı koşullar için gelişmiş birimleraçığa çıkarmak adına algoritmalarına ve donanımlarına güncellemeler yapılmaktadır.

İnsansız araçlar ve çok robotlu sistemler üzerine çalışmalar dünya genelinde artışgöstermektedir. Bu çalışmada da otonom robotların bilinmeyen bir mekanda yerel olarakkoordinatlarının belirlenmesi ve çakışmalardan sakınarak bir rota oluşturup istenilen yapıdahareket etmeleri, ayrıca bu robotların belirlenen hedef konumlara engellerin olmadığıvarsayılarak t süresinde ulaşmaları problemlerine çözüm aranmıştır.

Bu çalışma yapılırken kapalı alanda konumlandırma için Üç Taraflılık ya daTrilaterasyon (ing.: Trilateration) Yöntemi, engellerden kaçınıp en kısa mesafeninhesaplanması için D* Lite Algoritması, şeklin çevre koşullarına bağlı olarak oluşturulmasıiçin Yapay Potansiyeller Yöntemi ve çevre verilerinin işlenmesi için SLAM problemi ileçözümleri baz alınmıştır. Bununla beraber robotlardan hedef noktalara minimum yolunhesaplanması için farklı yöntemler denenmiş, bu yöntemler optimum sonucu veren Kaba Kuvvet Algoritması ile karşılaştırılmıştır. Ayrıca robotların eğik bir yörünge izleyebilmeleri için rotaları oluşturulurken Bezier Eğrilerinden yararlanılmaya çalışılmıştır.

IX

Page 11: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

1

1. GENEL BİLGİLER1.1. Giriş

İnsanoğlu daima işlerini kolaylaştırmanın yollarını aramış ve çoğunlukla da bulmuştur. Mühendislik, insanoğlunun bu ihtiyacından doğmuş bir disiplindir. Geçmişten günümüze kadar bu amaçla yapılan çalışmalar daima ilerleme göstermiştir. Günümüz teknolojisi ile gelinen son nokta; insan hayatını kolaylaştırmak için geliştirilen robotlar, yapay zeka projeleri ve otonom sistemlerdir.

Şekil 1.1.1. El Cezeri’nin yapmış olduğu otomatik makinelere örnek.

Robot kavramı ilk olarak Çek yazar Karel Capek tarafından yazılan Rossum’s UniversalRobots adlı romanda kullanılmıştır. Bu romanda robotlar insani duygulardan yoksun mekanik ve otonom varlıklar olarak tasvir edilmiştir. Bu roman sonraki dönemlerde birçok bilim-kurgu yazarına ilham kaynağı olmuştur. Aslında robotik biliminin hikayesi bu romanla başlamamıştır. Eski yunan eserlerinde de otonom olarak hareket eden benzer varlıklara rastlamak mümkündür.

Otomatik makinalar geliştirme konusunda çalışmalar yapan ilk bilim adamı El Cezeri’dir. 12. yüzyılda yaşamış olan bu müslüman bilim insanı otomatik saat, otomatik hizmetçi, otomatik müzik aletleri gibi icatlar ile robotik biliminin gelişmesine çok büyük katkılar sağlamıştır [1].

Page 12: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

2

Günümüzde, özellikle 4.0 endüstri devrimi ile birlikte otonom robotların önemi daha fazla artmış durumdadır. Üstelik ilerleyen zamanlar eşliğinde bu otonom robotlar en doğru şekilde birbirleri ile iletişim kurarak, haberleşip analiz yapmak suretiyle, iş bölümünü de istenilen düzeyde gerçekleştirip yapılacak olan üretim kapsamında en iyi uyumu sağlayacak noktaya gelmeye başlamış durumdadır. Örneğin otomotiv sektöründe kaynak, boyama ile birlikte aynı zamanda kalite kontrol ve montaj gibi daha birçok değişik entegre sistemler, fabrikasyon işlemleri altında profesyonel bir şekilde gerçekleştirilmektedir. Zamansal olarak çok fazla kâr sağlanabileceği gibi, insan gücünden de kâr sağlanmaktadır [2].

Otonom gezgin robotlar için konum tahmini en temel problemlerden birisidir. Bununla birlikte robotlar arasında haberleşme ve robotların rota belirlenmesi sistemin geliştirilmesinde önemli hususlardır.

Bu bitirme projesinde konum bilgisi olmayan çok robotlu otonom bir sistem ile istenilen formun oluşturulması ve engelsiz ortamda robotların hedef konumlarına istenilen zamanda ulaşmaları problemleri çözülmeye çalışılmıştır. Bu problemler, günümüzde insansız hava araçları, akıllı arabalar ve gösteri uçaklarının form alması gibi konularda temel noktaları oluşturmaktadır. Ayrıca kullanıma geçmesi planlanan sürücüsüz araçlarda da rota hesabı önemli bir konudur. Tüm bu konuların teorik olarak çözümleri araştırılmış olup pratikte gerçekleştirilmeye çalışılmıştır.

1.2. Robotlar ve Robotik Sistemler1.2.1. Robot Nedir?

Robot, otonom veya önceden programlanmış görevleri yerine getirebilen elektromekanik bir cihazdır. Güncel tanımı ile robotlar, elektronik ve mekanik birimlerden oluşan, algılama yeteneğine sahip olan ve programlanabilen cihazlardır [3].

Robotlar hareket özelliklerine göre ya da uygulama alanına göre sınıflandırılabilirler.

Hareket Özelliklerine Göre Robotlar:

Statik Robotlar Tekerlekli Robotlar Eklemli Robotlar Yüzen Robotlar Modüler Robotlar Mikro Robotlar Yuvarlanan Robotlar Sürünen Robotlar

Uygulama Alanlarına Göre Robotlar:

Endüstriyel Robotlar Ev Robotları Medikal Robotlar Askeri Robotlar Uzay Robotları

Page 13: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

3

Hobi ve Yarış Robotları

1.2.2. Robotik Nedir?

Robotik, makine mühendisliği beraberinde uçak mühendisliği ve uzay mühendisliği, elektronik mühendisliği, bilgisayar mühendisliği, mekatronik mühendisliği ve kontrol mühendisliği dallarının ortak çalışma alanıdır [4].

1.2.3. Robotlar Nasıl Çalışır?

Temelinde elektriksel ağlar bulunan bu teknolojik cihazların çalışmasında dış tasarımından çok sahip olduğu kodlama yapısı önemlidir. Robotun tüm parçaları eksiksiz olsa bile beyin diyebileceğimiz temel parçası olmadan çalıştırılması ya da çalıştırılan makinenin robot diye nitelenmesi mümkün değildir. “Mikrodenetleyici (Microcontroller)” denilen bu bölüm, aynı bilgisayarlarda olduğu gibi, temelinde 0 ve 1 ile yapılan işlemleri barındırır. Burada yapılan bu işlemler ilgili bölümlere komut gönderdiğinde o bölümler görevlerini yerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde sınanması gerekir. Bunun sonucunda bir robot ne kadar çok işlem gerçekleştirecek yetenekteyse, o kadar gelişmiş kabul edilir [5].

1.2.4. Gezgin Robotlar

Gezgin robot, hareket kabiliyetine sahip robotların genel adıdır. Gezgin robotlar uzaktan kumandayla veya uydu üzerinden yönetilebileceği gibi, bir program ya da yapay zeka ile kendisini yönetebilir.

Literatürde gezgin robotla ilgili ilk çalışmalar 1960’lı yıllarda başlamıştır. 1960 yılında SRI (Stanford Research Institute) tarafından yapılan Shakey isimli robot, kendi hareketlerini bir nedene bağlayabilen ilk robottur [6].

1.2.5. Algılama

Robotik ve otomasyonda en çok ihtiyaç duyduğumuz elemanlardan birisi sensörlerdir. Robotik sistemlerin dış ortamla bağlantı kurabilmesi için mutlaka sensör kullanmamız gerekmektedir. Diğer bir deyişle sensörler Robotik sistemlerin duyu organlarıdır. Algılanması gereken değişkenler farklı olduğu için kullanılan sensör çeşitleri de farklı olmak zorundadır [7].

1.2.6. Haberleşme

Robotlar kendi aralarında ya da diğer cihazlarla belirli protokollere bağlı kalarak veri alışverişinde bulunabilirler. Bu haberleşmenin sağlanabilmesi için kullanılabilecek bazı yöntemler şunlardır:

Kablosuz İnternet (IEEE 802.11 b/g/n) Bluetooth (IEEE 802.15.1) Kızılötesi

Page 14: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

4

1.2.7. Otonom Robotlar

Robotlar otonom durumuna göre üçe ayrılabilir [8].

Otonom olmayan robotlar: Tamamı ile insan tarafından sürülen robotlardır. Bu robotların zekası sadece insandan gelen emirleri uygulayacak kadardır.

Yarı otonom robotlar: Bu tür robotlar bazı durumlarda kendi kendilerine hareket edebilen bazı durumlarda da insanlar tarafından sürülebilen robotlardır.

Tam otonom robotlar: Tamamen kendi kendine, herhangi bir insana ihtiyaç duymadan görevlerini tamamlayabilen robotlardır. Bu tür robotların kendilerine ait zeka ve hareket kabiliyetleri bulunmaktadır.

1.3. Çok Erkinli Sistemler

Çok erkinli sistemler (ing.: Multi agent systems) birbirleri ile etkileşen elemanlardan oluşur. Her erkinin iki özelliği vardır: birincisi her erkin özerktir, ya da tasarının arkasındaki amacına ulaşmak için gereken kararları alma ve eylem kabiliyeti vardır. İkincisi ise, her erkin gruptaki diğer erkinleri etkileyebilir ve onlardan etkilenebilir. Bu etkileşme sadece bilgi paylaşımından ibaret değil, üstelik toplumsal aktiviteler (yardımlaşma, koordinasyon ve müzakere vs.) gibi davranışlar da gözlemlenebilir [9].

1.4. Algoritma

Algoritma, bir sonucun bulunmasını kolaylaştıran deneme-yanılmaya ve sezgisel çözümlemeye karşıt olan bir yöntemdir [10].

Algoritma, mekanik davranan kişiye veya bir makineye, bir takım verilerden yola çıkarak ve sonlu sayıda aşamalardan geçerek, belli bir problemi çözme imkanı veren, çok kesin komutlar bütününden oluşmaktadır. Bir algoritmanın çalışmasındaki mutlak zorunluluk, her türlü belirsizlikten arınmış olmasıdır. Bir algoritmanın yürütülmesi, her biri bir komutla belirlenen bir etkiler dizi oluşturur ve bu dizi, önceki komutun yürütülmesinin sona ermesiyle birlikte yürütülmeye başlar. Algoritmanın temel yapısı olan, zaman içerisindeki bu sıralılık, süreçli programlamada temel bir varsayımdır [10].

1.5. Düzen/Dizilim Denetimi (Formation Control)

Belirli bir amaca yönelik birden fazla aracın, birbirleri ile haberleşerek ve/veya çevresel farkındalığa dayalı olarak bireysel tepkilerin verilmesinin sağlanmasıyla, istenilen davranışlara bağlı konumlanmasıdır.[11] Bu projede ele alınan genel problem Düzen/Dizilim Denetimi problemi olarak adlandırılabilir.

Düzen/Dizilim Denetimi, bir robot filosunun, önceden belirlenmiş bir yörüngeyi takip etmesini ve aynı zamanda istenen bir uzaysal kalıbı korumasını sağlayan koordineli bir denetimdir. [12]

Bir grup robotla belirli oluşumları başarmak amacıyla gerçekleştirilen bir denetim yaklaşımıdır. [13]

Page 15: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

5

Robotlar çarpışmadan birlikte hareket edebilir ve görevi daha iyi gerçekleştirmek için belirli bir desen / düzen oluşturabilir. [14]

Düzenin bireysel üyelerinin dinamiklerinin denetimidir yani düzenin bir bütün olarak istenen hareket özelliklerini göstermesidir. [15] Şeklinde farklı tanımlamaları da bulunmaktadır. Düzen/Dizilim Denetimi;

Robotik Sistemler

Çevre Şartlarına Dayanıklı Düzen/Dizilim Denetimi

Uzay Sistemleri

Hava Sistemleri

Sualtı Sistemler

gibi alanlarda temel olarak kullanılmaktadır.

Düzen/Dizilim Denetimi çoğunlukla üç temel strateji ile ele alınır. Bu ağırlıklı olarak üzerinde durulan stratejiler: lider takibi, sanal yapı ve davranışa bağlı düzen denetimleridir. [16]

Davranış temelli yaklaşımlar, her bir robot için basit davranışlar veya hareket ilkelleri tasarlayarak başlar; örneğin, düzen tutma, yörünge izleme, hedef arama ve engellerden kaçınma. Daha sonra, bu ilkellerin göreceli öneminin ve birkaç robotun etkileşiminin ağırlıklı bir toplamı kullanılarak daha karmaşık hareket modelleri oluşturulabilir. Bu yaklaşımın ana dezavantajı matematiksel analizinin zor olması ve dolayısıyla düzenin istenen bir yapıya yakınlaşmasının garanti edilememesidir. Bununla birlikte, davranışa dayalı şemaların avantajı, düzen geri bildiriminin, komşu robotların göreceli koordinatlarına bağlı eylemlerin ağırlıklarını birleştirerek dolaylı olarak bütünleştirilmesidir. Davranışa bağlı yaklaşımlar, yalnızca yerel duyu bilgilerini kullanarak bilinmeyen veya dinamik olarak değişen bir ortamda çok robotlu bir sisteme rehberlik etmek için de kullanışlıdır. [11]

Sanal yapılar tüm düzeni katı bir cisim olarak kabul eder. Tek bir araç için denetim yasası, sanal yapının dinamiklerini tanımlayarak elde edilir ve daha sonra sanal yapının hareketini her aracın istenen hareketine çevirir. Sanal yapı yaklaşımının temel avantajları, grup için koordineli davranışın tanımlanması kolay olması ve düzenin manevralar sırasında iyi korunabilmesidir, yani, sanal yapı, verilen yönelimle belirli bir yönde bir bütün olarak gelişir. Bununla birlikte, düzenin aynı sanal yapıyı her zaman sürdürmesi gerekiyorsa, özellikle düzen şeklinin sık sık yeniden yapılandırılması gerektiğinde olası uygulamalar sınırlıdır [17].

Page 16: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

6

Şekil 1.5.1. Sanal Yapı Yaklaşımı [11].

Lider takip stratejisiyle, bazı robotlar lider olarak kabul edilirken, diğerleri takipçi olarak hareket eder. Böyle bir stratejiyi kullanmanın birincil avantajı, bu yaklaşımın standart hatasını teorik tekniklerle düzen kararlılığının gösterildiği bir izleme sorununa indirgenmesidir. Lider bazı grup hedeflerini takip ederken, takipçi robotlar liderin dönüştürülmüş koordinatlarını takip eder. Dâhili düzen dengesi, bireysel robotun kontrol yasaları tarafından işlenir. Bununla birlikte, dezavantajları, zincir yapısının bozulmaya yönelik zayıflığın oluşması ve liderin hareketi takipçilerinden bağımsız olmasıdır, yani takipçilerinden lidere açık bir geri bildirim yoktur. Ek olarak, düzenin durumu lider hatalarını gizleyemez. [18]

Şekil 1.5.2. Ayrı Ayrı Yönlendirme [11]

Düzen/Dizilim Denetimi problemleri dört gruba ayrılır. Düzen şekil üretimi, düzen seçimi ve yeniden yapılandırılması, düzen takibi ve düzen içerisinde görev/rol tanımlaması.

Page 17: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

7

[16] Projede genellikle düzen şekil üretimi, düzen seçimi ve düzen takibi konuları üzerinde durulmuştur.

Düzen Şekil Üretimi bir oluşumun nasıl oluşturulacağı ve sürdürüleceğine odaklanmaktadır. Düzen/Dilizim Denetimi özelleştirmeleri bir oluşum kısıtlama fonksiyonunda kodlanabilir, örneğin sanal bir yapı için matematiksel bir sınırlama fonksiyonu tanımlanabilir [19]. Başka bir yaklaşım, oluşumun dinamiklerini şekillendirmek için genellikle Lyapunov fonksiyon adaylarının rolünü oynayan bazı yapay potansiyel fonksiyonları dikkate almaktır. İki tür potansiyel işlevi dikkate alınır. Komşu araçlar arasındaki etkileşim fonksiyonu ve sanal liderler tarafından üretilen bir potansiyel oluşur. Bununla birlikte, dezavantaj, araç sayısı arttıkça, birçok bölgesel ya da yerel şartlar ortaya çıkmasıdır [20]. Bir grubun her robotunu bağlı robotlar arasındaki mesafeler cinsinden ifade edilen son bir yapılandırmaya doğru yönlendirmek için merkezi olmayan bir yönlendirme fonksiyonu kullanılabilir [21]. Düzen dinamiklerini Jacobi şekil uzayında denetiminde Lagrange sistemleri olarak modellenebilir. Düzen şekli, çeviri ve döndürme altında değişmezdir ve aynı zamanda koordinat sisteminden bağımsızdır [22].

Bazen koordineli görev gereği bir değişiklik veya belirsizlik oluşur. Rakip araçların ve dar koridorların varlığı gibi çevresel koşullardaki bir değişiklik nedeniyle düzeni değiştirmek / bölmek veya birleştirmek gerekir.[11] Bu kısımda düzen seçimi alt problemi ele alınmalıdır.

Düzen takibi, düzen denetim araştırmasının en büyük kısmıdır. Düzeni izlemenin amacı, bir grup robotun bir referansı izlerken veya takip ederken istenen bir düzeni sürdürmesi gerektiğidir. Bu görev aynı zamanda robot düzeni için yol planlama, yörünge üretimi ve hareket fizibilitesini içerebilir [23]. Literatürde düzen takibi iki gruba ayrılabilir; yörünge takibi ve yol takibi. Özellikle yol takip problemi dengesiz sıfır dinamiklere bağlı performans sınırlamalarının kaldırılabileceğini göstererek, yol takibi ile standart yörünge takibi arasında temel bir fark olduğunu vurgulanmıştır. Tipik olarak, yol takibinde, yola daha yumuşak bir yakınsama elde edilir ve kontrol sinyallerinin, yörünge izlemeye kıyasla doygunluğa daha az itilmesi muhtemeldir [24].

Page 18: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

8

2. PROJE

Bu çalışmada, bilinmeyen bir ortamda konum belirleme sistemlerine (GPS, kamera ile koordinat belirleme işlemi vb.) bağlı olmaksızın kendi koordinat sistemini kurgulayan otonom gezgin çok robotlu bir sistem oluşturulmaya çalışılmıştır. Bu sistemde gezgin robotlar başlangıç konumlarını bilmemekte ve kendilerine iletilen şekli ortam koşullarını da göz önüne alarak oluşturmaktadır. Bu işlem yapılırken robotlar için optimum yolun hesaplanması ve engellerden sakınılması gözetilmiştir. Ayrıca robotların engelsiz ortamda verilen şekli her robotun istenilen t süresinde aynı anda konumlarına ulaşması şartını sağlayacak şekilde oluşturmaları da ayrı bir problem olarak ele alınmıştır.

2.1. Proje Tasarımı

Konumları belli olmayan gezgin robotların istenilen şekli alabilmesi için öncelikle konumlarının tespit edilmesi ve bir koordinat sistemine yerleştirilmesi gerekmektedir. Koordinat sisteminin oluşturulması akabinde şeklin gönderilmesi ve koordinat sistemine uygun şekilde gezgin robotların istenilen konumları alması hedeflenmektedir.

Problemin daha kolay çözümlenebilir olabilmesi ve anlaşılabilirliğinin artması için alt problemlere bölünmesi gerekmektedir. Bu proje uygulamasının teorik yapısı 3 aşamadan oluşmaktadır:

2.1.1. Konumlandırma

Konumlandırma, uzayda bir nesnenin konumunu belirleme sürecini ifade etmektedir. Konum bilgisi kullanıcı bağlamında (kullanıcı aktiviteleri, ulaşım modu, sosyal ilişkiler) en önemli unsurlardan biridir. Konum bilgisi, mutlak, göreceli ya da sembolik şekillerde ifade edilebilir (Krumm 2010) [25].

Gezgin robotların konumlandırılması hususu iki türden oluşmaktadır. Bunlardan birincisi, konumları belirli olmayan birimlerin konumlarının tespit edilmesi ve uygun çözünürlükteki bağıl ya da robotlara özgü bir koordinat sistemine yerleştirilmesidir. İkinci tür konumlandırma ise, çevresel faktörlere bağlı olarak verilen şekli almaya çalışan robotların engelleri algılayıp koordinat sistemine bildirmesi ve engellere bağlı olarak alacağı şekli yeniden değerlendirmesidir.

Birinci türde yer alan, konumları belirsiz robotların bağıl koordinat sistemi oluşturması için öncelikle robotların birbirlerine olan mesafelerinin ölçümü ve Trilaterasyon

Konumlandırma Şekil Gönderimi Şekil Oluşturma

Page 19: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

9

(ing.: Trilateration) yöntemi ile robotların birbirlerine olan bağıl konumlarının hesaplamaları yapılacaktır.

Gerçek aralıklı çok-dilimleme, taşıt / nokta ile çok sayıda uzamsal olarak ayrılmış bilinen konumlar arasındaki çoklu aralıkları kullanarak, hareketli bir taşıtın veya sabit noktanın uzaydaki konumunu belirleme yöntemidir. [26]

Şekil 2.1.1.1. Trilateration [26]

Üçgenleme (ing.: Triangulation) yöntemi kablosuz haberleşme üzerinde pek çokbirimde kullanılabilir. Örneğin; WiFi, Bluetooth, Kızılötesi, Radyo Frekansları…

WiFi Triangulation (Üçgenleme): Bu yöntemde etrafta bulunan birçok WiFinoktasından gelen sinyalin şiddeti ölçülerek konum hesaplaması yapılmaktadır. Androidüzerinde tüm WiFi sinyallerine ve şiddetlerine erişim sunan API varken, iOS üzerinde henüzgeliştiricilerin kullanımına açık böyle bir API bulunmamaktadır [27].

Şekil 2.1.1.2 Cihazın Konumlandırılması. [28]

Page 20: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

10

Gezgin robotlar için Trilaterasyon Yöntemi ile yapılan mesafe ve bağıl konum hesabısonrasında tüm birimlerin ortak bir koordinat düzlemine aktarılması işlemine bağılkonumlandırma denir. Bağıl koordinat sistemi oluşturulurken dikkat edilmesi gereken birdiğer husus ise robotlar arası mesafeye bağlı olarak koordinat sisteminin çözünürlüğününoluşturulmasıdır. Burada çözünürlükten kasıt, iki boyutlu bir matrisin boyutudur. Matrisin boyutu ne kadar büyük ise çözünürlük yani detaylar fazladır. Fakat bu durum hesaplamazorlukları ve istenmeyen gecikmelere sebep olabilir. Bu sebeple bu bağıl koordinat sistemioluşturulurken optimum büyüklükte bir matris oluşturulmaya çalışılmalıdır.

İkinci tür olarak konu edilen konumlandırma sonrası engellerin koordinat sistemineişlenmesi durumu ise her robotun bir engel tespiti akabinde koordinat sistemine bunu işleyipdiğer tüm robotlara durumu bildirmesi gerekmektedir. Engellerin tespiti ile haritalama işlemiiçin SLAM yöntemi kullanılabilir.

Eşzamanlı konum belirleme ve harita oluşturma (ing.: Simultaneous Localization andMapping – SLAM) 90’lı yılların başlarında ortaya atılmış, bilinmeyen pozisyon ve çevrekoşullarında robot/özerk aracın pozisyonunun hesaplanması ve etrafının haritasınınoluşturulması için kullanılan bir yöntem olarak bilinmektedir. SLAM uygulamalarında,ölçüm gürültüsü minimizasyonu, etrafın haritası oluşturulurken karşılaşılan veriilişkilendirme zorluğu, harita boyutu ve kullanılan yöntemin karmaşıklığına bağlı işlem yükügibi temel problemler mevcuttur [29].

Ayrıca gönderilen şekli alması için harekete geçen robotlar şeklin konumlandırıldığınoktalarda bir engele denk gelir ise yapay potansiyeller yönteminden esinlenerekoluşturduğumuz yeni bir konumda şekli çizme durumuna geçecektir.

Yapay potansiyel yaklaşımının arkasındaki ana fikir aracı uzayda olduğu varsayılan bir potansiyel alanının etkisinde kalan bir parçacık olarak düşünmektir. Araç böyle bir kuvvetalanında hareket ederken ulaşılacak nokta bir çekim kutbu, engeller ise araç için itici yüzeylerdir. Toplam potansiyel değeri olan U iten ve çeken bileşenlerin toplamına eşit olur[30]. Yapay potansiyeller yöntemi konumlandırmanın yanı sıra şekil oluşturma aşamasından sonra şekli koruyarak hareket etme işleminde daha çok fayda sağlayacaktır.

Şekil 2.1.1.3. Yapay Potansiyeller Yöntemi Genel Dizilim Kontrolü Senaryosu [30].

Page 21: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

11

Koordinat sistemi üzerinde şekli oluşturmak engeller sebebiyle tam olarak mümkündeğilse, orantısal olarak şeklin konumları yaklaştırılıp hatta gerekli ise başka uygun birkonuma sürüklenmesi ile şeklin oluşturulması sağlanacaktır.

Projede ortak bir harita oluşturma işlemini kolaylaştırmak ve her robot için doğruluğunu arttırmak adına robotların öncelikle kuzeye bakacak şekilde konum almaları sonrasında ise kendi alan taramaları ile haritalarını oluşturmaları hedeflenmiş, tüm haritaların çakıştırılması ile de merkezi birimde ortak harita oluşturulmak istenmiştir. Robotlar koordinatlarını oluşturdukları bağıl koordinat sistemine göre alacaklardır. Tüm bu işlemlerin sağlanması için mesafe sensörleri ve wifi haberleşme teknolojisinden yararlanılmıştır.

2.1.2. Şekil Gönderimi

İstenilen şekil, bir ara cihaz (cep telefonu ya da bilgisayar) kullanılarak el yordamı ileya da hazır bir tuş takımı üzerinden oluşturulup kablosuz olarak robotlara iletilecektir.

Şeklin doğrudan robotlara iletimi sonrasında şeklin analizi robotların işlem birimlerinifazladan meşgul edeceği için şekil ara cihaz üzerinde analiz edilip robotlara oluşturduklarıbağıl koordinat sistemine uygun ya da genel bir standart veri yapısı olarak iletilmesi gerekmektedir.

Şeklin analizi aşamasında, verilen şekil için robotların alacağı konumları tespit etmekgerekmektedir. Bu tespiti yapabilmek amacıyla şekli incelerken Prof. Dr. Vasıf NABIYEV’in “Yapay Zeka” adlı kitabında “El Yazısı ve Basılı Karakterler İçin Yapısal Ayırma ve Tanıma” bölümündeki “Özellik Noktalarının Tanımlanması” alt başlığının içeriğinden esinlenilebilir [31]. Örneğin; bir çizimin iki boyutlu bir matrise aktarılması akabinde uç noktaların tespiti için yalnızca 1 komşusu dolu olan noktalar incelenebilir.

Şekil analizi yapılırken öncelikle resim siyah beyaz hale getirilip sonra bir matris haline getirilmelidir. Matris üzerinde filtreler kullanılarak şeklin uç, köşe ve kesişim noktalarının tespiti sağlanabilir.

Matris haline getirilen resmin öncelikle kenarlarının tespiti için Sobel Filtresi kullanılabilir. Sobel Filtresi görüntü işleme ve bilgisayar görüşünde, özellikle kenarları vurgulayan bir görüntü oluşturan kenar algılama algoritmalarında kullanılır.

Şekil 2.1.2.1. Sobel Filtresi uygulaması.

Page 22: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

12

Resim sadece kenarlardan oluşan bir hale getirildikten sonra uç ve köşe noktaların bulunmasında resim yukarıdan aşağı ve sağdan sola taranıp satır ve sütununda tek olan beyaz pikseller belirlenebilir.

Şekil üzerine robotların konumlanması için noktalar yerleştirilirken öncelik kesişim, köşe ve uç noktalar olacaktır. Bu noktaların sayısında fazla robot var ise kenarlar üzerine belirli aralıklar ile yerleşmelidirler. Aralıklar robot sayısına göre belirlenmelidir. Çok fazla robot olması durumunda yan yana durabilirler ya da içi dolu şekiller oluşturulabilir.

2.1.3. Şekli Oluşturma

Bu aşamada robotların, bağıl koordinat sistemlerini belirlemiş, istenilen çizim bilgisini almış ve bulundukları ortamı genel olarak haritalamış durumda olması gerekmektedir. Projenin şekil oluşturma aşamasında iki farklı yönteme göre şekil oluşturma işlemi yapılacaktır. Bunlar minimum yola göre şeklin oluşturulması diğeri ise şeklin belirlenen t süresi sonunda oluşturulması yani tüm robotların hedef konumlarına aynı anda varmaları durumudur. Bu işlemler hesaplanırken robotlar özdeş ve hızları sabit kabul edilmiştir.

Şekil 2.1.3.1. Gezgin robotların engelleri tespit etmesi ve ortak harita (temsili).

2.1.3.1. Minimum Yola Göre Şekil Oluşturma

Oluşturulması istenilen şekil için gönderilen veri, bağıl koordinat sistemine uyumlu hale getirilir. Bağıl koordinat sistemi 2 boyutlu olarak işlenmiştir. Bu işlemde gelen verinin ihtiyacı olan maksimum genişlik birimi hesaplanır ve bağıl koordinat sisteminin çözünürlüğüne bağlı olarak verilerin noktaları uygun koordinatlara konumlandırılır.

Gönderilen şeklin oluşturulmasında minimum yola göre işlem yapılacak ise izlenilecek adımlar aşağıdaki şekilde özetlenebilir.

Page 23: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

13

1. Gönderilen şeklin merkezi ile robotların merkez noktası hesaplanıp, bunların üst üste yerleştirilmesi, minimum yolun hesaplanmasını kolaylaştıracaktır.

2. Şeklin merkezi yerleştirildikten sonra, belirlenen noktalara robotların her birinden doğrusal bir yol çizilir. Bu doğrusal yolun uzunluğunun hesaplanması için Öklid Uzaklığı Formülü kullanılır.

A = (x1, y1), B = (x2, y2), IABI = √ ((x₂−x ₁)2+( y₂− y₁)2) (1)

3. Çizilen tüm yollardan, robotlar kendileri için en kısa mesafeye sahip noktayı seçip birbirlerine bildirirler.

4. Robotların aynı noktayı seçmesi durumunda robotlar çift olarak incelenir. Bu robotların bir sonraki minimum mesafeye sahip oldukları noktalar belirlenir. Birinci robotun 1. minimum yolu ve ikinci robotun 2. minimum yolu toplamı ile ikinci robotun 1. minimum yolu ve birinci robotun 2. minimum yolunun toplamı karşılaştırılır. Toplamı minimum olan durum kabul edilir.

5. Seçilmemiş nokta ya da nokta seçmemiş robot kalmadığında çizilen rotalarda kesişme durumu kontrol edilir.

6. Eğer rotalarda kesişme söz konusu ise, kesişme yerine varış sürelerine bakılır. Aynı anda kesişim noktasına ulaşan robotlardan kalan mesafesi daha kısa olanı robotların boyutlarına ve hızlarına göre karar verilecek bir t süresi kadar bekler.

7. Rotada ilerlerken ortaya çıkan hareketli ya da sabit engeller olabilir. Bu engellerin sensörler ile algılanması sonucunda, robot D* Lite Algoritması yardımı ile engeli geçmek için bir rota oluşturur.

8. Başlangıçta algılanıp haritaya eklenen engeller var ise rotalar çizilirken engellerin olduğu yasaklı harita parçalarından geçilmemelidir.

9. Tüm bu işlemler yapılırken robotlar daima birbiri ile haberleşme içerisinde ve harita daima güncel olmalıdır.

10. Algoritmanın sonlandırma koşulu, tüm robotların belirlenen konumlara ulaşması olacaktır. Bu konumlar daha önce de bahsedildiği gibi alanın durumuna göre yapay potansiyeller yöntemine göre değişebilir.

Uygulamada robotlar için optimum hedef noktayı belirlemede kullanılacak olan algoritma; Kaba Kuvvet Algoritması, Açgözlü Algoritma ve minimum uzaklığa sahip olan bir sonraki hedef noktaların kıyaslanmasına dayalı yöntemler ile karşılaştırılması sonucu seçilmiştir.

Page 24: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

14

2.1.3.1.1. Kaba Kuvvet (Brute Force) Algoritması

Bir problemi çözmek için en basit yaklaşımdır. Bu algoritma, çözüm olabilecek tümsonuçları tarayıp değerlendirmeye dayalıdır. Tüm sonuçlar denendiği için algoritma karmaşıklığı yüksektir ve büyük problemlerin çözümünde çok fazla zaman gerektirir.

2.1.3.1.2. Açgözlü Algoritma

Bir problemin çözümünde ileride doğabilecek sonuçlar göz önüne alınmadan, mevcut şartlar altında en iyi olan seçimin yapılması gerektiğini savunan yaklaşımına Açgözlü Algoritma (Greedy Algorithm) denir [32].

Bu yaklaşıma açgözlü denilmesinin nedeni kısa vadeli çözüm bulma arayışındankaynaklanmış olabilir. Temel ilke, lokalde (o adımda) bulunan çözümün globalde (genelde) de işe yarayabileceği düşüncesidir [32].

Bu iki algoritma ve belirlenen diğer algoritmanın karşılaştırılması için 5 robot ve 5 hedef arası optimum mesafelerin hesaplanmasına bakılmıştır. Sonuçlara dair ekran görüntüleri aşağıda verilmiştir.

Şekil 2.1.3.1.1. Açgözlü Algoritma ile elde edilen sonuç.

Page 25: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

15

Şekil 2.1.3.1.2. Aynı hedefi seçen robotların bir sonraki en yakın hedeflerinden mesafesi küçük olanının o yeni hedefi seçmesi ile elde edilen sonuç.

Şekil 2.1.3.1.3. Şekli Oluşturma bölümünde minimum yola göre verilen yöntem ile elde edilen sonuç.

Page 26: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

16

Şekil 2.1.3.1.4. Kaba Kuvvet Algoritması ile elde edilen sonuç.

Açgözlü Algoritma duruma göre en verimli ya da daha az verimli sonuçlar verebilir.Temel olarak en yakın olan hedefi seçme eğiliminde olduğu için en kötü sonucu vermeihtimali yoktur.

Robotların aynı noktayı hedeflemesi sonrasında bir sonraki en yakın hedeflerine göreincelenmesi durumu her zaman en verimli sonucu vermese de çoğunlukla en verimli sonucayakın değerler üretebilmektedir.

Kaba Kuvvet Algoritması, en uygun sonucu verse de algoritma karmaşıklığı ile beraber artan işlem süresi, aynı ya da yakın sonuçlar veren daha hızlı diğer algoritmaları tercih sebebi kılmaktadır.

Tüm bu karşılaştırmalar sonucu projeye yönelik geliştirilen algoritma minimum yolun hesaplanmasında kullanılmıştır. Rotaların belirlenmesinden sonra rotalar üzerinde bir engel olması durumunda yeni rota D* Lite algoritması kullanılarak oluşturulacaktır. Yol planlama problemlerinin çözümü için A*, Dijkstra’s Search, D*, Focused D* ve D* Lite gibi birçok algoritma bulunmaktadır. Tüm bu algoritmaların karşılaştırılması sonucu D* Lite algoritmasının projeye en uygun engellerden kaçma ve yol planlama algoritması olduğuna karar verilmiştir. Daha iyi anlaşılması için her bir yol planlama algoritmasının tanımlanması sırası ile yapılmıştır.

2.1.3.1.3. A* Algoritması

A* Algoritması başlangıç düğümünden bitiş düğümüne olan en az maliyetli yolubulmada kullanılır [33]. A* ilk olarak 1968 yılında kullanılmıştır [34]. GBFS’nin olduğu gibisezgisel arama algoritmasıdır. A yıldız(A*) Algoritmasında farklı olarak bilinen bir gerçekdeğer vardır. Bu değer sezgisel tahmin değerine eklenerek sezgisel fonksiyon hesaplanır [35].

Page 27: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

17

En kısa yol hesaplanırken; toplam maliyet işlevi f(x), uzaklık işlevi g(x) ile buluşsal(heuristic) işlev h(x) toplanarak elde edilir [36].

f(x) = g(x)+ h(x) (2)

Yol maliyet işlevi g(x), başlangıç düğümünden üzerinde bulunulan düğüm arasındakiyol uzunluğu ile hesaplanır [36]. h(x) işlevi buluşsal işlev olarak adlandırılır, bu işlev ise üzerinde bulunulan düğüm ile bitiş düğümüne bakılarak bulunur. h(x) bitiş düğümüne kadar olan düz bir çizgiyi temsil edebilir, fiziksel olarak ise iki nokta arasındaki mümkün olan en kısa mesafedir [37].

Şekil 2.1.3.1.3.1. A* Algoritması ile yolun belirlenmesi [36].

2.1.3.1.4. Dijkstra Arama Algoritması

Algoritma işleyişini bir örnek üzerinden inceleyelim.

Şekil 2.1.3.1.4.1 Dijkstra Arama Algoritması örnek alan [38].

1. O = {S}

2. O = {1, 2, 4, 5}; C = {S} (1,2,4,5‘in geri dönüş düğümleri S)

3. O = {1, 4, 5}; C = {S, 2} (C içerisine düğüm eklenmiyor)

Page 28: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

18

4. O = {1, 5, 3}; C = {S, 2, 4} (1, 2, 4’ün geri dönüş düğümleri S; 5’in geri dönüş düğümü 4)

5. O = {5, 3}; C = {S, 2, 4, 1}

6. O = {3, G}; C = {S, 2, 4 1} (Hedef düğüme S -> 4 -> 5 -> G şeklindeki yol izlenerek ulaşılır.) [38].

Burada S başlangıç düğümü, G hedef düğümü temsil etmektedir. O (Open) ise açılan düğümleri, C (Close) kapanan düğümleri listeler.

Bu algoritmada çözümün uzunluğuna göre arama alanı üssel olarak büyümektedir.

2.1.3.1.5. D* Algoritması

D* Algoritması, 1994 yılında Anthony Stentz [39] tarafından tanıtılmıştır. D* adı"Dinamik A*" teriminden gelmektedir. Çünkü D* Algoritması çalışırken ark maliyetlerinindeğişebilmesi dışında A* gibi davranır.

D* (Dinamik A*) Algoritması, kısmen bilinen, bilinmeyen veya değiştirilen alanlardayol planlaması yapabilir. D* ve varyantları mobil robot ve özerk araç navigasyonu içinyaygın olarak kullanılmaktadır.

D* Algoritmasının yürütülmesi, ilk planlama ve yeniden planlama aşamalarınaayrılabilir. Robotun başlangıç konumunda durması durumunda ilk planlama yapılır verobotun hareketi sırasında değişen engellerin olduğu düğümleri tespit etmesi durumundayeniden planlama yapılır.

A* gibi, D*, "OPEN list" (var olan listeyi temsilen “AÇIK liste”) olarak bilinendüğümlerin bir listesini tutar. Düğümler birkaç durumdan birine sahip olarak işaretlenmiştir[40].

YENİ (NEW), düğüm AÇIK(OPEN) listesinde hiç bulunmuyor demektir.

AÇIK(OPEN), düğümün şu anda AÇIK(OPEN) listesinde olduğu anlamına geliyor.

KAPALI(CLOSE), düğüm artık AÇIK(OPEN) listede değil.

Maliyetinin AÇIK(OPEN) listesindeki en son fiyattan daha yüksek olduğunu belirten düğüm işareti: ARTIŞ(RAISE)

DÜŞÜŞ(LOWER), düğümün maliyetinin AÇIK(OPEN) listesindeki en son fiyattan düşük olduğunu gösterir [40].

Page 29: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

19

D* Algoritması optimaldir. Geniş ve karmaşık alanlarda daha verimlidir. Geri dönük hesaplama maliyetinden kaçınır [38].

Şekil 2.1.3.1.5.1. D* Algoritması ile ilk rotanın hesaplanması. [41]

Şekil 2.1.3.1.5.2. Engel tespiti sonrası D* Algoritması ile yeni rotanın hesaplanması. [41]

2.1.3.1.6. Odaklanmış (Focused) D* Algoritması

Odaklanmış D* Algoritması sezgisel g (X, R) fonksiyonu ile robotun R konumundan X konumuna kadar tahmini bir yol maliyeti olduğunu belirtir. Bu algoritma genellikle robotun; tutarsızlıkları bulduktan bir süre sonra hareket ettiğini varsayar [38].

2.1.3.1.7. D* Lite Algoritması

Özerk araç navigasyon problemini çözmek için D* Lite Algoritması tasarlanmıştır.

Page 30: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

20

Koenig’in, artımlı aramayı içeren A* araştırmasının bir türevi olan, Yaşam Boyu PlanlamaA* (Lifelong Planning A*) uyarlamasıdır. Artımlı arama yöntemleri, her arama görevinisıfırdan çözerek mümkün olandan çok daha hızlı bir şekilde benzer sorunlara çözümler bulmak için önceki aramalardan gelen bilgileri yeniden kullanır.

D* Lite Yöntemi, D* yöntemi ile aynı şekilde davranır, ancak algoritma olarak D*'dan farklıdır. Bu yöntem basittir, kesin olarak analiz edilebilir, genişletilebilir ve D* kadarverimlidir.

D* Lite A* ‘a dayanır. Bekleyen düğümleri öncelik sırasına göre saklar. Düğümler nesnel fonksiyon değerlerine göre artan sırada saklanır. Haritada değişiklikler meydana geldiğinde çözüm yollarını aşamalı olarak arar. Hızlı yeniden planlama yapar. D* ile benzer işlevselliktedir ama daha basit bir algoritmaya sahiptir [38].

D*Lite Algoritması düğüm başına iki maliyet tahmini tutar;

g -> nesnel fonksiyon değeri. Biz ne biliyorsak ona dayanır. (adım sayısı gibi)rhs -> nesnel fonksiyon değerinin bir adımlık görünüş tahmini.

Tutarlılık tanımı ise şu şekilde yapılır;

Tutarlı -> g = rhs Tutarsız -> g ≠ rhs

Tutarsız düğümler işlenmek için öncelik kuyruğuna (open list) alınır. Geri dönüş düğümü bilgisi tutulmaz [38].

Grafikte a’dan b’ye yönlendirilmiş bir kenar var ise b’nin a’nın ardılı olduğu ve a’nın b’nin öncülü olduğu söylenir [38].

Şekil 2.1.3.1.7.1. Düğümler arası ilişki grafiği [38].

Bir düğümün rhs değeri; grafikteki haleflerin g değerlerine ve kenarların bu haleflere geçiş maliyetlerine dayanarak hesaplanır. (g değeri “0” olan hedef noktasından başlanarak.) [38]

Açık listedeki bir düğümün anahtarı/önceliği g’lerin minimumudur ve rhs değeri ile sezgisel fonksiyon değeri olan h’ın toplamıdır [38].

(3)

Page 31: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

21

Daha iyi anlaşılması için aşağıdaki örneğin adımları ile incelenmesi faydalı olacaktır.

Şekil 2.1.3.1.7.2. D* Lite Algoritması örneği başlangıç durumu [38].

Şekilde yol maliyetlerinin hesabı aşağıdaki şekilde yapılacaktır.

Şekil 2.1.3.1.7.3. Yol maliyetlerinin hesaplanması [38].

Örnekte sezgisel fonksiyon kullanılmamıştır ( h = 0). Başlangıçta hedefin rhs değeri 0, diğer tüm düğümlerin rhs ve g değerleri ∞ olarak ayarlanır.

(4)

Page 32: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

22

Şekil 2.1.3.1.7.4. Başlangıç durumunda her düğüm için yol maliyetleri [38].

Asgari öğe açık listeye alınır (hedef). Aşırı tutarlıdır. (g > rhs) g = rhs olarak güncellenir.

Şekil 2.1.3.1.7.5. Hedef düğümü açık listeye alındı [38].

Küçük oklar hangi düğümün rhs değerini hesaplamak için kullanıldığını gösterir. Örneğin (0,1)’in rhs değeri (0,0)’ın g değeri ve (0,1) ile (0,0) arasındaki geçiş maliyeti kullanılarak hesaplanır. 1 = 0 + 1

Page 33: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

23

Şekil 2.1.3.1.7.6. rhs değerlerinin hesaplanması [38].

Açık listeden minimum öğe açılır, (0,1) aşırı tutarlıdır (g > rhs) bu yüzden g = rhs yapılarak güncellenir.

Şekil 2.1.3.1.7.7. (0,1) düğümünün güncellenmesi [38].

Açılan düğüm (0,1) genişletilir. Seleflerin rhs değerleri hesaplanır ve tutarsız hale gelenler açık listeye eklenir.

Page 34: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

24

Şekil 2.1.3.1.7.8. (0,1) seleflerinin açık listeye eklenmesi [38].

Bazı öncüllerin örneğin (0,0) ve (1,1) ‘in rhs değerleri değişmemektedir. Dolayısıyla tutarsız hale gelmezler ve bu aşamada tekrar açık listeye eklenmezler.

Açık listeden tekrar minimum değere sahip olan öğe açılır. (1,0) aşırı tutarlıdır (g > rhs) bu yüzden g = rhs olarak güncellenir.

Şekil 2.1.3.1.7.9. (1,0) ‘ın güncellenmesi ve tutarlı hale gelip açık listeden çıkarılması [38].

Page 35: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

25

Açılan düğümün yani (1,0)’ın genişletilmesi gerekir ama bu noktada seleflerin rhs değerleri bu düğümlerde engel olduğu için azaltılamaz. Bu yüzden bu düğümler açık listeye alınamaz. Düğüm genişletilemez. Adımlara devam edilerek açık listeden minimum değere sahip olan öğe açılır. (0,2) g > rhs olduğu için aşırı tutarlıdır. g = rhs şeklinde güncellenerek açılır ve açılan düğümde genişletme işlemi yapılır.

Şekil 2.1.3.1.7.10. (0,2) ‘nin genişletilmesi [38].

Açık listeden minimum değere sahip olan (1,2) düğümü seçilip açılır. g > rhs -> g = rhs

Şekil 2.1.3.1.7.11. (1,2) ‘nin açılması [38].

Page 36: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

26

Açık listeden tekrar minimum değere sahip olan öğe açılır. (0,3) için g değeri güncellenir. Bu düğümde genişletilecek yani açık listeye eklenecek yeni düğüm yoktur. Açık listeden minimum değerdeki sonraki düğüm (1,3) açılır ve g değeri g = rhs şeklinde güncellenir. Bu düğümünde genişletilecek komşusu olmadığı için listeden (2,2) düğümü açılır. g değeri güncellenip düğüm genişletilir.

Şekil 2.1.3.1.7.12. (2,2) ‘nin genişletilmesi [38].

Açık listeden minimum değerdeki (2,3) düğümü açılır. Bu düğümden genişletilecek yeni düğüm olmadığı için sıradaki düğüm (3,2) açılır. Bu düğümden genişletme işlemi yapılır.

Şekil 2.1.3.1.7.13. (3,2) ‘nin genişletilmesi [38].

Page 37: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

27

Başlangıç düğümü açık listeye eklendi ama arama bu noktada tamamlanmıyor. Açık listeden minimum değerdeki eleman (3,3) seçilerek açılır. Bu düğümden sonra ise (3,1) düğümü açılır ve genişletilir. Sonra ise minimum değerdeki (4,2) düğümü açılır. Açık listede olmayan komşu düğümü kalmadığı için genişletilemez. Bu noktada başlangıç düğümü tutarlıdır ve açık listedeki üst anahtar başlangıç düğümününkinden daha az değildir. Bu yüzden en uygun yol oluşmuş kabul edilir ve döngüden çıkılır. Açık listede hala düğümler olduğu unutulmamalıdır. Daha büyük haritalarda hiç bakılmamış düğümler bile kalabilir. En uygun yol bulununca iterasyonlar biter.

Yol oluşturulurken başlangıç durumundan g değerlerinin derecesi izlenir.

Şekil 2.1.3.1.7.14. Başlangıç noktasından hedefe doğru yolun izlenmesi [38].

Robot yolu takip edip (3,2) ‘den (2,2) ye giderken bir engel olduğunu keşfettiğini varsayalım. Bu aşamada yeniden planlama gerekir. Etkilenen tüm kenarlar için yeniden hesaplama yapılır. Bu da (2,2) ‘nin komşusu olan 8 düğüm için 16 kenar demektir (çift yönlü oldukları için). İlk önce (2,2) ‘den komşuları yönüne olan kenarlar hesaplanır. (2,2) ‘nin rhs değeri “∞” olur. Açık listeye alınır ve g ≠ rhs olduğu için tutarsızdır. Daha sonra komşularından (2,2) ‘ye gelen kenarların maliyetleri tekrar hesaplanır. (2,2) ‘nin rhs değeri ∞ olduğu için bu düğüm kullanılarak açılan tüm düğümlerin maliyeti değişir.

(2,2)’nin komşularından biri (3,3)’tür, bu düğümün rhs değeri 4,8’dir. Bu değer (2,2) ‘den değil artık (2,3) ’ten gelmektedir, hala tutarlı durumda olduğu için açık listeye alınmaz.

(2,2)’ nin diğer bir komşusu (3,2) ‘dir. (2,2) ‘nin geçiş maliyetinin artması nedeniyle (3,2)’ nin geçiş maliyeti (2,3) ’ün g değerine göre hesaplanır, yeni g değeri 5,2 olur. g ≠ rhs olduğundan tutarsızdır, bu sebeple açık listeye alınır.

Page 38: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

28

Şekil 2.1.3.1.7.15. (2,3) ‘ün yeniden açık listeye alınması [38].

(2,2) ‘nin bir diğer komşusu (3,1) ‘dir. (3,1) ‘in rhs değeri (3,2) ‘nin g değerine göre 5,4 olarak hesaplanır. g ≠ rhs olduğundan tutarsızdır ve açık listeye eklenir. Diğer komşuları kendisinden açılmadığı için tutarsızlığa neden olmaz. Şimdi en uygun yol yeniden hesaplanana kadar algoritma tekar çalıştırılır. Robotun şuanki konumuna karşılık gelen düğüm tutarsız ve açık listedeki minimum anahtardan büyük değere sahip. Bu nedenle henüz en uygun yolun bulunmadığı kabul edilir.

Şekil 2.1.3.1.7.16. (3,1) ‘in açık listeye alınması [38].

Page 39: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

29

Açık listeden minimum değere sahip eleman (2,2) seçilir. Düşük tutarlıdır g < rhs, g = ∞ olur. Açılan düğüm genişletilir ve tutarsız hale gelen düğümler açık listeye eklenir. Bu düğüm için açık listeye alınacak düğüm yoktur.

İterasyonlar takip edilerek açık listeden minimum değere sahip eleman (3,2) seçilir. g < rhs olduğundan düşük tutarlıdır. g = ∞ olarak güncellenir ve düğüm genişletilir. Değerler güncellenir, (4,2) tutarsız hale gelir. (3,1) güncellenir, hala tutarsızdır. (4,1) ‘in rhs değeri değişmez ancak şuan (3,1) ‘in g değerine göre hesaplanmaktadır.

Şekil 2.1.3.1.7.17. (3,2) ‘nin genişletilmesi [38].

(3,2) açıldığında hala tutarsız olduğundan açık listeye tekrar eklenir.

Açık listeden minimum değere sahip olan (3,1) düğümü seçilir. g < rhs olduğundan düşük tutarlıdır, g = ∞ olur. Düğüm genişletilir. Değerler güncellenir. (4,1) güncellenir ama hala tutarsız olduğundan açık listeden çıkarılmaz. (3,0) ve (4,0) güncellenir, g = rhs olduğundan tutarlıdırlar bu yüzden açık listeden çıkarılırlar. (3,1) açıldıktan sonra da hala tutarsız olduğundan açık listede kalır.

Page 40: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

30

Şekil 2.1.3.1.7.18. (3,1) hala açık listede [38].

Açık listeden minimum değere sahip eleman (3,2) seçilir. g > rhs olduğundan aşırı tutarlıdır, g = rhs = 5,2 olur. Tutarlı hale geldiği için açık listeden çıkarılır. Açılan (3,2) düğümü genişletilir. (3,1) düğümü güncellenir, yeni rhs değeri (3,2) ‘nin g değerine bağlı olarak 6,2 olur ama hala tutarlı hale gelmediği için açık listede kalır. Bu noktada robotun şuanki konumuna karşılık gelen düğüm tutarlıdır ve açık listedeki üst anahtar bu düğümün anahtar değerinden daha az değildir. Bu yüzden en uygun bulunduğu kabul edilir ve döngüden çıkılır. Yol için robotun şuanki konumundan hedef konuma doğru g değerleri takip edilir. Yani bulunulan düğüm hangi düğüm takip edilerek açıldı ise o düğüme geçiş yapılır.

Şekil 2.1.3.1.7.19. Yolun oluşturulması [38].

Page 41: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

31

D* Lite gerçek maliyetlere odaklı çalışır. Pratikte D* Lite araması değeri g ve rhs değerlerine eklenecek olan bir sezgisel h değerine odaklanacaktır. Bu örnekte tüm düğümler için h = 0 kabul edilmiştir. Örnek D* Lite ‘nin temel versiyonudur. Son halinde şu optimizasyonlara da sahiptir;

Her seferinde tüm komşu düğümleri düşünmeden rhs değerini güncelle

Tüm açık listeyi yeniden sıralamadan rahat hareket ettikçe aramayı yeniden odaklama[38]

Projenin minimum yola göre şekil oluşturma kısmı ve bu kısımda uygulanan algoritmalar bu şekilde özetlenebilir.

2.1.3.2. Şeklin Belirlenen t Süresi Sonunda Oluşturulması

Gönderilen şeklin oluşturulmasında robotların belirlenen t süresi sonunda aynı andahedef noktalarına ulaşması istenir ise daha kısa zamanda hedef konumuna ulaşabilecekrobotlar için zaman doldurmak adına daha uzun rotalar belirlenmelidir. T süresi belirlenirkenen uzak hedef noktaya olan minimum mesafeye olan gidiş süresi alt sınır olacaktır. Şekli Oluşturma bölümünde minimum yola göre verilen yöntemin adımlarından ilk 2 adım aynışekilde işlenecektir. Bu problem için adımların devamı aşağıdaki gibidir.

3. Şeklin noktaları belirlendikten sonra tüm robotlardan tüm noktalara doğrusal yollar hesaplanır. İstenilen t anına en yakın sürede ulaşabilecekleri noktalar robotlar için hedef noktalar olarak belirlenir.

4. Aynı noktanın seçilmesi durumunda robotların boşta kalan noktalara uzaklıklarına bakılıp t süresine en yakın sürede ulaşması mümkün olan robot için hedef değiştirilir.

5. Robotların hedef noktaya ulaşmaları t süresinden daha kısa olacak ise rotalarına ekleme yapılarak yolları uzatılır. Robotların sabit beklemesi istenmediğinden rotaların kesişmemesi gerekmektedir ve ortamda engel olmadığı varsayılmıştır.

6. Eğer robotların sahip oldukları hız değerine göre istenilen şeklin noktalarına ulaşılması mümkün değilse şeklin boyutları orantısal olarak küçültülebilir. Robotların çok fazla dolanmaları gerekecek ise, en uzun mesafe verilen t süresinde tamamlanacak şekilde şeklin ölçeği büyütülebilir.

7. Algoritmanın bitme koşulu robotların hedef noktalarına aynı anda ulaşmaları olacaktır.

Page 42: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

32

Projenin bu kısmında yolunun uzatılması gereken robotlar eğik bir rota izlemelidir. Bunun sağlanabilmesi için yollar çizilirken Bezier Eğrilerinden faydalanılacaktır.

2.1.3.2.1. Bezier Eğrileri

Bézier eğrisi, özellikle bilgisayar grafikleri ve ilgili alanlarda sıklıkla kullanılan parametrik eğri biçimidir. Eğri, seçilen kontrol noktaları esas alınarak oluşturulur. İlk ve son noktalar eğri ile kesişirken, seçilen diğer noktalar genellikle eğrinin üzerinde yer almaz (interpolasyon eğrisi). Günümüzde modelleme uygulamalarından, yazı tipi oluşturma tekniklerine kadar sayısız alanda kullanılmaktadır [42].

Şekil 2.1.3.2.1. Kübik Bezier eğrisi [42].

Bezier eğrileri, bilgisayar grafiği alanında sıklıkla kullanılan parametrik bir eğri biçimidir. Kontrol noktası olarak adlandırılan noktaları input olarak alıp bu noktalara göre bir eğri oluşturulmasında bezier eğrisi algoritması kullanılır. İlk olarak 1970 lerde CAD/CAM yazılımları için Fransız matematikçi Pierre Bézier tarafından ortaya konmuştur. Günümüzün bir çok grafik programı bu yöntemi yoğun olarak kullanır [43].

İşin biraz matematiğine bakacak olursak; verilen nokta sayısına (control point) bağlı olarak eğrilere farklı isimler verilir, sadece 2 kontrol noktası ile çizilen eğri lineer bezier eğrisi olurken, 3 kontrol noktası ile çizildiğinde Quadratic bezier eğrisi, 4 nokta ile çizilirse Cubic bezier eğrisi şeklinde adlandırılır. Eğri üzerindeki tüm noktaları tek tek tanımlama zorunluluğu olmadan en az sayıda nokta ile bir eğri tanımlanabilir. Kaç nokta ile çizildiğinin bir önemi olmaksızın Bezier eğrilerinin genelleştirilmiş formülü aşağıdaki şekildedir [43] :

n = 5 için ;

(5)

Projede robotların parabolik bir yol izleyerek yollarını uzatmaları istendiği için üç nokta ile oluşturulan karesel Bezier eğrilerinin kullanımı uygun olacaktır.

Page 43: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

33

Şekil 2.1.3.2.2. Karesel Bezier eğrisi [44].

Üç nokta ile belirtilen karesel Bézier eğrileri, ikinci dereceden denklem meydana getirdiklerinden parabolik bir şekil oluştururlar [42].

(6)

Projenin bu aşamasına gelindiğinde robotların başlangıç konumları ve hedef noktaları belirlenmiş olacaktır. Burada belirlenen t süresi sonunda konum noktasına gidecek rota Bezier eğrisi ile oluşturulacaktır. Robotların sabit v hızında hareket ettiği unutulmamalıdır. Bilinen temel yol-zaman-hız formülüne göre v hızı ile t sürede alacağı yol = x = v*t ‘ye eşit olacaktır. Burada yol eğrisel olacağından hesaplaması biraz karmaşıktır. Parabol uzunluğu ya da yay uzunluğu hesaplama formülü şu şekildedir;

(7)

Bezier eğrilerinin uzunluk formülü ise şu şekildedir;

(8)

Page 44: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

34

Projede t süresi hız ve uzunluk bilinirken bilinmez olan bu uzunluğa sahip eğrinin denklemidir. Bu formüller kullanılarak eğri denklemine ulaşmaya çalışmak zor bir işlem olacaktır ama Bezier eğrilerinde eğrinin oluşumu t süresine bağlı olduğundan bu süre robotların ulaşması için belirlenen süre ile senkronize edilirse uzunluk hesabı yapılmadan istenilen sonuç elde edilmiş olacaktır. Belirlenecek 3. referans noktası için ise başlangıç ve bitiş noktası arasında kalan bölgeden rastgele bir nokta belirlenebilir. Bu referans noktasının konumu sadece eğrinin şeklinde bir değişikliğe sebep olacaktır.

Proje tasarımında açıklanan tüm bu teorik kısımların uygulanabilirliğini görmek açısından prototip robotlar geliştirilmiştir. Bu kısım projenin ikinci aşamasını oluşturmaktadır.

2.2. Robotların Tasarımı

Önceki bölümde teorik açıklaması yapılan projenin uygulamasını sağlamak amacıyla basit robotlar tasarlanmıştır. Bu robotlarda ilk olarak düşük maliyetli olmaları gözetilmiştir ve proje genel olarak mekandan bağımsız tasarlanmıştır. Mekandan bağımsızlıktan kasıt robotların yönetimi bilinen bir haritaya ya da tepeden hepsini gören bir kamera gibi sabit bir gözlemciye bağlı değildir.

Bu çalışmada oluşturulmak istenen çok robotlu sistem için her bir robotun altıgenformda olmasına karar verilmiştir. Bu form, robot sayısı arttığında istenilen şeklin oluşturulması için en uygun yapıdır. Ayrıca altıgen yapıdaki robotun çevresini algılayacaksensörlerin daha geniş bir alanı taraması mümkün olacaktır. Tüm parçaların rahatça yerleştirilebilmesi için kenar uzunluğu 9 cm olan bir altıgen oluşturulmuştur. Parçaların çalışıp çalışmadığını gösteren ledlerin görülebilmesi için üst kapakta daire şeklinde bir açıklık bırakılmıştır. Bu kısım pillerin şarj edilebilmesi için de kullanılacaktır.

Şekil 2.2.1. Robotun tepeden görünüşü.

Page 45: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

35

Şekil 2.2.2. Robotun önden görünüşü.

Görüldüğü üzere robotun tüm kenarlarına ölçüm seviyesini arttırmak için sensörler yerleştirilmiştir.

Şekil 2.2.3. Robotun alttan görünüşü.

Robotun dış kısmı pleksi levhalardan tasarlanmıştır. Bu levhalar hafif bir yapıdadır ve lazer kesim ile istenilen şekilde alınabilmesi çok kolaydır, maliyeti düşüktür.

Robot tasarımı yapılırken parçaların rahatça değiştirilebilir olması durumu göz önünde tutulmuştur. Bu sebeple kolayca sökülüp takılabilen bir dizayn geliştirilmiştir.

Page 46: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

36

Şekil 2.2.4. Robotun üst kapak olmadan görünüşü.

Şekil 2.2.4. ‘te görüldüğü üzere üst kapak köşelerde bulunun vidalara takıldığı için rahatlıkla çıkarılabilen bir yapıdadır.

Robot ölçeği belirlenirken parçaların rahatça yerleştirilmesi dikkate alınmıştır.

Şekil 2.2.5. Parçaların robot içerisinde yerleşimi.

Robotun taban kısmında motor sürücülerin sabit yerleşimini sağlamak için destekler eklenmiştir.

Page 47: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

37

Şekil 2.2.6. Robot taban - alt kapak tasarımı.

2.2.1. Donanım

Robot tasarımı yapılırken her bir birim için en düşük maliyet ve kolay yönetilebilirlikbaz alınmış ve esnek tasarım yapısı gözetilmiştir. İşlem yükü çok fazla olduğu için prototip robotlarda bilgilerin bilgisayar üzerinde işlenmesine karar verilmiştir. Raspberry gibi güçlü bir işlem biriminin robotların her birine eklenmesi kullanılacak diğer parçaların da işlem birimine uygunluğunu gerektirdiğinden maliyeti çok fazla arttıracaktır. Robotların merkezi işlem birimi olarak düşük güç tüketimi, kolay yönetimi ve fonksiyonel modülleri ile Arduino’nun bir ürünü olan ESP-32S modülü tercih edilmiştir. Bu modül ile bilgisayar arasında veri alışverişi sağlanacak bilgisayar gelen verileri işleyip komut gönderme işlevini gerçekleştirecektir. ESP-32S modülü gelen komutlar doğrultusunda robotun diğer birimlerinin idaresini sağlayacaktır.

Şekil 2.2.1.1. ESP-32S Modülü [45]

Page 48: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

38

Bu kart 2.4GHz çift modlu Wi-Fi ve Bluetooth çipleri ile birliktedir. Bu da iletişim için ayrı bir birim ekleme ihtiyacını ortadan kaldırır.

Robotlarda ortak haritanın tutarlı olmasını sağlamak amacıyla robotlara pusula eklenmiştir. Robotik pusulalar incelendiğinde düşük maliyetli ve az alan kaplaması sebebiyle HMC5883L 3 Eksenli Pusula Sensörü - Manyetometre - GY-271 tercih edilmiştir.

Şekil 2.2.1.2. HMC5883L 3 Eksenli Pusula Sensörü - Manyetometre - GY-271 [46].

Robotların çevreyi algılamalarını sağlayıp harita oluşturabilmek ve çarpışmaları önlemek için maliyeti yüksek olan kamera ya da lidar sensör yerine ultrasonik sensör kullanılması daha uygun bulunmuştur. Robotların yan yüzeylerine her robotta 6 tane olacak şekilde yerleştirilmişlerdir. Bu şekilde yerleştirilmeleri daha geniş açılı bir tarama imkanı sağlamaktadır.

Şekil 2.2.1.3. HC-SR04 Arduino Ultrasonik Mesafe Sensörü [47].

Güç kaynağı olarak kolay şarj edilebilir ve hacmi küçük olduğu için lipo batarya tercih edilmiştir. 1500 mAh ‘lik batarya robotun yarım saat çalışmasına yetmektedir.

Page 49: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

39

Şekil 2.2.1.4. 7,4V 2S Airsoft Lipo Batarya 1500mAh 20C - (16x25x67) [48].

Robot içerisinde tüm parçalara düzenli bir güç dağılımını sağlayabilmek için güç kartı kullanılmıştır.

Şekil 2.2.1.5. 3.3 V/5 V Breadboard Güç Kartı [49].

Yüksek akım gereken motorlar için 3 Ampere kadar geçirebilen regülatör kullanılmıştır.

Şekil 2.2.1.6. Mini Ayarlanabilir 3 A Voltaj Regülatör Kartı - LM2596-ADJ [50].

Gezgin robotların hareketini sağlamak amaçlı 2 adet motor ve motorları kontrol etmekiçin motor sürücüleri kullanılacaktır. Bunun için kontrolü daha kolay olan step motorlar tercih edilmiştir.

Page 50: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

40

Şekil 2.2.1.7. 28 BYJ-48 Redüktörlü Step Motor ve ULN2003A Step Motor Sürücü Kartı [51].

Motor sürücülerin daha stabil çalışmasını sağlamak ve zarar görmesini önlemek için soğutucular eklenmiştir.

Şekil 2.2.1.8. Mini Soğutucu [52].

Robotların hareketini sağlayabilmek için hafif ve step motorlar ile uyumlu 2 adet tekerlek kullanılmıştır, ayrıca dengede durmasını ve her yöne rahat hareket edebilmesini sağlayabilmek için her robotta iki adet de sarhoş tekerlek kullanılmıştır.

Şekil 2.2.1.9. 50x11 mm Yeşil Renk Geçmeli Tekerlek [53].

Şekil 2.2.1.10. 12,7 mm Sarhoş Tekerlek [54].

Page 51: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

41

Bu parçalara ek olarak pillerin seviyesinin gözlemlenebilmesi için lipo seviye ölçer ve alarm modülü kullanılmıştır.

Şekil 2.2.1.11. Lipo Seviye Ölçer ve Alarm Modülü [55].

Parçaların dış kasa ile birleştirilmesi aşamasında ise m3 somun, vida, aralayıcı ve pul kullanılmıştır.

Tüm bu parçaların ESP modülü ile birleşim şeması aşağıdaki gibidir.

Şekil 2.2.1.12. Parça birleşim şeması.

Pinlerin birleşimi şemada verilen şekilde yapılmıştır.

Page 52: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

42

2.3. Yazılım

Projenin yazılım aşamasında birçok farklı platformdan yararlanılmıştır. Donanımsal olarak tercih edilen Arduino için kendi yazılım arabirimi mevcuttur. Temel seviyede bir kodlama yapısına yakın bir programlama dili ile robotlar kolayca programlanabilir. Bu kısımda robotlardan veri alma ve robotlara komut/veri gönderme işlemi yapılacaktır. Burada yazılan kod Robotların işlem birimi olan ESP-32S modülü üzerinde koşacaktır. Arduino yazılımı bir geliştirme ortamı (IDE) ve kütüphanelerden oluşur. IDE, Java dilinde yazılmıştır ve Processing adlı dilin ortamına dayanmaktadır. Kütüphaneler ise C ve C++ dillerinde yazılmıştır ve AVR-GCC ve AVR Libc. ile derlenmiştir [56].

Robotların yönetimi dışında kalan işlemlerin bilgisayar üzerinde yapılacağı daha önce de belirtilmişti. Bunun için öncelikle robotlar ile bilgisayar arasındaki iletişim sağlanmalıdır. Bilgisayarın bir web sunucu gibi davranması hem ara yüz oluşturmayı hem de iletişim kurulmasını kolaylaştırdığından XAMPP isimli uygulama ile bilgisayarın sunucu şeklinde çalışması sağlanmıştır.

XAMPP bir web sunucusu yazılımıdır. Xampp server ile bilgisayara PHP, MariaDB, Perl ve Apache yanında FileZilla ve MercuryMail gibi sistemler kurularak hazır bir web sunucusu oluşturulabilmektedir [57].

Kullanıcı kısmını daha pratik hale getirmek için web platform uygulaması şeklinde bir ara yüz oluşturulmuştur. Ara yüz oluşturulurken tasarımı için HTML ve CSS’ten faydalanılmıştır.

HTML(HyperText Markup Language), bir web sayfasının söz dizimini belirten temsil standartıdır. HTML dokümanı bir metin dosyasından oluşsa da, dil bir programcının metnin yanı sıra grafik, ses ve video gibi karmaşık web sayfası araçlarını kullanabilmesini sağlar. HTML, diller içerisinde ‘bildirimsel(declarative)’ ve ‘işaretlemeli(markup)’ olarak sınıflandırılmıştır. Çünkü dil bir şeyin ne yapması gerektiğini değil nasıl olması gerektiğini tanımlar ve görüntüleme için genel kuralları verir, ayrıntılı biçimlendirme talimatları içermez.

CSS(Cascading Style Sheets), HTML etiketlerinin(tag) tasarım açısından özelleştirilmesini sağlar. Örneğin, web sayfası üzerindeki araçların boyut, renk, yazı tipi vb. gibi görsel bileşenlerinin şekillendirilmesi CSS ile gerçekleştirilir. CSS kullanım açısından avantajlar sağlar.

Ara yüzün temelini oluşturmak için ise PHP kullanılmıştır. PHP sunucu taraflı iletişimler için yaratılmış bir programlama dilidir. Bu nedenle form verisi toplamak, sunucuda dosya yönetmek, veritabanlarını düzenlemek vb. gibi çeşitli sunucu taraflı fonksiyonları yapabilir.

Dinamik bir ara yüz oluşturabilmek için JavaScript kullanılmıştır. JavaScript, yaygın olarak web tarayıcılarında kullanılmakta olan bir betik dilidir. JavaScript ile yazılan istemci tarafı betikler sayesinde tarayıcının kullanıcıyla etkileşimde bulunması, tarayıcının kontrol edilmesi, asenkron bir şekilde sunucu ile iletişime geçilmesi ve web sayfası içeriğinin değiştirilmesi gibi işlevler sağlanır. JavaScript, Node.js gibi platformlar sayesinde sunucu tarafında da yaygın olarak kullanılmaktadır. Web sayfalarının görünümünün mükemmelleştirilmesi, işlevselliğinin artırılması ve dinamik web sayfaları tasarlanması

Page 53: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

43

amacıyla JavaScript, HTML kodu içinde gömülü olarak (embedded) kullanılabilir. JavaScript, bir programlama dili disiplini ve özelliklerine sahiptir [58].

Son olarak ise ara yüz ve arduino arasında bağlantıyı sağlamanın yanında verileri depolamak için MySQL veritabanı yönetim sistemi kullanılmıştır. MySQL bir ilişkisel veri tabanı olarak, 1995 yılında kullanıma sürülen en popüler açık kaynaklı ilişkisel veri tabanı yönetim sisteminden biridir. Güçlü bir veri tabanı yönetim sistemi olan MySQL veri tabanı gerektiren hemen hemen her ortamda rahatlıkla kullanılabilir. Ama özellikle web sunucularında en çok kullanılan veritabanıdır, asp, php gibi birçok web programlama dili ile kullanılabilir [59].

Tüm bu platformlar ve diller kullanılarak oluşturulan yazılım tez düzenini karmaşıklaştırmaması için EKLER kısmında verilmiştir.

2.4. Uygulama

Proje için gerekli malzemelerin temini ve her birimin ayrı ayrı yazılımsal olarak test edilmesi akabinde birleştirme aşamasına geçilmiştir. Uygulama aşamasında üzerinde önemle durulması gereken bazı hususları vurgulamamız gereklidir.

Bir robot projesi deneysel olarak çalışılsa dahi çok disiplinli bir çalışmadır. Ne kadar hazır birimler ve kodlar bulunabiliyor olsa da özgün olması amacıyla yapılan bir projede her satır kod özenle yazılmalıdır ve her birim ayrı ayrı test edilmelidir. Projenin planlaması ve tasarımı yapılırken olması gereken asgari olarak Makine, Elektrik-Elektronik ve Bilgisayar Bilimlerinde yetkin kişilerin birlikte çalışarak projeyi ilerletmesidir. Zira robotun dinamik yapısı için kullanılan yapısal malzemeler kritik önem taşımaktadır. Ayrıca Elektrik-Elektronik bilgisi kullanılan güç kaynağı ve dağıtım sisteminden her elektik-elektronik içeren birime kadar hesaplamanın doğru olması oluşabilecek tehlike ve zararlara karşı çok önemlidir. Bu tespit ve hesaplamalar akabinde açığa çıkacak olan fiziksel yapıya artık yazılım testleri yapılabilir ve elde edilen sonuçlarla tekrardan yine asgari olarak Makine ve Elektrik-Elektronik Bilimi yetkinlerine geri bildirimlerle geliştirmeler yapılabilir.

2.4.1. Robotun Fiziksel Yapısı

Yapılan üç boyutlu tasarım üzerinden elde edilen iki boyutlu parçalar Pleksi adı verilen plastik camlar kullanılarak lazer kesim yöntemi ile elde edilmiştir. Ayrıca step motorun robotun alt parçasına yapıştırmak yerine yine üç boyutlu olarak tasarlanmış bir parça ile tutturulması mekanik yapı açısından doğru bulunmuştur.

Şekil 2.4.1.1. Robot için üç boyutlu tasarlanıp temin edilen bazı parçalar.

Page 54: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

44

2.4.2. Robotun Elektriksel Yapısı

Her elektronik birim kendine özgü özellikler taşır, bu birimlere verilecek voltaj ya da tükettikleri birim zamandaki akım değeri farklıdır. Bu hususlara projenin tasarım aşamasında yeterince özen göstermediğimiz için uygulama aşamasında özellikle step motorların çalışma anlarında kullandıkları akımın fazla olması için ayrıca bir voltaj regülatörü sisteme dahil edilmiştir. Aslında tasarım aşamasına göre birçok temel parça da ya daha iyisiyle ya da ihtiyacı karşılayacak bir türü ile değiştirilmiştir.

Her birimin kullandığı voltaj ve akım değerleri;

ESP32 Geliştirme Kartı: 3.0V ~ 3.6V ve ortalama 80 mA HC-SR04 Mesafe Sensörü: 5V ve ortalama 15 mA GY-371 Pusula Sensörü: 3-5V ve ortalama 10 mA 28 BYJ-48 Step Motor ve Sürücü Kartı: 5V ve ortalama (600 + 100) mA

2.4.3. Arduino Kodlama

Arduino işlem ve yönetim birimi olarak kullandığımız ESP32 bir geliştirme kartıdır. Alınan her birimin ESP32’ye uygunluğu ayrı ayrı kodlanarak test edilmiş ve kararlı şekilde çalışmaları hedeflenmiştir.

Tüm birimlerin ayrı ayrı testleri tamamlandıktan sonra pinlerin tespiti ve kodların birleştirilmesi yapılmıştır. Bu süreçte sensörlerin ve step motorun çalışma mantığı daha net kavranmıştır. Bu sayede toplanılan test kodları üzerinde yapılan bir optimizasyon ile kodlar sade ve kullanışlı bir hale getirilmiştir.

2.4.4. Web Arayüzü ve Yönetim Platformu

Robotlardan elde edilen verilerin işlenmesi üzere işlem merkezi olarak bilgisayara iletilmesi için yerel bir sunucu oluşturulmuş ve WiFi ağı üzerinden veriler aktarılıp veritabanına yazılmıştır. Sayfa yenilenmeden verilerin güncel hallerinin arayüze yansıtılması için Javascript dinamik programlama dilinin asenkron fonksiyon özellikleri kullanılmıştır.

Şekil 2.4.4.1. Web Arayüzü (Üst Sol: Robot ve Çevre Engeller, Üst Sağ: Robottan Gelen Veriler, Alt: Robota Komut Gönderme Butonları)

Page 55: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

45

3. DAHA ÖNCE YAPILMIŞ ÇALIŞMALAR

Konum belirleme, çok robotlu otonom sistemler ve düzen/dizilim kontrolü konularında daha önce yapılmış benzer çalışmalar bulunmaktadır. Bunlardan bazı çalışmalara kısaca değinilmiştir.

2016 yılında İstanbul Teknik Üniversitesi’nde yapılan “Ataletsel Seyrüsefer SistemiGeliştirilmesi ve Hava Aracı Çarpışma Önleme Uygulamalarında Kullanımı” adlı çalışmadaRRT-Star Algoritması kullanılmıştır. Bu algoritma, olasılıksal yaklaşarak çarpışmadankaçmayı hedefler. Bu kaçışı hedeflerken de en optimal yolu bulmaya çalışır ve o yoldanrotasına devam eder. Olasılıksal yaklaşımların savunduğu argüman sonsuz sayıda örneksayısında bulunacak yol limitte en optimal yola doğru gider [60].

2018 yılında IEEE Transactions on Robotics’te yayınlanan çalışmada görüntü işlemekullanılarak dağıtık robotların istenilen forma getirilmesi için bir algoritma oluşturulmuştur [61].

Şekil 3.1. Dayanıklı Dağıtılmış Düzlemsel Dizilim Kontrolü (Robust DistributedPlanar Formation Control for Higher-Order Holonomic and Nonholonomic

Agents) [61].

2018 yılında “İnsansız Hava Araçlarının Görme Tabanlı Dağıtılmış Dizilim Denetimi” adlı çalışmada görüntü işleme kullanılarak insansız hava araçlarının düzen dizilimisağlanmıştır [62].

2011 yılında Karabük Üniversitesi Fen Bilimleri Enstitüsü’nde yer işaretleyicilerikullanılarak görüntü temelli konum algılayabilen gezgin robot üzerine “Gezgin Robot KonumKontrolünün Otonom Olarak Gerçekleştirilmesi” adlı çalışma yapılmıştır [63].

2018 yılında Yamanashi Üniversitesi’nde yapılan ve IFAC Papers Online’dayayınlanan “Dörtdönerin (ing.:Quatrotor) Otonom Uçuş Kontrol Sistemi ve Mobil Robot İleDizilim Denetimi Uygulanması” adlı çalışmada hava aracının otonom uçuş kontrol sistemi vebu sistemin gezgin robot ile düzen dizilimi uygulaması yapılmıştır [64].

2017 yılında Delft Teknoloji Üniversitesi’nde yapılan “Sınırlı Optimizasyon İleDinamik Ortamlarda Çoklu Robot Dizilim Denetimi Ve Nesne Taşıma” adlı çalışmada çokrobotlu sistem ile nesnelerin hareketli ortamda taşınması konusu çalışılmıştır [65].

Page 56: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

46

Şekil 3.2. Üç adet robot ile nesnenin hedef konuma taşınması [65].

2016 yılında Falin Wu tarafından yazılan makalede dronelar için lider takibine dayalıbir düzen dizilimi algoritması verilmiştir [66].

Şekil 3.3. Lider takip eden çoklu drone sistemi [66].

2002 yılında Pensilvanya Üniversitesi yapılan araştırmalar sonucunda yayınlanan“Görüntü Bazlı Dizilim Denetimi Çerçevesi” adlı çalışma ile görüntü temelli bir düzendizilimi ve engellerden sakınma sistemi oluşturulmuştur [67].

Gezgin robotların sanal yapılar kullanarak yüksek hassasiyetli düzen dizilimikonusundan 1997 yılında M. Anthony Lewis’in yazdığı “Autonomous Robots 4” adlı kitaptabahsedilmiştir [68].

Lider takibine dayalı çok robotlu sistemlere yönelik bir çalışma da 2007 yılında LucaConsolini, Fabio Morbidi, Domenico Prattichizzo, Mario Tosques tarafından yapılmıştır [69].

2011 yılında Yıldız Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü tarafından“Gezgin Robotlarla Eşzamanlı Konum Belirleme Ve Haritalama” isimli yüksek lisans tezçalışması yayınlanmıştır [70].

Page 57: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

47

Çok robotlu sistemlerde kullanılmak üzere vektör alan tabanlı düzen dizilimi çalışması “Çok Robotlu Sistemin Vektör Alan Tabanlı Dizilim Denetimi” adlı eserde bahsedilmiştir [71].

Çok robotlu otonom sistemlerde engellerden sakınma üzerine MIT’de yapılan çalışmada geometrik bölgelerin hesaplanmasına dayalı bir optimizasyon yaklaşımı geliştirilmiştir [72].

Şekil 3.4. Geometrik alan hesabına dayalı yaklaşım [72].

2016 yılında Pamukkale Üniversitesi’nde Eşref Boğar tarafından yayınlanan yükseklisans tezinde rota belirleme ve engellerden sakınma üzerine hibrit bir algoritmaoluşturulmuştur [73].

Ankara Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği AnabilimDalı’nda yüksek lisans yapan Mehmet KARA tarafından yazılan yüksek tezde yön bulma veengellerden sakınma problemlerine çözüm olarak karıncaların yiyeceği bulurken en uygunyola yönelmesini örnek alarak oluşturulmuş Karınca Kolonisi Optimizasyonu ve buoptimizasyondan ortaya çıkan Parçacık Sürü Optimizasyonu algoritmaları önerilmiştir [74].

Page 58: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

48

4. SONUÇLAR

Konumları bilinmeyen gezgin robotların verilen şekli oluşturması üzerine yapılan buçalışma için robotlar, konum belirleme, veri alışverişi, sürü optimizasyonu, en kısa yolalgoritmaları vb. konular üzerine birçok araştırma incelenmiştir. Bu süreç sonucunda kapalıalanda konum belirleme ve robotların konumlandırılması konularında zorluklar görülmüş veteorik çözümler elde edilmiştir.

Bu çalışmada, kullanılması planlanan ve önerilen çözümler ile zaman ve maliyetaçısından en optimum sonuçlara ulaşılması amaçlanmıştır. Bu çözümler teorik olarakdüşünülüp pratikte gerçekleştirilmeye çalışılmıştır. Robot tasarımı kısmında verilen mekanik ve elektrikle ilgili teorik kısım tamamen hayata geçirilmiştir. Geriye kalan algoritmik kısım ise yazılım alanında uygulanıp prototipler ve bilgisayar üzerinden çalışması incelenmiştir. Tüm bu yapılan çalışmalar bize düzen kontrolü, ve otonom robotlar ile şekil oluşturma alanındaki problemlerin teorik ve pratik alanlarda çözümünün mümkün olduğunu göstermektedir. Kullanım alanlarının genişliği göz önünde bulundurulur ise bu çalışma birçok büyük çalışmanın da temelini oluşturabilir.

Page 59: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

49

5. KAYNAKLAR

1. https://www.bilgiustam.com/robotlar-ve-robotik-sistemler/

2. http://www.prowmes.com/blog/otonom-robotlar-nedir/

3. https://tr.wikipedia.org/wiki/Robot

4. https://tr.wikipedia.org/wiki/Robotik

5. https://www.teknonce.com/robot-nedir-robotlar-nasil-calisir.html

6. Gürel, U., “Gezgin robotlar için seyrüsefer ve kamera takip sistemi”, Yüksek Lisans Tezi, Osmangazi Üniversitesi Fen Bilimleri Enstitüsü, Eskisehir, p. 1-4, 2006.

7. http://yapbenzet.kocaeli.edu.tr/otonom-robotlar-giris/

8. Negenborn, R., “Robot localization and Kalman filters on finding your position in a noisy world”, M.S. Thesis, Utrecht University, Utrecht, Netherland, p. 155-158, 2003.

9. M.J. Wooldridge, “An Introduction to Multiagent Systems”, John Wiley and Sons Ltd., UK, 2002.

10. Nabiyev, V., Algoritmalar: Teoriden Uygulamalara. Ankara, Türkiye: Seçkin Yayıncılık, p. 44, 2013.

11. Seher. B..Düzen/Dizilim Denetimi. Makale, Karadeniz Teknik Üniversitesi, Trabzon, 2020.

12. Wei Li, Yu Tian, "Chemical Plume Tracing and Mapping via Swarm Robots", 2016

13. Yunyi Jia, "Design and Implementation for Controlling Multiple Robotic Systems by a Single Operator under Random Communication Delays", 2016

14. Hung Manh La, "Multi-Robot Swarm for Cooperative Scalar Field Mapping", 2016

15. Samet Guler, Baris Fidan, Veysel Gazi, "Adaptive Swarm Coordination and Formation Control", 2016

16. Kiattisin Kanjanawanishkul, “Formation Control of Mobile Robots: Survey”, 2016

17. Lewis M.A., Tan K.H., "Autonomous Robots" (High precision formation control of mobile

robots using virtual structures), 1997

18. Tanner H.G., Pappas G.J., Kumar V., “Leader To Formation Stability”, 2004

Page 60: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

50

19. Egerstedt M., Hu X., “Formation Constrained Multi-Agent Control”, 2001

20. Leonard N.E., Fiorelli E., “Virtual Leaders, Artificial Potentials And Coordinated Control Of

Groups”, 2001

21. DeGennaro M.D., Jadbabaie A., “Formation Control For A Cooperative Multi-Agent System

Using Decentralized Navigation Functions”, 2006

22. Zhang F., “Cooperative Shape Control Of Particle Formations”, 2007

23. Tabuada P., Pappas G.J., Lima P., “Motion Feasibility Of Multi-Agent Formations”, 2005

24. Aguiar A.P., Dacic D.B., Hespanha J.P., Kokotovic P., “Path-Following Or Reference-

Tracking? An Answer Relaxing The Limits To Performance”, 2004

25. Habibov, A., "GEZGİN ROBOTLARLA EŞ ZAMANLI KONUM BELİRLEME VE HARİTALAMA", Tez (Yüksek Lisans)-- Yıldız Teknik Üniversitesi, Fen Bilimleri Enstitüsü, 2011.

26. https://sv.wikipedia.org/wiki/Trilateration

27. https://gelecegiyazanlar.turkcell.com.tr/blog/kapali-alanlarda-konum-tespiti

28. https://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/Borderless_Networks/Unified_Access/CMX/CMX_LocFund.html

29. Ankışhan, H., "Eşzamanlı Konum Belirleme ve Harita Oluşturma Probleminin Çözümünde Kullanılan Yöntemlerin İyileştirilmesi", Tez (Doktora) -- Ankara Üniversitesi, Fen Bilimleri Enstitüsü, 2015.

30. Özdemir, V., "Yapay Potansiyeller Ve Yapısal Graflar Kullanılarak Çok Araçlı Sistemlerin Dizilim Kontrolü", Tez (Yüksek Lisans) -- İstanbul Teknik Üniversitesi, Fen Bilimleri Enstitüsü, 2007 (http://hdl.handle.net/11527/7699).

31. Nabiyev, V., Yapay Zeka: İnsan-Bilgisayar Etkileşimi. Ankara, Türkiye: Seçkin Yayıncılık, p. 539, 2016.

32. http://bilgioloji.com/pages/yazilim/kod/program/algoritma/tur/acgozlu-algoritmagreedy-algorithm-nedir/

33. Hart, P. E., Nilsson, N. J. ve Raphael, B. "Correction to "A Formal Basis for the Heuristic Determination of Minimum Cost Paths", SIGART Newsletter, (1972), 28-29.

Page 61: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

51

34. Hart, P.E., Nilsson N.J. ve B. Raphael, “A formal basis for the heuristic determination of minimum cost paths”, Systems Science and Cybernetics, IEEE Transactions on, 1968. 4(2): p. 100-107.

35. Yao, J., ve arkş. “Path planning for virtual human motion using improved A* star algorithm”, Information Technology: New Generations (ITNG), 2010 Seventh International Conference on. 2010. IEEE.

36. Arıcı, V., "Engellerin Bulunduğu Ortamda Gezgin Robotun En İyi Yolu Bulması ve İzlemesi", Tez(Yüksek Lisans)-- Başkent Üniversitesi, Fen Bilimleri Enstitüsü, 2008.

37. Viet, N.H., Vien, N.A., Lee, S. ve Chung, T., "Obstacle Avoidance Path Planning for Mobile Robot Based on Multi Colony Ant Algorithm Advances in Computer-Human Interaction", Automation and Systems, (2008).

38. Ayorkor Mills-Tettey, Vincent Lee-Shue Jr. Prasad Narendra Atkar, Kevin Tantisevi, Robotic Motion Planning: A* and D* Search, Robotics Institute 16-735, http://www.cs.cmu.edu/~motionplanning/

39. Stentz, A., "The D* Algorithm for Real-Time Planning of Optimal Traverses.", CARNEGIE-MELLON UNIV PITTSBURGH PA ROBOTICS INST, 1994.

40. https://en.wikipedia.org/wiki/D*

41. https://www.youtube.com/watch?v=e_7bSKXHvOI

42. https://tr.wikipedia.org/wiki/B%C3%A9zier_e%C4%9Frisi

43. http://quietcoder.blogspot.com/2010/08/bezier-egrileri.html

44. https://www.jasondavies.com/animated-bezier/

45. https://www.direnc.net/esp-32s-modul

46. https://www.direnc.net/hcm5883l-3-eksenli-pusula-manyetometre-sensoru

47. https://www.direnc.net/arduino-ultrasonic-sensor-hc-sr04

48. https://www.robotistan.com/74v-airsoft-lipo-batarya-1500mah-20c-16x25x67

49. https://www.robotistan.com/33v5v-breadboard-power-module-33v5v-breadboard-guc-karti

50. https://www.robotistan.com/mini-ayarlanabilir-3a-voltaj-regulator-karti-lm2596-adj

Page 62: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

52

51. https://www.robotistan.com/28-byj-48-reduktorlu-step-motor-ve-uln2003a-step-motor-

surucu-karti

52. https://www.robotistan.com/mini-sogutucu-a4988-ile-uyumlu

53. https://www.robotistan.com/50x11mm-yesil-renk-gecmeli-tekerlek-seti

54. https://www.robotistan.com/ball-caster-with-12-plastic-ball-sarhos-teker-127mm-pl-952

55. https://www.robotistan.com/lipo-seviye-olcer-ve-alarm-modulu

56. http://www.makerteknoloji.com/bizden-yazilar/arduino-yu-programlamak-icinhangi-yazilim-

dili-gerekiyor

57. https://tr.wikipedia.org/wiki/XAMPP

58. https://gelecegiyazanlar.turkcell.com.tr/konu/web-programlama/egitim/301-javascript/

javascript-nedir

59. https://www.biltektasarim.com/blog/mysql-nedir

60. Hasanzade, M., "Ataletsel Seyrüsefer Sistemi Geliştirilmesi ve Hava Aracı Çarpışma Önleme

Uygulamalarında Kullanımı", Tez (Yüksek Lisans)-- İstanbul Teknik Üniversitesi, Fen

Bilimleri Enstitüsü, 2016.

61. Fathian, K., Safaoui, S., Summers, T.H. ve Gans, N.R., "Robust Distributed Planar Formation

Control for Higher-Order Holonomic and Nonholonomic Agents", IEEE Transaction On

Robotics, 2018.

62. Fathian, K., Doucette, E. Curtis, J.W. ve Gans, N.R., "Vision-Based Distributed Formation

Control of Unmanned Aerial Vehicles", 2018.

63. Demirel, O., "Gezgin Robot Konum Kontrolünün Otonom Olarak Gerçekleştirilmesi", Tez

(Yüksek Lisans)-- Karabük Üniversitesi, Fen Bilimleri Enstitüsü, 2011.

64. Atsushi F., Yu-uki U., Shuhei S. ve Shinsuke O., "Autonomous Flight Control System of

Quadrotor and Its Application to Formation Control With Mobile Robot", 12th IFAC

Symposium on Robot Control SYROCO 2018, Budapest, Hungary, 27–30 August 2018.

Page 63: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

53

65. Alonso-Mora J., Baker S. ve Rus D., "Multi-robot formation control and object transport in

dynamic environments via constrained optimization", 2017.

66. Wu, F., Chen, J. ve Liang, Y., "Leader-Follower Formation Control for Quadrotors", IOP

Conference Series: Materials Science and Engineering, Volume 187, conference 1, 2017.

67. Das K. A., Fierro R., Kumar, R. V., Ostrowski J. P. ve Spletzer J., "A Vision-Based

Formation Control Framework", IEEE Transactions on Robotics and Automation, Volume:18

, Issue: 5 , Oct 2002.

68. Lewis, M.A. ve Tan, K.H., Autonomous Robots 4. p. 387-403, 1997.

69. Consolini, L., Morbidi, F., Prattichizzo, D. ve Tosques, M., "Leader–follower formation

control of nonholonomic mobile robots with input constraints", Automatica, 2008.

70. Habibov, A., "GEZGİN ROBOTLARLA EŞ ZAMANLI KONUM BELİRLEME VE

HARİTALAMA", Tez (Yüksek Lisans)-- Yıldız Teknik Üniversitesi, Fen Bilimleri Enstitüsü,

2011.

71. Sruthi M. I., Rao K. K. ve Jisha V. R., "Vektor Field Based Formation Control of Multi-

Robot System", 4th IFAC Conference on Advances in Control and Optimization of

Dynamical Systems ACODS 2016: Tiruchirappalli, India, 1-5 February 2016.

72. Mora, J.A., Montijano, E., Schwager M. ve Rus, D., "Distributed Multi-Robot Formation

Control among Obstacles: A Geometric and Optimization Approach with Consensus", IEEE

International Conference on Robotics and Automation (ICRA), 2016.

73. Boğar, E., "Tek ve çok amaçlı robot yol planlama problemi için hibrit bir optimizasyon

yöntemi", Tez (Yüksek Lisans)-- Pamukkale Üniversitesi, Fen Bilimleri Enstitüsü, 2016.

74. Kara, M., "OĞUL ROBOTLARI YÖN BULMA PROBLEMİ", Tez (Yüksek Lisans) -

Ankara Üniversitesi, Fen Bilimleri Enstitüsü, 2016.

Page 64: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

54

6. STANDARTLAR ve KISITLAR FORMU

Projenin hazırlanmasında uyulan standart ve kısıtlarla ilgili olarak, aşağıdaki soruları cevaplayınız.

1. Projenizin tasarım boyutu nedir? (Yeni bir proje midir? Var olan bir projenin tekrarı mıdır? Bir projenin parçası mıdır? Sizin tasarımınız proje toplamının yüzde olarak ne kadarını oluşturmaktadır?)

Benzer projeler bulunmaktadır. Ama bu projenin birebir aynısı yoktur. Var olan yöntemlerincelenmiş ve uygun olan yöntemler teorik çözüm olarak sunulmuştur.

2. Projenizde bir mühendislik problemini kendiniz formüle edip, çözdünüz mü? Açıklayınız.

Evet. Minimum yolun hesaplanması için Kaba Kuvvet Algoritmasına yakın değerlerüreten ama daha az zamanda sonuca ulaştıran bir yöntem oluşturulmuştur.

3. Önceki derslerde edindiğiniz hangi bilgi ve becerileri kullandınız?

Nesne Yönelimli Programlama, Robot Teknolojileri, Algoritmalar ve Optimizasyonderslerinden edindiğimiz teorik bilgileri kullanılmıştır.

4. Kullandığınız veya dikkate aldığınız mühendislik standartları nelerdir? (Proje konunuzla ilgili olarak kullandığınız ve kullanılması gereken standartları burada kod ve isimleri ile sıralayınız).

Donanımsal olarak IEEE 802 standartları işlenmiştir.Yazılımsal olarak kodlama prensiplerine bağlı kalınmaya çalışılmıştır.

5. Kullandığınız veya dikkate aldığınız gerçekçi kısıtlar nelerdir? Lütfen boşlukları uygun

yanıtlarla doldurunuz.

a) Ekonomi

Projeye uygun donanım parçalarının minimum maliyetine dikkat edilmiştir.

b) Çevre sorunları:

Page 65: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

55

c) Sürdürülebilirlik:

Proje sürdürülebilir ve kullanılan teknolojiler birçok farklı alana uygulanabilir.

d) Üretilebilirlik:

Oluşturulan prototip üretilebilir olduğunu göstermektedir.

e) Etik:

Alıntı yapılan bütün kaynaklar belirtilmiştir.

f) Sağlık:

g) Güvenlik:

h) Sosyal ve politik sorunlar:

Page 66: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

56

7. EKLEREk 1. Her Robot İçin Ortak Arduino Kodu

// WiFi Libraries#include <Arduino.h>#include <WiFi.h>#include <WiFiClient.h>#include <WiFiAP.h>#include <WiFiMulti.h>#include <HTTPClient.h>

// GY-271 Library#include <QMC5883LCompass.h>

// Declarations of Robotconst int ROBOTID = 0;

// WiFi VariablesWiFiMulti wifiMulti;const char *ssid = "robot-1";const char *password = "passmiword";

// GY-271 VariableQMC5883LCompass compass;

// HTTP VariableHTTPClient http;

// Step Motor Variablesint wait = 5; // Waiting each step of motor...int lstep1 = 27;int lstep2 = 14;int lstep3 = 12;int lstep4 = 13;int rstep4 = 32;int rstep3 = 33;int rstep2 = 25;int rstep1 = 26;

// Cycle for Degree double degCyc;

// Variables of Ultrasonic Sensorsint trigger = 2;int echo1 = 23;int echo2 = 15;int echo3 = 3;int echo4 = 19;

Page 67: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

57

int echo5 = 18;int echo6 = 5;unsigned long signalReturnDuration;double totalDistance; int distance; 

void setup() {  Serial.begin(115200);

  degCyc = 1140 / 360;

/*  while(!Serial.available()){    ;  }*/  // Creating WiFi Access Point   WiFi.softAP(ssid, password);  Serial.println("#WAP# -> Active.");

  // Flushing Serial  Serial.print("[SETUP] WAIT -> ");  for(uint8_t t = 7; t > 0; t--) {      Serial.printf("%d ", t);      Serial.flush();      delay(1000);  }  Serial.println("");

  // WiFi Connection for Requests to Server  wifiMulti.addAP("UnLocal Area Network", "qazwsxed");  while(wifiMulti.run() != WL_CONNECTED){    Serial.println("Waiting connection...");    delay(5000);  }

  // Compass Initialization and Setting of Smoothing  compass.init();  compass.setSmoothing(10,true);

  // Setting Pin Modes of Step Motors  pinMode(lstep1, OUTPUT);  pinMode(lstep2, OUTPUT);  pinMode(lstep3, OUTPUT);  pinMode(lstep4, OUTPUT);  pinMode(rstep1, OUTPUT);  pinMode(rstep2, OUTPUT);  pinMode(rstep3, OUTPUT);  pinMode(rstep4, OUTPUT);

Page 68: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

58

  // Setting Pin Modes of Ultrasonic Sensors   pinMode(trigger, OUTPUT);  pinMode(echo1, INPUT);  pinMode(echo2, INPUT);  pinMode(echo3, INPUT);  pinMode(echo4, INPUT);  pinMode(echo5, INPUT);  pinMode(echo6, INPUT);

  init();}

void loop() {

  delay(500);  String action = getAction("");  if(action.equals("FEED")){    feed();  } else if(action.indexOf("|") != -1){    checkAction(action);    delay(5000);  }

}

void init(){  Serial.println("WE ARE STARTING...");  stepLOW();}

void feed(){  // Getting Sensors and WiFi Data  String direction = getDirection();  String distances = getDistances();  String SSIDnRSSI = getSSIDnRSSI();

  String data = "&direction="+direction+"&distances="+distances+"&SSIDnRSSI="+SSIDnRSSI;  Serial.println(data);

  if((wifiMulti.run() == WL_CONNECTED)) sendData(data);    delay(10000);}

String getSSIDnRSSI(){

Page 69: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

59

  String SSIDnRSSI = "";    Serial.print("###WiFi SCAN### -> ");  Serial.print("Started. -> ");  int n = WiFi.scanNetworks();  Serial.print("Done! => ");     if (n == 0) Serial.println("No networks found!");  else {    Serial.print("#");    Serial.print(n);    Serial.print("#");    Serial.println(" networks found...");      String ssidX;    for(int i=0; i<n; i++){      ssidX = WiFi.SSID(i);      ssidX.replace(" ", "+");      int rssiX = WiFi.RSSI(i);            SSIDnRSSI = SSIDnRSSI + String(rssiX) + "@" + ssidX + "|";            delay(10);    }        }

  Serial.print("SSID and RSSI: ");  Serial.println(SSIDnRSSI);  Serial.println("");    return SSIDnRSSI;}

String getDistances(){

  String distances = "";    for(int i = 1; i <= 6; i++){        digitalWrite(trigger, HIGH);    delayMicroseconds(10);    digitalWrite(trigger, LOW);

    if(i == 1) signalReturnDuration = pulseIn(echo1, HIGH);    else if(i == 2)  signalReturnDuration = pulseIn(echo2, HIGH);    else if(i == 3)  signalReturnDuration = pulseIn(echo3, HIGH);    else if(i == 4)  signalReturnDuration = pulseIn(echo4, HIGH);

Page 70: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

60

    else if(i == 5)  signalReturnDuration = pulseIn(echo5, HIGH);    else if(i == 6)  signalReturnDuration = pulseIn(echo6, HIGH);

    totalDistance = (double)signalReturnDuration*0.034;    distance = totalDistance / 2;

    distances = distances + String(distance);    if(i != 6) distances += "|";    delay(500);  }

  Serial.print("Distances: ");  Serial.println(distances);

  return distances;}

String getDirection(){  int x, y, z;    // Read compass values  compass.read();

  // Return XYZ readings  x = compass.getX();  y = compass.getY();  z = compass.getZ();

  String direction = String(x) + "|";  direction += String(y) + "|";  direction += String(z);

  Serial.print("Direction: ");  Serial.println(direction);  return direction;}

void sendData(String data){  String url = "http://192.168.1.160/ESP/feed.php";    Serial.print("###HTTP### -> ");  Serial.print("Begin. -> ");//  Serial.print("http://192.168.1.160/ESP/?robotID=");//  Serial.print(ROBOTID);//  Serial.println(data);    http.begin(url+"?robotID="+String(ROBOTID)+data);

Page 71: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

61

  Serial.print("GET => *feed* ");  int httpCode = http.GET();

  if(httpCode > 0) {    Serial.printf("Code: %d\n", httpCode);        if(httpCode == HTTP_CODE_OK) {      String payload = http.getString();      Serial.println(payload);    }  } else {    Serial.printf("Failed, error: %s\n", http.errorToString(httpCode).c_str());  }  http.end();  

}

String getAction(String data){  String url = "http://192.168.1.160/ESP/action.php";    Serial.print("###HTTP### -> ");  Serial.print("Begin. -> ");//  Serial.print("http://192.168.1.160/ESP/?robotID=");//  Serial.print(ROBOTID);//  Serial.println(data);    http.begin(url+"?robotID="+String(ROBOTID)+data);

  Serial.print("GET => *action* ");  if(data.length() > 0){     Serial.print("-");     Serial.print(data);     Serial.print("- ");  }  int httpCode = http.GET();

  if(httpCode > 0) {    Serial.printf("Code: %d\n", httpCode);        if(httpCode == HTTP_CODE_OK) {      String payload = http.getString();      Serial.println(payload);      return payload;    }  } else {    Serial.printf("Failed, error: %s\n", http.errorToString(httpCode).c_str());

Page 72: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

62

    return http.errorToString(httpCode).c_str();  }  http.end();  }

void checkAction(String action){  Serial.println("Action Data Parsing: ");  Serial.println(action);  int actionID;  int robotID;  String actionType;  int amount;  int status;    int count = 0;  String part;  for(int i = 0; i<action.length(); i++){    if(action[i] != '|'){      part += action[i];    } else {      if(count == 0){        actionID = part.toInt();        Serial.println(actionID);      } else if(count == 1){        robotID = part.toInt();        Serial.println(robotID);      } else if(count == 2){        actionType = part;        int count2 = 0;        String part1, action1;        for(int j = 0; j < actionType.length(); j++){          if(actionType[j] != '-'){            part1 += actionType[j];          } else {            if(count2 == 0){              action1 = part1;            } else if(count2 == 1){              amount = part1.toInt();            } else {              Serial.println("ActionType Data Struct is Wrong!");            }            count2 = count2 + 1;            part1 = "";          }        }        actionType = action1;        Serial.println(actionType);        Serial.println(amount);

Page 73: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

63

      } else if(count == 3) {        status = part.toInt();        Serial.println(status);      } else {        Serial.println("Action Data Struct is Wrong!");        break;      }      count = count + 1;      part = "";    }  }

  if(status == 0 && robotID == ROBOTID){    actionControl(actionType, amount);    String actionData = "&actionID="+String(actionID);    getAction(actionData);  } else {    Serial.println("Action *status* is not 0(zero).");  }}

void actionControl(String actionType, int amount){    if(actionType.equals("forward")){    amount = amount / 2.5;    Serial.print("Forwarding... => ");    Serial.println(amount);    for(int k = 0; k<amount; k++){      for(int i = 0; i<100; i++){        stepForward();      }    }  } else if(actionType.equals("backward")){    amount = amount / 2.5;    Serial.print("Backwarding... => ");    Serial.println(amount);    for(int k = 0; k<amount; k++){      for(int i = 0; i<100; i++){        stepBackward();      }    }  } else if(actionType.equals("swivelRight")){    amount = amount * degCyc;    Serial.print("Swiveling Clockwise... => ");    Serial.println(amount);    for(int i = 0; i<amount;i++){      stepSwivelRight();    }

Page 74: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

64

  } else if(actionType.equals("swivelLeft")){    amount = amount * degCyc;    Serial.print("Swiveling Counter Clockwise... => ");    Serial.println(amount);    for(int i = 0; i<amount;i++){      stepSwivelLeft();    }    } else{    Serial.println("A parameter *actionType* of *actionControl()* is not valid!");  }  stepLOW();}

void stepLOW(){  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);}

void stepBackward(){  digitalWrite(lstep1, HIGH);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, HIGH);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, HIGH);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, HIGH);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, HIGH);  digitalWrite(lstep4, LOW);

Page 75: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

65

  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, HIGH);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, HIGH);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, HIGH);  delay(wait);}

void stepForward(){  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, HIGH);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, HIGH);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, HIGH);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, HIGH);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, HIGH);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, HIGH);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, HIGH);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);

Page 76: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

66

  digitalWrite(rstep1, HIGH);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);}

void stepSwivelLeft(){  digitalWrite(lstep1, HIGH);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, HIGH);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, HIGH);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, HIGH);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, HIGH);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, HIGH);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, HIGH);  digitalWrite(rstep1, HIGH);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);}

void stepSwivelRight(){  digitalWrite(lstep1, LOW);

Page 77: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

67

  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, HIGH);  digitalWrite(rstep1, HIGH);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, HIGH);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, HIGH);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, LOW);  digitalWrite(lstep2, HIGH);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, HIGH);  digitalWrite(rstep4, LOW);  delay(wait);  digitalWrite(lstep1, HIGH);  digitalWrite(lstep2, LOW);  digitalWrite(lstep3, LOW);  digitalWrite(lstep4, LOW);  digitalWrite(rstep1, LOW);  digitalWrite(rstep2, LOW);  digitalWrite(rstep3, LOW);  digitalWrite(rstep4, HIGH);  delay(wait);}

void stepMotorsTest(int x){  for(int i = 0; i < x; i++){    stepForward();  }  stepLOW();

  delay(5000);}

Page 78: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

68

Ek 2. Robotların Kontrolü Ve Görselleştirilmesi İçin Web Platform Kodları

------------------------------------------------- index.php -------------------------------------------------

<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1"><style>body {  font-family: Arial;  color: white;}

.split {  height: 50%;  width: 50%;  position: fixed;  z-index: 1;  top: 0;  overflow-x: hidden;  padding-top: 0px;}

.left {  left: 0;  background-color: #111;}

.right {  right: 0;  background-color: red;}

.bottom {    bottom: 0;    left: 0;    background-color: pink;    height: 50%;    width: 100%;    position: fixed;    z-index: 0;    overflow-x: hidden;}

.centered {  position: absolute;  top: 50%;  left: 50%;

Page 79: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

69

  transform: translate(-50%, -50%);  text-align: center;}

* {  box-sizing: border-box;}

/* Create four equal columns that floats next to each other */.column {  float: left;  height: 100%;  width: 20%;  text-align: center;  padding-top: 1.5%;  border-style: none dotted none dotted;  border-radius: 20px;  border-color: lightblue;}

.row{  height: 20%;  text-align: center;  background-color: brown;}

/* Clear floats after the columns */.row:after {  content: "";  display: table;  clear: both;}#robotimg {  transition: transform 0.5s;  transform-origin: 50% 50%;}</style></head><body>

<div class="split left">    <div class="row">  <div class="column" >    <p id="r1p00">0</p>      </div>  <div class="column" >

Page 80: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

70

    <p id="r1p01">0</p>      </div>  <div class="column" >    <p id="r1p02">0</p>      </div>  <div class="column" >    <p id="r1p03">0</p>      </div>  <div class="column" >    <p id="r1p04">0</p>      </div></div><div class="row">  <div class="column" >    <p id="r1p10">0</p>      </div>  <div class="column" >    <p id="r1p11">0</p>      </div>  <div class="column" >    <p id="r1p12">0</p>      </div>  <div class="column" >    <p id="r1p13">0</p>      </div>  <div class="column" >    <p id="r1p14">0</p>      </div></div><div class="row">  <div class="column" >    <p id="r1p20">0</p>      </div>  <div class="column" >    <p id="r1p21">0</p>      </div>  <div class="column">

Page 81: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

71

    <p id="r1p22" style="margin-top:0px;margin-bottom: 0px;">      <img id="robotimg" src="robot.png" height="60">    </p>  </div>  <div class="column" >    <p id="r1p23">0</p>      </div>  <div class="column" >    <p id="r1p24">0</p>      </div></div><div class="row">  <div class="column" >    <p id="r1p30">0</p>      </div>  <div class="column" >    <p id="r1p31">0</p>      </div>  <div class="column" >    <p id="r1p32">0</p>      </div>  <div class="column" >    <p id="r1p33">0</p>      </div>  <div class="column" >    <p id="r1p34">0</p>      </div></div><div class="row">  <div class="column" >    <p id="r1p40">0</p>      </div>  <div class="column" >    <p id="r1p41">0</p>      </div>  <div class="column" >    <p id="r1p42">0</p>      </div>

Page 82: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

72

  <div class="column" >    <p id="r1p43">0</p>      </div>  <div class="column" >    <p id="r1p44">0</p>      </div></div></div>

<div class="split right">  <div class="centered">        <h2>Robot - 0</h2>    <p id="robot0">Some text here too.</p>  </div>  </div>

<div class="bottom"><div class="centered">    <h2>Robot Actions</h2>    <button onclick="addAction('forward', 0, 5)">&#8593; Forward</button>    <button onclick="addAction('backward', 0, 5)">&#8595; Backward</button>    <button onclick="addAction('swivelRight', 0, 90)">&#8631; Swivel Right</button>    <button onclick="addAction('swivelLeft', 0, 90)">&#8630; Swivel Left</button>  </div></div>     </body><script src="api.js"></script></html> 

-------------------------------------------------- db.php --------------------------------------------------

<?phpheader('Content-Type: text/html; charset=utf-8');$servername = "localhost";$username = "root";$password = "";$dbName = "esp";

// Create connection

Page 83: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

73

$conn = new mysqli($servername, $username, $password, $dbName);

// Check connectionif ($conn->connect_error) {    die("Connection failed: " . $conn->connect_error);}

?>

------------------------------------------------- robot.php -------------------------------------------------

<?php include_once("db.php");

    $sql = "SELECT * FROM robots where robotID = ".$_GET["robotID"]." ORDER by dataID DESC LIMIT 1";

    $result = $conn->query($sql);    $row = $result->fetch_assoc();    echo json_encode($row);

?>

------------------------------------------------- feed.php -------------------------------------------------

<?php include_once("db.php");

/* robotID = 0direction = 0@x|0@y|0@zdistances = 0@1|0@2|0@3|0@4|0@5|0@6|SSIDnRSSI = -33@UnLocal+Area+Network|-92@Misi*/

if($_GET){    $robotID = @$_GET["robotID"];    $direction = @$_GET["direction"];    $distances = @$_GET["distances"];    $SSIDnRSSI = @$_GET["SSIDnRSSI"];

    $sql = "INSERT INTO robots (robotID, direction, distances, SSIDnRSSI) VALUES ($robotID, \"$direction\", \"$distances\", \"$SSIDnRSSI\")";

    if ($conn->query($sql) === TRUE) {        echo "New record created successfully...";    } else {        echo "Error: " . $sql . "<br>" . $conn->error;    }

Page 84: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

74

}?>------------------------------------------------ action.php -------------------------------------------------

<?php include_once("db.php");

/* robotID = 0*/

if($_GET){

    if(empty($_GET["actionType"])){                if(empty($_GET["actionID"])){            $sql = "SELECT * FROM actions WHERE robotID = ".$_GET["robotID"]." and status = 0 ORDER BY actionID ASC LIMIT 1";

            $result = $conn->query($sql);            $row = $result->fetch_assoc();                        if(!empty($row))echo $row["actionID"]."|".$row["robotID"]."|".$row["action"]."-|".$row["status"]."|";            else echo "FEED";        } else {            $sql = "UPDATE actions SET status = 1 WHERE actionID = ".$_GET["actionID"]." and robotID = ".$_GET["robotID"];

            $result = $conn->query($sql);            var_dump($result);

            if($result) echo "OK";            else "ERROR";        }    } else {                $robotID = $_GET["robotID"];        $action = $_GET["actionType"].'-'.$_GET["amount"];

        $sql = "INSERT INTO actions (robotID, action) VALUES ($robotID, \"$action\")";

        if ($conn->query($sql) === TRUE) {            echo json_encode("New action record created successfully...");        } else {            echo json_encode("Error: " . $sql . "<br>" . $conn->error);        }        }

Page 85: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

75

}   ?>

------------------------------------------------- api.php --------------------------------------------------

async function getRobot(robotID){    document.getElementById("robotimg").src = 'robot copy.png';    const baseUrl = 'robot.php?robotID=';    const response = await fetch(baseUrl + robotID);    const data = await response.json();    document.getElementById("robotimg").src = 'robot copy 1.png';    return data;}

document.getElementById("robot0").innerHTML = "You Ready!";document.getElementById("robotimg").src = 'robot copy 1.png';

self.setInterval(() => {    getRobot(0).then(data => {        console.log(data);        let html = `RobotID = <b>${data.robotID}</b> | DataID = <b>${data.dataID}</b><hr><b>Direction</b> = ${data.direction}<hr><b>distances</b> = ${data.distances}<hr><b>SSID&RSSI</b> = ${data.SSIDnRSSI}<hr><b>datatime</b> = ${data.datetime}`;        document.getElementById("robot0").innerHTML = html;        document.getElementById("robotimg").src = 'robot.png';

        document.getElementById("r1p12").innerHTML = '0';        document.getElementById("r1p02").innerHTML = '0';        document.getElementById("r1p13").innerHTML = '0';        document.getElementById("r1p04").innerHTML = '0';        document.getElementById("r1p33").innerHTML = '0';        document.getElementById("r1p44").innerHTML = '0';        document.getElementById("r1p32").innerHTML = '0';        document.getElementById("r1p42").innerHTML = '0';        document.getElementById("r1p31").innerHTML = '0';        document.getElementById("r1p40").innerHTML = '0';        document.getElementById("r1p11").innerHTML = '0';        document.getElementById("r1p00").innerHTML = '0';

        distances = data.distances.toString();        distances = distances.split("|");

        if (parseInt(distances[0]) > 0 & parseInt(distances[0]) < 20){            document.getElementById("r1p12").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';

Page 86: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

76

        } else if (parseInt(distances[0]) >= 20 & parseInt(distances[0]) < 40){            document.getElementById("r1p02").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        }

        if (parseInt(distances[1]) > 0 & parseInt(distances[1]) < 28) {            document.getElementById("r1p13").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        } else if (parseInt(distances[1]) >= 28 & parseInt(distances[1]) < 72) {            document.getElementById("r1p04").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        }

        if (parseInt(distances[2]) > 0 & parseInt(distances[2]) < 28) {            document.getElementById("r1p33").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        } else if (parseInt(distances[2]) >= 28 & parseInt(distances[2]) < 72) {            document.getElementById("r1p44").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        }

        if (parseInt(distances[3]) > 0 & parseInt(distances[3]) < 20) {            document.getElementById("r1p32").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        } else if (parseInt(distances[3]) >= 20 & parseInt(distances[3]) < 40) {            document.getElementById("r1p42").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        }

        if (parseInt(distances[4]) > 0 & parseInt(distances[4]) < 28) {            document.getElementById("r1p31").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        } else if (parseInt(distances[4]) >= 28 & parseInt(distances[4]) < 72) {            document.getElementById("r1p40").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        }

        if (parseInt(distances[5]) > 0 & parseInt(distances[5]) < 28) {            document.getElementById("r1p11").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        } else if (parseInt(distances[5]) >= 28 & parseInt(distances[5]) < 72) {

Page 87: mrsbyte.com€¦  · Web viewyerine getirebilecek donanımdaysa (örn. kolunu kaldır komutundan sonra kol kalkıyorsa) sistem sorunsuz işliyor demektir. Elbette bunun tüm bölümlerde

77

            document.getElementById("r1p00").innerHTML = '<span style="color:black;font-weight:bold;">X</span>';        }

    }).catch(error => {        console.log(error);        document.getElementById("robot0").innerHTML = `HATA! ${error}`;        document.getElementById("robotimg").src = 'robot copy.png';    });

    // document.getElementById("r1p00").innerHTML = "1";    

}, 1000);

// we need to save the total rotation angle as a global variable var current_rotation = 0;async function addAction(actionType, robotID, amount){    const url = 'action.php?robotID=' + robotID + '&actionType=' + actionType + '&amount=' + amount;    const response = await fetch(url);    const data = await response.json();    console.log(data);  

    if (actionType.includes("swivel")) {        if (actionType == 'swivelRight') current_rotation += amount;        else if (actionType == 'swivelLeft') current_rotation -= amount;

        document.querySelector("#robotimg").style.transform = 'rotate(' + current_rotation + 'deg)';    }}