Bitirme Tezi Yazı Dizisi #1

Merhaba arkadaşlar, bugün sizlere önümüzdeki Haziran ayında teslim etmem gereken bitirme projemden bahsetmek istiyorum. İlk yazımda bu projeyi seçme nedenlerimden ve bu zaman kadar geçen süreden bahsedeceğim. Başlayalım mı? (:

Evet, projemin adı “Kinect Kontrollü Robot Kol”. Geçtiğimiz Nisan ayında fakültemin zorunlu tutması nedeniyle projemi Tübitak’a yazmıştım. Temmuz ayında açıklanan sonuçlar ile projeme destek aldığımı öğrendim. Şüphesiz malzeme tedariği konusunda bu maddi desteğin faydasını gördüm/görüyorum. Burada bir virgül koyarak desteğin proje demirbaşlarını kapsamadığını söylemek istiyorum. Yani Kinect’i bizzat kendim aldım. Bir ara bu yazı dizisine de güzel bir isim bulmayı umuyorum. Düşüncem, bulacağım ismi projede de kullanmak (: Projenin iki temel ayağı var. Bunlardan birincisi kontrolör olarak adlandırdığım Kinect ve Bilgisayar, ikincisi ise kısaca Robot olarak adlandırdığım Robot Kol ve Mikrodenetleyici kartı. Şimdi Mart 2015 tarihine geri dönüyoruz.

yeniii

Tübitak 2209/A desteği için senede iki kere çağrı yapılmaktadır. Bu tarihler genellikle Nisan ve Ekim aylarına denk gelmektedir. Fakat projeyi yazdıktan sonra desteklerin açıklanması içinde 2-3 ay geçmekte bu yüzden deadline olarak Haziran 2016 tarihini göz önünde bulundurduğumda ve üstelik 2015/2016 yılı güz döneminde şehir dışında iş yeri eğitimi yapacağımı da hesaba katınca Nisan ayındaki çağrıya yetişmem gerekiyordu. Nitekim yetiştim de. Öncelikle aklımdaki fikirlerle hocalarımın kapısını çaldım. Sonunda Mikroişlemci ve Mikrodenetleyici derslerime giren hocam ile ortak noktada buluştuk ve projeyi yazmaya başladım. Ortak noktada buluştuk dedim çünkü benim ilk önerdiğim proje Kinect ile işaret dilini bilgisayar ortamında işlemekti. Şöyle ki, görüntülü arama yapılan bir ortamda eğer kişinin yazı yazma şansı yoksa kinect yardımıyla işaret hareketlerini yazıya dökecektik. Fakat projenin fazlasıyla yazılım mühendisliği alanı olduğunu ve bölümden kabul görmeyeceğini söyledi. Daha sonrasında beyin fırtınası ile Kinect Kontrollü Robot Kol’da karar kıldık.

Neden Kinect?

Aslında belirli bir nedeni yok. Belkide, Yazılım ve Veritabanı Uzmanlığı kursuna giderken C#.NET de klasik form’ların dışına çıkarak WPF’in yeteneklerini keşfetmem ve sonrasında Kinect’inde WPF ortamında programlandığını öğrenmem buna sebeptir. (Merak edenler için WPF) 2012/2013 yılında kütüphanelerin açılması ile Kinect Hack kavramı doğmuş ve sonrasında bir çok projede Kinect kullanılmaya başlanmış. Proje’de kullandığım ekipmanları detaylı olarak ilerleyen yazı dizilerinde anlatacağım için “Kinect Nedir?” kısmını bu yazıda es geçiyorum.

Neden Robot Kol?

Kinect cihazında insan iskelet sistemi modellendiği için hemen hemen her şeyi yapabilirsiniz. Kinect ile araç kontrolü yapanlar, Humanoid robot kontrolü yapanlar ve buna benzer bir çok çalışma mevcut. Araç içinin simüle edildiği ve araç kontrolünün yapıldığı proje ile robot kol arasında çok gidip geldim. Sonrasında sunum v.b. ufak detayları düşününce ve birazda robot kol’lara ilgili olduğumu anladığım an, bu projeyi seçtim. Humanoid robot kontrolü de gerçekten çok iyi fakat robotların kendileri oldukça pahalı. Böyle bir robotu yapabilmek ise oldukça zor.

Biraz konu dışına çıkarak ufak bir not paylaşmak istiyorum. Robot Kol’ların ilgimi çektiğini fark ettikten sonra iş yeri eğitimim içinde Robotik Otomasyon alanını seçtim. 6 haftalık Teknodrom Robotik Otomasyon firmasında oldukça güzel şeyler öğrendim. Bir çok endüstriyel robot ile çalıştım. Şuan ise Eczacıbaşı grubuna bağlı SYS Robot Teknolojileri firmasında çalışmaktayım ve yeni şeyler öğrenmeye devam etmekteyim (:

Peki, Geçen Sürede Neler Oldu?

Finaller, iş yeri eğitimi için firma arayışları, sonrasında başlayan yaz stajı derken bir anda kendimi 28 Eylül’de iş yeri eğitimim başlarken buldum. Korkmayın, yaz tatilinde azda olsa bir şeyler öğrendim (: Öncelikle ilk işim robot parçalarının siparişini vermek oldu. Türkiye’de çok uyduruk tek tip bir robot kol satılıyor yaklaşık 400 TL’lik bir fiyatı var ve üzerindeki servo motorlar oldukça giriş seviyesi. Bunları fark ettikten sonra, aliexpress üzerinden 5 eksenli robot kol için gerekli olan ekipmanların siparişlerini verdim. Parçalar yaklaşık 11 gün gibi çok hızlı bir şekilde elime ulaştı. Bu süreden itibaren yaklaşık 3 ayı servo motor ve mikrodenetleyici kartları araştırarak geçirdim. Robot kol demek başlı başına kinematik demekti, bilgisayar ve telefondan kontrol gibi ekstraları kafamda planlasam da önceliğim kinect ile kontrolü ve bu da kinematik gerektiriyordu. Bir kaç ders kitabı alarak işe başladım ve 6 eksenli robot kol yapmadığıma sevindim (: İleri kinematik, ters kinematik derken iş yerindeki mühendislerden de bir şeyler kaptım. Mekatronik bölümlerinde kinematik çok detaylı bir şekilde anlatılıyormuş bunu da öğrenmiş olduk. Robot kol için kinematik hesapları can alıcı noktaydı bu yüzden doğru motorları seçmekte kolu rahat kullanabilmek için olmazsa olmazdı. Bu seferde tork hesapları, maksimum yük altında çekilen akımlar derken kendi mesleğime biraz daha yakınlaştım ve 3 adet PowerHD 3 adet de TowerPro servo motorlarına yaklaşık 400 TL vererek satın aldım. Geriye mikrodenetleyici kart seçimi kalmıştı. Arduino burada o kadar öne çıkıyordu ki “Arduino ve Kinect Projeleri” adında bir kitap bile gördüm. İnceledim, her şey güzeldi fakat projemde kullanmam gereken webcam sıkıntı yaratıyordu. Arduino’da görüntü aktarmam çok zordu. Arduino YUN en iyi seçenekti fakat o da video değil anlık fotoğraf aktarıyordu. Dolayısıyla Arduino’nun üzerini çizmem gerekti. İntel Edison’un modifiye edilmiş Arduino IDE’si ile programlandığını gördüm ve araştırdım. Kontrol kısmında Wifi ve Bluetooth için kullanacağımdan bunlarında kart üzerinde dahili olması yoksa bile ucuz yolla temin edilmesini istiyordum. Bu alandaki Arduino shield’ları gereksiz pahalı maalesef. Edison çok güzeldi fakat 400 TL’lik bir maliyeti vardı ve örnek projeler v.b. kaynak çok azdı. Bu yüzden onunda üzerini çizmek zorunda kaldım. Geriye iki kart kalıyordu. Birincisi Netduino bir diğeri ise SCB olarak adlandırılan Raspberry Pi, BeagleBone ve türevleri. Netduino’nun .NET tabanlı olması ve Visual Studio ile programlanması Kinect’i kullanacağım proje için harika bir uyum demekti fakat arduino tasarımına sahip olan bu kartta da usb ve dolayısıyla webcam sıkıntısı vardı. Böylece geriye sadece SCB ve içlerinde en güçlü dokümantasyona sahip olan Raspberry Pi kalmıştı bende rPi’yi seçtim. 30 TL’lik Wifi adaptör ile wifi sorununu çözdüm. HC06 ile de bluetooth sorununu çözdüm. Geriye sadece programlamak kalıyordu.

rPi’de karar kıldıktan sonra içerisinde linux dağıtımı olduğu için windows ve linux arası haberleşme v.b. şeyleri öğrenmem gerekiyordu. Eğer kinect’i linux’da programlarsam ne olur diye kendime sordum ve sonrasında OpenKinect, ROS gibi bir çok konuda giriş seviyesi bilgiler edindim. Sonrasında ise kontrolör için Visual Studio (C#.NET) dolayısyla Windows platformundan vazgeçmemeye karar verdim. rPi için ise C++ ve Python seçenekleri önümde durmaktaydı. 2 senedir azda olsa çalıştığım Python burada öne çıkıyordu. Bende tercihimi bu yönde kullandım ve hala ufak uygulamalar ile kendimi geliştirmeye çalışıyorum.

Yaklaşık 8 ay önce “Neden Bu Proje?” sorusunu kendime sorduğumda; projemin C#, Python, Raspberry Pi ve Kinect gibi bir çok konuyu kapsamasını istediğimi fark ettim. Şuan dönüp baktığımda bu konular yanında temel linux bilgimin geliştiğini, ROS gibi çok çok önemli bir yapıya giriş yaptığımı, haberleşme için işime yarayacak olan JSON konusunu araştırmaya başladığımı fark ettim. Bunlarında yanında bir çok gömülü sistem örneklerini incelediğimi ve de teknik ingilizce’min geliştiğini gördüm. Şuan için Haziranda başarılı olma konusunda bir şey söyleyemiyorum. Umarım sıkıntı yaşamam ve güzel bir projeyi hayata geçirmiş olurum.

Çok uzun bir yazı oldu farkındayım. Okuduğunuz için çok teşekkür ederim arkadaşlar.

Bir sonraki yazımda görüşmek dileğiyle hoşçakalın.

3 Comments

  • Ümit Cevapla

    Teknik bir yazıyı böyle keyifle okumak oldukça güzeldi. Eline sağlık kardeşim, umarım proje başarıya ulaşır. 🙂 Yazının devamını bekliyorum, kolay gelsin. ^-^

    • Eren Uyanık Cevapla

      Teşekkür ederim kardeşim. Umarım Haziran ayı hepimiz için hayırlı olur 🙂

  • kaan ülker Cevapla

    iyi günler benimde buna yakın bir projem var kinect kodları, kontrolünde 1-2 sıkıntım var yardımcı olabilir misiniz? kaan@developeradayi.com burdan bana mail atarsanız sevinirim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir