Bilgi Teknolojileri konusunda hayatımda bir kez olsun eğitim almak hep hayalimdi. Uzun bir aradan sonra sonunda ODTÜ Enformatik Enstitüsü WBL yüksek lisans programına kabul edildim ve sevinçten havalara uçtum. Eylül ayında kayıtlarım ve dersler başlayacak şimdiden sabırsızlınayorum. Herkesin hayallerine bir adım daha yaklaşması dileğiyle.27 Temmuz 2008 Pazar
Tekrar Üniversiteliyim
Bilgi Teknolojileri konusunda hayatımda bir kez olsun eğitim almak hep hayalimdi. Uzun bir aradan sonra sonunda ODTÜ Enformatik Enstitüsü WBL yüksek lisans programına kabul edildim ve sevinçten havalara uçtum. Eylül ayında kayıtlarım ve dersler başlayacak şimdiden sabırsızlınayorum. Herkesin hayallerine bir adım daha yaklaşması dileğiyle.27 Mayıs 2008 Salı
Robotunuzda Difransiyel Sürüş ile Köşeleri Almak
Servo ile sürüşten vazgeçmemle birlikte difransiyel sürüş ile ilgilenmem gerekti. Kınematik ve matematik bilgim oldukça temel olmasına rağmen biraz araştırınca difransiyel sürüşü ilgilendiren denklemler konusunda biraz fikir sahibi oldum. Burada gidilen mesafe açısından istenilen açıları dönmek için ne yapmak gerekir buna değineceğim. Zaman, hız ve ivmelenme burada bahsedeceklerim içersinde yer almıyor belki ileride bunlar üzerinde zaman harcama fırsatım olduğunda değinebilirim. 
26 Mayıs 2008 Pazartesi
İsminizi Ay'a Gönderin
25 Mayıs 2008 Pazar
Microsoft Robotics Studio, C#, Servo ve IR Sensör ile Engel Tanıma
- Son dereceye 20 derece ekle ve servoyu hareket ettir.
- 500 ms bekle (daha doğru bir okuma için)
- Sharp IR sensörden gelen mesafeyi oku.
- Mesafe ve açıdan gelen bilgilere göre merkez nokta kendin olmak üzere bunu kartezyen koordinat sitemine çiz.
Bahsi geçen adımlar için bir timerdan faydalanıp son okuma derecesini integer olarak tuttum. Timer tick fonksiyona ise yukarıdaki işlemleri ekledim oldukça basit.
8 Mayıs 2008 Perşembe
Robotik Rota Planlama. Gidilecek Açı ve Mesafe Bilinen Noktanın Koordinatlarını Bulmak.
Bu formül çıkış noktamız oluyor. Biz A açısını ve c yani mesafemizi biliyoruz. Böylece a = SinA x c ve b=CosA x c oluyor. Artık x ve y ekseninde kaç birim ekleyeceğimizi bildiğimiz için a(0,0) noktasından b(?,?) noktasına gidiş için a(0+a,0+b) bizim varış noktamızın yani b noktasının koordinatları oluyor. C# math class yardımıyla bu hesaplamaları basit bir kod yazarak yapabiliriz. Örnek olarak aşağıda yazdığım kodun bir bölümünü bulabilirsiniz.double rada = double.Parse(numDirection.Value.ToString()) * (Math.PI / 180);
double sina = System.Math.Sin(rada);
double da = sina * Double.Parse(numDistance.Value.ToString());
double cosa = System.Math.Cos(rada);
double db = cosa * Double.Parse(numDistance.Value.ToString());
int x = lastx + Convert.ToInt32(da);
int y = lasty - Convert.ToInt32(db);
fncPaintChangePoint(x, y);
fncPaintDrawLine(lastx, lasty, x, y);
start = false;
lastx = x;
lasty = y;
Gidilecek mesafe ve açı verildikten sonra gördüğünüz gibi bu noktalar işaretleniyor. Rotanızdan şaşmamanız dileğiyle.
16 Nisan 2008 Çarşamba
Beyin ile Kontrol, EEG(Electroencephalography), OpenEEG, Örüntü Tanıma ve Alternatif Kullanım Alanları
1929' da Hans Berger adında bir Alman doktor beyinin elektriksel hareketlerini kayıt edebilen ve bunları grafiksel olarak bir kağıtta gösterebilen buluşunu açıkladı. Ayrıca bu elektriksel hareketlerin beyinin aktivitelerine göre değiştiğini de keşfetti, bu değişimler uyku, oksijen eksikliği ve epilepsi gibi bazı hastalıklarda da ortaya çıkıyordu. İlk başta, diğer bilim adamları kendisine gülmesine rağmen çalışmaları klinik neuro fizyoloji alanında çığır açtı. Teknoloji günümüze kadar oldukça gelişti ve iş bilgisayarları bu yöntemle kontrol etmeye kadar geldi. Tabiki bunu "acaba herhangi bir cihazı düşünerek kontrol edebilirmiyim?" sorusunu biraz araştırırken öğrendim. Aklıma ilk gelen robot kontrolü için bu yöntem kullanılabilirmi sorusu oldu? (Resim Kaynak OpenEEG)
EEG yani Electroencephalography beyindeki elektriksel hareketleri algılayan bir cihaz olduğundan bahsetmiştim. Peki nedir bu elektriksel hareketler? Beyinin farklı bölgelerinde sürekli olarak elektriksel faliyetler meydana geliyor, bu faliyetler bölgeye, algılara ve duyulara göre değişim gösteriyor ve çoğu 1-20Hz aralığında meydana geliyor. Bu hareketleri dalga olarak ortaya çıkıyor ve 5 çeşite ayrılyor Alpha, Beta, Delta,Theta ve Gamma dalgaları. Her bir dalga beyinin farklı bir bölgesinde ve farklı faliyetlerde ortaya çıkıyor örneğin Delta dalgaları 3 Hz e kadar çıkabilmekle beraber yetişkinlerin ön loblarda ortaya çıkıyor ve uyurken değişim gösterebiliyor (Sol tarafta örnek bir delta dalgasını görebilirsiniz). (Resim Kaynak: Wikipedia)
Amplifikatör Modular EEG (Kaynak http://openeeg.sourceforge.net/doc/modeeg/modeeg.html)
Digital Board Modular EEG (Kaynak http://openeeg.sourceforge.net/doc/modeeg/modeeg.html)
Bu devrelere bağlı elektrodlar yardımıyla beyindeki elektriksel aktiviteleri kaydetmek için bilgisayarınıza bir arabirim sağlayabiliyorsunuz. Mantığıma göre eğer bir değişimi ölçebiliyorsak bunu bir girdi olarak kullanabiliriz. Bu girdi televizyonu açmak ta olabilir yada bir robotu ileri hareket ettirmek te olabilir. Bence buradaki normal dönemdeki patternları ölçerek ve farklı tepkilerimizdeki değişimlerini kullanarak bu tepkilerimizle bir devre yardımıyla acaba kontrol edebilirmiyiz?
Bunu öğrenmek için önce mevcut projemi bitirmem, 200€ luk bir tasarruf yapmam ve bu konudaki iştahımı arttırmam gerekiyor. Şimdilik sadece bir düşünceden ibaret.
15 Nisan 2008 Salı
12V u 5V a düşürmek
Daha önce robotuma SBC monte etmek istediğimden sözetmiştim. Bu isteğimle beraber 12V luk akümden 12V çeken serializer.net in yanına 5v çeken bir sbc kullanmam gerekiyor. İkisini aynı aküden besleme isteğimle beraber (ağırlık meselesi) bu tarz işlemleri yapmak için %45 verimlilikle çalıştığı söylenen lineer voltaj regülatörleri ve %80'e yakın verimlilikle çalışan switching voltaj regülatörleri olduğunu öğrendim. Bu switching voltaj regülatörlerini aramama rağmen bulamamla beraber esnaf arkadaşlar bu işi kendimin yapabileceğini söyledi. Kendi devrelerimi hazırlamaktan sürekli kaçmama rağmen bulduğum şemayla beraber gerekli devre elemanlarını istedim ve kendim yapmaya karar verdim.
12 Nisan 2008 Cumartesi
İlk Robotumun ve İlk Hareketleri
Uzun bekleyişler ve biraz hayal kırıklığından sonra ilk robotumun ana hatlarıyla montajını bitirdim. Şu an için encoder bağlı değil ancak video da göreceğiniz gibi servo ve motorlar çalışıyor. Bir adet usb kamera eklemeyi de ihmal etmedim. SBC için bir regüle devre hazırlar hazırlamaz SBC nin montajını da yapacağım böylece artık laptop'a bağlı kalmama gerek kalmayacak ve robot kapalı bir sistem olma yolunda bir adım daha atmış olacak.
Mekanik aksam beklediğimden çok daha iyi oldu plexiglass sakat ama kolay çalışabilir ve şık bir malzeme. Robotun ortaya çıkması ve belirginleşmesiyle beraber insan daha bir heyecanlanıyor. Bu arada eşimden robotun çok güzel olmasına rağmen çekimin ve çekim yerinin çok kötü olduğuna dair bir yorum aldım. Robotumu masadan kaldırıp evde dolaşırken bir video daha hazırlayacağım ancak bu konuda şu an için zaman harcamak istemiyorum. En azından bir fikir vermesi açısından bu ilk hareketler şimdilik yeterli olur sanırım.
Herkesin hayallerinin gerçek olması dileğimle.
Mekanik ve Robotik
Servo kontrolü ve tek motor ile sürmek konusundaki endişelerimi paylaşmıştım. Bunun dışında aksam olarak ilk bulduğum ahşap, kalem gibi parçaları kullanmak hata payının oldukça artmasına sebep oldu. Örneğin servo ile yön vermek bir işkence idi zira servoya gönderdiğiniz +10 derece komutu her serferinde ayrı bir etki yapıyordu sanki servo canlanmış o anki ruh haline göre takılıyordu. Bunun sonuçlarına ise "Autonoumus Navigation" açısından baktığımız zaman robotun nerede olduğunu bilmesinin imkanı yoktu zira sensörler 5 gittim derken mekanik aksam 2 gidebiliyordu(Matrix gibi algılarınız sizi acaba yanıltabilirmi).
ün oldukça ağır ve büyük olduğunu fark ettim. Bu sebeple çok komik bir fiyata daha küçük ve hafif bir akü alıp denemek istedim. Güç konusunda bir ihtiyacım baştan beri var aslında. Single board computer kullanımından daha önce bahsetmiştim, buradaki sıkıntı ise SBC'nin 5V Serializer.NET'in ise 12V ile çalışması. Bu sebeple bir "Switching Voltage Regulator" kullanma ihtiyacı doğuyor zira enerjiyi ısı olarak kaybetmek yerine daha verimli bir şekilde kullanmak istiyorum. Ne kadar çok verim o kadar az şarj demek çünkü. Aslında robotics connection daki arkadaşlar bu konuda çok güzel küçücük bir devre hazırlamışlar ancak yurt dışından böyle bir şey için 30$ ödemek bana lüks geldi.11 Nisan 2008 Cuma
Evlilik, Robotik ve Sağlık Hakkında
.jpg)
Biz eşimle her çarşamba günü genelde oturur birlikte televizyon izleriz ancak bu çarşamba farklıydı çünkü aldığım parçaları denemek için sabırsızlanıyordum eşimde yeni oyuncaklarımı denemem konusunda bana destek oldu. Plexiglass ı kesmek için ölçtüm, biçtim, çizgileri çektim havalı kesiyim diye Matriximsi güneş gözlüklerimi de taktım ve dremel'i çalıştırdım. Bir süre kestikten sonra sıcak plastik malzemeler un ufak olup üstüme sıçramaya başladığını fark ettim, ancak sıcak plastiğin dayanılabilir ve güneş gözlüğünün gözlerimi korumaya yeterli olacağını düşündüm. Fakat yanılmışım, o sıcak plastik tozlardan bir demet yukarı doğrı fırladıktan sonra sol gözümün alt kapakçığına oturdu. Eşim bu konuya alıştığı için 5 dk içinde hazırlanmıştı (biz erkekler yaramaz çocuk gibi olabiliyoruz). Daha önce gözümle ilgili yaşadığım diğer travmalardan konuya alışkın olduğumdan(bile bile yine yaptım) gözümle hiç ama hiç oynamadan direk olarak hastaneye doğru eşimle beraber yola çıktım. Yolda gözlerim yaşarmaya başlamış ve batma hissi çok artmıştı ama yinede gözüme dokunmadım. Bu yazıyı okuyanlara bir uyarı gözünüze bir şey kaçarsa (toxic olmayan) sakın çıkarmaya veya gözünüzle oynamaya batma hissine rağmen çalışmayın, gözünüzü mümkün olduğunca hareket ettirmeden doğruca hastaneye gidin. Hastanede işlemler yapılıp acile girmemle beraber biriktirdiğim o koca göz yaşları bir anda damladı ve gözümdeki o parçalar ne ise çıkmıştı zira batma hissi bir anda geçmişti. Ancak mikrop kapmasını önlemek için doktorlar gözlerimi serum ile yıkamaya karar verdi. Bakın bir koruma neler değiştiriyor.
.jpg)
Sonuç olarak ekonomik olarak ta güneş gözlüğü ile bu işe kalkışmak mantıklı değil. Zira taxi gidiş ve dönüş 15 ytl, acilde tedavi 55 ytl, teramisin göz pomadı 1ytl ve gözünüz pahabiçilemez olarak hesaplarsak. Toplam fatura Pahabiçilemez+71 YTL ye geliyor, peki koruma gözlüğü ne kadar biliyormusunuz? Sadece 2 ytl!
Tüm hayalperestlere mutlu evlilik ve kazasız hayaller dileklerimle.
7 Nisan 2008 Pazartesi
Serializer.Net ve Sharp GP2D12 Infrared Sensör hakkında

