FIND
JOE
CSE396 Project


Projemiz Hakkında
Projemiz; bir alan(A5kağıdı) üzerine çizilmiş olan figürün (çöp adam) kamera yardımıyla tespit edilmesi için kullanılan donanım ve yazılım sisteminin bütününü kapsamaktadır.
Projemiz aşağıdaki şemada gösterilen mekanik, donanım, gömülü sistem,
arayüz , haberleşme ve görüntü işleme modüllerinden oluşmaktadır.


Sistem X, Y ve Z koordinatları doğrultusunda hareket edebilmektedir.
Kameranın görüş açısı, Z ekseni hareketlerinde alanın en fazla sekizde birini görebilecek şekilde farklı oranlarda ayarlanabilmektedir. Hareket aksamlarından oluşan bu mekanik sisteme; step motorlar, motor sürücü kartları ve Arduino sayesinde hareket eylemi kazandırılmıştır. Bu sayede sistem A5 kağıdını tamamen tarayabilme özelliğine sahip hale getirilmiştir.

Mekanik:
X ve Y eksenleri doğrusal hareketleri ile alanı taramak için kullanılırken Z ekseni kameranın görebileceği alanı değiştirebilmek
için tasarlanmıştır.

Donanım:
Hareket mekanizmasını içeren mekanik kısım ile hareketi sağlayacak olan
kontrol sisteminin bütününü ifade eder. Bu bağlamda donanım; bilgisayar, kamera, step motor
ve motor sürücü kartları ile bu yapıların kontrolünü ve haberleşmesini sağlayacak olan
Arduino ve Raspberry içermektedir.
Haberleşme:
Arduino ile Raspberry arasında UART üzerinden Seri Haberleşme kullanılmıştır. Öncelikle Arduino’dan
Rasperry’e ilk bağlantı mesajı iletilmektedir.Daha sonraki iletişimde ise Rasperry Arduino’ya step motorları sürmesi için gereken komutları vermektedir. Raspberry ile ara yüz arasındaki haberleşme
tamamlanmamıştır. Buradaki iletişimde ise Qt platformunun sahip olduğu socket sistemi ile c++
socketinin kullanılması planlanmaktadır. Buradaki haberleşmenin amacı kullanıcıyı bilgilendirmek
ve kullanıcıdan komut almaktır.

Qt’ de yapılanlar:
● TCP Socket ile yazılan client soketten veri okumaktadır.
● Start butonuna basıldığında connection'ı aktif ederek server'a bağlanılmaktadır.
● Server'da raspberry'de bulunan tek bağlantı noktası bir kod vardır.
● Bağlantı gerçekleştikten sonra server veri göndermesi gerektiği an sokete yazmaktadır.
Server'da bir thread daha bulunmaktadır; soket bi-directional(çift yönlü) olduğundan dolayı okuma
kısmı için oluşturulmuştur.
● Thread, Qt'den stop butonuna basıldığında yollanacak olan durdurma(stop) mesajını alacaktır.
● Sayaç tutulmuştur, counter 10 olunca stop sinyali gönderilmektedir.
● Global olarak değiştirilen değişken server tarafından fark edilerek bağlantı bitirilecek
ve sistem durdurulacaktır.


Görüntü İşleme:
Kamera ile alınan görüntü haberleşme modülü vasıtasıyla bilgisayara iletilir. Görüntü
alındıktan sonra artık modül görüntüyü işlemeye hazırdır. Görüntünün işlenmesi için gerekli
olan yazılımlar;
-
OpenCV 3.2.0
-
Cmake 3.7.2
-
MinGW-w64 (Linux için gerekli değildir.)
-
Visual Studio, Clion, CodeBlocks (vb…)
Arayüz:
Haberleşme modülü ile gelen ve düzenlenen görüntünün durumunu simüle edecek, aynı
zamanda bilgisayarda bir kontrol mekanizması olacak parça arayüzdür. Arayüzün genel
tasarımı aşağıdaki şekildedir: