İSTANBUL TEKNİK ÜNİVERSİTESİ UÇAK VE UZAY BİLİMLERİ FAKÜLTESİ BİTİRME ÇALIŞMASI Bölümü : Uzay Mühendisliği Bölümü Konusu : Üçgenleme yöntemi ile koordinat ölçümü Adı ve Soyadı : Halit Bener SUAY Öğrenci No. : 110020103 Danışmanı : Yrd. Doç. Dr. Turgut Berat KARYOT Teslim Tarihi : 22 Mayıs 2006
2 ÖNSÖZ Çalışmamda amaç, aktif üçgenleme yöntemin ayrıntılarıyla teorik olarak hangi temeller üzerine kurulu olduğunu tam olarak anlamak, edindiğim ön bilgiler ışığında benzer bir sistemin tasarımını ve uygulamasını yapmak, bir noktanın koordinatlarını ölçmek, kendimden sonra bu sahada çalışmak isteğinde olabilecek kişilere elimden geldiğince faydalı bir bilgi birikimi bırakmak idi. Çalışmam için öncelikle üçgenleme yönteminin, hayatta hangi alanlarda kullanıldığını araştırdım. Ardından, yöntemin matematiksel olarak nasıl modellendiğini öğrenmeye yönelik araştırmalarıma devam ettim. Matematik modelin uygulamada hangi donanımlarla, hangi şartlar altında çalışabileceği üzerine bilgi topladım, sonrasında kendi uygulamamı yapabileceğim bir donanım ve bir yazılım tasarladım. Hedefim doğrusal ışık kaynağı (Bu çalışmada LASER) ile işaretlenen bir noktanın, sayısal kamera kullanılarak, kameraya göre üç boyutlu uzaydaki koordinatlarını bulmak idi. Sayısal kamera Linux işletim sistemi ile çalışan masaüstü bilgisayardan denetlenmektedir ve CMOS algılayıcı yüzeye sahiptir. Tasarımı hayata geçirerek, denemeler yaparak ve sistemin çalışmasını izleyerek yöntemin doğruluğunu ve tekrarlanabilirliğini etkileyen durumlar hakkında deneyim edindim. Sonuç olarak üçgenleme yöntemi ile koordinat ölçme işlemi için hazırlanacak bir sistemde hangi donanımların niçin kullanılabileceğini, sistemin hatalarının kaynaklarını, sistem hatalarının yazılım ile nasıl düzeltileceğini ve hangi çeşit düzeltmeye niçin ihtiyaç olunduğunu tamamen kavradım. Bu çok aşamalı, zorlu ve sabır gerektiren tasarım ve uygulama çalışmasında bana her zaman cesaret ve güven vererek yol gösteren değerli hocam Sayın Turgut Berat KARYOT a, her aşamada sorunlarıma ortak olan kıymetli çalışma arkadaşım Başak Zeynep YILMAZ a, sistemin tasarım ve çiziminde bilgi, fikir ve görüşlerini paylaşarak destek olan sevgili Başar SAVRAN a, tasarım aşaması bittikten sonra sistemin uygulamaya geçirilmesi sürecinde beni destekleyen Sayın K.Can BAYAR ve Sayın Hakan ALTINAY a (hayatım boyunca unutamayacağım) bana özveriyle vakit ayıran, adeta bir öğretmen gibi yardımcı olan KaleALTINAY Robotik ve Otomasyon A.Ş. Mühendisleri Sayın Ömer EREN e, Sayın M.Volkan DURUK a, Sayın M.Ağan ŞİMŞEK e, Sayın Atilla ÜSTÜN'e, bana vakit ayıran Sayın Tayfun KESİMOĞLU'na, Sayın Ayhan MERMER'e, Sayın Ali KAYA'ya, Sayın Mustafa ODABAŞI na, yazılımsal kabiliyetimin bu aşamaya gelmesinde temel teşkil eden Sayın M.Nejat AYDIN a, KaleALTINAY Robotik ve Otomasyon A.Ş. Mekanik Atölyesi çalışanlarından Sayın Necdet ÇINARLI, Sayın Engin ÖZCAN, Sayın Yaşar DEMİRBAŞ'a, ayrıca bugünlere gelmemi sağlayan değerli annem Mevlude Oya SUAY a, babam Engin SUAY a, beni hiç yalnız bırakmayan kardeşim İlhan Damla SUAY a ve sevgili Büşra SÖZÜPEK e sonsuz teşekkürler. Sizsiz olmazdı... İstanbul, Mayıs 2006 Halit Bener SUAY
3 ÖZET Aktif üçgenleme yöntemi ile koordinat ölçümü problemi, bir ışık kaynağı kullanılarak aydınlatılan ve bir algılayıcı (genelde sayısal kamera) kullanılarak, koordinatı ölçülmek istenen noktanın bir referans noktasına göre (genelde kameranın algılayıcı yüzeyi ya da mercek takımının merkez noktası) koordinatlarını (uzaklığını ve yüksekliğini) belirlemek problemidir. Bu problem, temel geometri esaslarına dayanır. Kullanılan ışık kaynağı, algılayıcı ve ölçülmek istenen nokta, kuşbakışı bakıldığında bir üçgen oluştururlar. Ölçülmek istenen noktadan yansıyan ışının algılayıcı yüzey üzerindeki iz düşümü, algılayıcı yüzeyin yatay doğrultudaki merkezi ve mercek takımının merkezi de kuşbakışı bakıldığında ikinci bir üçgen oluştururlar. Bu iki üçgen, problemin çözümü için gerekli bütün bilgileri barındırır. Bilgi toplayabilmek için, algılayıcıdan elde edilen görüntüyü bir yazılım ile işlemek gerekir. Görüntü, işlendikten sonra bilinen diğer açı ve uzaklık bilgileriyle birlikte değerlendirilir. a b c Yukarıda tanımladığım ilk üçgende, genel kural olan = = yazılı ifade ile Sinα Sinβ Sinθ Bir üçgende, iç açıların sinüslerinin, o açıların karşılarındaki kenarların uzunluklarına bölümleri birbirlerine eşittir teoremi kullanılarak, bildiğimiz iki açı değeri (1. Doğrusal ışık kaynağından çıkan ışının algılayıcı yüzey ile yaptığı açı; 2. Doğrusal ışık kaynağı ile algılayıcı yüzey arasındaki mesafenin karşısındaki açı) ve bir uzunluk değeri (doğrusal ışık kaynağı ile algılayıcı yüzey arasındaki mesafe) sayesinde, bilmediğimiz uzunluğu, yani ölçmek istediğimiz noktanın algılayıcı merceğinin merkez referans noktasından uzaklığını bulabiliriz. Ben de çalışmamda matematiksel olarak bu yöntemi uyguladım. Görüntü yakalamak, işlemek ve hesap yapmak için yazdığım yazılım C programlama dilindedir. Amerikan EPIX Inc. firmasının modeli SV2112 olan Zoran marka CMOS algılayıcı yüzeye sahip sayısal kamerası ve 640nm dalga boyunda kırmızı renkli ışık saçan LASER ışık kaynağı, tasarımını yaptığım alüminyum tabla üzerine monte edilmiştir. Sayısal kamera, Intel tabanlı, Linux Fedora Core 2 işletim sistemi ile çalışan bir masaüstü bilgisayarın PCI yuvasına takılı olan EPIX Inc. firmasının modeli D2X olan görüntü yakalama kartı ile çalışmaktadır. Bu donanımla LASER ışık kaynağının aydınlattığı noktanın koordinatlarının ölçümüne çalıştım. Çalışmanın sonucu olarak kullanılan LASER ışık kaynağının, kaynağın doğrultusunu değiştiren mekanizmanın, CMOS algılayıcı yüzeyin resim elemanı (piksel) sayısının, kullanılan mercek takımının, tasarladığım tablanın boyutlarının ve üretim şeklinin, tümü birleşerek artan ölçüm hatalarına sebep olduklarını, önceden uzaklığı bilinen belirli bir noktanın ölçülmesi yöntemiyle bu hataların belirlenebileceğini, sistemin kalibrasyonunun bu şekilde yapılabileceğini öğrendim. Yöntem ve sistem hakkında çok daha detaylı bilgiyi çalışmada çeşitli başlıklar altında aktarmaya çalıştım.
4 İÇİNDEKİLER ÖNSÖZ... 2 ÖZET... 3 İÇİNDEKİLER... 4 NOTASYON LİSTESİ... 5 1.GİRİŞ... 7 2.AKTİF ÜÇGENLEME YÖNTEMİ İLE DERİNLİK ÖLÇÜMÜ PRENSİBİ... 8 3.TASARLANAN VE GERÇEKLEŞTİRİLEN OPTO-MEKANİK PLATFORM... 14 3.1.Algılayıcı donanım... 14 3.1.1.Sayısal kamera... 14 3.1.2.CMOS algılayıcı yüzey... 16 3.1.3.Mercek... 18 3.1.4.Görüntü yakalama kartı... 18 3.2.Doğrusal ışık kaynağı... 19 3.3.Masaüstü bilgisayar... 20 3.4.Adım motoru... 20 3.5.Donanımsal yapı... 21 4.YAZILIM TABANI... 23 4.1.Linux işletim sistemi hakkında genel bilgi ve Linux tabanlı yazılım geliştirmek için bu çalışmada kullanılanlar... 23 4.1.1.Linux nedir?... 23 4.1.2.Linux tabanlı işletim sisteminin tercih edilme gerekçeleri... 24 4.1.3.Linux tabanlı yazılım geliştirmek için bu çalışmada kullanılanlar... 24 4.2.Görüntü yakalama kartının sisteme tümleştirilmesi... 26 4.3.Görevin planlanması ve programların akış şemaları... 28 4.4.Uygulama... 35 4.5.Sistemin kalibrasyonu için giriş ve ölçümlerden alınan sonuçlar... 36 5.İYİLEŞTİRME ÖNERİLERİ... 45 SONUÇ... 46 KAYNAKLAR... 47 EKLER... 48 EK 1: ANA_PROGRAM.C KAYNAK KODU... 48 EK 2: UZ.C KAYNAK KODU... 93 EK 3: DOSYA_ADİ.H... 98 EK 4: MAKEFİLE... 98
5 Şekil 1: NOTASYON LİSTESİ Y i : Y m : Y l : Y o : Cisimden yansıyan noktanın CMOS yüzeyinde izinin düştüğü piksel ile merkez piksel arasındaki mesafe CMOS yüzeyin ilk pikseliyle merkez pikseli arasındaki mesafe LASER ile sayısal kamera arasındaki mesafe CMOS yüzey ile mercek takımının referans merkez noktası arasındaki dik mesafe M: Mercek takımının referans merkez noktası N: LASER ışınının cisimden yansıdığı nokta L: LASERin referans merkez noktası [KN]: Ölçüm cihazıyla cisim arasındaki dik uzaklık, menzil [MN]: Hesaplanacak Z mesafesi α : β : LASER ışınının, Y o mesafesinin doğrultusuyla yaptığı açı LASERin, Y l mesafesinin doğrultusuyla saat yönünde yaptığı açı Kısaltma ve terimlerin açıklamaları: CMOS: Complementary Metal Oxide Semiconductor kelimelerinin baş harflerinin kısaltmasıdır. Sayısal kameralar, film yerine algılayıcı yüzey kullanırlar. CMOS bir çeşit algılayıcı yüzeyin kısaltmasıdır. Sayısal kamera: Eski tip film kullanan kameralar yerine, film kullanmaksızın ışığın parçacıklarını gerilim değerlerine çeviren algılayıcı yüzeye sahip kamera türüdür. Algılayıcı yüzey: Bu çalışmada CMOS ile eş anlamlı olarak kullanılmıştır. Çünkü kullanılan sayısal kameranın algılayıcı yüzeyi CMOS türü yüzeydir. Mercek takımı referans merkezi: Bu çalışmada kullanılan mercek, içerisinde farklı mercekler barındırır ve ışığı her biri farklı kırarak istenilen noktaya odaklanılmasını dağlarlar. Bütün bu alt merceklere mercek takımı diyebiliriz. Bu takımın bir referans merkez noktası olmalı ki, çalışma sırasında bu noktadan algılayıcı yüzeye olan dik uzaklık hesaplanabilsin. Piksel: Picture s Element kelimelerinin birleşmesiyle meydana gelmiştir. Sayısal bir resmin en küçük parçacığına denir. Merkez piksel: Algılayıcı yüzeyin yatay düzlemde 1288 pikseli vardır. Tam ikiye böldüğümüzde 644. piksel merkez piksel olacaktır. LASER: Çalışmada kullanılan doğrusal ışık kaynağıdır.
6 Doğrusal ışık kaynağı: Işığı florasan kaynaklar ya da tungsten teli kullanan kaynaklar gibi küresel olarak yaymayan, bir doğrultu üzerinde yayan ışık kaynağına denir. Bu çalışmada LASER ile eş anlamlıdır. Satır:Sayısal bir resmin pikselleri yan yana dizildiklerinde o resmin bir satırını oluştururlar. Sütun: Sayısal bir resmin pikselleri alt alta dizildiklerinde o resmin bir sütununu oluştururlar. Yatay aynalama: Sayısal bir resmin satırlarında bulunan piksellerin yer değiştirerek resme aynadan bakılıyormuş izlenimini yaratması Dikey aynalama: Sayısal bir resmin sütunlarında bulunan piksellerin yer değiştirerek resme aynadan bakılıyormuş izlenimini yaratması Alt- örnekleme (piksel kırpılması): Algılayıcı yüzeyin bütün piksellerinin değil, her iki pikselde bir ya da her dört pikselde bir pikselin etkin olmasına denir. Böylece etkin olmayan pikseller kırpılmış olur. Görüntünün çözünürlüğü azalır. Kare/saniye oranı: Bir kameranın bir saniyede kaç kare (kez) görüntü aldığını ifade eden orandır.
7 1.GİRİŞ Aktif üçgenleme yöntemi özellikle endüstriyel ortamda ve havacılıkta, konum ve koordinat bulma, çevre algılama, kalite kontrol ve üretim gibi alanlarda kullanılmaktadır. Sanayide kaynak, boyama, taşıma, kesme gibi alanlarda endüstriyel robotların kullanımı oldukça yaygınlaşmıştır. Kullanıldıkları ortamlarda, bu çeşit robotlar programlandıkları şekilde çalışırlar ve eğer harici bir sistem kullanılmıyorsa çevrelerini uzaktan algılamaktan acizdirler. Programlandıkları çevre koşulları, robotlar çalışırlarken sağlanamıyorsa ki bu bir çok durumda meydana gelebilir dış ortamı algılamak yapılan işin ve robotun sağlığı açısından son derece önemlidir. Bu noktada koordinat belirleyebilecek ve konum bulabilecek, bu bilgiyi robota aktarabilecek bir cihazın önemi ortaya çıkmaktadır. Optik algılayıcı sistemler, algılayıcı yüzeyler, mercekler, LASER teknolojisi ve sayısal kameralar üzerinde yapılan araştırmalar ve teknolojik gelişmeler sayesinde bu yöntemi kullanan, mikron mertebesinde hassasiyette ölçüm yapma kabiliyetine sahip cihazlar yabancı firmalar tarafından seri olarak üretilmekte ve satışa sunulmaktadır. Fakültemizin 1996 mezunlarından M. Ağan ŞİMŞEK in bitirme ödevi çalışması, benim çalışmalarım için temel oluşturmuştur. Sayın ŞİMŞEK, aktif üçgenleme yöntemiyle, CCD algılayıcı yüzeyli sayısal kamera ve galvanometreden yansıyan çizgisel LASER ışığı kullanarak konum ve şekil algılama çalışması yapmıştır. Çalışmasının sonunda o günkü imkanların el verdiği düzeyde ne gibi iyileştirmeler yapılabileceğinden bahsetmiştir. Ben de kendisinin ödevinde oluşturduğu düzeneği ve matematiksel modeli kendime örnek alarak çalışmalarıma yön verdim. Ülkemizde henüz yeni yaygınlık kazanmaya başlayan görüntü işlemek ve ölçüm yapmak, çevre algılamak üzerine bilgi birikimi oluşması açısından bu çalışma Sayın ŞİMŞEK in çalışmasının daha genişletilmiş ve oldukça ilerletilmiş bir sürümüdür. Bu alanda fakültemizde yapılan çalışmaların ve bilgi birikiminin azlığı açısından da son derece önemli bir çalışma olduğu kanısındayım. Aynı matematiksel modeli kullanılmakla birlikte, çalışmamı farklı kılan noktalar, donanım kalitesinin kıyaslanamayacak kadar yüksek olması, kullandığım özgür olarak dağıtılabilen işletim sistemi, yazılımımın akışı, yazılımımın bir kullanıcı arayüzüne sahip olması, doğrusal ışık kaynağını adım motoru kullanarak yönlendirilmesi, çalışan sistemin kalibre edilmesi yönünde girişimlerim, elde ettiğim sonuçlar ve önerilerimdir. Çalışmamda dört ana bölüm bulunmaktadır. Birinci bölümde kullandığım yöntemin prensipleri ve matematiksel modellemesi, ikinci bölümde kullandığım donanımsal alt yapı, üçüncü bölümde kullandığım yazılım alt yapısı, yazılımların akış şemaları, yazılımın uygulama aşaması, uygulamadan elde edilen veriler, sistemin kalibrasyonu için yapılanlar, son olarak dördüncü bölümde ise sistem için iyileştirme önerileri bulunmaktadır.
8 2.AKTİF ÜÇGENLEME YÖNTEMİ İLE DERİNLİK ÖLÇÜMÜ PRENSİBİ Ölçüm yaparken 3 durumla karşı karşıya kalınabilir. İlk durum cisimden yansıyan ışının, [ışık kaynağı kamera] doğrultusu ile yaptığı açının (LMN açısının) dar açı olması durumudur. Şekil 1.a bu durumu temsil eder. CMOS düzlemi Y i α M Z Y m Yansıyan ışın Cisim Y o K Mercek α N 90 β Y l Yansıma noktası β LASER ışını 90 β L Bu durum için: Şekil 1.a İlk durum için geometrik yapı Sabitler - Sistemde LASER ışınının doğrultusunu değiştirmek için adım motoru kullanıldığından, her bir adımda sabit bir açı değişimi olur, sonuç olarak β açısı bilinir
9 - β açısı bilindiğine göre 90 - β da buradan hesaplanabilir - Ym + Y l mesafesi, donanımsal bir özelliktir, Y m CMOS yüzeyi üreten firma tarafından belirlenmiştir, Y l ise sistemin tasarım aşamasında belirlendiğinden toplam mesafe bilinir - Yo mesafesi merceğin odaklandığı mesafeye göre değişmekte olsa bile, bu çalışmada mercek 1 metreye odaklanmıştır ve bu sabit odak uzaklığı için Yo da sabittir ve hesaplanabilir Değişkenler - Yi mesafesi ve N yansıma noktasının konumu LASERin doğrultusu değiştikçe ( β açısı değiştikçe ) değişecektir - β açısı değiştikçe 90 - β açısı değişecektir - Yi mesafesi değiştikçe α açısı değişecektir Kullanılan eşitlik Z ( Yl + Ym + Yi ) = Sin( β ) Sin ( α + 90 β ) (1.1) Ayrıca, şekilden açıkça görüldüğü üzere Tan ) = Y i (α (1.2) Yo α = ArcTan( Tan( α)) (1.3) (1.3) işlemi sonucunda α açısı elde edilir. Adım motorunun kontrolünü yazılım yaptığından β açısı da sürekli bilinmektedir. Böylece Z = Sin( β ) ( Y + Y l m Sin( α + 90 β ) + Y ) i (1.4) (1.4) işlemi sonucunda aradığımız Z uzaklığı elde edilir.
10 Ölçüm sırasında, ikinci durumla karşılaşılma ihtimali oldukça düşüktür. Bu halde cisimden yansıyan ışının, [ışık kaynağı kamera] doğrultusu ile yaptığı açı (LMN açısı) dik açı olur. Şekil 1.b bu durumu temsil eder. CMOS düzlemi Z Cisim M, K Yansıyan ışın N Y m Y o Mercek 90 β Yansıma noktası Y l LASER ışını β 90 β L Şekil 1.b İkinci durum için geometrik yapı Bu durum için: Sabitler - İlk durumla aynı şekilde β açısı bilinir - β açısı bilindiğine göre yine 90 - β da buradan hesaplanabilir - Ym + Y l mesafesi, donanımsal bir özelliktir, Y m CMOS yüzeyi üreten firma tarafından belirlenmiştir, Y l ise sistemin tasarım aşamasında belirlendiğinden toplam mesafe bilinir
11 - Yo mesafesi merceğin odaklandığı mesafeye göre değişmekte olsa bile, bu çalışmada mercek 1 metreye odaklanmıştır ve bu sabit odak uzaklığı için Yo da sabittir ve hesaplanabilir - Burada Şekil 1.adan farklı olarak Yi mesafesi sıfıra eşit olduğundan şekilde görünmemektedir. - M ve K noktaları aynı noktadır. - Yi sıfır olduğundan α açısı da sıfırdır. Değişkenler - β açısı değiştikçe 90 - β açısı değişecektir Kullanılan eşitlik Z ( Yl + Ym ) = Sin( β ) Sin (90 β ) (1.5) Adım motorunun kontrolünü yazılım yaptığından β açısı sürekli bilinmektedir. Böylece Z = Sin( β ) ( Y + Y Sin(90 β ) l m ) (1.6) (1.6) işlemi sonucunda aradığımız Z uzaklığı elde edilir.
12 Karşılaşılabilecek üçüncü durumda cisimden yansıyan ışının, [ışık kaynağı kamera] doğrultusu ile yaptığı açı (LMN açısı) geniş açıdır. Şekil 1.b bu durumu temsil eder. Cisim CMOS düzlemi K Z α 90 β N Y m Y i α M Yansıyan ışın 90 β α Y o Mercek Yansıma noktası LASER ışını Y l β 90 β L Bu durum için: Şekil 1.c Üçüncü durum için geometrik yapı Sabitler - β açısı ilk iki duruma benzer şekilde bilinir - β açısı bilindiğine göre 90 - β da buradan hesaplanabilir - Ym ve Y l mesafeleri, donanımsal özelliklerdir, Y m CMOS yüzeyi üreten firma tarafından belirlenmiştir, Y l ise sistemin tasarım aşamasında belirlendiğinden toplam mesafe bilinir
13 - Yo mesafesi merceğin odaklandığı mesafeye göre değişmekte olsa bile, bu çalışmada mercek 1 metreye odaklanmıştır ve bu sabit odak uzaklığı için Yo da sabittir ve hesaplanabilir Değişkenler - Yi mesafesi ve N yansıma noktasının konumu LASERin doğrultusu değiştikçe ( β açısı değiştikçe ) değişecektir - β açısı değiştikçe 90 - β açısı değişecektir - Yi mesafesi değiştikçe α açısı değişecektir Kullanılan eşitlik Z ( Yl + Ym Yi ) = Sin( β ) Sin (90 β α) (1.7) Ayrıca, şekilden açıkça görüldüğü üzere Tan ) = Y i (α (1.8) Yo α = ArcTan( Tan( α)) (1.9) (1.9) işlemi sonucunda α açısı elde edilir. Adım motorunun kontrolünü yazılım yaptığından β açısı da sürekli bilinmektedir. Böylece Z = Sin( β ) ( Y + Y l m Sin(90 β α) Y ) i (1.10) (1.10) işlemi sonucunda aradığımız Z uzaklığı elde edilir.
14 3.TASARLANAN VE GERÇEKLEŞTİRİLEN OPTO-MEKANİK PLATFORM 3.1.Algılayıcı donanım Çalışmamda Amerikan EPIX Inc. firması tarafından satışa sunulan ZORAN marka ZR32112 CMOS algılayıcı yüzeyli SILICON VIDEO 2112C model sayısal kamera ve yine EPIX Inc. firması tarafından satışa sunulan bu sayısal kamera için tasarlanmış D2X model görüntü yakalama kartı kullandım. 3.1.1.Sayısal kamera SILICON VIDEO 2112C model sayısal kamera, etkin olarak programlanabilen 1288 x 1032 piksellik çözünürlüğe sahiptir, alt örnekleme yapmak, resimler üzerinde yatay ve dikey aynalama yapmak mümkündür, 10 bitlik piksel derinliği sunar, ZORAN marka ZR32112PLC renkli CMOS algılayıcı sayesinde piksel kırpmak (decimation) mümkündür ve geniş bir piksel zamanlama sıklığı aralığında görüntü verebilir. Hareketli ya da hareketsiz görüntü almak mümkündür. Sadece tek bir kabloyla görüntü yakalama kartına bağlanır. Güç ve veri aktarımı aynı kablo üzerinden gerçekleşir. 181gr. ağırlığındadır. 1, 2/3, 1/2" veya 1/3 çaplı C tipi adaptörlü mercekler ile uyumludur. Çözünürlük 16 MHz için kare / saniye 1288 x 1032 9.3 fps 1024 x 768 12.4 fps 800 x 600 15.9 fps 640 x 480 19.6 fps 640 x 480 32.4 fps 320 x 240 39.2 fps 320 x 240 102 fps
15 Şekil 2 Sayısal kameranın boyutları Resim 1 SILICON VIDEO 2112C
16 3.1.2.CMOS algılayıcı yüzey ZR32112 1288x1032 Sayısal algılayıcı özellikleri: Canlı ve hareketsiz görüntü alınabilir Renk dengesi sağlar Denetlenebilir pozlandırma Alının görüntüyü boyutlandırmak mümkündür Yatay ya da düşey aynalama yapılabilir 2lik veya 4lük piksel kırpma ( alt örnekleme) 1288 x 1032 etkin çözünürlük 12,3 mm algılayıcı köşegen uzunluğu 7,5 mikrometre x 7,5 mikrometre piksel boyutu RGB Bayer süzgeci En fazla 16 Mhz çalışma sıklığı 1280 x 1024 pikselde 9.3 kare/saniye görüntü 640 x 480 2lik piksel kırpma 32,4 kare/saniye görüntü 322 x 258 4lük piksel kırpma 102 kare/saniye görüntü 10 bit piksel derinliği besleme gerilimi 3.3V Güç tüketimi 260 mw Şekil 3 Piksel kırpmak (Kare içine alınan pikseller etkinleştirilirler)
17 Şekil 4 CMOS algılayıcı yüzeyin boyutları Şekil 5 CMOS algılayıcı yüzey üzerinde pikseller için sıra ve sütun gösterimi
18 3.1.3.Mercek Çalışmada NAVITAR marka 1 mercek çapına sahip 25mm sabit odak uzaklıklı DO 2514 model mercek kullanılmıştır. Diyafram açıklığı 1,4 tamamen kapalı arasında değişebilir. Diyafram ve odak ayarı el ile yapılır. Odak menzili 0.5 metre sonsuz arasında ayarlanabilir. C tipi adaptöre sahiptir. 60 gr ağırlığındadır. ( 1 = 25.4 mm çevrim oranı göz önünde bulundurulabilir) 3.1.4.Görüntü yakalama kartı Resim 2 NAVITAR DO - 2514 Mercek EPIX Inc. firmasının satışa sunduğu PIXCI D2X görüntü yakalama kartının özellikleri: Çizgi ya da alan tarama kabiliyeti 8 24 bit kamera verisi Dışarıdan Tetikleme 32 bit PCI veri yolu 32 bitlik ve 64 bitlik PCI veri yolları ile uyumlu 8-4096 piksel / satır 1 4096 satır / resim (alan tarama) 1 65534 satır / resim (satır tarama) Bilimsel çalışmalar ve yapay görme uygulamaları için gereken yüksek çözünürlüğü sağlar. Piksel değerlerini etkilemeden kameradan bilgisayara aktarır. Kameranın piksel sıklığı kameradan görüntü yakalama kartına olan veri akışının hızını belirler. Bilgisayarın PCI veriyolu denetleyicisi, görüntü yakalama kartından gelen, PCI veriyolundan geçen bilgisayarın belleğine veya diğer bir PCI veriyolu varış noktasına giden verinin hızını belirler. Yazılımsal uyumluluk: 32bitlik çalışma ortamı gerekir. Microsoft Windows XP, 2K, NT, ME, 98, 32-bit DOS ve bu çalışma için en önemlisi 32 bit LINUX işletim sistemi için kart sürücüsü de yine EPIX tarafından sağlanır. Boyutlar: 12.48 cm uzunluk 10.67 cm yükseklik
19 Resim 3 PIXCI D2X görüntü yakalama kartı Resim 4 Çalışmada kullanılan kamera kablo ve görüntü yakalama kartı 3.2.Doğrusal ışık kaynağı Bu çalışmada, doğrusal ışık kaynağı olarak sıradan bir LASER işaretçi kullanıldı. Genellikle LASER işaretçiler 650/670 nanometre dalga boyuna sahip kırmızı LASER diyot kullanırlar. Görece pahalı olan işaretçiler kırmızı turuncu ışık saçan 635 nanometre dalga boyuna sahip olanlar neredeyse diğerlerinin iki katı kadar parlaktırlar, insan gözünün kısa dalga boylarında ışığa çok hassas olması nedeniyle daha rahat görünürler Resim 5 Kırmızı LASER diyot (karşılaştırma amaçlı bozuk para ile birlikte gösterilmiştir)
20 3.3.Masaüstü bilgisayar Intel anakart ( PCI veriyoluna sahip ) Celeron 400 MHz işlemci 8 MB ekran kartı 256 MB ram bellek 20 GB sabit disk 3.4.Adım motoru Resim 6 Çalışmada kullanılan sıradan LASER işaretçi 15 derecelik adıma sahip 7.5 V beslemeyle çalışan oldukça az maliyetli 6 telli bir adım motoru 1:4 oranında dişli takımı ve ULN2803 entegresi kullanılarak sürülmüştür
21 3.5.Donanımsal yapı Bilgisayar Paralel kapı PIXCI Bağ1 A1 K K Cisim A2 DK Bağ2 L Bağ3 M Şekil 6 Donanımsal yapı
22 İfadeler: K: Sayısal kamera L: LASER M: Adım motoru DK: LASER ve adım motorunu denetleme birimi A1: Adım motorunu beslemek için 220V alternatif akım 7.5 V doğru akım adaptörü A2: LASERi beslemek için 220V alternatif akım 4.5V doğru akım adaptörü Bağ1: Kamera ile görüntü yakalama kartını birbirine bağlayan kablo Bağ2: LASERi besleyen kablo Bağ3: Adım motorunun sargılarına giden çoklu kablo
23 4.YAZILIM TABANI 4.1.Linux işletim sistemi hakkında genel bilgi ve Linux tabanlı yazılım geliştirmek için bu çalışmada kullanılanlar 4.1.1.Linux nedir? Linux, bilgisayarlar üzerinde uzun yıllardan beri çalışan işletim sistemi olan UNIX'e dayanan bir işletim sistemidir. Bir anlamda UNIX'in kişisel bilgisayarlar için olan bir sürümüdür. Zaman içinde UNIX, çok fazla görsel özellikleri kazanamadığı için günümüzde kişisel bilgisayarlar ve mini bilgisayar sistemlerinde yaygın kullanımı azalmıştır. Temel bazı işlemleri yapmak için bir öğrenci olan Linus Torvalds tarafından geliştirilen bir Linux işletim sistemi ardından özellikle Internet üzerinde çok sayıda programcının katkısıyla gelişmiş, ardından büyük bilgisayarlar şirketlerinin de destekleriyle bugün yaygın kullanılan bir işletim sistemi haline gelmiştir. Web sunucusu gibi özellikleri yerleşik olarak içeren Linux işletim sistemleri özellikle Internet bağlantılarının yönetilmesinde yaygın olarak kabul görmüştür. Tabi ki en önemlisi Linux ücretsizdir. Linux, ücretsiz, sağlam ve güçlü bir işletim sistemidir. Açık bir yapıda olduğu için, Linux'ün kaynak kodu herkes tarafından erişilebilir ve değiştirilebilir. Diğer bir deyişle bütün programcılar Linux'e katkıda bulunabilirler. Açık kod kavramıyla yaygınlaşan LINUX'ün temel özellikleri şunlardır: Sağlamlık (Kararlılık) Teknik sitelerde ve dokümanlarda şu şekilde açıklamalara sık rastlarsınız: Linux bilgisayarların daha az sistem çökmelerine maruz kalmıştır. Ve bu konudaki istatistikler Linux işletim sitemlerinin daha sağlam olduğunu göstermektedir. Güvenlik Linux'ün açık bir işletim sistemi olması, bilgisayar korsanlarının güvenlik boşluklarını daha kolay bularak sistemi zor durumda bırakacakları ifadesi genellikle doğru olmamaktadır. Bu bir anlamda Linux'ün güvenliğinin de çok sayıda kişi tarafından sağlandığı anlamına gelmektedir. Hız Linux işletim sistemi hızlı ve etkindir. Yine araştırmalar (SPEC Corporation's SPECweb99 benchmarks) Linux işletim sisteminin isteklere karşı daha hızlı yanıt verdiğini göstermektedir. Maliyet Linux işletim sistemi CD'lerine dağıtım denilmektedir. Hemen hemen tüm Linux dağıtımları Internet üzerinde ücretsiz indirilebilmektedir. Ayrıca birçok Linux yazılımı da ücretsizdir. Çoğu Linux işletim sistemlerinde Apache gibi ücretsiz Web sunucusu yazılımı da gelmektedir. Doğal olarak, maliyeti düşük olmaktadır.
24 Yaygınlık Bilinçli kullanıcı, eğitim kurumları ve profesyoneller Linux işletim sistemine büyük ilgi göstermektedir ve günümüzde değişik Linux işletim sistemleri yaygın olarak kullanılmaktadır. 4.1.2.Linux tabanlı işletim sisteminin tercih edilme gerekçeleri Linux işletim sisteminin kendisi C programlama dilinde yazılmış olduğundan, yüklendiğinde hazır olarak C programlama dilinde yazılım geliştirmek için bir çok yazılımı beraberinde sunuyor. Bilgisayarın bütün donanımına müdahale etme iznini en yetkili kullanıcıya veriyor. Bu da benim çalışmamda büyük bir kolaylık sağladı. Ayrıca telif ücreti ödemeden kendi geliştirdiğim yazılı Linux işletim sistemi kurulu olan bütün bilgisayarlarda özgürce kullanma hakkına sahip olmak. 4.1.3.Linux tabanlı yazılım geliştirmek için bu çalışmada kullanılanlar Bu çalışma bir Linux dağıtımı olan RedHat firmasının geliştirdiği Fedora Core 2 (2_6_5_1.358 çekirdeği ile) işletim sistemi üzerinde yapıldı. Bu dağıtımın tercih edilmesinin sebebi kullanılan görüntü yakalama kartının sürücüsünün bu işletim sistemine uyumlu olmasıdır. Çalışmamda kullandığım yazılım C programlama dilinde yazılmıştır. Yazılım, GNOME Linux masaüstü yöneticisinde çalışabilen etkileşimli ve görsel bir kullanıcı arayüzüne sahiptir. Yazılımın kaynak kodunu yazmak için gedit (gnome edit) yazılımını, kaynak kodu derlemek için işletim sisteminin beraberinde gelen gcc ( gnu compiler collection) yazılımını, görsel arayüzü oluşturmak ve resim işlemek için GTK (gimp tool kit) ve GDK (gimp drawing kit) kütüphanelerini ve bu tezi yazmak için de Open Office yazılımını kullandım. - GNOME, GNOME (GNU Network Object Model Environment), GNU Projesi' nin bir parçası olarak Unix ve Unix benzeri işletim sistemleri için geliştirilen bir masaüstü ve geliştirme ortamıdır. Ağustos 1997' de Miguel de Icaza ve Federico Mena tarafından KDE' ye bir başka alternatif olması için geliştirilmeye başlanmış ve günümüzde de KDE ile birlikte en popüler Unix masaüstü ortamı olmuştur. GIMP Araç Seti ( GIMP Toolkit ) (GTK+) ve kendine ait GNOME kütüphaneleri kullanılarak geliştirilmektedir. - GEDIT gedit, GNOME masaüstü yöneticisinin resmi yazı düzenleme yazılımıdır. Bist ve kullanımı kolaydır. Bu yazılımı kullanmamdaki sebep C programlama dili için yazım renklendirmesi sunması idi. Aynı bir C derleyicisinin yaptığı gibi kaynak kodun içerisindeki işlemleri farklı renkte, anahtar kelimeleri farklı renkte gösterebilmektedir. Ancak bir derleyici değil, düzenleme aracıdır.
25 - GCC (GNU Compiler Collection ) Bir çok yazılım diline destek veren, kullanımı rahat ve hızlı bir derleyicidir. - GTK GTK(GIMP Toolkit-GIMP Araç Seti), yazılımlarda kullanıcı grafik arayüzü oluşturmaya yarayan bir kütüphanedir.gpl lisansı altında korunmaktadır, yani GTK kullanarak hiçbir lisans ya da telif ücreti ödemeden açık, özgür yazılımlar, hatta özgür olmayan ticari yazılımlar geliştirebilirsiniz. Bu kütüphaneyi kullanarak açık-kodlu, ücretiz veya ücretli programlar yazabilirsiniz. GTK, GIMP araç kiti olarak bilinir çünkü ilk olarak GNU Resim İşleme Programı'nı (GIMP) geliştirmek için yazılmış, ancak daha sonra GTK çok fazla sayıda projede kullanılmıştır, bunlara GNOME projesi de dahildir. GTK GDK (GIMP Çizim kiti GIMP Drawing Kit) üzerine inşa edilmiştir. GDK ise pencere işlevlerine ve istemci taraflı resim işleme kütüphanesi olan gdk-pixbuf' un düşük seviye işlevlerine ulaşmak için arabirimdir. GTK tam olarak bir nesne tabanlı uygulama programlayıcısı arayüzüdür (API). Tamamen C ile yazılmış olmasına rağmen, sınıflar (classes) ve geri çağırım işlevleri (callback functions) (işlem işaretleyiciler) fikri kullanılarak uyarlanmıştır. GTK,GTK takımı tarafından geliştirilen üç bileşene bağımlılık duyar: GLib: Bazı standart çağrıların yerine işlevler, ayrıca bağlı listeleri vb. yönetmek ve işlemek için ek işlevler içerir. Pango: GTK Pango kütüphanesini uluslararası metin çıktısı için kullanır. ATK: Bu kütüphane erişebilirlik için arayüzlerin ayarlanmasını sağlar.
26 4.2.Görüntü yakalama kartının sisteme tümleştirilmesi Görüntü yakalama kartının kullanılabilmesi, dolayısıyla kameraya erişilebilmesi ve görüntü alınabilmesi için öncelikle kartın sürücüsünün bilgisayara tanıtılması, yüklenmesi gerekir. Ayrıca istenilen çözünürlükte görüntü alabilmek için görüntü yakalama kartına bilgisayarın belleğinin bir kısmını ayırmak gerekmektedir. Bu işlem Linux için özel bir yöntemle gerçekleştirilir. - Bellek ayırmak için: Çalışmamda kullandığım Fedora Core 2 dağıtımı, işletim sistemi başlatıcısı olarak GRUB yazılımını kullanmaktadır, /etc/grub.conf dosyasında bu yazılımın ayarları bulunmaktadır. Örneğin bilgisayarda birden çok işletim sistemi yüklü ise, yahut aynı işletim sistemi farklı ayarlarda başlatılmak isteniyor ise burada yazılı olan kısımlar üzerinde değişiklik yapmak gerekir. İşletim sistemi başlarken, Linux e bilgisayarın belleğinin sadece bir kısmını kullanması için izin vermemiz mümkündür. Bu sayede arta kalan bellek görüntü yakalama kartı tarafından kullanılacak ve istenilen çözünürlükte görüntü almak mümkün olacaktır. Bunun için /etc/grub.conf dosyasında bulunan title Fedora Core (2.6.5-1.358) + PIXCI root (hd0,0) kernel /boot/vmlinuz-2.6.5-1.358 ro root=label=/ rhgb quiet initrd /boot/initrd-2.6.5-1.358.img satırları şu şekilde değiştirilmiştir title Fedora Core (2.6.5-1.358) + PIXCI root (hd0,0) kernel /boot/vmlinuz-2.6.5-1.358 ro root=label=/ rhgb quiet mem = 220 initrd /boot/initrd-2.6.5-1.358.img Bu sayede, Linux işletim sistemi, bilgisayarın 256 MB olan tüm belleğini değil, 220 MB kısmını kullanıyor. Görüntü yakalama kartı için de 36 MB yer ayrılmış olur. - Sürücüyü yüklemek ve her açılışta kendiliğinden yüklenmesini sağlamak için: Görüntü yakalama kartı üreticisi tarafından yazılmış önergeleri izleyerek, 1. Sürücü (pixcii86.ko) dosyasının hangi konumda olduğu önemlidir, çalışmada kullanılan bilgisayarda dosyanın konumu /root/desktop/cyclops konumundadır. Sürücüyü işletim sistemine tanıtmak için root (en üst yetkiye sahip kullanıcı) kullanıcısı olarak komut satırına: # /sbin/insmod /root/desktop/cyclops/pixcii86.ko PIXCIPARM=-IA_225280-IM_16384- MB_16384 komutu yazılır ve uygulanır.