Yinelemeli En Küçük Kareler (RLS) Yöntemi İle Adaptif Kontrolcü(STR) Tasarımı ve C++ ile Uygulanması

Yazar: Muhammet Emin Övüş


Değişken parametreli ve belirsizlik içeren sistemlerde, klasik sabit kontrolcülerin (PID vb.) performans kaybı yaşaması kaçınılmazdır. Bu soruna çözüm üretmek amacıyla, staj projem kapsamında Yinelemeli En Küçük Kareler (RLS) tabanlı bir Öz-Ayarlamalı Regülatör (STR) tasarladım.

Geliştirdiğim sistem, her örnekleme adımında RLS algoritması ile sistem modelini anlık olarak kestiriyor ve Diophantine denklemi aracılığıyla kontrolcüyü dinamik olarak güncelliyor. Algoritma, gömülü sistemlerde gerçek zamanlı (real-time) çalışabilmesi için C++ dili kullanılarak nesne yönelimli bir mimaride hayata geçirildi.

Bu blog yazısında; tasarladığım adaptif kontrolcünün matematiksel altyapısını, kurduğum yazılım mimarisini ve hem simülasyon hem de motor sistemi üzerindeki performans analizlerini sizlerle paylaşacağım.

Bu çalışmadaki temel hedeflerim şunlardı:

  • Bilinmeyen veya zamanla değişen parametrelere sahip sistemlerde kararlı bir kontrol yapısı sağlamak.
  • Unutma faktörü (forgetting factor) içeren RLS algoritması sayesinde parametre değişimlerine hızlı adaptasyon yeteneği kazandırmak.

Geliştirilen sistem, parametre tahmincisi ve kontrolcü tasarımı olmak üzere iki ana bloktan oluşan dolaylı (indirect) bir adaptif kontrol yapısına sahiptir.

Aşağıdaki şemada (Şekil 1), sistemin genel çalışma prensibi ve RLS bloğu ile kontrolcü bloğu arasındaki etkileşim görülmektedir.

 

Şekil 1 : Adaptif Kontrol Sisteminin Blok Şeması

Çalışmada tasarlan kontrolcü , iki serbestlik derecesine sahip bir kontrolcüdür. Şekil 2 de 2 serbestlik dereceli kontrol sistemini blok şeması görülmektedir.

Şekil 2 : 2 Serbestlik Dereceli Adaptif Kontrol Sistemi

Sistemin Transfer Fonksiyonu

Sistem, ayrık zamanlı ARX (Auto-Regressive With Exogenous Inputs) modeli kullanılarak ifade edilmiştir. Bu modelin tercih edilme sebebi, sistem dinamiklerini geçmiş giriş-çıkış verileriyle tanımlaması ve parametrelerin doğrusal yapısı sayesinde RLS algoritmasıyla kestirim için matematiksel olarak  kararlı bir form sunabilmesidir.

d: Sistem gecikme zamanı

A ve B polinomlarının genel denklemi:

Sistem model dereceleri, fiziksel temsil yeteneği gözetilerek  na=2 ve nb= 1 olacak şekilde temsil edilmişdir.

Kontrolcü Transfer Fonksiyonu

S, R polinomlarının genel denklemi :

Kontrolcü polinomlarının dereceleri aşağıdaki denklemlerle belirlenmektedir.

Sistemin ARX Modeli ve Regresyon Formu

Yinelemeli En Küçük Kareler (RLS) Algoritması

Sistemin bilinmeyen parametrelerini çevrimiçi (online) olarak kestirmek için Unutma Faktörlü (Forgetting Factor) Yinelemeli En Küçük Kareler (RLS) algoritması kullanılmıştır. Bu yöntem, zamanla değişen sistem dinamiklerini takip edebilmek için eski verilerin etkisini üstel olarak azaltır.Kodlamada kullanılan RLS güncelleme denklemleri sırasıyla şöyledir:

Tahmin Hatasının Hesaplanması:

Kazanç Vektörünün Güncellenmesi:

