Hızlı Çizgi İzleyen Robot İçin PID Kontrol

 

Çizgi izleyen robot ülkemizde son on yıldır çeşitli versiyonları ile boy göstermektedir. Mühendislerin, öğretmenlerin, öğrencilerin ve amatör olarak bu işlere merak salan birçok insanın ilgisini çeken bir konudur. Peki, neden değişik alanlar da robot projeleri varken özellikle bu kadar ilgi çekmekte ve buna paralel olarak gerek ulusal bazda gerekse uluslararası çapta yarışmaları düzenlenmektedir.

Öncelikle şunu söylemeliyim, her ne kadar çizgi izleyen robot basit bir mantıkla bir çizgiyi takip eden bir kontrol mekanizmasına sahip olsa da bu denli ilgi odağı olmasının altında robotik sistemlere temel teşkil edebilecek değişik kontrol sistemleri bilgisine ve elektronik donanım bilgisine vakıf olmayı gerekmektedir. Yani özetle, çizgi izleyen yapabilecek bir insandan, yazılım, donanım ve bunları adapte edebilecek denetim mekanizmalarına hâkim olması beklenir. Geliştirilmesi için de yarışmalar düzenlenip bu konulara eğilimin artırılması istenmektedir. Biz burada çizgi izleyen robot yapımında gerekli olan donanımın tanıtılması ve bu donanımı, yazılımsal olarak nasıl kontrol edileceği üzerine paylaşımda bulunacağız.

Çizgi izleyen robot ile ilgili farklı yaklaşımlar:

Çizgi izleyen robot yapımına başlamadan önce çalışma şekilleri üzerindeki farklı tekniklerden bahsetmekte fayda var. Basit ve hızlı olarak iki kategoriye ayıracak olursak, sonrasında asıl konumuz olan hızlı çizgi izleyen üzerinde detaylarıyla durabiliriz.

Basit çizgi izleyen dediğimiz robotlarda belli başlı bilinen tekniklerden faydalanıldığı söylenemez. Daha çok basit bir algoritma ile şu sensör “lojik 1” olduğunda şu motoru hızlandır(ya da çalıştır) gibi şartlara bağlı( genellikle -if- kullanılarak) şekillerde tahrik mekanizmaları ile programlanmaktadır. Bu konuya biraz daha ayrıntılı olarak değineceğiz (hızlı çizgi izleyenle mukayese maksadıyla). Gelelim Hızlı çizgi izleyen robotu diğerinden ayıran noktalara. Çizgi izleyenlerde temel sorunları sıralayacak olursak;

  1. Aracın çizgiyi takip ederken çizgiyi tam olarak yakalayamaması,
  2. Aracın çizgi üzerinde hareketi halinde istikrarlı bir şekilde ivedilikle çizgiye kendisini (orta noktaya ya da set değerine) sabitleyememesi,
  3. Aracın hızlandığın da kontrolünü kaybetmesi,
  4. Çeşitli ışık seviyelerine sahip ortamlardan etkilenmesi, gibi nedenler ilk aklımıza gelen noktalar olarak sayılabilir.

Hızlı çizgi izleyen robot bu sorunları nasıl aşıyor?

Bu noktada bizi çözüme götürecek sistemler teorik olarak mevcut. Mühendislerin yada öğretmenlerin denetim sistemleri (bazı okullarda kontrol sistemleri diye geçmektedir) dersinden hatırlayacağı PID (Proportional-Integral-Derivative) kontrol tekniğidir. Proportional(orantısal),  Integral (integral), Derivative(türevsel) kontrol mekanizmalarını birlikte sistemimize uyarlamak bizi çözüme götürecektir.

PID nedir ve nasıl kullanılır?

Yukarıda da bahsedildiği üzere PID, kontrol mühendisliğinin çok önemli bir konusudur. İçerisinde üç farklı kontrol yöntemini içermektedir. Bunlar tek başlarına da kullanılabileceği gibi genellikle hep birlikte kullanılmaktadır. Bunun tercihi ise kontrolü yapılacak işin hassasiyet ihtiyacına göre şekillenmektedir. Aslında çok fazla tafsilatı ve matematiksel işlemi gerektiren bu konuyu basite indirgeyerek çizgi izleyenimizde ihtiyacımız olduğu ölçüde ele almak istiyorum. Aksi takdirde türev ve integral formüllerine boğulup kalmış ve bahsi geçen formülleri ve matematiksel işlemleri yazılıma aktarma, elektronik ortama uyarlama bilmeceleri içinde sıkışıp kalırız. Konunun zihnimizde tam olarak yer edebilmesi ve kavranabilmesi önemlidir. Bunun için işi formüllere hapsetmeden örneklerle açıklamaya çalışacağım.

