Upload
buesra-erkan
View
61
Download
0
Embed Size (px)
Citation preview
T.C.
GEBZE TEKNİK ÜNİVERSİTESİ
Bilgisayar Mühendisliği Bölümü
PROJE 1 DERSİ HAPTIC
NAVİGASYON PROJE
RAPORU
GRUP 3
Danışman
Prof. Dr. Erkan ZERGEROĞLU
Ocak, 2016
Gebze, KOCAELİ
ii
iii
T.C.
GEBZE TEKNİK ÜNİVERSİTESİ
Bilgisayar Mühendisliği Bölümü
PROJE 1 DERSİ HAPTIC
NAVİGASYON PROJE
RAPORU
GRUP 3
Danışman
Prof. Dr. Erkan ZERGEROĞLU
Ocak, 2016
Gebze, KOCAELİ
iv
v
ÖNSÖZ
Çalışma sırasında engin bilgisiyle bizlere her zaman yol gösteren Sayın Prof. Dr. Erkan
ZERGEROĞLU hocamıza ve Ayşe TURAN hocamıza içten teşekkürlerimizi sunarız.
Ocak, 2015 Grup 3 Üyeleri
vi
İÇİNDEKİLER
İÇİNDEKİLER .................................................................................... Vİ
ÖZET ................................................................................................. Vİİİ
1. GİRİŞ .................................................................................................. 1
1.1. PROJE TANIMI ............................................................................. 1
1.2. PROJENİN NEDEN VE AMAÇLARI ......................................... 2
1.3. PROJE GEREKSİNİMLERİ ........................................................ 2
1.4.1. Fonksiyonel Gereksinimler .................................................................... 2
1.4.2. Fonksiyonel Olmayan Gereksinimler ................................................... 2
2. YÖNTEM ............................................................................................ 3
3. PROJE PLANLAMASI ..................................................................... 3
3.1. SİSTEM MİMARİSİ ...................................................................... 3
3.6. UML DİYAGRAMLARI ............................................................. 12
3.6.1. Etkinlik Diyagramı ............................................................................... 12
4. DENEYLER...................................................................................... 12
5. SONUÇLAR ..................................................................................... 14
5.1. BAŞARILI OLUNAN KISIMLAR ............................................. 14
5.2. BAŞARISIZ OLUNAN KISIMLAR ........................................... 14
6. DEĞERLENDİRME ..................................................................... 15
6. KAYNAKLAR ................................................................................. 16
vii
viii
ÖZET
Projemiz yayaların kullanabileceği türden bir navigasyon cihazı hazırlamak üzere
başlatılmıştır. Proje, kullanıcıya yön bilgisini sunmak üzere bir adet küp şeklinde bir
donanım ve bir server bilgisayardan oluşmaktadır.
Kullanıcı server üzerinden gitmek istediği noktayı belirledikten sonra haptic
sandwich adını verdiğimiz donanımın sağ, sol, ileri ve geri hareketleri ile yön
tarifini alarak gitmek istediği noktaya ulaşabilecektir. Aynı zamanda, kullanıcının
hareketleri server üzerindeki arayüz sayesinde harita üzerinde gerçek zamanlı olarak
takip edilebilecektir. Kullanıcı, bulunduğu noktadan belirlediğimiz hedeflerden
birini harita üzerinde işaretleyip haptic sandwich yardımıyla hedef noktaya
gidebilecektir.
Projemizde hareket alanı bilgisayar mühendisliği bölümü binası zemin katı ve
bilgisayar mühendisliği bölümü binasının çevresini kapsayan kısıtlı bir alan olarak
belirlenmiş olup tasarımımız ve gereksinimlerimiz buna göre düzenlenmiştir.
Geliştirilen sistemin Windows ve Linux tabanlı sistemlerde çalışabilmektedir.
1
1. GİRİŞ
1.1. PROJE TANIMI
Projemiz, tasarladığımız haptic sandwich yardımı ile harita üzerinde belirlenmiş
noktalardan seçilen hedefe, iç ve dış mekanda doğru bir şekilde yol tarifi verebilen,
kullanıcı hareketlerinin haptic sandwich cihazının bağlı olduğu server üzerinden
izlenilebildiği bir sistem hazırlamaktır.
Şekil 1.1.1 Sistemin Genel Çalışma Şeması
2
1.2. PROJENİN NEDEN VE AMAÇLARI
Projemizin amacı, bilgisayar mühendisliği bölümü binası zemin katı ve bilgisayar
mühendisliği bölümü binasının çevresinde kullanılmak üzere bir navigasyon cihazı
tasarlamak ve kullanıcı hareketlerini server üzerinde gerçek zamanlı olarak
izleyebilmektir.
1.3. PROJE GEREKSİNİMLERİ
Proje gereksinimlerini fonksiyonel gereksinimler ve fonksiyonel olmayan
gereksinimler diye iki başlık altında ifade etmek daha doğru olacaktır.
Bu kısımda fonksiyonel gereksinimler sistemin iç yapısına ait detaylara yer
verirken, fonksiyonel olmayan gereksinimler, performans, kullanım kolaylığı gibi
kullanılabilirlik ile alakalı gereksinimlere yer vermektedir.
1.4.1. Fonksiyonel Gereksinimler
Fonksiyonel gereksinimler şu şekildedir;
Haptic Sandwich cihazından iç mekanda konum bilgilerinin alınması
Haptic Sandwich cihazından dış mekanda konum bilgilerinin alınması
Haptic Sandwich cihazının yön bilgisine göre hareket etmesinin sağlanması
Yol bulma algoritmasının kodlanması
Belirli bir süre içinde konum verilerinin güncellenmesi
İç ve dış mekan haritasının hazırlanması
Server üzerinde bulunacak haritada, gidilecek konumun seçilebilmesi
Modüllerin birbirine bağlanması
1.4.2. Fonksiyonel Olmayan Gereksinimler
Sunucu yazılımının kullanıcı dostu arayüze sahip olması
Linux ve Windows tabanlı cihazlarda çalışabilme
3
2. YÖNTEM
Bu kısımda, projede kullanılan yöntemlerin nasıl geliştirildiği ve kullanılan araçların
ne için ve nasıl kullanıldığı ile ilgili detaylı açıklamalar yer almaktadır.
Projemizin donanım kısmında microcontroller olarak Ardunio kullanılmıştır. İç
mekanda haberleşmeyi sağlamak için wifi modülü, dış mekanda haberleşmeyi
sağlamak için ise GPS modülü kullanılmıştır. Ardunio ile wifi ve GPS modülünün
entegrasyonu yapılarak haptic sandwich adını verdiğimiz ergonomik boyutlarda bir
gömülü cihaz elde edilmiştir.
Elde edilen cihazın server üzerinden gidilecek yön bilgisini alması ve bulunduğu
konumu harita üzerinde gösterilmek üzere server cihaza göndermesi sağlanmıştır.
Server kısmında, haptic sandwich cihazının bulunduğu konum iç mekanda wifi, dış
mekanda GPS modülü üzerinden alınacak, harita üzerinde işaretlenen hedefe giden
bir yol belirlenecek ve bu yola uygun yön bilgileri haptic sandwiche
gönderilmektedir. Ayrıca haptic sandwich cihazından wifi ya da GPS modülü ile
alınan konum bilgileri de server cihazında harita üzerinde gerçek zamanlı olarak
gösterilecek şekilde tasarlanmıştır.
3. PROJE PLANLAMASI
Bu bölümde projenin planlaması ve projedeki işleyiş hakkında bilgi veren
diyagramlar belirtilmiştir.
3.1. SİSTEM MİMARİSİ
Proje 1 dersi kapsamında geliştirilen bu sistem, yayaların kullanabileceği türden bir
navigasyon cihazı hazırlamak üzere başlatılmıştır. Proje iç ve dış mekanda
çalışabilecek şekilde tasarlanmıştır. Her iki durumda da alınan veriler aşağıdaki gibi
işlenmektedir;
1. Donanım modülünden alınan koordinatlara göre kullanıcının bulunduğu alan
tespit edilir.
2. Arayüz modülünden gidilecek olan alan bilgisi alınır.
3. Bulunulan alan ve gidilecek alan arasındaki en kısa yol ve yönler hesaplanır.
4. Haptic navigasyona yol ve yön bilgisi gönderilir.
4
5. Haptic navigasyon cihazından alınan yol ve yön bilgisi arayüz üzerinde
gösterilir.
Projede şu anda gelinen noktada tüm kodlar Linux ve Windows ortamında sorunsuz
bir şekilde çalışabilmektedir.
3.2 DONANIM MODÜLÜ
Donanım modülü olarak, arduino uno’ya wifi modülü eklenerek başlandı. Wifi
modülü eklendikten sonra servo motorlar çalıştırıldı. Yön bulmak için ise gyroscope
kullanılması düşünülmüştü fakat cihaz her çalıştırıldığında kalibre edilmesi
gerektiğinden gyroscope kullanmaktan vazgeçildi. Bunun yerine manyetometre
alındı, çalıştırıldı ve test edildi. Daha sonra dış mekanda konum bilgisini almak için
gps modülü üzerinde çalışıldı. Dış mekanda haberleşme için gsm veya radyo
sinyalleri kullanılması karar verildikten sonra iki teknoloji arasındaki artılar ve
eksikler araştırıldı. Maliyet açısından ve desteklenecek uzaklık göz önüne alındıktan
sonra radyo sinyalleri kullanmak daha uygun olacağından bu teknolojinin
kullanılmasına karar verildi. Bunun için iki arduino kullanmak gerektiğinden ikinci
bir arduino temin edildi. Dış mekanda haberleşme için radyo sinyallerini
kullanmaya karar verildiği için iç mekanda da haberleşmenin wifi yerine radyo
sinyalleriyle haberleşmeye geçildi. Bu nedenlerden dolayı başta belirttiğimiz bazı
modüllerde değişikliğe gidildi. Sonuç olarak, haberleşme radyo sinyalleri ile, konum
bulma wifi ve gps modülleri ile, yön hesabı ise manyetometre ile yapıldı.
Donanım modülünde iki nRF24l01+ modülü, arduinolar arasında haberleşme için
kullanılmaktadır. HapticNavigator olarak kullanılan Arduino Mega microcontroller
server ile haberleşme için bir nRF24l01+ ve iç kısımda yer tespiti yapabilmek için
station mode da çalışan ESP8266 modülü kullanılmaktadır. Servera bağlı olan
microcontroller sadece haberleşme ve serial port üzerinden bilgisayar ile iletişim
kuracağından fazla maliyeti olmayan Arduino Uno olarak seçilmiştir. Üzerine
nRF24l01+ modülünden aldığı dataları serial port üzerinden Servera yazmaktadır.
5
Figure 1 . Devre Şeması
Devre şeması üzerinde gösterilen cihazlar ve kullanılan malzemeler aşağıda
listelenmektedir.
Servo Motor (2 Adet)
Manyetometre - HMC5883L Triple Axis
Arduino Uno R3
Arduino Mega
GPS Modül - GY-NEO6MV2
RF Modül – nRF24l01+
Wi-Fi Modül – ESP8266
5Volt – Güç Kaynağı
Direnç 4.7k, 10k, Kapasitör 100nF
3.3 YAZILIM MODÜLÜ
Bu kısımda yazılım modülü üzerinde oluşturulan algoritmalar, kullanılan
fonksiyonlar ve yazılım dizayn parçalarından bahsedilecektir.
6
3.3.1. Genel Çalışma Yapısı
Yazılım modülü genel olarak iç ve dış ortamda sensörler yardımıyla elde ettiği
verileri yorumlayarak, grafik arayüzünde göstermekte ve haptic cihazın nereye
gideceğini tespit eden algoritmaları çalıştırarak tekrar haberleşmeyi sağlaması için
kendisine bağlı olan mikrokontrollera iletmektedir.
Genel yapı aşağıdaki diyagramda gösterilmektedir.
Figure 2. Genel Yapı
3.3.2. Paket Yapısı
Proje içerisinde en önemli kısımlardan biri haberleşme sırasında gönderilecek paket
yapısının belirlenmesi oldu. Gönderilecek paket donanımdan aldığı verileri en az yer
kaplayarak, ileride eklenecek yeni özellikler ve refactoring göz önüne alınarak
tasarlanmıştır. Proje implementasyonu sırasında büyük kolaylık sağlamıştır.
Aşağıda genel itibariyle haberleşme için kullanılan paket yapısı gösterilmektedir.
İçeride yer tespiti yapmak için routerların yaydığı rssi değerleri kullanılmaktadır. Bu
sebeple routerın yaydığı rssi (radio signal strengt indicator) ve mac adresi yani bssid
değeri tutulması gerekmektedir. Wifi 802.11bgn standartlarına göre kanal değeri
2.4Ghz üzerinde 1-13 arasında değiştiğinden 1 byte (0-255) yer kaplayan char
olarak seçildi.
7
Yer tespiti için kullanılacak routerlar belirli olduğundan map etme işlemi sonrası tek
byte gönderimi ile hangi cihazın yayın yaptığı anlaşılabilmektedir.
Haptic cihaz üzerinde bulunan manyotometre kuzey ile yaptığı açıyı northDegree
vasıtasıyla server a göndermektedir. Server gidilecek varış noktası için haptic
navigatörün dönmesi gereken açıyı hesaplayıp turnDegree ile tekrar cihaza
göndermektedir.
GPS koordinatları en az virgülden sonra beş basamak hassasiyetinde olduğundan
2^32 = 32 bit lik bir alan ile enlem veya boylam bilgisini tutabilmekteyiz. Toplamda
x ve y koordinatları için 64bit = 8 bytes yer harcamaktayız.
Tüm modüllerin anlamlı olarak göndermesi gereken bilgiler kendi struct yapısıyla
göndermektedir. Ekstra olarak eklenen type, paket tipini belirlemekte ve böylece tek
tip paket yapısı kullanarak server ve haptic navigator arasındaki haberleşme,
REQUEST (haptic-to-server), RESPONSE (server-to-haptic) sağlanmaktadır. Flag
değişkeni eklenebilecek yeni özellikler için göz önünde bulundurulmuştur.
8
Oluşabilecek paket dropları ve eksik paket gelmesini kontrol etmek amacıyla son
olarak checksum eklenmiştir. Toplam paket boyutu 15byte olarak tasarlanmıştır.
3.3.3 Serial Port Haberleşmesi
Server ile Arduino Uno arasındaki haberleşmeyi serial port üzerinden
sağlamaktayız. Bunun için cross-platform olarak çalışan RS-232 kütüphanesi
kullanılmıştır. Bu sayede Arduino Uno’nun Haptic üzerinden aldığı verileri PC’ye
string olarak yazabilmektedir. Server kısmında bu veriler Linux ve Windows’da
belirli aşağıda ki comportlar üzerinden sağlanmaktadır.
Figure 3 . Comport Listesi
3.4 ARAYÜZ MODÜLÜ
Arayüz modülü için ilk önce Qt kullanılmasına karar verildi. Qt'nin yeteri kadar
esneklik sağlamamasından dolayı 1 hafta denendikten sonra Irrlicht kütüphanesi
kullanılmaya başlandı. Kullanıcı, harita ve gidilebilecek yerleri temsil eden butonlar
Blender kullanılarak modellendi. Okul planlarını içeren Autocad dosyaları
düzenlendi, fazla detaylar kaldırıldı, elde edilen resimden harita için iç ve dış olmak
üzere iki texture oluşturuldu.
Harita, kullanıcı ve marker'lar için class oluşturuldu. Mouse event için bir receiver
class'ı oluşturuldu ve scroll in - scroll out yapıldığında iç ve dış haritalar arasında
geçiş yapılabilmesi sağlandı. Sol tıklama ile marker'lara tıklanabilme özelliği
eklendi, handler'da collision detection'la hangi marker'a tıklandığı belirlendi.
Mouse'taki middle click ile seçilen yerin sıfırlanması özelliği eklendi. Kullanıcının
dış mekan için ekranda göründüğü yer gerçek haritayla ekrandaki harita arasındaki
oran kullanılarak hesaplandı. İç mekan içinse koridor üzerinde kullanıcıyı göstermek
için 12 tane nokta belirlendi. Hedefin kaydedilmesi için bir onaylama ekranı
9
çıkmasını sağlayacak pop-up class'ı oluşturuldu. Gidilecek noktanın butonuna
tıklandığında pop-up çıkması sağlandı.
Gidilecek yer seçildiğinde hedefin id'sinin yazılım modülünün yol bulma
fonksiyonuna gönderilmesi sağlandı. GPS modülünden alınan veriler dönüştürülerek
harita üzerine yerleştirildi ve harita üzerindeki konum ve yön bilgileri tespit edilerek
gösterildi.
Figure 4. Uygulama Arayüzü
10
Figure 5. Kat Planı
3.5 YER TESPİTİ
3.5.1 Algoritma
Bu kısımda server üzerinde çalıştırılan genel yapı, iç ve dış mekan üzerinde yer
tespit algoritmaları anlatılacaktır.
Bir noktadan diğerine gitmek için gerekli olan yol haritası oluşturulduktan sonar, iç
mekan için gidilecek noktalar 12, dış mekan için gidilecek noktalar 19 parça olarak
belirlendi. Dış mekan için bu noktalar belirli bir aralıktaki enlem-boylam değerlerini
ifade etmektedir. Bu noktaların her biri yazılımda node olarak ifade edilip
kullanılmaktadır. Noktalar arasındaki kısa yolu bulmak için Dijkstra en kısa yol
algoritması kullanılmaktadır. Ayrıca, noktalar arasındaki hareketlerin yönü iki farklı
11
dizi üzerinde tutulmaktadır. Oluşturulan yol için gidilmesi gereken yönler bu diziler
yardımıyla tespit edilmektedir. Bu kodların testleri kendi girdiğimiz verilerle
yapıldı. Bunların dışında, kullanıcının durduğu yönü belirlemek için donanım olarak
manyetometre kullanıldı. Yazılım modülünde, manyetometrenin konumuna göre
kullanıcının gidilecek yöne dönmesi sağlandı.
3.5.1 İç Mekanda Yer Tespiti
İç mekanda yer tespiti için access point cihazlarının yaydığı RSS değerlerine göre
konum tahmini yapılmaktadır. İç mekan belirli alanlara ayrılıp her alan
numaralandırılmıştır. Belirlenen alanlara konulan 10-12 AP cihazı alanın çok geniş
olmaması sebebiyle ve yayılan RSS değerlerinin birbiriyle karışmaması için düşük
seviyede sinyal yayıcak şekilde ayarlanmıştır. Her AP kendi bulunduğu alanın
numarasına göre SSID değeri almaktadır. Haptic cihaz üzerine bulunan station
moddaki wifi modülü bulunmuş olduğu konumdaki AP cihazlarını taramakta ve en
yüksek RSSİ değerine sahip olan AP’nin SSID değerini kendi konumu olarak kabul
etmektedir.
Proje başlangıç aşamasında daha az sayıda AP kullanılarak belirlenmiş alanlar için
yüksek sayıda örnek RSSİ değerleriyle konum tespit işlemi yapılmaya çalışılmıştır.
Bu aşamada RSSİ değerlerinin sapmaya uğraması, ortamdaki gürültüden çok fazla
etkilenmesi ve test ortamında az sayıda AP bulunması sebebiyle bu yöntemden
vazgeçilmiştir. Bu işlem için makine öğrenmesi yöntemi olan kNN algoritması
implement edilmiş olup, testler örnek datalar üzerinde gerçekleştirilmiştir.
3.5.2 Dış Mekanda Yer Tespiti
Dış mekanda yer tespiti, GPS modülünden alınan enlem ve boylam verilerinin
belirlenen 19 alan sınırı içerisinde, dahil olduğu alanın kontrol edilmesi ile elde
edilmektedir. Alınan veriye göre kullanıcının bulunduğu alan bilgisi server ve
araryüz üzerinde güncellenmektedir. Örnek arayüz Figure 4. Uygulama Arayüzü
üzerinde gösterilmektedir.
12
3.6. UML DİYAGRAMLARI
3.6.1. Etkinlik Diyagramı
Şekil 3.6.1.1 Etkinlik Diyagramı
4. DENEYLER
Denemeler Windows 10 ve Linux Ubuntu 10.04 işletim sistemine sahip bilgisayarlar
üzerinde Visual Studio 2013, Eclipse kullanılarak yapıldı.
GPS ‘den gelen verilerin hata payı ve gecikme süresi tecrübe edildi. Bu verilerin dış
mekanda doğru bir şekilde server’a ulaşması ve arayüzde anlamlandırılması denendi
ve başarılı olundu.
13
Manyotometre kuzeyi doğru göstermesi için kalibre edildi. Kuzey referans alınarak
elde edilen bilgiler basit bir algoritma ile yön göstermesi için Servo motorlar
çalıştırıldı.
Wifi mödülünün cihazda yaptığı gecikme denendi ve en aza indirilmesi için kodda
düzeltilmeler yapıldı. Yeniden implement edildi. Modülden etraftaki wifi chazlarına
dair bilgi elde edilmesi sağlandı ve bu bilgilerden iç mekanda yaklaşık bir konum
bulundu.
Radio modülü ile server ve haptic cihaz arasında çift yönlü haberleşme sağlandı,
azami haberleşme mesafesi denendi.
Haptic cihazdan radio dalgaları ile gelen bilgilerin serial haberleşme ile servera
iletimi sağlandı fakat serverdan haptic cihaza bilgi aktarımı düzenli bir şekilde
sağlanamadı.
Manyotometre ile kuzey referans alınarak yön bilgisi elde edildi.
Servo motorları denendi ve manyotometre ile senkronize bir şekilde çalışması
sağlandı.
Radio modülü ile çift yönlü telsiz mantığında haberleşme yapıldı.
Server(PC) ile haptic cihaz arasında serial com port üzerinden haberleşme denendi.
İç mekanda Wifi mödülü kullanarak yaklaşık konum bulundu.
Dış mekanda GPS mödülü kullanarak konum bulundu.
Arayüz için Qt denendi, ekran güncellemesi konusunda yeteri kadar esnek olmadığı
için Irrlicht kütüphanesine geçiş yapıldı. Blender kullanılarak oluşturulan modeller
Irrlicht’te denendi. Yol ve yön bulma algoritmaları arayüz modülüne başarılı bir
şekilde entegre edildi. Donanımdan alınan konum bilgilerinin ekranda gösterdiği yer
hesabı yapıldı ve doğruluğu denendi.
14
5. SONUÇLAR
5.1. BAŞARILI OLUNAN KISIMLAR
Haptic Sandwich cihazından iç mekanda konum bilgilerinin alınması
sağlandı.
Haptic Sandwich cihazından dış mekanda konum bilgilerinin alınması
sağlandı.
Yol bulma algoritmasının kodlanması gerçekleştirildi.
Belirli bir süre içinde konum verilerinin güncellenmesi sağlandı.
İç ve dış mekan haritasının hazırlanması yapıldı.
Server üzerinde bulunacak haritada, gidilecek konumun seçilebilmesi
sağlandı.
Modüllerin birbirine bağlanması tamamlandı fakat stabil hale getirilemedi.
5.2. BAŞARISIZ OLUNAN KISIMLAR
Tüm modüllerin iç ve dış mekanda uyumlu bir şekilde çalışması
sağlanamadı. Bunun nedeni; server ile taşıyıcı arduino uno arasındaki serial
iletişimin çift yönlü olmasının sağlanamaması olarak belirlendi. Bu
noktadaki sorun veri paketini parse eden kodun hatalı olmasından
kaynaklandığı tespit edildi fakat çözüm sağlanamadı.
Haptic Sandwich cihazının yön bilgisine göre hareket etmesinin sağlanması
yukarıdaki maddede açıklanan nedenlerden dolayı gerçekleştirilemedi.
15
6. DEĞERLENDİRME
Projemiz haberleşmede olulşan sorunlardan dolayı, kullanıma hazır hale
getirilememiş olsa da bizler grubun her bir üyesi olarak bu proje sayesinde, arduino,
gps, irrlicht kütüphanesi ve yol bulma gibi konularda tecrübe ve bilgi sahibi
olmamızı sağlamıştır.
16
6. KAYNAKLAR
[1] Spiers, Adam, et al. "First validation of the Haptic Sandwich: a shape changing
handheld haptic navigation aid." 17th International Conference on Advanced
Robotics. IEEE, 2015.
[2] Gints Jekabsons, Vadim Kairish, Vadim Zuravlyov. (2011). An Analysis of Wi-
Fi Based Indoor Positioning Accuracy. Scientific Journal of Riga Technical
University. 47 (1), 131-137.
[3] Meghan Brown . (2015). Haptic Device Offers GPS Navigation for the Blind.
Available: http://www.engineering.com/PLMERP/ArticleID/10649/Haptic-Device-
Offers-GPS-Navigation-for-the-Blind.aspx. Last accessed 20th Nov 2015.