
Bu yazımızla yaklaşık 1yıl önce başladığımız OtoPilot akıllı robot projemizi tamamlıyoruz. Son makale olarak bu süreç boyunca yaşadığımız zorluklar, kazandığımız tecrübeler ve elde ettiğimiz sonuçlar hakkında bir yazı hazırlamak istedik.
1 yıldır, yaşadığımız tecrübeleri yazı dizisi olarak yayınlamaktayız. İlk makalelerimizden bugünkü makalelerimize bakacak olursak çok fazla değişiklik olduğunu fark edeceksiniz. Bu alanda proje yapmak isteyen ve makalelerimizden yararlanmak isteyen arkadaşlar mutlaka bütün yazıları okumalıdır. Çünkü bir yazıda bize doğru gelen bir şey başka bir yazıda güncellenmiş, yenilenmiş olabilir.
Yazılarımızı proje ile eş zamanlı yazdığımız için nasıl tecrübeler edindiysek onları paylaşmaya çalıştık. Umarız faydalı olabilmişizdir.
Bu makaleyi bitirme arkadaşım Bilgin SEÇKİN ve kendi adıma yazıyorum.
Otopilot akıllı robot projesi, otonom olarak kullanıcı tarafından verilen GPS kordinatına gidebilen, engel ile karşılaştığında engeli aşabilen, web cam yardımıyla anlık görüntüsünü kullanıcıya kablosuz olarak aktarabilen, yine web cam yardımıyla kullanıcı tarafından belirtilen hedefi takip edebilen bir mobil robot projesidir. Bahsettiğim bütün maddeleri planlamış ve gerçekleştirmiş bulunmaktayız.
1. TEŞEKKÜR
İlk olarak projemiz daha bir hayal ürünü iken bize güvenip her türlü maddi manevi desteği bize sağlayan, hiç bir şekilde satın alınamayacak olan ‘tecrübe‘ yi kazanmamızda bize vesile olan Niyazi SARAL ‘ a teşekkür ederiz.
Bitirme projesi hocamız ve aynı zamanda proje danışmanımız olan Yard. Doç. Dr. Emin GERMEN hocamıza bizi yönlendirmeleri, tavsiyeleri ve akıl hocalığı için teşekkür ederiz.
Son olarak MCU-Turkey ailesine, Çizgi-tagem ailesine ve yardımı dokunan herkese teşekkür ederiz.
Biraz uzun oldu ama ne yapalım 1 yılın ürünü 🙂
2. NASIL BAŞLADIK
Proje seçimini yaptıktan sonra maddeler halinde mobil robotumuzun görevlerini çıkarttık. İlk yazımızı yazdığımızda mobil robotumuzun bu görevleri başarabileceğine biz bile inanmıyorduk.
İlk olarak büyük bir projeyi küçük projeler haline getirdik. Ve bu projeleri daha sonra birleştireceğimiz için esnek ve güncellenebilir olarak yapmaya gayret gösterdik.
2.1. Ana Kumanda Bilgisayarı
Parçaladığımız proje başlıklarından bir tanesi ana kumanda bilgisayarımız olan Beagle Board tu. Öncelikle bu birimin ne yapacağına karar verdik. Görüntü işlemesi, kullanıcı ile haberleşmesi ve otonom gerçekleşecek senaryoları yönetmesi gerekiyordu. Gerekli materyallerin neler olması gerektiği çıkarttık;
- Gerekli olacak görüntü işleme materyali olarak Opencv kütüphanesini kullanmaya karar verdik.
- Beagle board üzerinde koşacak olan işletim sistemi olarak ilk başta angstrom üzerinden gittik fakat daha sonra ubuntu olmasına karar verdik. Hem yaygın olarak kullanılan bir işletim sistemi olması hem de ana bilgisayarımızda da ubuntu ile çalışacak olmamız yüklenecek sürücülerin aynı olması açısından kararımızı bu yönde etkiledi.
- Ana kumanda bilgisayarının durum bilgisi alıp bu bilgiye göre sistemi yönetme kararı üretmesi gerekiyordu. Bunun için altında çalışacak ve bu bilgiyi ona sağlayacak olan 2 tane mikro denetleyici kullanılması gerekiyordu. Bu mikro denetleyiciler ile haberleşmesinin seri kanal yardımıyla olmasına karar verdik.
2.2. Görüntü İşleme
Parçaladığımız proje başlıklarında bir diğeri ise görüntü işlemeydi. İlk olarak görüntüyü intel işlemcisine sahip kendi laptop bilgisayarımız ile gerçekleyip daha sonra cross compile yoluyla arm tabanlı işlemci ailesine sahip olan beagle board üzerinde gerçeklemeye karar verdik.
- Görüntü işleme konusunda ilk olarak ubuntu üzerinde nasıl opencv kullanırız konusunu araştırdık ve bilgisayarımıza yüklemesini gerçekleştirdik.
http://www.mcu-turkey.com/ubuntu-opencv-kurulumu/
- Daha sonra opencv yardımı ile webcam ekranını alma ve ekran üzerinde kullanıcı tarafından noktalar yerleştirme üzerine çalıştık.
http://www.mcu-turkey.com/opencv-goruntu-takibi-ilk-uygulama/ - Son olarak ekrana yerleştirdiğimiz noktaların takibini gerçekleştirdik.
http://www.mcu-turkey.com/opencv-goruntu-takibi-%E2%80%93-ikinci-uygulama/ - Projemizi bitirdikten sonra ise cross compile yardımı ile projeyi hedef cihaz üzerinde çalıştırdık ve entegrasyonunu tamamladık.
http://www.mcu-turkey.com/arm-tabanli-sistemler-icin-cross-compile-operasyonu/
2.3. Sensör Bilgilerini Okuma ve yorumlama
Mikro denetleyicilerden bir tanesini sensör bilgilerini okumak ve ana kumanda bilgisayarına göndermek üzere kullandık. Bu sensör verilerinin ne olduğuna ve nasıl yorumlanması gerektiğine karar verdik.
- GPS modül yardımıyla NMEA protokolüne göre seri kanaldan mesajlar alacaktık. Öncelikle bu mesajların yorumlanması ve ana kumanda bilgisayarına gönderilmesini sağladık.
http://www.mcu-turkey.com/gps-modulu-ile-konum-belirleme
- GPS modülü bize aracımızın yön bilgisini vermiyordu. Bizde kullandığımız magnetometer yardımıyla yön tayinini gerçekleştirdik. Bu modül ile haberleşme I2C üzerinden sağlanmıştır.
http://www.mcu-turkey.com/magnetometre-ile-yon-tayini/
- Aracın engel algılaması için IR sensör kullandık. Bu sensör üzerinden ADC yardımıyla aldığımız ölçümleri yorumladık ve ana kumanda bilgisayarı üzerine bu bilgileri ilettik. Daha sonra bu bilgilere göre motor sürmeyi gerçekleştirdik.
http://www.mcu-turkey.com/stellaris-lm3s811-arac-kontrol-uygulamasi/ - Daha sonra sensör sistemini değiştirdik ve hareketli sensör sistemine geçtik. Etrafını tarayarak engelin hangi yönde olduğuna karar veren bir algoritma yardımıyla sistemimizi geliştirdik. Ve ayrıca şase üzerindeki yerleşim planları da artık oturmaya başladı.
http://www.mcu-turkey.com/sase-guncellemesi-hareketli-sensor-sistemi/
2.4. Kablosuz Haberleşme ve Video Aktarımı
Artık bu aşamada projelerimizi birleştirme ve entegrasyon sağlama kısmına ulaşmıştık. Bütün yazılımların teki bir sistem üzerinde koşturulması ve kullanıcı ile haberleşmenin sağlanması gerekiyordu.
Video aktarımı ve kullanıcı tarafından sistemin kontrol edilebilmesi için TCP üzerinden bir protokol yazdık ve bunu birim üstünde koşturduk.
- http://www.mcu-turkey.com/1-soket-programlama-genel-bilgiler/
- http://www.mcu-turkey.com/2-soket-programlama-tcp-data-aktarimi/
- http://www.mcu-turkey.com/3-soket-programlama-tcp-video-aktarimi-nesne-takibi/
2.5. Hareket Algoritmaları
Son olarak sistemimize hareket algoritmalarını ekledik ve tüm sistemin entegrasyonunu sağladık. Eğer bu şekilde parça parça gitmeseydik belkide sene sonunda elimizde hiç bir proje olmayabilirdi. Bu şekilde sistemli gitmek bize hem proje yönetimi açısından tecrübe kazandırdı hemde bir hata olduğunda hangi aşamadan olduğunu bulmamızda bize yol gösterdi.
http://www.mcu-turkey.com/otonom-hareket/
3. NELERİ DEĞİŞTİRDİK
- Şasemiz belli bir yerden sonra üzerindeki ağırlığı kaldıramaz oldu. Böylelikle yeni bir şase ihtiyacımız doğdu. Tüm sistemi yeni şase üstüne tekrar entegre ettik.