PID kontrol dediğimiz sistemde ilk olarak P harfinin anlamı olan Proportional(Orantısal)  kontrolü açıklayalım. Adından da anlaşılacağı üzere tamamen orantısal çalışan bir sistemdir. Ters orantı ya da doğru orantı şekliyle de olabilir. Yani bir değişkenin artması ile artan, azalmasıyla azalan. Ya da azalmasıyla artan, artmasıyla azalan şeklinde çalışan bir mekanizmadır. En güzel örnek tahterevallidir. Bir tarafın aşağı inmesi ölçüsünde karşı taraf yukarı çıkmaktadır. Dikkat edilmesi gereken nokta ise bir birim indiğinde karşı taraf bir birim yukarı çıkmaktadır. Bunun anlamı, orantısal katsayımız burada 1’dir.

PID1

Yukarıda ki şekil üzerinden açıklayalım. Birçok kişinin fizik derslerinden hatırladığı kaldıraçlar konusundan bir örnek, F kuvveti ile P₁ uzaklığını çarptığımızda, G ağırlığı ile P₂ nin çarpımına eşit olacaktır. Eşitlikten faydalanarak(F x P₁ =  G x P₂)  şu şekilde çıkarım yaparsak;

F x P₁ /  P₂ = G ağırlığını verecektir. İlerde bahsedilecek olan PID kontrolde ki katsayılardan biri olan,  Kp katsayısı olarak da kullanılan oran yukarıda anlatılan P₁ /  P₂ oranıdır. Biz şimdi Kp üzerine yorumlar yapalım ve akabinde de çizgi izleyende nasıl bir fonksiyon icra ediyor onun üzerinde duralım.

Kp katsayısını veren değerler esasen P₁ /  P₂ olduğundan bahsettik. Buradan bazı çıkarımlar yapacak olursak, P₁ değerinin P₂’den büyük olması halinde F tarafında ki kol uzun olduğundan F kuvveti ile daha büyük iş yapılabilir ya da daha büyük ağırlıklar kaldırılabilir. Bu oran arttırıldıkça küçük F kuvvetleriyle büyük ağırlıklar kaldırılabilir. Bu bizim için avantajdır. Ancak dezavantaja neden olduğu durumlarda var tabi. Mesela biz F kuvvetini, aşağı yönde iki birim hareket ettirdiğimizde karşıdaki G ağırlığı bir birim yukarı kalkacaktır. Buda bizim daha çok mesafe almamız durumunda diğer tarafta az mesafe aldıracaktır. Aslında az kuvvetle çok ağırlık kaldırma olayı ile çok mesafe ile az mesafe alma durumları bir kenarda dursun.

Bir başka örnek ile konuya biraz daha açıklama getirelim.

  PID2Yan taraftaki şekilde bir su deposu ve şamandıra sistemi görünmektedir. Su seviyesi yükseldikçe şamandıra, su seviyesiyle birlikte yükselecek ve kaldıraç yükseldikçe de su girişi sağlanan musluğu kısacak, zamanla da kapatacak. Bu şekilde su girişi kesildiğinde şamandıranın da daha fazla yükselmesi engellenmiş olacak. Yukarıda ki kaldıraç örneğinde olan P₁ /  P₂ oranı şamandıra içinde geçerlidir, haliyle benzer yorumları yapabiliriz. Mesela,  şamandıra kolunun uzun olması, karşı tarafta ki kolun ise kısa olması ne gibi durumlar ortaya çıkarır birlikte inceleyelim. Şamandıra kolunun uzun olması, su seviyesinde ki yükselme oranı, su girişinde bulunan musluğun kapanma oranından büyük olacaktır. Bu demektir ki, şamandırada ki birkaç birimlik yükselme, musluğa bağlı olan kola daha düşük oranda yansıyacaktır. Su seviyesi düştükçe, şamandıra aşağı doğru hareket edecek böylelikle musluğa bağlı olan kol kalkacak ve musluğun önünde ki engeli o nispette kaldırarak su girişini hızlandıracak. Büyük oranda olan su seviyesinde ki düşüş, çok daha küçük oranda musluk tarafına yansıtılacak. Bu örneklerle giriş sisteminde ki bir bilginin ya da büyüklüğün, çıkış sistemimize nasıl yansıdığı mümkün olduğunca açıklanmaya çalışılmıştır. Peki, giriş büyüklüğünün hangi oranda olması ne kadarlık yansıma yapacağı, hangi oranda etkileyeceğini ise aşağıda ki üçgenlerin benzerliği konusundan faydalanarak hesaplayabiliriz.

