Webcam'den Çizgi İzleyen Robot
Projede C# ve PicBasic kullanılmıştır. Robotta PIC 16F877 bulunmaktadır. Proje, manuel ve otomatik olmak üzere iki modda çalışmaktadır. Manuel olduğunda WinForm üzerindeki butonlarla ve klavye tuşları yardımıyla robotun hareketi sağlanmaktadır. Otomatik modda ise robotun kamerasından alınan görüntü bilgisayarda işleme uğratılıyor ve çizginin ekrandaki koordinatına göre robota komutlar gönderiliyor.
Projenin kodlarındaki önemli yerleri inceleyecek olursak ;
C# ‘da görüntü işleme için AForge kütüphanesini kullandım.
Robotla iletişimi portlar aracılığıyla yaptığımız için kullanacağımız portu ve frekansını tanımlıyoruz;
SerialPort sp = new SerialPort(); sp.PortName = "COM2"; sp.BaudRate = 9600; sp.Open();
Sonra görüntü işleme kodlarımıza geçiyoruz;
Bitmap image1 = (Bitmap)eventArgs.Frame.Clone(); pictureBox1.Image = image; // Euclidean Color Filterin yapıldığı yer EuclideanColorFiltering filter = new EuclideanColorFiltering(); // Algılanacak renk belirleniyor ve orta noktası belirleniyor. filter.CenterColor = new RGB(Color.FromArgb(8, 47, 114)); filter.Radius = 50; // filtre çalıştırılıyor filter.ApplyInPlace(image1); //Görüntü üzerinde algilanan rengi cevrcevelemek veya hedeflemek icin gerekli Methodlar cevresiniciz(image1);
Daha sonra cevresiniciz metodunun içinde çizilen dikdörtgenin değerlerine göre porta sp.Write(" "); ile komutlar gönderiyoruz.
if (objectX >= 350) { yonLabel.Text = "Saga"; sp.Write("d"); } else if (objectX <= 200 ) { yonLabel.Text = "Sola"; sp.Write("a"); } //if (objectX < 480 && objectX > 430) else { yonLabel.Text = "Ileri"; sp.Write("w"); }
PicBasic kısmında ise porta gönderilen komutu Hserin 100,t1,[STR i1] yardımıyla alıyoruz. Bu komutun anlamı 100 milisaniye içinde cevap gelmezse t1 labeline git, cevap gelirse porttan gelen karakteri i değişkenine at. i değişkenine atılan karaktere göre de select case yardımıyla robotun ne yapacağını belirliyoruz.
Bu kısımdaki önemli ve anlaşılması zor olabilecek kısım ise PWM komutu olabilir. O komutun amacı ise robottaki motorların torkunu ayarlamaktır.
Kontrol Paneli (winform) :
Projenin Videosu :
Projenin Kaynak Kodları : https://github.com/omereryilmaz/Webcam-den-Cizgi-Takip-Eden-Robot