- Kullandığımız SIRF III GPS modülü istediğimiz hassaslıkta çalışmıyordu. Yaklaşık 10mt bir isabet mesafesi olunca otonom olarak belirli hedefe ulaşması bizim için zorlayıcı bir durum oluşturdu. Bizde bu sorunu u-blox LEA 6H serisi bir GPS modül alarak çözdük. Yeni GPS modülün uygulama kartını çizdik ve kendi kartımızı oluşturduk. Yazılım konusunda bir değişiklik olmamış donanım konusunda güncellemeye gidilmiştir.
4. NASIL BİTİRDİK
- Projemiz için pek fazla yarışmaya katılamadık. Katıldığımız Savronik Proje yarışmasında 3. ödülü aldık.
http://www.savronik.com.tr/spy/
- Tübitak destekli Anadolu üniversitesi proje fuarı yarışmasında 3. lük ödülü aldık.
- Projemiz ile ilgili bir makale yazdık ve uluslar arası yayınlanması için başvurduk. Başvurumuz olumlu sonuçlandı ve Procedia Elsevier üzerinde makalemiz kabul edildi.
http://www.sciencedirect.com/science/article/pii/S1877705812026690
Bu proje başından sonuna kadar bize sayısız tecrübe kazandırdı. Bu tecrübelerin kazanılmasında katkıda bulunan herkese gönülden teşekkürlerimizi borç biliriz. Bu tarz proje yapacak ve yapmakta olan arkadaşlara hiç bir zaman vazgeçmemelerini ve isteyince bir şekilde sorunlarının çözüleceğini hatırlatmak isteriz.
İyi çalışmalar.