PID3Aslında burada anlatılmak istenen mantık şudur; x değişkeni ile belirleyeceğimiz aralık (alt ve üst sınır) değeri, çıkış sistemimizde de hangi değer aralığında değişkenlik göstereceğidir. Buda bizim belirlediğimiz a / b oranıyla ilişkilendirilerek bulunur.  Gerçek hayattan bir sisteme uyarlayacak olursak; x, sıcaklık değerini ölçen elektronik termometre olsun. Y ise soğutucu fanın şiddetini ayarlayan elektronik bir devre olsun. Sıcaklık değeri arttıkça fanı kontrol eden elektronik devre akım şiddetini artırarak ortamı soğutmaya çalışacaktır. Ortam soğudukça, termometreden ölçülen değer düşecek, böylelikle fanı kontrol eden akım değeri de orantısal olarak düşecektir. Ortam sıcaklığında ki herhangi bir değişim giriş sisteminden aldığı bilgiyle beslenip ona göre hareket edecektir. Bu tip sistemler P kontrollü, yani orantısal kontrol dediğimiz sistemlerdir. Daha sonra detaylı şekilde açıklanmak üzere de kısaca, çizgi izleyende ne şekilde kullanılacağından bahsetmekte fayda var. Çizgi izleyen temel anlamda sensörlerden okuduğumuz bilgiyle aracın arka kısmında bulunan iki ayrı motorun hız farklarını ve yönlerini ayarlamak üzerine kurulmuştur.   Yukarıda bahsi geçen örneklerden de hareketle, sensörden okuduğumuz konum bilgisine göre düşünecek olursak çizginin yolun sağına kaydığı oranda sol motoru hızlandırarak, sağ motoru da yavaşlatarak çizgi istikametinde ilerlemesi sağlanmaya çalışılmaktadır. X yani giriş değişkenimiz, sensörlerden aldığımız pozisyon bilgisi olup, y ise çıkış değeri, yani motorun hızıdır. İleride sensörlerden nasıl pozisyon bilgisi elde edileceği ve motorlara hız değeri olarak nasıl aktarılacağı ayrıntılı anlatılacaktır.

PID kontrolde önemli bir değişkende I, yani integral değeridir. İntegral bazılarımızın matematik derslerinden hatırlayacağı integral konusunda ki belirli integral hesaplamasıdır. Biz burada belirli integral hesaplamalarına girmeden konuyu açıklamaya ve bunu nasıl uyarlayacağımız hakkında fikir vermeye çalışalım. İntegral dediğimiz konu esasında belirli aralıktaki değerlerin toplamını ifade eden zamana bağlı fonksiyondur. Yani bizi ilgilendiren kısmı ile ilgilenecek olursak, sabit değere sahip giriş fonksiyonlarında, artan bir grafik eğrisine sebep olmaktadır. Aşağıdaki grafik incelendiğinde sistemin girişine uygulanan hata sinyalinin sabit olması, düzeltici parametrelerin de sabit oranda etki etmesine neden olacaktır, buda çıkış sinyalimizi ideal (istediğimiz) noktaya, ya yaklaştıramayacaktır ya da çok geç yakalamasına sebep olacaktır. Bu yüzden İntegral kontrolü devam eden hata durumunda sürekli(set değeri yakalanana kadar) artan bir eğri çizecektir. Buda bizim orantısal kontrol uyguladığımız durumlarda sonuca daha hızlı ulaşmamızı sağlayacaktır.

PID4

Bu bilgiyi paylaştıktan sonra doğrudan çizgi izleyenimizde nasıl bir işleve sahip olacağı üzerinde duralım.