Bu sebeple tekerleğin çapı ile ilgili ufak bir matematik hesabıyla birlikte ne kadar mesafe katettiğine dair veri alabiliyor olacağım, tabiki teorik olarak. Zira cimriliğim yüzünden 2 motor kullanarak difransiyel olarak motoru sürmektense tek motor ve bir servo yardımıyla motor sürmek gibi bir fikire kapıldım bu bana 30$ gibi bir tasarruf sağlasada pişman olmama az kaldı. Bunun nedeni ise servo ile yön verdiğimiz zaman bu hesapların oldukça karmaşık bir duruma gelmesi. Diğer bir sıkıntı ise düzgün çalışan bir servo mekanizması yapmanın görünenden daha zor olması.

Sürüş ve mesafe demişken duvar gibi engelleri algılamak için yine biraz cimrilik yaparak 3 tane Sharp GP2D12 IR Sensor aldım. Bu sensörler 10cm ile 80cm arasında ölçüm yapabiliyorlar ancak yüzeyin mat ve parlak olması ölçümlerde farklılık yaratabiliyor. Sensörler doğrusal olarak ölçüm yapıyor yani görünüşüne bakarak 60 derece bir açıda ne var ne yok ölçüm alacak diye bir fikre kapılmayın. 10cm 4 derece 80 cm ise 30 derece ile algılayabiliyor. Bu sensörlerden gelen verilere göre iki eksende gelen engelleri plot ederek bir harita çıkarmayı düşünüyorum. Burada önemli olan 10 cm den daha yakında bir engel olursa robotun nasıl davranacağı zira bump sensor gibi bir donanım almadım yine cimrilikten ve Gp2d12 bu mesafeden kısa olanları algılamıyor. Eğer daha fazla bir bütçem olsaydı Sonar tarzı sensörleri büyük olasılıkla tercih ediyor olurdum.
5 Nisan 2008 Cumartesi
Serializer.Net ve USB Ttl Modülü
Serializer.Net ve diğer devre elemanlarıyla ilgili biraz daha bilgi vermek istedim. Serializer.Net DC motorlar, servolar, analog sensörler, I2C , switchler ve diğer cihazları .NET framework ve Robotics Studio ile kontrol etmek için bize bir interface sunuyor. Üzerindeki TTL seri port'a USB, Serial, Bluetooth gibi farklı seri interface modülleri takabiliyorsunuz. Bu interface aracılığıyla Serializer.Net'i herhangi bir bilgisayar'a bağlıyabiliyorsunuz. Benim tercihim USB modül üzerinden oldu zira kablosuz modüller hem pahalı hem de ben robotumu üzerine bir Single Board Computer koymayı düşünüyorum. Böylece kablosuz aktarım benim için bir sorun olmaktan çıkıyor. Eğer ileride kablosuz veri aktarımı tercih edersem bunu direk olarak Serializer.Net'e modül takarak değil bunun yerine SBC üzerine takılan bir modül ile yapmayı düşünüyorum. Bunun nedeni ise robotumun kendi başına ihtiyacı olan her şeyi barındırmasını istemem. Zira kablosuz bir modül kullansaydım SBC nin başka bir lokasyonda bulunması gerekebilirdi. Tamamiyle tercih meselesi.
TTL Portuna USB Modülünü oturtuktan sonra ve güç bağlantılarını yaptığınızda Serializer.Net çalışmaya hazır oluyor. USB den makinanıza bağladığınızda bunu bir seri port olarak XP de otomatik olarak tanıyor. Hyperterminal ile Baud ve parity ayarlarını yaptıktan sonra komutları göndererek led, servo pozisyonu, sensör okumaları gibi işlemleri burası üzerinden de yapabiliyorsunuz ilk denemeler için hızlı ve basit bir çözüm.
4 Nisan 2008 Cuma
C# .Net ve Microsoft Robotics Studio ile Harita Çıkaran ilk Robotum
Çok uzun zamandır kendi robotumu yapmak istiyordum ve bir miktar yatırımla donanım üzerinde karar kıldım. Mekanik aksamı hazır almak fiyat üzerinde oldukça fark yaratacağından bu aksamı kendim yapmaya karar verdim.Sensörler, motor, servo ve kontrol kartı için .Net ve C# üzerinden bu devre elemanlarını kontrol etmeyi sağlayan Serializer.Net platformunu tercih ettim. Oldukça yeni Microsoft Robotics Studio desteği olan bu platform .Net üzerinden devre elemanlarına oldukça kolay erişim sağlıyor. Robotics Connection tarafından üretilen ve tasarlanan parçaları sipariş ettim ve yüklüce bir kargo parası vermeyi de ihmal etmedim. Tabiki verdiğim siparişin 100$'ı aşması sebebiyle gümrüğü takılması kaçınılmazdı bu sebeple Türkiye'ye girişte yüklüce gümrük ödemeyi de kabullendim.
Siparişini verdiğim parçalar şu şekildeydi.
- Sharp IR Sensor Cable 3 adet 8,97$
- Serializer .NET Robot Controller 1 adet, 3 Sharp GP2D12 Infrared Sensors & Cables, +1 Pack of 5, 12" Female-to-Female Jumper Wires, 186,84$
- Optical Encoder Modules & Disks 1 adet 29,95 $
- DC Gearhead Robot Motor 37,97 $
- Hitec HS-322HD Servo 9,99$
- Kargo 38,13$
Toplam 311,83$ tuttu, ancak gümrüğe girmesiyle beraber tam hatırlamamam ile birlikte yaklaşık 100 YTL de gümrük ödemek durumunda kaldım.
Yüklü bir para vermeme rağmen bu parçaların ilerideki projelerim için yeniden kullanabilme fırsatım bunu uzun vadeli ve mantıklı bir yatırım olarak görmemi sağladı. Eşimin bu konuda bana desteği olmasaydı böyle bir parayı vermem imkansıza yakındı. Kadınlar çok ikna edici oluyorlar.
Bu parçaların tamamını ilk robotum da kullanmayacak olsamda ilerideki projelerim için satın almayı tercih ettim zira kargo ücreti oldukça yüklü tutuyor. Bu projemde Optical Encoder kullanmayı düşünmüyorum zira motorun üzerinde zaten bu encoder lardan bir tane geliyor.
Parçalarım gelmesi yaklaşık olarak 3 hafta sürdü ve inanın bana beklediğim her saniyeye değerdi. Kargo küçük bir kutuda gelmesine rağmen çok iyi paketlenmişti. Robotics Connection bu konuyu oldukça ciddiye alıyor zira kutunun içinde daha önce hiç bir kutuda görmediğim hava yastıkları vardı. Bu yastıklar büyük olasılıkla parçalara düşme çarma anında bir hasar gelmemesi sebebiyle özenle yerleştirilmişti.
Bu parçaların gelmesiyle birlikte bir hayalime daha yaklaşmış oldum. Bir sonraki yazımda projemle ilgili ilk denemeleri aktaracağım ayrıca yapacağım robot ile ilgili daha ayrıntılı bilgi vermeye çalışacağım.
Eski Fotoğraf Kurtarma ve Fotoğraf Renklendirme Devam



