T.C. GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ Bilgisayar Mühendisliği Bölümü BIL 396 Proje-II MOBILE ROBOT in GIT Final Proje Dökümanı Grup 6 Çağlar KANBER Ediz AKARSU Mehmet Akif TAŞOVA Mehmet Fatih GÜLERYÜZ Sabri MEVİŞ Sercan GEDİK Yusuf CESUR Danışman: Doç. Dr. Erkan ZERGEROĞLU Gebze Yüksek Teknoloji Enstitüsü
İçindekiler İçindekiler 1. Giriş 3 1.1 Dökümanın içeriği 3 1.2 Hedef Kitle 3 1.3 Dökümanın Kapsamı 3 1.4 Projenin Amacı 3 1.5 Projenin Kapsamı 3 1.6 Döküman Düzeni 3 1.7 Kısaltmalar ve Tanımlamalar 4 1.7.1 Tanımlamalar 4 1.7.2 Kısaltmalar 4 2. Projenin Özellikleri 4 2.1 Projenin Genel Tanımı 4 2.2 Ürün özellikleri 5 2.2.1 Araç Özellikleri 5 2.2.2 Uygulama Özellikleri 5 2.3 Projenin Kullanım Alanları 5 2.4 Projenin Çalışma Ortamları 5 3. Sistem Birimleri 6 3.1 Raspberry PI 6 3.2 Ardunio 7 3.3 Projenin Uygulama Arayüzü 7 4. Projenin Geliştirilme Aşamaları 7 4.1 Aracın Oluşturulması 7 4.2 Yazılımın Geliştirilmesi 7 4.3 Yazılım Arayüzü Tasarlanması 7 5. Grup Görev Dağılımı 8 5.1 İletişim Modülü Çalışanları 8 5.2 Modelleme Modülü Çalışanları 8 5.3 Donanım Modülü Çalışanları 9 5.4 Modelleme ve Algoritma Tasarımı Modülü Çalışanları 9 5.5 Dökümantasyon Modülü Çalışanları 9 5.6 Stream Modülü Çalışanları 9 5.7 Proje Danışmanı 9 6. Projenin Planlanma Adımları 10 7. Projenin Sonuçları 11 7.1 Gereksinimlerin Analizi 11 8. Projenin Son Hali 12 8.1 Araç 11 8.2 Uygulama 13 9. Referanslar 13 Sayfa 2
Giriş Dokümanın İçeriği Bu dokümantasyon grup 6 elemanları tarafından dersin danışmanına projenin son durumu hakkında bilgi sunmak amacı ile yazılmıştır. Dokümantasyon projenin kullanımı, yapılışı ve içeriği hakkında detaylı bilgiler içermektedir. Hedef Kitle Bu dokümanın hedef kitlesi: Danışman Doç. Dr. Erkan ZERGEROĞLU Grup 6 elemanları Dökümanın Kapsamı Bu doküman hedef kitleye bu proje ile alakalı kısa kullanım ve açıklama bilgileri içermektedir. Projenin Amacı Proje kapsamında geliştireceğimiz çalışmamız Mobile In School robotu uzaktan Raspberry üzerinden yapılacak haberleşme ile verilen konuma gitmeyi hedeflemektedir. Görüntü, bağlantı ve komut alma işlemleri Raspberry üzerinden; Hareket ve yön işlemleri Ardunio üzerinden motora iletilecektir. Robota komut gönderme işlemleri buradan olacaktır. Robot grafik ara yüzde belirlenen konumu hesaplayıp istenen istikamete gidebilecektir. Bilgisayar mühendisliği binasının istenen bütün yerleri, konumları, kapı yerleri vs. ihtiyaç duyulan her yerin bütün 3D grafik ara yüzü olacaktır. Projenin Kapsamı Geliştirdiğimiz ürün verilen sınıf bilgisini alarak başlangıç noktasından istenilen noktaya gidecektir. Alınan gerçek zamanlı konum bilgisi ile gerçek zamanlı modelleme elde edilecektir. Bu esnada robotun bölüm içinde ilerlemesi canlı yayın olarak 3D modellemenin yanında kullanıcıya gösterilecektir. Döküman Düzeni Dökümantasyonun tamamında Times New Roman yazı tipi kullanılmıştır. Ana başlıklar 14 punto büyüklüğünde, bunların alt başlıkları ise 11 punto büyüklüğündedir. Tüm açıklamalar iki yana yaslı biçimdedir. Kullanılan tüm resimler ve diyagramlar ortalanmıştır. Sayfa 3
Kısaltmalar ve Tanımlamalar Tanımlamalar İsim Raspberry Arduino Server Client Tanım Sistemin temel özelliklerini yani robotun uzaktan yönetilmesi, komutu alması, görüntü almasını sağlayan mini bir bilgisayardır. Robotu kontrol etmek için gerekli olan bilgileri raspberry den alarak uygulayan mikroişlemcidir. Raspberry üzerindeki görüntüyü alıp gönderen, robota gidecek bilgilerin gönderimini yapan yazılımdır. Bilgisayardan alnınan bilgileri Server bilgisayara gönderimini yapan ve Server bilgisayardan gerekli bilgileri alan yazılımdır. Kısaltmalar Acronym or abbreviation Tanım Projenin Özellikleri Projenin Genel Tanımı Bu proje grup 6 elemanları tarafından geliştirilen farklı işletim sistemleri ya da aynı işletim sistemlerine sahip iki bilgisayar ile robotun kontrolünün sağlandığı bir mekanizma arasında ki veri iletişimini sağlamak amacı ile kurulan sistemdir. Sistemdeki donamınlar ile bilgisayar arasındaki iletişim Raspberry PI ve Ardunio ile yapılacaktır. Client tan Server a gönderilen konum bilgisi robota iletilmekte ve robottaki motor sürücü devreleri aracılığıyla robot hareket ettirilmektedir. Sonuç olarak arayüzde kullanıcı tarafından verilen konum bilgisine göre robot istenilen hedefe ulaşacaktır. Sayfa 4
Ürün Özellikleri Aracın Özellikleri Sarkaç pervane, pervaneye güç sağlayacak motor, Ardunio Uno ve potansiyometreden devresinden oluģmaktır. Kumanda ise potansiyometre ve MSP430 Launchpad i içinde barındırır. Sarkacın hareketini sağlayacak pervane için bir adet motor ve motora güç vermek için 12A lik güç kaynağı kullanılmıģtır. Ardunio Uno Client a USB aracılığıyla bağlanır ve Server a gönderilen veriler yorumlanarak motor kontrol devresine iletilir. Gelen veriler doğrultusunda güç kaynağından alınan güç ile pervanenin dönme hareketi sağlanmaktadır. Uygulama Özellikleri Projemizin yazılım kısmı iki parçadan oluşmaktadır. İlk kısım Client olarak tanımlanan bilgisayar ve ona bağlı kumanda yazılımıdır. Bu yazılım ile USB porttan bilgisayara bağlı olan kumandadan alınan veriler TCP protokolü kullanılarak Server a veri iletimi yapmaktadır. Kullanıcı, kumanda edeceği bilgisayara IP ve PORT bilgileri ile bağlanacaktır. Kumandadan veri girişi yapılmasıyla birlikte açı bilgisi diğer bilgisayara aktarılacaktır. Bilgisayarlar arasındaki iletişim ve grafiksel arayüz tasarımı Qt ile gerçekleştirilmiştir. İkinci kısım Server olarak tanımladığımız ana bilgisayar üzerinde tanımlanan yazılımdır. Bu yazılımın çalıştığı bilgisayar girilen açı bilgisine sarkaca iletmektedir. Sarkacın o anlık açı bilgisi de potansiyometreden okunarak gerçek zamanlı olarak bilgisayara iletilir ve bu bilgi ışında 3D 2D modelleme yapılmaktadır. Modellemenin gerçeğe yakın olması için kumandadan girilen açı bilgisi değil, potansiyometreden alınan bilgi açı bilgisi kullanılmıştır. Client ve Server arasındaki iletişim çift yönlü yapılarak açı bilgisi ve gerekecek bilgi transferinin gerçekliği yakalanmıştır. 2.3 Projenin Kullanım Alanları Bilgisayarla motor kontorlü gereken alanlarda kullanılabilir. Projenin Çalışma Ortamları Robot sürücü yazılımı yüklendikten sonra Linux ve Windows işletim sistemleri üzerinde çalışmaktadır. Windows Linux Böylece robot ortamdan bağımız olmuş olup ve taşınabilirliği sağlanmıştır. Sayfa 5
Sistem Birimleri 3.1 Raspberry PI Raspberry Pi; Birleşik Krallıkta Raspberry Pi Vakfı tarafından okullarda bilgisayar bilimini öğretmek amacıyla geliştirilmiş kredi kartı büyüklüğünde tek kartlı bir bilgisayardır. Raspberry Pi, ARM1176JZF-S 700 MHz merkezi işlem birimini içeren Broadcom BCM2835 mikroçipi üzerine kurulmuştur. VideoCore IV GPU grafik işlem birimine sahiptir. Sabit diske sahip değildir ve veri depolaması için SD kart kullanılmaktadır. Raspberry pi üzerinde HDMI çıkışı, ses kartı, fare ve klavye için USB çıkışı Ethernet girişi bulunmaktadır. 3.2 Ardunio Arduino basit bir I/O kartı ve Processing&Wiring dilini uygulayan bir geliştirme çevresi temelleri üzerine kurulu açık kaynaklı fiziksel hesaplama platformudur. Arduino tek başına interaktif nesnelerin geliştirilmesi için kullanılabileceği gibi bilgisayarınız üzerindeki yazılımlara da bağlanabilir (örn. Flash, işeme, MaxMPS). Açık kaynak IDE, ücretsiz olarak indirilebilir (mevcut olarak Mac OS X, Windows ve Linux desteklenmektedir). Arduino IDE kod editörü ve derleyici olarak görev yapan, aynı zamanda derlenen programı karta yükleme işlemini de yapabilen, her platformda çalışabilen JAVA programlama dilinde yazılmış bir uygulamadır. Geliştirme ortamı, sanatçıları programlamayla tanıştırmak için geliştirilmiş Processing yazılımından yola çıkılarak geliştirilmiştir. Bazı Arduino donanımları için yerleşim ve üretim dosyaları da mevcuttur. Geliştirme ortamının kaynak kodu ve Arduino kütüphane kodları GPLv2 lisansıyla lisanslanmıştır. 3.3 Projenin Uygulama Arayüzü Arayüz tasarımını Irrlicht oyun motoru ile tasarladık. Irrlicht, C++ ile yazılmış açık kaynak kodlu ve yüksek performanslı 3D grafik motorudur. D3D, OpenGL gibi altyapılar kullanrak projeleri gerçekleyebilir. Büyük bir aktif topluluğa sahiptir ve bu motor ile gerçekleştirilmiş birçok proje bulunmaktadır. Terrain render,portal render,world layer, tutoriallar, editörler, perl,ruby,basic,phyton, lua ve buna benzer birçok dile destek verebilmektedir. Tamamen ücretsiz bir yazılımdır. Sayfa 6
4. Projenin Geliştirilme Aşamaları 4.1 Aracın Oluşturulması Aracın oluşturulmasında ilk olarak arduino ve motor sürücü devre,2 adet dc motor,2 lastik tekerlek, 1 sarhoş tekerlek kullanılarak robot yapmaya çalıştık ve micro processor olarak raspberry pi kullandık. Rasberry pi serial port ile arduino ile haberleştirilip robotu istenilen adrese iletmeye çalıştık Robotun düz gitmesinde problem çıkmasından dolayı motorlar değiştirildi ve 2 adet enkoder alındı, bu encoder dataları kullanılarak robot düz götürülmeye çalışıldı. Motor sürme işlemleri Arduino ve motor sürücü devresi tarafından gerçekleştirildi, enkoderlerin sürülmesi ve motorlara emir komutları ise Raspberry tarafından verildi. Raspberry ve Arduino arasında seri iletişim kullanıldı. Sarhoş tekerde çıkan sorunlardan dolayı pinpon topu kullanrak hataları en aza indirgemeye çalıştık. Enkoderlerden gelen datalar son gecede sağlıklı şekilde gelmediği için yazılımsal olarak enkoder kullanmaya karar verdik ve sanal enkoderleri devreye soktuk. Nispeten düz giden bir robot elde ettik. 4.2 Yazılımın Geliştirilmesi Yazılımın geliştirilmesi birçok aşamadan geçti. Öncelikle 3d modeller bitirildi, ardından arayüz tasarlandı ve modeller arayüze eklendi. Sonrasında yol bulma algoritması arayüze eklendi ve listeden seçilen sınıflara giden sanal bir robot elde edildi. İkinci kısımda ise tasarlanan robot ile arayüz arasındaki iletişimi gerçekledik. İletişimi soketler yardımıyla yaptık. Araç server, kullanıcı client tarafı idi. Kullanıcı tarafından gelen struct veri yapısındaki yolu raspberry e ilettik ve raspberry yol komutlarını ayrıştırarak gerekli emirleri motorlara verdi. Bu sayede istediğimiz sınıfa giden bir robot elde ettik. Stream kısmında ise raspberry nin kamera modülünü kullandık. VLC player üzerinden rtsp iletişim modülünü kullanarak kameradan gelen görüntüyü bilgisayarımıza ilettik. 4.3 Yazılım Arayüzü Tasarlanması Arayüz tasarımını Irrlicht oyun motoru ile tasarladık. Arayüz de 3d modelin gösterimi bulunmakta. Ayrıca bir de toolbar tasarlandı. Üzerinde sınıfların bulunduğu bir liste yer almakta. Bu listeden seçilen sınıflara göre robota algoritma ile hazırlanmış yol haritası gönderilmekte ve robot hareket etmeye başladığı zaman modelin içerisindeki robotta ilerlemeye başlamakta. Robot hedefine ulaştığı vakit 3d modeldeki robotta hedefine ulaşmakta. Robottan gelen başla ve dur verisine göre hareket etmekte. 3d model içerisinde okulun 3 katı da yer almakta ve kat geçişleri gecikmeli olarak ekranda gösterilmekte. Yani bir kattan diğerine geçişte 60 saniye beklemekte. Bunun nedeni robotun merdivenlerden çıkarılırken aradaki kaybın kompanse edilmesi. Robotu kaldığı yere koyduktan sonra devam etmekte ve istenilen hedefe ulaşmakta. 60 saniye dolduktan sonra gerekli kat ekranda gözükerek işine devam ediyor. Kamera açıları ise kullanıcının isteğine bırakılmış durumda. Kullanıcı, fare ile istediği açıdan bakabilmekte ve modele yakınlaşıp, uzaklaşabilmekte. Bu sayede özgür bir dolaşım imkanı sunmakta Sayfa 7
5. Grup Görev Dağılımı 5.1. Network Modülü Çalışanları Çağlar KANBER Sabri MEVİŞ Sercan GEDİK Yusuf CESUR 5.2. Modelleme Modülü Çalışanları Ediz AKARSU Mehmet Akif TAŞOVA Sercan GEDİK Yusuf CESUR 5.3. Donanım Modülü Çalışanları Çağlar KANBER Ediz AKARSU Mehmet Fatih GÜLERYÜZ Sabri MEVİŞ Sayfa 8
5.4. Modelleme ve Algoritma Tasarımı Modülü Çalışanları Çağlar KANBER Ediz AKARSU Mehmet Akif TAŞOVA Mehmet Fatih GÜLERYÜZ Sabri MEVİŞ Sercan GEDİK Yusuf CESUR 5.5 Dökümantasyon Modülü Çalışanları Ediz AKARSU Mehmet Akif TAŞOVA Mehmet Fatih GÜLERYÜZ Sabri MEVİŞ Sercan GEDİK 5.6 Stream Modülü Çalışanları Çağlar KANBER Mehmet Akif TAŞOVA Mehmet Fatih GÜLERYÜZ Yusuf CESUR 5.7 Proje Danışmanı DOÇ. DR. ERKAN ZERGEROĞLU Sayfa 9
Projenin Planlanma Adımları No Proje Adımları Proje için Etkisi Bitiriliş Süresi Planlama Gerçekleme 01 Requirements analysis & definition Tümü 2 hafta 3 hafta 02 Project Headerlarının Hazırlanması Tümü 1 hafta 3 gün 03 Donanımın Oluşturulması Donanım 2 hafta 5 hafta 04 Modelleme Aktarıması Modelleme, Arayüz 3 hafta 2 hafta 05 Donanım Driver Donanım 1 hafta 1 hafta 06 Modül Testleri Tümü 1 hafta 1 hafta 07 Entegrasyon Tümü 2 hafta 3 hafta 08 Sistem Testi Tümü 3 hafta 3 hafta 09 Proje Demosu Tümü 2 gün 2 saat 10 Proje Dökümantasyonu ve Sunumu Dökümantasyon, Sunum 2 gün 2 gün Planlama adımlarının gerçeklenmesi beraber yürütüldüğünden tarih çakışmaları yaşanmıştır. Bazı adımlar beraber yürütülmüştür. Sayfa 10
Projenin Sonuçları Requirementların Analizi Requirement Requirement Tanımı Sonuç REQ-01 REQ-02 REQ-03 REQ-04 REQ-05 REQ-06 REQ-07 REQ-08 REQ-09 REQ-10 REQ-11 REQ-12 REQ-13 Robot tasarlanacak. Robotun bilgisayardan veri alması sağlanacak. Okulun 3D modellemesi kat planlarından yararlanılarak yapılacak Bilgisayar ile mikroişlemci arasında driver yazılarak iletişim kurulacak. Sınıflar arası robotun izlemesi gereken yollar haritalandırılacak Stream yapılacak. Robotun 3D model üzerinde gösterimi yapılacak ve eş zamanlı ilerlemesi sağlanacak Client konum verisi göndererek robotun hareketini sağlayacak. Projenin farklı ortamlar çalıştırılması sağlanacak. Proje için ara yüz tasarlanacak. Projenin modül testleri yapılarak hatalar düzeltilecek. Projenin sistem testi yapılarak gecikme problem en aza indirilip kalan hatalar düzeltilecek. Proje için dökümantasyonlar hazırlanacak. Sayfa 11
Projenin Son Hali Araç
Sayfa 12
Referanslar http://www.blender.org/ http://www.videolan.org/vlc/ http://arduino.cc/ http://www.raspberrypi.org/ Sayfa 13