Çizgi izleyen robotumuzun orantısal kontrol ile çalıştığı varsayıldığında, integral kontrolünü dahil ederiz ve bu şekilde yukarıda bahsedildiği gibi sensörlerden gelen konum(yada pozisyon) bilgisi ile orantılı olarak hareket ederken, integral kontrolü, çizginin dışına her çıktığında daha hızlı set değerine bizi ulaştıracaktır. İntegral için uygulanan değer iyi ayarlanamazsa, çizgi izleyende aracın önünü sallaması devam edecektir hatta daha da fazla olması kaçınılmazdır.

D harfi ile gösterilen Derivative(Türevsel) kontrol, PID kontrol için bazı durumlarda çok önem arz etmektedir. Esasında değişik sistemler, P kontrol, PI kontrol, PD kontrol ve PID kontrol olarak ihtiyaca göre tercih edilir. Türev, matematiksel olarak bir yönüyle eğimdir. Yani eski durum ile mevcut durum arasında ki farkın ne kadar hızlı ya da yavaş yükseldiğine bakılır. Türevsel dediğimiz kontrol mantığı ise, eski durum ile yeni durumun birbirinden çıkarılması ve bunun zamana göre yorumlanması. Doğrudan çizgi izleyen robotumuz üzerinden etkisini açıklayacak olursak şu şekilde bir fayda sağlayacaktır. Yolumuzun düz olduğu anlarda eski durum ile yeni durum arasında ki fark sıfır olacağı için herhangi bir etkisinden bahsedilemez. Ancak aracımız eğimli yollara girdiğinde eğim için hesaplanan motorlar arasında ki hız oranlarını korumasına yönelik etki sağlayacaktır. Özellikle sabit açılı virajlara girdiğinde ilk hesaplanan hız oranları (viraj boyunca eğim değişmeyeceği için) sabit kalarak, aracın virajda yalpalama, savrulma gibi olumsuz durumlarını ortadan kaldıracaktır.

 PID5 Yan tarafta görülen şekilde belirli zaman aralıklarında sensörlerden pozisyon bilgisi alınmaktadır. Alınan sensör pozisyon bilgisi, bir önceki değerden çıkarılıp ölçüm alınan zaman aralığına bölündüğünde a, b, c… gibi harflerle gösterilen alanlarda ki eğimler hesaplanmış olacaktır. Bu eğim değerini de belirli bir katsayı ile çarpıp motorlara uygulanan PWM sayısal değerine ekleyeceğiz.

PID Kontrol çizgi izleyen robot (kp, ki, kd) Video izle…

https://www.youtube.com/watch?v=u16DZq8YZdk#t=8.954417

PID çizgi izleyen robot denemesi:

M. Yalçın ASLAN

 

 

Arduino İle Çizgi İzleyen Robot-1 (Yapısı ve Çalışması)

Arduino İle Çizgi İzleyen Robot-2 (Kullanılacak Malzemeler)

Arduino İle Çizgi İzleyen Robot-3 (Devre Bağlantılarının Yapılması)

Arduino İle Çizgi İzleyen Robot-4 (Programlama ve Algoritma)

Hızlı Çizgi İzleyen Robot İçin PID Kontrol” için 5 yorum

  • 03/04/2016 tarihinde, saat 02:18
    Permalink

    Teşekkürler…

    Yanıtla
  • 05/02/2017 tarihinde, saat 12:06
    Permalink

    Amatörce bir robot yapıp profesyonel gibi anlatmak yanlış olmuş.
    Ayrıca yazılım üzerinde anlatım yapsaydınız da bilmeyen arkadaşlar öğrenseydi.
    Anlatmak için anlatmamak lazım sayın Hocam.

    Yanıtla
    • 08/02/2017 tarihinde, saat 00:22
      Permalink

      Robot tabiki amatör. Ayrıca yazının yapılan robotla bir ilgisi yok.
      PID tekniği çizgi izleyen de ne ifade eder bunun üzerine bir yazı.

      Malumunuz mudur bilemeyeceğim ama PID kontrol tekniği,
      kontrol mühendisliğinin en ağır konularından biridir.
      Ciddi anlamda matematiksel bilgi ve çeşitli yaklaşımları
      beraberinde bilmeyi gerektirir. Dolayısıyla “lise proje
      ödevini ben buradan bakarak yaparım”
      gibi bir beklentiye sizi soktuğum için kusura bakmayın.
      Kodları vererek anlatmak bir şey ifade etmez çünkü mantalite anlaşılmadan beyhude bir çaba olur.

      Yanıtla

Bir Cevap Yazın

%d blogcu bunu beğendi: