1 Robot Laboratuvarında Neler OluyorBIL395 – Proje1 Grup 3
2 Yrd. Doç. Dr. Erkan ZERGEROĞLUGrup Üyeleri Abdullah AKAY Burak Çağrı OKUR Cüneyt AY Emre KURUBAŞ Furkan EYBEK Hamid YEŞİLYAYLA Danışman Yrd. Doç. Dr. Erkan ZERGEROĞLU
3 Proje Modülleri Driver Modülü OpenGL Modülü Interaction ModülüWindows Driver Linux Driver OpenGL Modülü 2. Katın Modellenmesi Robotik Lab’ının Modellenmesi Interaction Modülü Hocanın belirlediği 3 nesne Bizim seçtiğimiz 3 nesne
4 Proje Hakkında Projede yazdığımız kodlarWindows XP Windows Vista Fedora 9.0 Ubuntu işletim sistemlerinde test edilmiştir. Projede bulunan bütün grup üyeleri 3 modülde de aktif olarak görev almıştır.
5 Nesneye Dayalı Programlama (object oriented)Projemizde object-oriented yapısına uygun olarak kod yazılmıştır. Modellemede çizilen herbir nesne birbirinden türetilmiştir. Zaman içerisinde proje büyüdükçe ve yazılan kod sayısı arttıkça bu şekilde tasarladığımız programlamanın çok büyük faydasını gördük.
6 Nesneye Dayalı Programlama (object oriented)Projede modellemeye başlanmadan önce; OpenGL fonksiyonlarını daha rahat kullanabilmemiz için kendi API’mizi oluşturduk. Böylece yazacağımız kod miktarı azalmıştır. Aynı zamanda daha sonradan projeye yapılan eklemelerde fazla zorluk çekilmemiştir.
7 Collision Detection Gerek 2. katın modellendesinde gerekse Robotik Lab’ının içinin modellenmesinde çizilen her nesneye collision detection konulmuştur. Bu bize duvarlardan geçilmesinin engellenmesi ve laboratuarda topa vurulunca topun nesnelerden sekmesini sağlamıştır.
8 Collision Detection Herhangi bir obje Collision Detection’a kaydedildiğinde o obje bu özelliğe sahip olmaktadır.
9 Yer Çekimi Motoru (gravity)Projenin gerçek hayata uygun olmasını sağlamak için yerçekimini sağlayan kodlar yazılmıştır. Gravity class’ı bize top interaction’ında top sekmesinden sonra topun tekrar aşağıya düşmesinde yardımcı olmuştur. Herhangi bir obje Gravity motoruna kaydedildiğinde yer çekiminden etkilenmeye başlamaktadır.
10 Etkileşim Algılama (collision detection)Belirlenen interaction objelerinin etki alanına girildiğinde o interaction’ ın aktif hale gelmesini sağlar. Bu durum Object Class’ ından inherit edilmiş tüm class’ ların member’ ları için geçerlidir.
11 Konfigurasyon (Configuration)Modellemenin daha gerçekçi olması için yapılan çalışmalardır. Objelere texture ekleme, multi texturing Işıklandırma Gölgelendirme Yansıma
12 Etkileşim Objeleri (Interaction Objects)Işık seviyesi ayarlama interaction’ı Bu interactionda ışık düğmesinin yanına gidilip anlatilan şekilde interaction’ a geçildiği zaman ortamın ışık seviyesi iki kademeli olarak artıp azalabilmektedir.
13 Etkileşim Objeleri (Interaction Objects)Topa vurma interaction’i Topun yanina gelinip topa vurulunca top laboratuar içerisinde sekmeye başlıyor.Seken top laboratuar içinde bulunan cisimlere çarpıp geri dönebilmektedir.
14 Etkileşim Objeleri (Interaction Objects)Puma robotunu hareket ettirme Robotun yanina gidilip robot ile interaction’a geçildiği zaman robotun 6 eklem yeri de hareket edebilmektedir.
15 Etkileşim Objeleri (Interaction Objects)Mengene Interaction’i Mengenenin yanina gidilip interaction’ a girildiği zaman mengene kolu dönmeye başlıyor ve mengene yavaş yavaş kapanıyor.
16 Etkileşim Objeleri (Interaction Objects)Matkap Interaction’i Matkap interaction’i da aynen mengene interaction’ i gibi çalışmaktadır. Matkabın yanına gidilince interaction’ a giriliyor ve matkap ucu aşağıya doğru hareket etmektedir.
17 Etkileşim Objeleri (Interaction Objects)Testere Interaction’i Testerenin etkileşim alanina girildikten sonra testere ile etkileşime girilmektedir ve testere masada bulunan çubuğu istenilen noktadan kesip masaya düşürmektedir. Kesilme islemi esnasinda talaş oluşumu gözlenmektedir.
18 Etkileşim Objeleri (Interaction Objects)Bütün interaction objeleri ile gerek klavyeden; gerekse ivme ölçer ile interaction’a girilebilmektedir.
19 Driver “Windows Driver”inda ve “Linux driver”inda aletten gelen bilgiler port’tan okutulup; gerekli matematiksel işlemlerden sonra modellemeye monte edildi. Aletten verilerin alınması başarılı bir şekilde gerçekleştirildi.
20 Programın Çalışma ŞekliProgram çalıştırıldığında öncelikli olarak seri port ile iletişim sağlanmakta daha sonra alınan veri yorumlanmaktadır. Bu işlemler başarı ile gerçekleştikten sonra interaction objeleri ile ivme ölçer eş zamanlı kullanıma başlanmaktadır. Toplam iki adet thread kullanılmıştır. Bunlardan biri linux diğeri ise Windows için oluşturulmuştur. Aletten veri okumak programdan bağımsız şekilde yapabilmek için bu threadler oluşturulmuştur.
21 Sonuclar Bu çalışmada ivmeölçer ile seri porttan alınan verilerin yorumlanarak konum bilgisi bulunmasıyla OpenGL ile modellenmiş koridorda ve Robotik Laboratuarında gezilmesi ve Robotik Laboratuarında bulunan belirlenmiş bazı objelerle ivmeölçer sayesinde eş zamanlı olarak etkileşime girilmesi gösteriminin yapıldığı “Robot Laboratuarında Neler Oluyor” adlı proje gerçekleştirilmiştir. Koridor ve laboratuar 3 boyutlu olarak modellenmiş olup cihazla objelerin etkileşimi eş zamanlı olarak bu modellemede gösterilmiştir. Çalışmalar esnasında belli başlı sorunlarla karşılaşılmıştır. Bunlarin başlıcaları arasında cihazın geç gelmesi ve porttan veri alınmasının son ana kalması ve koddaki uyarlamaların çok fazla zaman alması. Ek olarak ışıklandırmada da büyük problemler meydana gelmiştir. Bu problemler normal hesabında yer alan yanlışlıklardan kaynaklanmaktadır. Normal hesabındaki hatalar ise tasarımda vertexlerin işaret dönüşümlerinden kaynaklanmaktadır.
22 Proje Kısıtları Etkileşime girildiği anda bilek ve parmak hareketleri ivme ölçer ile eş zamanlı olarak çalışmamaktadır. Robot etkileşimi ivme ölçer ile kontrol edilememektedir. Top çarparak cisim düşürmemektedir.
23 Kaynaklar [1] D. Hearn, M. P. Baker, Computer Graphics with OpenGL, Indiana University, PardueUniversity, ISBN: , [2] D. Astle, K. Hawkins, Beginning OpenGL Game Programming, ISBN: , [3] M. Segal, K. Akeley, The OpenGL Graphic System: A Specification, Jully [4] R. Whitrow, OpenGL Graphics Through Applications, London Metropolitian University, ISBN: , 2008 [5] C. Seddon, OpenGL Game Development, Wordware Application Library, ISBN: , [6] [7] R. Love, Linux System Programming , ISBN-10: ISBN-13: ,2007. [8] J. Reinders, Intel Threading Building Blocks, ISBN-10: ISBN-13: , , [9] G. S. Kochan, P. Wood, Unix® Shell Programming, Third Edition, ISBN: , pp-456i February 27, 2003.
24 Kaynaklar-2 [10] M. G. Sobell, A Practical Guide to Linux® Commands, Editors, and Shell Programming, Prentice Hall PTR, ISBN: , July 01, 2005. [11] S. Logan, Cross-platform development in C++ : building Mac OS X, Linux, and Windows applications, ISBN z4642-X, QA76.76.D47L65 (2007). [12] A. Griffith, GCC:The Complete Reference, McGraw-Hill/Osborne. [13] T. Wagner, D. Towsley, Getting Started With POSIX Threads, Department of Computer Science, University of Massachusetts at Amherst, July 19, 1995. [14] J. M. Hart, Windows System Programming Third Edition, Addison Wesley Professional, ISBN: , October 26, 2004. [15] Bill O. Gallmeister, POSIX. 4: Programming for the Real World, O'Reilly & Associates, Inc. ISBN: [ 16] D. P. Bovet, M. Cesati, Understanding the Linux Kernel, 2nd Edition, O'Reilly, Inc. , ISBN: , December 2002, pp-784. [17] [18]http://belgeler.mirrors.kalehost.net/autobook/autobook-A-Minimal-GNU-Autotools-Project.html. [19] [20]
25 TEŞEKKÜRLER