1 Nisan 2008 Salı
Eski Fotoğraf Kurtarma ve Fotoğraf Renklendirme
Eski siyah ve beyaz fotoğraflar hep hüzünlü gelir bana. Eski raflardan indirilen fotoğraflar değilde anılar,geçmiş ve zamanın kendisidir sanki. Bir iş arkadaşımın babasının eski ve yıpranmış fotoğraflarını kurtarmak istemesi üzerine ufak bir denemeye giriştim. Taranmış fotoğrafları elde ettikten sonra sonra sabır gerektiren ama oldukça keyifli bir işe giriştiğimi fark ettim. Belki ileride bunun nasıl yapıldığına ilişkin daha detaylı bir yazı yazabilirim. Burada konusu geçen işlemler artık herkesin bildiği yada en azından duyduğu "Adobe Photoshop" adlı yazılım ile yapılıyor.
İlk önce oldukça yıpranmış fotoğrafın üzerinden zamanın kötü izlerini yoketmek ile başlıyoruz. Fotoğraflar anı korusa da zamana bizim gibi yenik düşüyor. Zamanın biriktirdiği etkenler anıyla birlikte fotoğrafın kendisini de yaşlandırıyor. Solan ve sararan fotoğrafın kontrastını düzeltmek en azından kısa süre önce çekilmiş bir siyah beyaz fotoğraf havasını yaratmaya yardımcı oluyor. Yırtılmış, delinmiş ve lekeli bölümleri çıkarmak için ise sağlam bölümlerden parçalar alarak kötü durumdaki alanların üzerine yapıştırmaktan başka bir şey yapmıyorum. Yıllar öncesinin kağıtları da günümüzün kağıtlarına benzemediği ortada. Daha pütürlü olan eski kağıt fotoğrafın net görünmesine engel teşkil ediyor. Deri, kıyafet gibi alanları sadece seçerek bunları hafifçe flulaştırmak bu pütürlü yüzeyden kurtulmama yardımcı oluyor.
Fotoğraf sahibinin değişimi ilk gördüğü andaki ifadesi benim için büyük bir merak konusu olsada istekte bulunan arkadaşımın yüz ifadesi de yeteri kadar anlam ifade ediyor.
31 Mart 2008 Pazartesi
Bölüm, Bölen ve Kalan
Aslında ilk yazımı özgüven ve herkesin erişebileceği bir internet günlüğü üzerine yazmayı düşünmüştüm ancak daha ilk kelimeyi yazmadan birbirinden alakasız sayısız telefon ve mesaj almam ile birlikte planlarımda küçük bir değişiklik yaptım. .jpg)