Kestirim hatası  hesaplandıktan sonra, parametrelerin ne kadar güncelleneceğine Kazanç Vektörü (K(t) karar verir.

Parametre Vektörünün Güncellenmesi:

Kovaryans Matrisinin Güncellenmesi:

P matrisi, RLS algoritmasında parametre tahmin hatasının kovaryansını temsil eder ve algoritmanın tahminlerine olan güven seviyesini belirler. Unutma faktörü kullanılması durumunda, matrisi geçmiş verilerin etkisini azaltacak şekilde güncellenir ve böylece zamanla değişen parametrelerin izlenebilmesi sağlanır.

Diophantine Denklemi İle Kontrolcü Parametrelerinin Hesaplanması:

Denklem 20 , sistemin kapalı çevrim transfer fonsiyonun karakteristik denklemini ifade eder.

Sistemin closed-loop karakteristik polinomu aşağıdaki gibidir:

Diophantine Denklemi : 

Gömülü sistemin işlem yükünü hafifletmek amacıyla, karakteristik polinomdan türetilen lineer denklem sistemi Şekil deki MATLAB kodu ile önceden çözülmüş ve elde edilen formüller koda doğrudan entegre edilmiştir.

Kontrol Kuralının Belirlenmesi

Şekil 2 incelendiğinde kontrol sinyali aşağıdaki gibi hesaplanır.

T  seçilmesinde literatürde bir kaç yöntem vardır. Bu çalışmada kullanılan yöntem, T polinomunun A0 gözlemci ile aynı seçilmesidir. (T = A0)

Kontrolcünün C++ İle Uygulanması Ve Simülasyonu

C++ implementasyonuna geçmeden önce, kontrolcü performansı MATLAB/Simulink ortamında simüle edilerek doğrulanmıştır. Yazının akıcılığını korumak ve odağı dağıtmamak adına burada yer verilmemiştir.

Algoritmanın gömülü donanım üzerindeki davranışını ve zamanlama kısıtlarını test edebilmek amacıyla, gerçek motor bağlantısı yapılmadan önce mikrodenetleyici içerisinde sanal bir sistem üzerinde test edilmiştir.

Yazılım mimarisi, C++ dilinin nesne yönelimli (OOP) yetenekleri kullanılarak modüler bir yapıda kurgulanmıştır. Geliştirme ortamı olarak PlatformIO, hedef donanım olarak ise Arduino Mega tercih edilmiştir.


Şekil 3 : Kontrolcü Sınıfının Genel Yapısı

Simülasyon Sonuçları

Şekil 4 : Simülayon Referans ve Çıkış Grafiği

Şekil 4 de görüldüğü üzere simülasyonun ilk kısmında sisteme kontrolcü devreye sokulmadan bir kara dalga girişi verilerek  RLS algoritmasının sistem parametrelerini öğrenmesi sağlanmıştır. Böylece gerçek zamanlı kontrol aşamasına daha yumuşak bir geçiş yapılmış olacaktır.

Kontrolcünün devreye girmesiyle, sistem belirli örnekleme zamanında sistem parametrelerini tahmin edip kontrolcü parametrelerini hesaplayarak verilen referansı başarılı bir şekilde takip etmiş aşım yada osilasyon yapmamıştır. 

Şekil 5 : Simülasyon Sistem Parametreleri Grafiği

Şekil 5 incelendiğinde, sistemin henüz gerçek zamanlı kontrol döngüsüne girmeden (identification phase), sanal sistem parametrelerini başarıyla öğrendiği ve parametrelerin gerçek değerlere yakınsadığı görülmektedir.

Grafikte parametrelerin belirli bir noktadan sonra sabit kalmasının temel nedeni, simülasyon ortamındaki sanal sistemin zamanla değişmeyen (time-invariant) ideal bir yapıda olmasıdır. Ancak algoritmanın asıl yeteneği, parametrelerin sürekli değiştiği fiziksel ortamlarda ortaya çıkmaktadır. Bu durumu gözlemlemek adına, bir sonraki aşamada değişken dinamiklere sahip gerçek bir motor üzerindeki testlere geçilmiştir.

Gerçek Donanım Testi: Enkoderli DC Motor Hız Kontrolü

Simülasyon ortamındaki başarılı sonuçların ardından, tasarlanan STR algoritması gerçek bir donanım üzerinde test edilmiştir. Bu aşamada, sistemin bozucu etkilere (yük değişimleri, sürtünme vb.) karşı dayanıklılığını ve referans takibi performansını gözlemlemek amaçlanmıştır.

Kullanılan Malzemeler : 

  • Arduino Mega
  • L298N Motor Sürücü
  • Encoderli DC Motor (360 PPM)
Şekil 6 : Kontrolcü Devre Şeması
Şekil 7: Motor Hız Kontrol Sistemi
Şekil 8: Kontrolcü Konfigürasyonu

Gerçek Zamanlı Deneysel Sonuçlar ve Performans Analizi

Şekil 9 : Gerçek zamanlı DC motor hız kontrol testi (Test 1)
Şekil 10 : Gerçek zamanlı DC motor hız kontrol testi (Test 2)

Hızlı Referans Takibi: Yeşil (RPM) çizginin, mavi (Referans) çizgiyi çok kısa sürede yakaladığı ve üzerine oturduğu görülmektedir. Bu, tasarlanan 2-DOF kontrolcünün yükselme süresini (rise time) minimize ettiğini gösterir.

Gürültü ve Kararlılık: Simülasyonun aksine, gerçek dünyadaki ölçüm gürültüsü (measurement noise) ve mekanik sürtünmeler, RPM sinyalindeki (yeşil) küçük titreşimlerle kendini göstermektedir. Ancak STR algoritması, bu bozuculara rağmen sistemi kararlı (stable) tutmayı başarmıştır.

Kontrol Eforu: Turuncu çizgi u, kontrolcünün motoru istenen hıza getirmek için ürettiği voltaj/PWM sinyalini temsil eder. Referans değişimlerinde kontrol sinyalinin ani tepkiler vererek motoru hızla toparladığı görülmektedir.

Sonuçlar ve Performans Karşılaştırması

Bu çalışmada geliştirilen STR algoritması, önce gömülü işlemci içindeki Sanal Sistem üzerinde, ardından Enkoderli DC Motor üzerinde test edilmiştir. Aşağıda bu iki senaryonun sonuçları ve karşılaştırmalı analizi yer almaktadır.

1. Sanal Sistem (Simülasyon) Sonuçları
Sanal sistem testlerinde (Şekil 4), ortam matematiksel olarak idealdir. Ölçüm gürültüsü veya beklenmeyen bozucu etkiler (sürtünme, boşluk vb.) bulunmamaktadır.

Gözlem: RLS algoritması, sistem parametrelerini çok kısa sürede ve iyi bir şekilde öğrenmiştir.

Sonuç: Parametreler gerçek değerlerine oturduktan sonra, sistem çıkışı referans işaretini hatasız (zero steady-state error) takip etmiştir.

2. Gerçek Zamanlı DC Motor Sonuçları
Gerçek dünya testlerinde (Şekil 9,10), fiziksel kısıtlar devreye girmiştir. Enkoderden gelen ölçüm gürültüsü, motorun fırça sürtünmeleri ve sürücü devresinin lineer olmayan davranışları sisteme dahil olmuştur.

Gözlem: Grafikteki yeşil (RPM) sinyalde görülen dalgalanmalar, sensör gürültüsünü ve anlık yük değişimlerini temsil etmektedir.

Sonuç: Bu bozucu etkilere rağmen, adaptif kontrolcü (STR) kararlılığını korumuş ve referans hız değişimlerine (Mavi çizgi) simülasyondakine benzer bir hızda tepki vermiştir.

30 iş günü süren staj programım kapsamında gerçekleştirdiğim bu çalışma, teorik kontrol mimarilerinin gömülü sistemlere nasıl entegre edilebileceğini somut bir şekilde ortaya koymuştur. Bu çalışma ile, literatürde genellikle teorik simülasyonlarla sınırlı kalan Öz-Ayarlamalı Regülatör (STR) tasarımı, gerçek bir gömülü sistem üzerine taşıyarak uygulamak bana ideal simülasyon ortamı ile gürültülü ve belirsiz endüstriyel koşullar arasındaki farkları yönetme ve karşılaşılan problemlere hem yazılımsal hem de donanımsal açılardan yaklaşabilme becerisi kattı.

Linkedin :

https://tr.linkedin.com/in/muhammet-emin-%C3%B6v%C3%BC%C5%9F-4a3290193