Bu yazımızda göz takibi ile bir aracın kontrolünün nasıl sağlandığı hakkında bilgi sahibi olacağız. Genel bir bilgi sahibi olmak için kısaca konu hakkında bahsedeceğim.
Otonom arabalar, geleceğin otomatik sürüş teknolojisi olarak kabul edilir ve göz ile kontrol edilen sistemler, bu teknolojinin en önemli parçalarından biridir. Göz ile robot araba kontrolü, sürücünün göz hareketlerini takip ederek arabanın kontrolünü yapmasını sağlar. Bu teknolojinin avantajları arasında, sürücünün ellerini volanttan ayırması ve daha rahat, güvenli bir sürüş deneyimi sunmasıdır. Ayrıca, göz hareketlerinin hızı ve doğruluğu, sürücünün dikkat dağınıklığını ve yorgunluğunu takip ederek arabanın performansını optimize etmeye yardımcı olabilir.
Görüntü işleme teknolojisi, son yıllarda hızla gelişen bir alandır ve bu teknolojinin uygulamaları da günden güne artmaktadır. Görüntü işleme ile motor kontrolü, endüstriyel uygulamalar için yeni bir yaklaşımdır ve bu uygulama, motorların kontrolü için görüntü verilerini kullanır. Bu yaklaşım, motorların daha hassas ve doğru bir şekilde kontrol edilmesini sağlar. Örneğin, görüntü işleme teknolojisi, motorların pozisyonunu ve hareketlerini takip etmek için kullanılabilir. Bu veriler, motorların kontrol sistemine aktarılabilir ve bu sayede, motorlar daha doğru bir şekilde yönlendirilebilir.
![Şekil 1 : Volkswagen Newsroom](https://maker.robotistan.com/wp-content/uploads/2023/02/Volkswagen-Newsroom-1024x655.jpg)
Göz takibi ile araç kontrolünde sektörde de çalışmalar bulunmaktadır. Çeşitli araç firmaları bu konu hakkında denemelerde bulunmaktadır. Sonuç olarak, göz takibi kullanılarak araç kontrolü, endüstriyel uygulamalar için yeni ve ilginç bir yaklaşımdır. Bu konu üzerine çalışmalar devam etmektedir.
Proje Detayı
Projede göz hareketlerinin görüntü işleme yöntemleri kullanılarak tespit edilmesi, komutların robot arabaya haberleşme protokolleri ile doğru bir şekilde aktarılması ve robot arabanın istenilen şekilde hareket ettirilmesi sağlanmıştır. Proje çok disiplinli bir yapıya sahip olduğundan farklı unsurların birbiriyle uyumlu olacak şekilde çalışması gerekmektedir. Görüntü İşleme, MCU ve Haberleşme ekiplerinin çalışmaları birleştirilmiştir. Projede laptop dahili kamerası kullanılmaktadır. İlk aşama yüz bölgesinde iris tespitinin yapılmasıdır. İrisin bulunduğu bölgeye göre bakış yönü belirlenmesi sağlanmıştır. 5 ana hareket verisi alınabilmektedir (aşağı, yukarı, sağ, sol, merkez). Projede uygulanan mekanik işlemler kullanılan enkoderli ve redüktörlü motor, ESP32 ve motor sürücü kartına göre araba iskeleti yapılması ile başlamıştır. Bu malzemelerin kullanıldığı alanı sağlamak için pirinç aralayıcı ile araba iskeleti arasında bir bölge oluşturulmuştur. Bu bölgenin içine motor ,ESP32ve motor sürücü kartının iskelete yerleştirilmiştir. Bu işlemler tamamlandıktan sonra ise son bağlantı olarak mesafe sensörünün bağlantısı yapılmıştır. Robot araba için hazırlanan bu projenin elektrikli sandalyelere entegre edilmesi durumunda omurilik felci ve benzeri sağlık sorunları yaşayanlara hareket kolaylığı sağlanmış olacaktır.
Malzeme Listesi
ESP-32S WiFi + Bluetooth Dual-Mode Geliştirme Kartı | 1 Adet | |
L298N Motor Sürücü Kartı | 1 Adet | |
6 V 250 RPM Motor – Sarı Motor | 2 Adet | |
HC-SR04 Ultrasonik Mesafe Sensörü | 1 Adet | |
Robot Platformu | 1 Adet | |
Ultrasonik Sensör Montaj Aparatı | 1 Adet | |
Tekerlek | 2 Adet | |
Sarhoş Teker | 1 Adet | |
9V Pil | 2 Adet |
Not : Biz bu projede Enkoderli ve redüktörlü mikromotorlar kullandık. Fakat fiyat performans açısından düz sarı motorlar da uygundur. Daha stabil ve düzgün çalışma için daha farklı motor türleri denenebilir.
Görüntü İşleme Kısmı
Projemizde yer alan kodun ana adımları şu şekildedir;
- Web kamerasından alınan görüntüler okunur ve yüz tespit edilir.
- Belirlenen noktaları kullanarak gözlerin konumunu tahmin edilir.
- Gözlerin yatay ve dikey konumları takip edilir.
- Gözlerin hareketleri izlenir ve yatay ve dikey konumlarının değişimleri gözlemlenir.
Not: Nesne algılamada basit bir kural vardır: Büyükten Küçüğe Kuralı . Bu yüzden önce gözleri tespit ederek değil yüzleri tespit ederek ilerleme yapılır. Sonra gözlere, göz bebeklerine vb. Bu hesaplama güc tasarrufu sağlar ve süreci çok daha hızlı hale getirmektedir. Ayrıca bizi potansiyel yanlış tespitlerden de kurtarmaktadır. Burada projemiz için göz hareketlerinin olduğu bölgeyi yüz içerisinde ayrıştırmış olduk.
Kod Kısmından bahsedecek olursak ;
- “FaceMesh” fonksiyonu ile yüzler tespit edilir
![](https://maker.robotistan.com/wp-content/uploads/2023/02/FaceMesh.png)
- Gözlerin yatay ve dikey konumlarını takip için “nine_direction” fonksiyonu kullanılır.
- Gözlerin hareketlerini izlemek ve yatay ve dikey konumlarının değişimleri gözlemlemek için “vertical_position_buffer” ve “horizontal_position_buffer” gibi değişkenler kullanılır
![Şekil 2: Örnek Çalışma](https://maker.robotistan.com/wp-content/uploads/2023/02/ornek-calisma.png)
Detaylar ile sizi sıkmak istemiyorum. O yüzden kodun tüm haline ve detaylarına GitHub üzerinde ulaşabilirsiniz. (https://github.com/SametS7/Eye-Tracking-Robot/blob/main/eye_tracking.py)
Haberleşme ve Motor Kontrolü
Haberleşme için ESP32 kartının Wİ-Fİ modülü kullanılmıştır. Bu modül TCP/IP protokolü kullanılarak veri iletimini gerçekleştirip önemli olan verinin kaybı yaşanmadan haberleşmeyi sağlamak amacıyla kullanılmıştır. Wİ-Fİ modülüne uygun IP ve şifre atayarak bağlantı kurulmuş ve veri aktarımı gerçekleştirilmiştir.
![](https://maker.robotistan.com/wp-content/uploads/2023/02/wifi-modulu.png)
ESP32 işlemcisine gelen verileri işleyerek motor sürücü kartına gönderilmiş motor kontrolü sağlanmıştır. Encoderlerden gelen konum bilgisi, çarpışma önlemek için entegre edilen mesafe sensörü ile karşılaştırılarak komutların kontrolü ve hareketin gerçekleştirilmesi mümkün hale getirilmiştir. Manevra kabiliyeti için sağa veya sola dönüşlerde tekerlekler birbirinin tersi yönünde hareket ederek daha stabil ve uygun dönüş açısı hedeflenmiştir.
Kullanılan kod GitHub’da belirtilmiştir. Detaylı bilgilendirme kod açıklamasında da mevcuttur.
(https://github.com/SametS7/Eye-Tracking-Robot/blob/main/eye_tracking_robot.ino)
Sonuç olarak yapılan prototip yaklaşık 25cm uzunluğa, 15cm genişliğe ve 10cm yüksekliğe sahiptir. Göz takibi yapılarak görüntü işleme algoritması sayesinde yön sınıflandırması ve bu bilgilerin çıktısı alınabilmektedir. Alınan çıktılar TCP/IP protokolü ile ESP32 ile haberleştirilip işlemci sayesinde motor sürücülere komut olarak gönderilmiştir. Mesafe sensörünün çarpışmayı önleyerek doğru çalışmaya katkı sağlamıştır.
![](https://maker.robotistan.com/wp-content/uploads/2023/02/goz-takibi-arac-kontrolu.png)