Page 1

YILDIZ TEKNĠK ÜNĠVERSĠTESĠ MAKĠNA MÜHENDĠSLĠĞĠ BÖLÜMÜ

4 ROTORLU BĠR ĠNSANSIZ HAVA ARACI (QUADROTOR) ĠÇĠN BULANIK KONTROLCÜ TASARIMI VE SĠMULASYONU

03066059 Ender ORTAK

MAKĠNE TEORĠSĠ, SĠSTEM DĠNAMĠĞĠ VE KONTROL ANABĠLĠM DALINDA HAZIRLANAN

LĠSANS BĠTĠRME TEZĠ

Tez DanıĢmanı: Yrd. Doç. Dr. Vasfi Emre ÖMÜRLÜ

İSTANBUL, 2010 i


ÖNSÖZ Bu çalışma süresince yardım ve desteklerini esirgemeyen, mümkün olan her fırsatta bana vakit ayıran, fikirleri ve bilgi birikimleriyle bu çalışmaya ışık tutan tez danışmanım Yrd. Doç. Dr. Vasfi Emre ÖMÜRLÜ „ye ve Ar. Gör. Müh. Ahmet KIRLI „ya sonsuz teşekkürlerimi sunarım. Beni büyütüp bu günlere getiren, üzerimdeki en büyük emeğe sahip olan, hayatıma anlam katan, benden maddi ve manevi desteklerini bir an olsun esirgemeyen, özellikle son bir aydır benimle yatıp, benimle kalkan, her türlü sıkıntıma ortak olan ve en önemlisi bana güvenen canım aileme sonsuz teşekkürlerimi sunarım. Son 5 aydır bana evlerinin kapılarını açan, bana ev sahipliği yapan, maddi ve manevi hiçbir desteğini esirgemeyen, bana çalışmam için gerekli ortamı sağlayan, dostluklarıyla hayatıma renk katan, bu çalışmayı hazırlamamda büyük katkıları olan Umur GÜLDİREN ve Uğur GÜLDİREN „e sonsuz teşekkürlerimi sunarım. Ayrıca şu an askerlik vazifesini yapmakta olan Umur GÜLDİREN „e hayırlı tezkereler dilerim.

Ender ORTAK Yıldız Teknik Üniversitesi Makina Mühendisliği Bölümü Ocak 2010

ii


ĠÇĠNDEKĠLER Sayfa ÖNSÖZ ....................................................................................................................................... ii SİMGE LİSTESİ ....................................................................................................................... iv KISALTMA LİSTESİ ................................................................................................................ v ŞEKİL LİSTESİ ......................................................................................................................... v ÇİZELGE LİSTESİ .................................................................................................................. vii ÖZET ....................................................................................................................................... viii ABSTRACT .............................................................................................................................. ix GİRİŞ .......................................................................................................................................... x 1. 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 1.3.4 2. 2.1 2.2 3. 3.1 3.2 3.3 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 4. 4.1 4.2 4.3 4.4 5.

HAVA ARACININ TANITIMI .............................................................................. 1 Genel Bilgi ............................................................................................................... 1 Simulasyonu Yapılan Modelin Geometrik ve Fiziksel Özellikleri ......................... 2 Modelleme ............................................................................................................... 3 Eksenlerin Tanımlanması ........................................................................................ 3 Quadrotor Sisteminin Matematik Analizi ................................................................ 3 Uçuş Kontrolü .......................................................................................................... 6 Modelin Tanıtılması................................................................................................. 7 SİMULASYON ORTAMININ TANITILMASI .................................................. 14 PID Kontrollü Sistem ............................................................................................ 14 Bulanık Kontrollü Sistem ...................................................................................... 15 KONTROL ............................................................................................................ 19 PID Kontrol ........................................................................................................... 19 Bulanık Mantık Kontrolü ....................................................................................... 21 Kendinden Ayarlamalı Kontrol ............................................................................. 24 Bulanık Kontrol Algoritması ve Bulanık Kontrol Karar Mekanizması................. 24 Üyelik Fonksiyonlarının ve Kuralların Tanımlanması .......................................... 25 Üyelik derecelerinin belirlenmesi .......................................................................... 27 Aktif Kuralların ve Kuralların Kesinliğinin Belirlenmesi ..................................... 28 Çıkışın Hesaplanması ............................................................................................ 30 Algoritma Çıkışının İncelenmesi ve Çıkışların Karşılaştırılması .......................... 31 HAVA ARACININ KONTROLÜ ........................................................................ 35 Kontrol Sistemi ...................................................................................................... 35 Birincil Kontrolcüler .............................................................................................. 36 İkincil Kontrolcüler ............................................................................................... 38 Kendinden Ayarlama Kontrolcüleri ...................................................................... 39 SİMULASYONLAR ............................................................................................. 41 iii


6.

SONUÇLAR .......................................................................................................... 55

EKLER ..................................................................................................................................... 56 Ek – 1 Birincil Bulanık Kontrolcülerde Kullanılan Kodlar ................................................... 56 Ek – 2 İkincil Bulanık Kontrolcülerde Kullanılan Kodlar ..................................................... 70 Ek – 3 Kendinden AyarlamaKontrolcülerinde Kullanılan Kodlar ......................................... 77 KAYNAKLAR ......................................................................................................................... 91 ÖZGEÇMİŞ .............................................................................................................................. 92

SĠMGE LĠSTESĠ z

Hava aracının düşey doğrultudaki konumu [m]

x

Hava aracının yatay düzlemdeki konum bileşeni [m]

y

Hava aracının yatay düzlemdeki konum bileşeni [m]

ψ

Hava aracının sapması (Yaw) [o]

θ

Hava aracının yunuslaması (Pitch) [o]

ϕ

Hava aracının yalpalaması (Roll) [o]

m

Hava aracının ağırlığı [kg]

l

Hava aracının bir şaftının uzunluğu [m]

Ix

Hava aracının x eksenindeki atalet momenti [m4]

Iy

Hava aracının y eksenindeki atalet momenti [m4]

Iz

Hava aracının z eksenindeki atalet momenti [m4]

J

Hava aracına etkiyen jiroskopik etki

b

Motorlara etkiyen düşey doğrultudaki itki kuvveti (Thrust)

d

Motorlara etkiyen dönel itki kuvveti (Drag)

µ

Bulanık kontrolcü üyelik derecesi

iv


KISALTMA LĠSTESĠ Kısaltma PID BM BMK enb enm ens ez eps epm epb denb denm dens dez deps depm depb unb unm uns uz ups upm upb

Açıklaması Oransal-integral-türev kontrolcü Bulanık mantık Bulanık mantık kontrolcü Negatif büyük hata Negatif orta hata Negatif küçük hata Sıfır hata Pozitif küçük hata Pozitif orta hata Pozitif büyük hata Negatif büyük hata değişimi Negatif orta hata değişimi Negatif küçük hata değişimi Sıfır hata değişimi Pozitif küçük hata değişimi Pozitif orta hata değişimi Pozitif büyük hata değişimi Negatif büyük çıkış Negatif orta çıkış Negatif küçük çıkış Sıfır çıkış Pozitif küçük çıkış Pozitif orta çıkış Pozitif büyük çıkış

ġEKĠL LĠSTESĠ Şekil 1.1 Bir quadrotorun genel görünümü ................................................................................ 1 Şekil 1.2 Pervanenin ürettiği kuvvetler ...................................................................................... 2 Şekil 1.3 Bir quadrotorda eksenler ve kuvvetler ........................................................................ 3 Şekil 1.4 Bir quadrotordaki motorların dönüş yönleri................................................................ 7 Şekil 1.5 Quadrotor modelinin giriş ve çıkışları......................................................................... 7 Şekil 1.6 Modelin denge durumu çıkışları.................................................................................. 8 Şekil 1.7 Modelin z yönündeki hareket çıkışları ........................................................................ 9 Şekil 1.8 Modelin x yönündeki hareket çıkışları ...................................................................... 10 Şekil 1.9 Modelin y yönündeki hareket çıkışları ...................................................................... 11 Şekil 1.10 Modelin sapma eksenindeki hareket çıkışları ......................................................... 12 Şekil 1.11 Quadrotor modelinin blok diyagramı ...................................................................... 13 Şekil 2.1 PID kontrollü sistemin blok diyagramı ..................................................................... 14 Şekil 2.2 Sabit giriş blokları ..................................................................................................... 14 Şekil 2.3 İkincil PID kontrolcüler ............................................................................................ 14 v


Şekil 2.4 Birincil PID kontrolcüler ........................................................................................... 14 Şekil 2.5 Toplama blokları ....................................................................................................... 14 Şekil 2.6 Quadrotor model bloğu ............................................................................................ 14 Şekil 2.7 Bulanık kontrollü sistemin blok diyagramı ............................................................... 16 Şekil 2.8 Control bloğu içeriği ................................................................................................. 16 Şekil 2.9 Basamak fonksiyonu blokları .................................................................................... 17 Şekil 2.10 İkincil bulanık kontrolcüler ..................................................................................... 17 Şekil 2.11 Birincil kendinden ayarlamalı bulanık kontrolcüler ............................................... 17 Şekil 2.12 Toplama blokları ..................................................................................................... 17 Şekil 2.13 Eyleyici .................................................................................................................... 17 Şekil 2.14 Kazanç blokları........................................................................................................ 18 Şekil 2.15 Fonksiyon blokları................................................................................................... 18 Şekil 2.16 Gürültü bloğu .......................................................................................................... 18 Şekil 2.17 Sabit giriş bloğu ...................................................................................................... 18 Şekil 2.18 Quadrotor model bloğu ........................................................................................... 18 Şekil 3.1 PID kontrolcünün genel yapısı .................................................................................. 19 Şekil 3.2 Giriş ve çıkışları ile BMK yapısı ............................................................................... 21 Şekil 3.3 Bulanık kontrol elemanları ........................................................................................ 22 Şekil 3.4 Üçgen şeklinde tanımlanmış bir üyelik fonksiyonu sistemi ...................................... 23 Şekil 3.5 Gaus eğrisi şeklinde tanımlanmış bir üyelik fonksiyonu sistemi .............................. 23 Şekil 3.6 Örnek bir kural tabanı................................................................................................ 23 Şekil 3.7 e Üyelik Fonksiyonları .............................................................................................. 26 Şekil 3.8 de Üyelik Fonksiyonları ............................................................................................ 26 Şekil 3.9 Çıkış Üyelik Fonksiyonları ....................................................................................... 27 Şekil 3.10 0,25 kesinlik derecesi için birinci yöntem ile hesaplanmış alan ............................. 31 Şekil 3.11 0,25 ve 0,75 kesinlik dereceleri için ikinci yöntem ile hesaplanmış alanlar ........... 31 Şekil 3.12 Matlab bulanık konrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması..... 32 Şekil 3.13 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması ... 32 Şekil 3.14 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması ... 33 Şekil 3.15 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması ... 33 Şekil 3.16 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması ... 34 Şekil 4.1 Hata girişi için hazırlanmış üyelik fonksiyonları ...................................................... 35 Şekil 4.2 Hatadaki değişim girişi için hazırlanmış üyelik fonksiyonları .................................. 35 Şekil 4.3 Bulanık kontrolcü çıkışı için hazırlanmış üyelik fonksiyonları ................................ 36 Şekil 5.1 Gürültü elemanının 50 Hz frekans ve 3o genlikle oluşturduğu gürültünün grafiği ... 41 Şekil 5.2 PID ve bulanık kontrolcülü sistemlerin x konum çıkışlarının karşılaştırılması ........ 42 Şekil 5.3 PID ve bulanık kontrolcülü sistemlerin y konum çıkışlarının karşılaştırılması ........ 43 Şekil 5.4 PID ve bulanık kontrolcülü sistemlerin z konum çıkışlarının karşılaştırılması ........ 43 Şekil 5.5 PID ve bulanık kontrolcülü sistemlerin sapma açısı çıkışlarının karşılaştırılması .... 44 Şekil 5.6 Gürültü etkisi altında ve gürültüsüz durumlar için x konumu çıkışları ..................... 46 Şekil 5.7 Gürültü etkisi altında ve gürültüsüz durumlar için y konumu çıkışları ..................... 46 Şekil 5.8 Gürültü etkisi altında ve gürültüsüz durumlar için sapma çıkışları .......................... 47 Şekil 5.9 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için x konumu çıkışı ............................................................................................................. 48 Şekil 5.10 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için y konumu çıkışı ............................................................................................................. 48 Şekil 5.11 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için z konumu çıkışı ............................................................................................................. 49 Şekil 5.12 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için sapma çıkışı ................................................................................................................ 49 vi


Şekil 5.13 Gürültü altında kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için x konumu çıkışı.................................................................................... 50 Şekil 5.14 Gürültü altında kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için y konumu çıkışı.................................................................................... 51 Şekil 5.15 Gürültü altında kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için sapma açısı çıkışı ................................................................................. 51 Şekil 5.16 Hava aracının durgun ilk halden başlayan hareketinde x konumunun zamana bağlı değişimi ...................................................................................................................... 52 Şekil 5.17 Hava aracının durgun ilk halden başlayan hareketinde y konumunun zamana bağlı değişimi ...................................................................................................................... 53 Şekil 5.18 Hava aracının durgun ilk halden başlayan hareketinde y konumunun zamana bağlı değişimi ...................................................................................................................... 53 Şekil 5.19 Hava aracının durgun ilk halden başlayan hareketinde y konumunun zamana bağlı değişimi ...................................................................................................................... 54

ÇĠZELGE LĠSTESĠ Çizelge 4.1 Üyelik fonksiyonlarını isimlendirmede kullanılan kısaltmaların açıklamaları ..... 36 Çizelge 4.2 Birincil bulanık kontrolcülerde kullanılan üyelik fonksiyonlarının tepe noktaları 37 Çizelge 4.3 Birincil bulanık kontrolcülerde kullanılan kural tablosu ....................................... 37 Çizelge 4.4 İkincil bulanık kontrolcülerde kullanılan üyelik fonksiyonlarının tepe noktaları . 38 Çizelge 4.5 İkincil bulanık kontrolcülerde kullanılan kural tablosu ........................................ 39 Çizelge 4.6 Kendinden ayarlama kontrolcülerinde kullanılan üyelik fonksiyonlarının tepe noktaları ................................................................................................................. 39 Çizelge 4.7 Kendinden ayarlama kontrolcülerinde kullanılan kural tablosu............................ 40

vii


ÖZET Bu çalışmanın amacı, referans olarak ele alınmış bir insansız hava aracı modelinin bulanık kontrolünün yapılmasıdır. Bu çalışmada, söz konusu modelin PID kontrol yöntemi ve kendinden ayarlamalı bulanık PD kontrol yöntemi ile yapılan kontrollerinin sonuçları incelecek ve karşılaştırılacaktır. Bu kontrol çalışmaları bilgisayar ortamında simule edilmiş olup, gerçek bir sistem üzerinde test edilmemiştir. Çalışmanın ilk bölümünde, ele alınan hava aracı tanıtılmış ve matematik analizi yapılmıştır. Modelin farklı girişlerde verdiği tepkiler incelenmiştir. İkinci bölümde hazırlanan simulasyon ortamı tanıtılmıştır. Kullanılan blokların kullanım amaçları açıklanmıştır. Üçüncü bölümde PID kontrol, bulanık kontrol ve kendinden ayarlamalı bulanık kontrol yöntemleri tanıtılmıştır. Hazırlanan bulanık kontrol algoritması incelenmiştir ve yazılan kodların ayrıntılı açıklaması yapılmıştır. Dördüncü bölümde tasarlanan PID ve bulanık kontrol sistemleri tanıtılmıştır. Bulanık kontrolcülerde kullanılan giriş ve çıkış üyelik fonksiyonları ile kural tabloları belirtilmiştir. Beşinci bölümde farklı girişler ve durumlar için yapılmış simulasyon sonuçları incelenmiştir. Altıncı bölümde yapılan çalışmanın sonunda varılan sonuçlar ele alınmıştır. Anahtar Kelimeler: İnsansız Hava Aracı Kontrolü, Quadrotor, Kendinden Ayarlamalı Bulanık Kontrol, Bulanık Kontrol Algoritması

viii


ABSTRACT The aim of this study is to design a fuzzy controller system for an UAV (Quadrotor). In this paper, the results of the PID controlled and self-tuning fuzzy PD controlled systems will be compared and analyzed. These control systems are simulated in computer environment and are not tested on a real system.

In the first chapter, the quadrotor system is introduced and the mathematical model of the quadrotor is analyzed. Responses of the model for different inputs are analyzed. In the second chapter, the simulation environment is introduced. The purpose of use of blocks is explained. In the third chapter, PID control, fuzzy control and self-tuning fuzzy control methods are introduced. The created fuzzy control algorithm is analyzed and detailed explanation of the codes is made. In the fourth chapter, the designed PID and fuzzy control systems are introduced. The input and output membership functions and the rule table which are used in each fuzzy controller are specified. In the fifth chapter, the simulation results for different inputs and different circumstances are analyzed. The sixth chapter is the conclusion of this study .

Keywords: Control of an Unmanned Air Vehicle, Quadrotor, Self-tuning Fuzzy Control, Fuzzy Control Algorithm

ix


GĠRĠġ İnsansız hava araçları için kontrolcü tasarımı, son yıllarda oldukça ilgi çeken ve üzerinde ciddi çalışmalar yapılan bir araştırma sahası olmuştur. Özellikle quadrotor sistemi için önemli kontrol çalışmaları yapılmıştır. Bu çalışmalardan bazıları bu bölümde tanıtılacaktır. Mills „in 2001 yılında yaptığı çalışmada [1], bir quadrotor sisteminin kendinden ayarlamalı bulanık kontrolü yapılmıştır. İlk olarak yeni bir araç modeli tanıtılmış ve bu aracın dinamikleri incelenmiştir. Daha sonra gelişme süreci ve simulasyon tekniklerinden bahsedilmiştir. Simulasyonda tanıtılmış bulanık kontrolcüler tanıtılmış ve simulasyonda kullanılan model üzerinden aracın fiziksel özellikleri tanıtılmıştır. Son olarak test sonuçları sunulmuş ve gelecekteki çalışmalar hakkında bilgi verilmiştir. Karani ve Mills „in 2003 yılında yaptıkları çalışmada [2], bulanık kontrolcü uygulaması olan yeni bir donanımsal kontrolcü ile insansız bir hava aracının kontrolü yapılmıştır. İlk olarak platform tanıtılmış ve mikroelektromekanik (MEMS) algılayıcılar ile kullanılacak kontrol sistemi belirlenmiştir. İki çeşit MEMS algılayıcı kullanılarak araç hem ivme, hem de açısal dönme verilerini elde edebilecek kabiliyete ulaşmıştır. Bu iki sinyalle birlikte, bulanık kontrol sistemi daha iyi karar verebilir bir hale gelmiştir. Bu durum platformun daha iyi bir stabilizasyona sahip olmasını sağlamıştır. Kıvrak „ın 2006 yılında yaptığı çalışmada [3], dört motorlu bir uçuş aracı için bir kontrol sistemi tasarlanmış ve detayı ile açıklanmıştır. Kontrol sistemi Matlab/Simulink ortamında tasarlanmış ve Simulink Real Time Windows Target kullanılarak gerçek zamanlı simulasyonu yapılmıştır. Sistemin yönelim kararlılığının denetimi için Lineer Quadratik Regülatör tasarlanmış ve donanımlı sistemle gerçek zamanlı çalıştırılması gösterilmiştir. Donanım veri toplama kartı, doğru akım motor sürücü devresi, algılayıcı seti, doğru akım motorları ve DraganFlyer V Ti gövdesinden oluşmaktadır. Coza ve Macnab „in 2006 yılında yaptığı çalışmada [4], bir quadrotorun sinüzoidal bir rüzgar etkisi altında stabilizasyonunu sağlayan yeni bir bulanık kontrolcü tanıtılmıştır. Bu yeni metod ile bulanık kontrolcülerin üyelik fonksiyonlarının merkezindeki kaymanın önlenmesi amaçlanmıştır. Yeni metodda alternatif bir üyelik fonksiyonu merkezi seti tanımlanmış olup, bu setin uyum sürecine yardımcı olmasıyla kaymanın engellenmesi sağlanmıştır. Yeni metodun stabilizasyon üzerindeki etkisinin gösterilmesi amacıyla bir quadrotor modeli üzerinde simulasyonlar gerçekleştirilmiştir.

x


Erginer ve Altuğ „un 2007 yılında yaptıkları çalışmada [5], bir quadrotorun iniş ve kalkış modeli tanıtılmıştır. Sistem için tasarlanan PD kontrol yöntemi tanıtılmıştır. Kullandıkları kontrol yapısında görsel tabanlı kontrol de mevcuttur. Gelecekteki çalışmalar kapsamında jiroskopik etkileri ve jiroskopik etkilerin kontrol stratejilerini de kapsayan bir modelin oluşturulması amacından bahsedilmiştir.

xi


1. 1.1

HAVA ARACININ TANITIMI Genel Bilgi

Quadrotor, içinde bir operatör olmadan uçabilen insansız bir hava aracıdır. Bu sebepten dolayı, quadrotorlar klasik helikopterlere kıyasla daha küçük boyutlara sahiptirler. “Artı işareti” şeklinde birbirine dik olarak yerleştirilmiş iki şafttan oluşur. Şekil 1.1 ‟de görüldüğü üzere bu şaftların her bir ucuna yerleştirilmiş dört adet motor bulunmaktadır.

ġekil 1.1 Bir quadrotorun genel görünümü

Quadrotorların güvenlik görevleri, askeri araştırmalar, yüksek konumlardan fotoğraf çekme ve video kaydetme ve ayrıca sanayide diğer taşıt ya da robotlarla koordine çalışarak düşük ağırlıklı yük taşıma gibi geniş bir kullanım alanı vardır. İnsansız hava araçları (İHA) kapsamında quadrotorlar, hareket kabiliyetleri ve kontrol problemi açısından son yıllarda üzerinde dikkate değer araştırmalar yapılmış konulardandır. Yapılan çalışmalar daha çok kontrol ağırlıklıdır.

1


1.2

Simulasyonu YapÄąlan Modelin Geometrik ve Fiziksel Ă–zellikleri

Modelin deÄ&#x;iĹ&#x;kenlerinin kontrolĂźnĂź ele almadan Ăśnce, modelin sabitlerinin belirlenmesi gerekir. Bu modelin sabit deÄ&#x;erleri aĹ&#x;aÄ&#x;Äąda belirtildiÄ&#x;i gibidir. Bu deÄ&#x;erlerden motorlara etkiyen aĹ&#x;aÄ&#x;Äą yĂśndeki itki kuvveti ve dĂśnel itki kuvveti Ĺžekil 1.2â€&#x;de gĂśsterilen yĂśnlerde olup, dĂśnme etkisiyle oluĹ&#x;an kuvvetlerdir.

đ?‘š = 1 đ?‘˜đ?‘”

Hava aracÄąnÄąn kĂźtlesi

đ?‘™ = 0.48 đ?‘š

Hava aracÄąnÄąn bir Ĺ&#x;aftÄąnÄąn uzunluÄ&#x;u

đ??źđ?‘Ľ = 8.1 10−3 đ?‘š4

x eksenindeki atalet momenti

đ??źđ?‘Ś = 8.1 10−3 đ?‘š4

y eksenindeki atalet momenti

đ??źđ?‘§ = 14.2 10−3 đ?‘š4

z eksenindeki atalet momenti

đ??˝ = 71.88 10−6

Jiroskopik etki

đ?‘? = 54.2 10−6 N

DĂźĹ&#x;ey doÄ&#x;rultudaki itki kuvveti (thrust) katsayÄąsÄą

đ?‘‘ = 1.1 10−6 N

DĂśnel itki kuvveti (drag) katsayÄąsÄą

ÄĄekil 1.2 Pervanenin ĂźrettiÄ&#x;i kuvvetler

2


1.3

Modelleme

1.3.1 Eksenlerin TanÄąmlanmasÄą Quadrotorun eksenleri, Ăśrnek bir quadrotor modeli Ăźzerinde Ĺžekil 1.3 „te gĂśsterilmiĹ&#x;tir. Quadrotorlar hava araçlarÄą olduklarÄąndan, teoride 6 serbestlik dereceli sistemlerdir. Fakat gerçekte x ve y eksenlerinde baÄ&#x;ÄąmsÄąz hareket edemediklerinden 4 serbestlik dereceli sistemlerdir denilebilir. Quadrotorlar bu eksenlerdeki hareketi, z eksenindeki toplam itme kuvvetini deÄ&#x;iĹ&#x;tirmeden Ď• ve θ doÄ&#x;rultusunda açĹ yaparak saÄ&#x;lamaktadÄąrlar.

ÄĄekil 1.3 Bir quadrotorda eksenler ve kuvvetler

1.3.2 Quadrotor Sisteminin Matematik Analizi

Bu bĂślĂźmde, Newton-Euler denklemleri kullanÄąlarak quadrotorun davranÄąĹ&#x;larÄą matematiksel olarak incelenecektir. Ĺžekil 1.3 „te gĂśrĂźldĂźÄ&#x;Ăź Ăźzere ; θ, Ď•, Ďˆ açĹlarÄą sÄąrasÄąyla yunuslama, yalpalama ve sapma açĹlarÄądÄąr. A zemin dĂźzlemi, B ise quadrotor dĂźzlemidir. Euler açĹlarÄą ifadesi kullanÄąlarak (ZYX formu) C kosinĂźs, S sinĂźs olmak Ăźzere rotasyonel matris Ĺ&#x;u Ĺ&#x;ekilde tanÄąmlanabilir:

Cđ?œ“Cđ?œƒ đ?‘… = Sđ?œ“Sđ?œƒ −Sđ?œƒ

Cđ?œ“Sđ?œƒSđ?œ™ − Sđ?œ“Sđ?œ™ Sđ?œ“Sđ?œƒSđ?œ™ − Cđ?œ“Cđ?œ™ Cđ?œƒSđ?œ™

3

Cđ?œ“Sđ?œƒCđ?œ™ + Sđ?œ“Sđ?œ™ Sđ?œ“Sđ?œƒCđ?œ™ +Cđ?œ“Sđ?œ™ Cđ?œƒCđ?œ™


ωi her motorun açĹsal hÄązÄą (i; 1,2,3,4) ve b dĂźĹ&#x;ey doÄ&#x;rultudaki itki kuvveti (thrust) sabit katsayÄąsÄą olmak Ăźzere, her bir motorun ĂźrettiÄ&#x;i dĂźĹ&#x;ey doÄ&#x;rultudaki itki kuvveti Fi Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir: đ??šđ?‘– = đ?‘? đ?œ”đ?‘–2

Bu durumda dĂźĹ&#x;ey doÄ&#x;rultudaki toplam itki kuvveti Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir: 4

đ?œ”đ?‘–2

đ??šđ?‘‡ = đ?‘? đ?‘–=1

m hava aracÄąnÄąn kĂźtlesi olmak Ăźzere, bu kuvvet tarafÄąndan saÄ&#x;lanan ivme ise Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir: đ?‘? đ?‘Žđ??š = đ?‘š

4

đ?œ”đ?‘–2 đ?‘–=1

đ?‘Žđ??š ivmesinin A dĂźzlemine etkisi đ?‘…đ?‘Ž đ??š olarak ifade edilirse, g yerçekimi ivmesi olmak Ăźzere ivme dengesi Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir:

đ?‘Ł = −đ?‘” + đ?‘…đ?‘Ž đ??š

x, y ve z eksenlerindeki atalet momentleri Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir:

đ??źđ?‘Ľ đ??ź= 0 0

0 đ??źđ?‘Ś 0

4

0 0 đ??źđ?‘§


Bu durumda x, y ve z eksenlerindeki açĹsal momentumlar Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir: đ??żđ?‘Ľ,đ?‘Ś,đ?‘§ = đ??ź đ?œ”

Quadrotorun torku ise Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir: đ?œ?đ??ľ = đ??ż đ?œ?đ??ľ = đ?œ” Ă— đ??ź đ?œ”

Quadrotorun ve motorlarÄąn kendi ekseni etrafÄąnda dĂśnmesinden oluĹ&#x;an jiroskopik tork Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir: 4

đ??˝ đ?œ” Ă— đ?‘’đ?‘§ đ?œ”đ?‘– (−1)đ?‘–

đ?œ?đ??ş = đ?‘–=1

MotorlarÄąn ĂźrettiÄ&#x;i dĂźĹ&#x;ey doÄ&#x;rultudaki itki kuvveti quadrotor Ăźzerinde bir tork oluĹ&#x;turur. Bir eksene ait tork, diÄ&#x;er iki eksene ait torkun farkÄąna eĹ&#x;ittir. l hava aracÄąnÄąn bir Ĺ&#x;aftÄąnÄąn boyu, d dĂśnel itki kuvveti (drag) katsayÄąsÄą olmak Ăźzere, bu torklar Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir:

đ?œ?đ?‘Ž =

đ?‘™ đ?‘? (đ?œ”42 − đ?œ”22 ) 2 đ?‘™ đ?‘? (đ?œ”32 − đ?œ”22 ) 2 đ?‘‘ (−đ?œ”12 + đ?œ”22 − đ?œ”32 + đ?œ”42

Bu durumda tork dengesi Ĺ&#x;u Ĺ&#x;ekilde ifade edilebilir: đ?œ?đ??ş + đ?œ?đ??ľ = đ?œ?đ?‘Ž Tork ve ivme ifadeleri için gerekli deÄ&#x;iĹ&#x;imler yapÄąldÄąÄ&#x;Äąnda, U1,2,3,4 giriĹ&#x;ler olmak Ăźzere aĹ&#x;aÄ&#x;Äądaki konum denklem sistemi elde edilir:

5


đ?œ™=

đ?œ“đ?œƒ

đ??źđ?‘Ś − đ??źđ?‘Ľ đ??˝ đ?‘™ − đ?œƒ −đ?œ”1 + đ?œ”2 − đ?œ”3 + đ?œ”4 + đ?‘ˆ đ?‘‘2 đ?‘Ą đ??źđ?‘§ đ??źđ?‘Ľ 2 đ??źđ?‘Ľ 2

đ?œƒ=

đ?œ“đ?œƒ

đ??źđ?‘Ľ − đ??źđ?‘§ đ??˝ đ?‘™ − đ?œ™ −đ?œ”1 + đ?œ”2 − đ?œ”3 + đ?œ”4 + đ?‘ˆ đ?‘‘2 đ?‘Ą đ??źđ?‘Ś đ??źđ?‘Ś 2 đ??źđ?‘Ś 3

đ?œ“=

đ?œƒđ?œ™

đ??źđ?‘Ľ − đ??źđ?‘Ś đ?‘™ + đ?‘ˆ đ?‘‘2 đ?‘Ą đ??źđ?‘§ 2 đ??źđ?‘Ś 4

đ?‘Ľ=

cos đ?œ“ sin đ?œƒ sin đ?œ™ + sin đ?œ“ cos đ?œ™

1 đ?‘ˆ đ?‘‘2 đ?‘Ą đ?‘š 1

đ?‘Ś=

sin đ?œ“ sin đ?œƒ cos đ?œ™ + cos đ?œ“ sin đ?œ™

1 đ?‘ˆ đ?‘‘2 đ?‘Ą đ?‘š 1

�=

−đ?‘” + cos đ?œƒ cos đ?œ™

1 đ?‘ˆ đ?‘‘2 đ?‘Ą đ?‘š 1

1.3.3 UçuĢ KontrolĂź Quadrotorun tĂźm eksenlerdeki hareketi Ĺ&#x;u Ĺ&#x;ekilde açĹklanabilir: 

Ĺžekil 1.4 „te gĂśsterildiÄ&#x;i gibi; 1 ve 3 numaralÄą motorlar saat yĂśnĂźnde, 2 ve 4 numaralÄą motorlar saat yĂśnĂźnĂźn tersi yĂśnĂźnde olmak Ăźzere her motor belli bir açĹsal hÄązda dĂśnerse, sistem havada dengede kalÄąr.



EÄ&#x;er her motorun hÄązÄą aynÄą miktarda artÄąrÄąlÄąrsa ya da azaltÄąlÄąrsa z ekseninde hareket saÄ&#x;lanmÄąĹ&#x; olur.



EÄ&#x;er 1 ve 3 numaralÄą motorlardan birinin açĹsal hÄązÄą bir miktar azaltÄąlÄąp, diÄ&#x;erinin açĹsal hÄązÄą aynÄą miktarda artÄąrÄąlÄąrsa, z eksenindeki toplam itki kuvveti sabit kalÄąr. Ď• doÄ&#x;rultusunda bir açĹ ile sistem yalpalama yapar. Bu durum y ekseninde bir hareket oluĹ&#x;turur.



EÄ&#x;er 2 ve 4 numaralÄą motorlardan birinin açĹsal hÄązÄą bir miktar azaltÄąlÄąp, diÄ&#x;erinin açĹsal hÄązÄą aynÄą miktarda artÄąrÄąlÄąrsa, z eksenindeki toplam itki kuvveti sabit kalÄąr. θ doÄ&#x;rultusunda bir açĹ ile sistem yunuslama yapar. Bu durum x ekseninde bir hareket oluĹ&#x;turur.



EÄ&#x;er karĹ&#x;ÄąlÄąklÄą iki motorun açĹsal hÄązÄą bir miktar azaltÄąlÄąp, diÄ&#x;erlerinin açĹsal hÄązÄą aynÄą miktarda artÄąrÄąlÄąrsa, z eksenindeki toplam itki kuvveti sabit kalÄąr. Bu durumda Ďˆ doÄ&#x;rultusunda dĂśnme hareketi yapar. 6


ġekil 1.4 Bir quadrotordaki motorların dönüş yönleri

1.3.4 Modelin Tanıtılması Quadrotor sistemlerinin modellenmesinde, oluşturulan matematik modele göre giriş olarak açısal hız, kuvvet ya da direk olarak motorlara verilecek voltaj kullanılabilir. Referans olarak ele alınan modelde giriş olarak açısal hız seçilmiş. Şekil 1.5 „teki blok görüntüsünde girişler ve çıkışlar görülebilmektedir.

ġekil 1.5 Quadrotor modelinin giriş ve çıkışları

7


Referans olarak ele alınan modelin Bölüm 1.3.2 „de anlatılan uçuş kontrolüne uygun hareket edip etmediğini test etmek için modele manuel olarak açısal hız değerleri verildi ve çıkışları incelendi. Modele giriş olarak verilen açısal hız, sisteme bir kuvvet olarak etki ettiğinden, konum değerleri sabit bir kuvvetten oluşan bir ivme etkisi altında giderek büyümektedir. Sistemin stabilizasyonu için ters yönde bir hareket gerekmektedir. Bu bölümün amacı, sadece açısal hız değişimlerine göre sistemin hareketin yönünü belirlemek olduğundan, sistemin ulaştığı son değerlerin bir önemi bulunmamaktadır. İlk durumda tüm motorlar için 212.8183 rd/s „lik açısal hız girişleri verildi. Bu değer ampirik olarak bulunmuş olup, hava aracının denge halini sağlayan açısal hız değeridir. Şekil 1.6 ‟da görüldüğü üzere, modelin bu değer için tüm çıkışları sıfırdır.

ġekil 1.6 Modelin denge durumu çıkışları 8


Sırasıyla x, y, z, yalpalama, yunuslama ve sapma konum çıkışlarının zamana bağlı değişimi İkinci durumda, tüm motorların açısal hızı ilk duruma göre 3 rd/s artırıldı. Bu durumda sistemin z ekseni doğrultusunda bir harekete başladığı gözlendi. Diğer konum çıkışlarının sıfır değerinde kaldığı gözlendi. Bu durum Şekil 1.7 „de gözlenebilmektedir.

ġekil 1.7 Modelin z yönündeki hareket çıkışları Sırasıyla x, y, z, yalpalama, yunuslama ve sapma konum çıkışlarının zamana bağlı değişimi

9


Üçüncü durumda, Şekil 1.4 „e göre 2 numaralı motorun açısal hızı ilk duruma göre 0.1 rd/s artırıldı ve 4 numaralı motorun açısal hızı ilk duruma göre 0.1 rd/s azaltıldı. Bu durumda sistemin x ekseni doğrultusunda bir harekete başladığı ve yunuslama açısının değiştiği gözlendi. Diğer konum çıkışlarının sıfır değerinde kaldığı gözlendi. Bu durum Şekil 1.8 „de gözlenebilmektedir.

ġekil 1.8 Modelin x yönündeki hareket çıkışları Sırasıyla x, y, z, yalpalama, yunuslama ve sapma konum çıkışlarının zamana bağlı değişimi

10


Dördüncü durumda, Şekil 1.4 „e göre 1 numaralı motorun açısal hızı ilk duruma göre 0.1 rd/s artırıldı ve 3 numaralı motorun açısal hızı ilk duruma göre 0.1 rd/s azaltıldı. Bu durumda sistemin y ekseni doğrultusunda bir harekete başladığı ve yalpalama açısının değiştiği gözlendi. Diğer konum çıkışlarının sıfır değerinde kaldığı gözlendi. Bu durum Şekil 1.9 „da gözlenebilmektedir.

ġekil 1.9 Modelin y yönündeki hareket çıkışları Sırasıyla x, y, z, yalpalama, yunuslama ve sapma konum çıkışlarının zamana bağlı değişimi

11


Beşinci durumda, Şekil 1.4 „e göre 1 ve 3 numaralı motorların açısal hızı ilk duruma göre 0.1 rd/s artırıldı, 2 ve 4 numaralı motorların açısal hızı ilk duruma göre 0.1 rd/s azaltıldı. Bu durumda sistemin sapma açısının değiştiği gözlendi. Diğer konum çıkışlarının sıfır değerinde kaldığı gözlendi. Bu durum Şekil 1.10 „da gözlenebilmektedir.

ġekil 1.10 Modelin sapma eksenindeki hareket çıkışları Sırasıyla x, y, z, yalpalama, yunuslama ve sapma konum çıkışlarının zamana bağlı değişimi

12


Modelin Şekil 1.11 „deki blok diyagramında da görüldüğü üzere, konum hesaplaması kabaca şu şekilde yapılmaktadır: 

Öncelikle her motorun açısal hızından oluşan itki kuvvetleri ve yönleri hesaplanmaktadır.

Her eksen için bu itki kuvvetlerinden oluşan ivmeler hesaplanmaktadır.

Hesaplanan ivmelerin integrali alınarak her eksen için doğrusal hızlar hesaplanmaktadır.

Doğrusal hızların integrali alınarak her eksen için konum değerleri hesaplanmaktadır.

ġekil 1.11 Quadrotor modelinin blok diyagramı

13


SĠMULASYON ORTAMININ TANITILMASI

2. 2.1

PID Kontrollü Sistem

Modelin PID kontrolü, Şekil 2.1 „de blok diyagramı görülen sistemde yapılmıştır.

ġekil 2.1 PID kontrollü sistemin blok diyagramı

ġekil 2.2

ġekil 2.3

ġekil 2.4

ġekil 2.5

ġekil 2.6

Sabit giriş

İkincil PID

Birincil PID

Toplama

Quadrotor model

blokları

kontrolcüler

kontrolcüler

blokları

bloğu

14


Şekil 2.2 ‟de görülen sabit giriş blokları, sistemin ulaşması istenen konum değerlerini sisteme girmektedir. Girişin neden sabit giriş blokları şeklinde girildiğine daha sonra değinilecektir. Şekil 2.3 „te görülen ikincil PID kontrolcüler, hedef x ve y konumları ile o anki x ve y konumlarından gelen geri beslemeler arasındaki hataya (farka) göre çıkış sinyali üretmektedir. Şekil 2.4 „te görülen birincil PID kontrolcülerden “PID Controller” ve “PID Controller2” kontrolcüleri, ikincil PID kontrolcü çıkışları ile o anki yunuslama (pitch) ve yalpalama (roll) açılarından gelen geri beslemeler arasındaki hataya (farka) göre çıkış sinyali üretmektedir. Diğer birincil kontrolcüler ise hedef konumlar ile o anki konumlardan gelen geri beslemeler arasındaki hataya (farka) göre çıkış sinyali üretmektedir. Şekil 2.5 „te görülen toplama blokları, birincil PID kontrolcülerden çıkan açısal hız sinyallerini toplayarak, her bir motor için modele girilecek toplam açısal hızı hesaplamaktadır. Her bir motor için hesaplanan toplam açısal hız, Şekil 2.6 „da gösterilen quadrotor model bloğuna girmektedir. Model tarafından hesaplanan konum sinyalleri, bu blok tarafından üretilmektedir. 2.2

Bulanık Kontrollü Sistem

Modelin bulanık kontrolü, Şekil 2.7 „de blok diyagramı görülen sistem üzerinde yapılmıştır. Sistemde her bir rotorun açısal hızı, bir eyleyici (actuator) tarafından belirlenmektedir. Motorların kontrol için izin verdiği aralık, %10-20 çalışma aralığıdır (duty cycle). Kontrolcüler tarafından üretilen sinyaller bu aralıkta sınırlıdır. Eyleyici, kontrolcülerden gelen bu sinyali açısal hıza dönüştürür. %15 değerindeki sinyal, sistemin stabil halde havada durması için gerekli açısal hızı üretmektedir. Dolayısıyla aslında kontrolcüler [-5 5] aralığında bir sinyal üretmektedir ve bu sinyal 15 ile toplanarak tetikleyiciye girecek asıl sinyal elde edilmiş olur. Sistemde girişler basamak fonksiyonu olarak seçilmiştir. Bunun amacı, sistemin daha gerçekçi bir simulasyonunun yapılabilmesi için, z = 2 m yüksekliği orijin noktası olarak kabul edilip, sistem bu yüksekliğe çıkana kadar giriş değerlerinin göz ardı edilmek istenmesidir. Sistemde kullanılan bulanık kontrolcüler Matlab yazılımı dahilindeki editör kullanılarak değil, bir algoritma kodlanarak hazırlanmıştır. Bunun sebebi, Matlab yazılımındaki editör ile oluşturulan bulanık kontrolcülerin, mikroişlemcilerde hafıza problemine yol açmasıdır.

15


ġekil 2.7 Bulanık kontrollü sistemin blok diyagramı

ġekil 2.8 Control bloğu içeriği 16


ġekil 2.9

ġekil 2.10

ġekil 2.11

ġekil 2.12

ġekil 2.13

Basamak

İkincil bulanık

Birincil kendinden

Toplama

Eyleyici

fonksiyonu

kontrolcüler

ayarlamalı bulanık

blokları

blokları

kontrolcüler

Şekil 2.9 „da gösterilen basamak fonksiyonu blokları, sistemin z = 2 m konumuna yükselmesini beklemek için kullanılmıştır. Sistemin bu konuma gelip stabil bir halde beklemesi için 25 saniyelik bir zaman belirlenmiştir. z değeri için kullanılan basamak fonksiyonunun ilk değeri 2, diğer basamak fonksiyonlarının ilk değeri sıfırdır. Tüm basamak fonksiyonlarının son değerleri hedef konum değerleridir. Şekil 2.10 „da gösterilen ikincil bulanık kontrolcüler, PID ile kontrol edilen sistemdeki ikincil PID kontrolcülerin yerine kullanılmıştır. Şekil 2.11 „da gösterilen birincil kendinden ayarlamalı bulanık kontrolcüler, PID ile kontrol edilen sistemdeki birincil PID kontrolcülerin yerine kullanılmıştır. Şekil 2.12 „de gösterilen toplama blokları, her bir motor için toplam çıkış sinyalini hesaplamaktadır. Şekil 2.13 „te gösterilen eyleyici, %10-20 çalışma aralığındaki kontrol sinyalini açısal hıza dönüştürmek için kullanılmıştır. 17


ġekil 2.14

ġekil 2.15

ġekil 2.16

ġekil 2.17

ġekil 2.18

Kazanç blokları

Fonksiyon

Gürültü bloğu

Sabit giriş

Quadrotor model

bloğu

bloğu

blokları

Şekil 2.14 „te gösterilen kazanç blokları, birincil kendinden ayarlamalı bulanık kontrolcülerin P ve D katsayılarını değiştirmek için kullanılmıştır. Şekil 2.15 „te gösterilen fonksiyon blokları, sapma açısını radyan olarak hesaplayan model için derece birimiyle giriş yapabilmek içindir. Yani bu fonksiyonlar derece-radyan, radyan derece dönüşümünü yapan fonksiyonlardır. Şekil 2.16 „da gösterilen gürültü bloğu, sistemde oluşabilecek olumsuz etkileri simule etme amacıyla kullanılmaktadır. Şekil 2.17 „de gösterilen sabit giriş bloğu, [-5 5] aralığında olan kontrolcü çıkışına, sistemin stabil halde havada kalması için gerekli olan 15 değerinin eklenmesi için gerekli sinyali üretir. Her bir motor için hesaplanan toplam açısal hız, Şekil 2.18 „da gösterilen quadrotor model bloğuna girmektedir. Model tarafından hesaplanan konum sinyalleri, bu blok tarafından üretilmektedir.

18


3.

KONTROL

3.1

PID Kontrol

PID kontrol algoritması üç farklı parametreden oluşur: Orantısal değer (Proportional), integral ve türev (derivative). Orantısal değer, o anki hataya verilecek tepkiyi belirler. İntegral değeri, geçmişteki hataların toplamına bağlı olarak verilecek tepkiyi belirler. Türev değeri ise, hatanın değişim oranına bağlı olarak verilecek tepkiyi belirler. Bu üç parametre sonucu oluşan değerlerin ağırlıklı toplamı, bir kontrol vanasının pozisyonu ya da bir ısıtıcının güç beslemesi gibi işlemleri bir kontrol elemanıyla düzenlemekte kullanılır.

ġekil 3.1 PID kontrolcünün genel yapısı

PID kontrol algoritmasındaki bu üç sabit ayarlanarak, kontrolcü işlemi belirli işlem ihtiyaçlarını sağlayacak şekilde kontrol edebilir. Kontrolörün çıkışı, aşağıdaki parametrelere göre sınıflandırılabilir: 

Kontrolörün bir hataya olan tepkiselliği,

Hedef değeri aşım derecesi,

Sistem osikülasyon derecesi.

Şu göz önünde bulundurulmalı ki; kontrol için PID algoritmasının kullanımı, sistemin optimum kontrolünü ya da sistem stabilitesini garanti etmez. 19


PID kontrol algoritmasÄąnÄą matematiksel olarak inceleyecek olursak, t zaman olmak Ăźzere PID kontrolcĂźsĂźnĂźn çĹkÄąĹ&#x;Äą aĹ&#x;aÄ&#x;Äądaki gibi ifade edilebilir: đ?‘ˆ đ?‘Ą = đ?‘ƒđ?‘ˆ + đ??źđ?‘ˆ + đ??ˇđ?‘ˆ YukarÄądaki ifadede, đ?‘ƒđ?‘ˆ , đ??źđ?‘ˆ , đ??ˇđ?‘ˆ ifadeleri her bir PID teriminin çĹkÄąĹ&#x;a olan etkilerini temsil etmektedir. Kp orantÄąsal katsayÄą, e hata ve t zaman olmak Ăźzere, orantÄąsal terim aĹ&#x;aÄ&#x;Äądaki gibi ifade edilebilir: đ?‘ƒđ?‘ˆ = đ??žđ?‘? đ?‘’(đ?‘Ą)

Ki integral katsayÄąsÄą, e hata, Ď„ integrasyon deÄ&#x;iĹ&#x;keni ve t zaman olmak Ăźzere, integral terimi aĹ&#x;aÄ&#x;Äądaki gibi ifade edilebilir: đ?‘Ą

đ??źđ?‘ˆ = đ??žđ?‘–

đ?‘’ đ?œ? đ?‘‘đ?œ? 0

Kd integral katsayÄąsÄą, e hata ve t zaman olmak Ăźzere, tĂźrev terimi aĹ&#x;aÄ&#x;Äądaki gibi ifade edilebilir: đ??ˇđ?‘ˆ = đ??žđ?‘‘

đ?‘‘ đ?‘’(đ?‘Ą) đ?‘‘đ?‘Ą

Sonuç olarak PID kontrolcĂźnĂźn çĹkÄąĹ&#x;Äą; orantÄąsal terim, integral terimi ve tĂźrev teriminin toplamÄąnÄąn alÄąnmasÄąyla hesaplanabilir. đ?‘Ą

đ?‘ˆ đ?‘Ą = đ??žđ?‘? đ?‘’ đ?‘Ą + đ??žđ?‘–

0

20

đ?‘’ đ?œ? đ?‘‘đ?œ? + đ??žđ?‘‘

đ?‘‘ đ?‘’(đ?‘Ą) đ?‘‘đ?‘Ą


3.2

Bulanık Mantık Kontrolü

Bulanık mantık (BM), sisteme ait uzman kişinin bilgisini sözel olarak ifadelendirilerek kontrol kuralları için bu bilgiden yararlanmaya izin verir. BM sistemler konusundaki son ilerlemeler ve güç sistemlerindeki uygulamaları giderek artmaktadır. BM teorisinde kesin olarak belirlenmesi zor olan büyüklükler için sıfır ve bir arasında olası değere sahip sayısal bölgeler belirlenmeye çalışılır. Bulanık mantık büyük, küçük gibi belirsiz ya da net olmayan büyüklükler ile, veya yorumlanması gereken veriler ile çalışılmasını sağlar. Bulanık sistemler alanındaki son ilerlemeler ve güç sistemlerindeki başarılı birkaç fiziksel uygulama, giriş verisindeki kabul yaklaşım, belirsizlik ve olası bilgiyle ilgilenildiğinde, mantığın etkin olarak kullanılabileceğini göstermiştir. Eksik bilgi, duyarsızlık ve niteliksel bilginin içerilmesi ile ilgili kapasiteleri açısından bulanık mantık sistemleri güç sistemlerindeki uygulamalar için büyük bir potansiyel oluşturmaktadır. Mevcut BM kontrolcülerinin çoğu, bir sistemin herhangi bir matematiksel modelini kullanmadan tasarlanır. Bulanık mantık kontrolcüleri (BMK), alışılagelmiş kontrolcülü sistemlerin matematiksel modellerinin türetilmesinde karşılaşılan güçlükler ve davranış sınırlamaları için çözüm olmaktadır. Genellikle, kontrol edilen sistemin karmaşıklığına bakılmaksızın hata ve hatanın değişimi bulanık giriş değişkenleri olarak kullanılır. Bir BMK dilsel değişkenler kullanarak uzman deneyimine ve bilgisine dayandırılan bulanık mantık kontrol kuralları ile kendi çıkış kontrol işaretini türetir. Bu bulanık kontrolün alışılagelmiş kontrole göre temel üstünlüğüdür. Temel olarak, BMK bloğu girişler olarak parametredeki hata ve bu hatanın değişimini, bulanık kontrolcüsü ve çıkışları içerir. Kontrolcülerin giriş parametreleri, ölçekleme çarpanları ve kontrol kuralları, bulanık kontrolcü çıkışını etkileyen temel faktörlerdir.

ġekil 3.2 Giriş ve çıkışları ile BMK yapısı

21


Bir BMK tasarlamak için, kontrol edilecek sistemin dinamik davranışını gösterebilecek parametreler kontrolörün girişleri olarak seçilmelidir. BMK'nın temel yapısı dört bileşenden oluşur: Bulanıklaştırma ara yüzü (fuzzification), Kural tabanı (fuzzy rules), Çıkarım motoru (Inference Engine); Durulama (defuzification). Sırayla bulanık kontrol hareketi normalize edilmiş çıkış üyelik fonksiyonlarını ve kazançlarını kullanan durulayıcı yardımıyla uygun kesin değerlere çevrilir. Bulanık kontrolörün giriş ve çıkışı olarak uygun değişkenler seçildikten sonra, dilsel değişkenlerin belirlenmesi gerekir. Bu değişkenler bulanık kontrolör girişlerinin sayısal değerlerini bulanık büyüklüklere dönüştürürler. Bu dilsel değişkenlerin sayısı BMK kullanılarak yapılan kontrolün kalitesini belirler. Dilsel değişkenlerin sayısının seçimi için, kontrolün kalitesi ile hesaplama zamanı arasında bir uzlaşmaya gerek duyulur.

ġekil 3.3 Bulanık kontrol elemanları

Bulanık mantık kontrolünde, bulanıklaştırma süreci giriş üyelik fonksiyonlarıyla sağlanır. Aynı şekilde durulaştırma süreci de çıkış üyelik fonksiyonları ve kural tabanı sayesinde sağlanır. Üyelik fonksiyonları, dilsel tabirlerin sayısal sınırları olarak tanımlanabilir. Üyelik fonksiyonları üçgen ya da Gaus eğrisi şeklinde tanımlanabilirler.

22


ġekil 3.4 Üçgen şeklinde tanımlanmış bir üyelik fonksiyonu sistemi

ġekil 3.5 Gaus eğrisi şeklinde tanımlanmış bir üyelik fonksiyonu sistemi

ġekil 3.6 Örnek bir kural tabanı

23


3.3

Kendinden Ayarlamalı Kontrol

Kontrol teorisinde kendinden ayarlamalı bir sistem, belli durumlarda bir görev fonksiyonunun etkisini azami ya da asgari seviyeye getirebilmek için kendi iç çalışma parametrelerini ayarlayabilen bir sistemdir. Kendinden ayarlamalı kontrolcüler tasarlanırken genel olarak şu dört aşama takip edilir. 1. Beklentilerin belirlenmesi 2. Ölçümlerin yapılması 3. Analizlerin yapılması 4. Gereken işlemlerin yapılması Beklentilerin belirlenmesi aşamasında sistemin belli koşullar altında nasıl çalışması gerektiği belirlenir. Ölçümlerin yapılması aşamasında koşullar ve sistem davranışları hakkında veri toplanır. Analizlerin yapılması aşamasında, ölçümlerle beklentilerin örtüşüp örtüşmediği incelir ve örtüşmüyorsa bu durumun ortadan kaldırılması için gerekli işlemler belirlenir. Gereken işlemlerin yapılması aşamasında, yapılan analizlerin sonucunda belirlenen işlemleri sağlayacak şekilde bir kontrolcü tasarlanır. Kendinden ayarlamalı kontrolcüler, istenen çıkışın elde edilmesi doğrultusunda ikinci bir kontrolcü ile kendi çıkışı ile çarpılacak ikinci bir çıkış elde eder. Bu ikinci kontrolcünün çıkışı [0, 1] aralığında olup ana kontrolcünün çıkış şiddetini ayarlamak için kullanılır. 3.4

Bulanık Kontrol Algoritması ve Bulanık Kontrol Karar Mekanizması

Hava aracının kontrolünde kullanılan bulanık kontrolcüler, Matlab yazılımı dahilindeki editör kullanılarak değil, bir algoritma kodlanarak hazırlanmıştır. Bunun sebebi, Matlab yazılımındaki editör ile oluşturulan bulanık kontrolcülerin, mikroişlemcilerde hafıza problemine yol açmasıdır. Bulanık kontrolcü algoritması, “Matlab Gömülü Fonksiyon Editörü” kullanılarak yazılmıştır. Daha sonra Simulink alt yazılımında kontrolcü bloğu olarak kullanılmıştır. Yazılan fonksiyon giriş olarak hata ve hatadaki değişim değerlerini alırken, çıkış olarak istenen aralıkta tek bir değer vermektedir. Bu bölümde yazılan bu algoritmanın ayrıntılı bir açıklaması yapılacaktır. 24


3.4.1 Üyelik Fonksiyonlarının ve Kuralların Tanımlanması

%Giriş (e) [-25,25] enb = [-25 -25 -7]; enm = [-25 -7 -3]; ens = [-7 -3 0]; ez = [-3 0 3]; eps = [0 3 7]; epm = [3 7 25]; epb = [7 25 25];

% % % % % % %

Negatif büyük hata Negatif orta hata Negatif küçük hata Sıfır hata Pozitif küçük hata Pozitif orta hata Pozitif büyük hata

%Giriş denb = denm = dens = dez = deps = depm = depb =

(de) [-250,250] [-250 -250 -50]; [-250 -50 -15]; [-50 -15 0]; [-15 0 15]; [0 15 50]; [15 50 250]; [50 250 250];

% % % % % % %

Negatif büyük hata değişimi Negatif orta hata değişimi Negatif küçük hata değişimi Sıfır hata değişimi Pozitif küçük hata değişimi Pozitif orta hata değişimi Pozitif büyük hata değişimi

%Çıkış onb = onm = ons = oz = ops = opm = opb =

[-3,3] [-3 -3 -2]; [-3 -2 -1]; [-2 -1 0]; [-1 0 1]; [0 1 2]; [1 2 3]; [2 3 3];

% % % % % % %

Negatif büyük çıkış Negatif orta çıkış Negatif küçük çıkış Sıfır çıkış Pozitif küçük çıkış Pozitif orta çıkış Pozitif büyük çıkış

% Kural Tablosu % denb denm dens RT = [-3 , -3 , -2 , -3 , -2 , -2 , -2 , -2 , -1 , -2 , -1 , -1 , -1 , -1 , 0 , -1 , 0 , 1 , 0 , 1 , 1 , % % % % % % % %

dez deps depm depb -2 , -1 , -1 , 0; %enb -1 , -1 , 0 , 1; %enm -1 , 0 , 1 , 1; %ens 0 , 1 , 1 , 2; %ez 1 , 1 , 2 , 2; %eps 1 , 2 , 2 , 3; %epm 2 , 2 , 3 , 3];%epb

Çıkış üyelik fonksiyonlarının kural tablosundaki karşılıkları onb: -3 onm: -2 ons: -1 oz: 0 ops: 1 opm: 2 opb: 3

Bulanık mantık yorumlaması için gereken tüm parametreler, dizi olarak değişkenlere atanır. Bu değişken atamaları, kodun gerektiğinde rahatlıkla farklı değer aralıklarında çalışmasını sağlayacak şekilde düzenli olarak tasarlanmıştır. Değişken isimlerinin açıklamaları kod üzerinde yapılmıştır. Yeşil renkli yazılar kodun bir parçası değil, açıklama satırlarıdır. Kural matrisinde çıkışın [-3, 3] aralığında sayılar olarak verilmesinin sebebi, metin olarak verildiği 25


durumda da daha sonra tekrar sayısal bir ifadeye dönüştürülmesi gerekliliğidir. Kodun gereksiz uzamaması ve işlemlerin daha rahat ve hızlı yapılabilmesi açısından böyle bir çözüme gidilmiştir. Şekil 3.1, Şekil 3.2 ve Şekil 3.3 „te oluşturulan üyelik fonksiyonları gösterilmiştir.

ġekil 3.7 e Üyelik Fonksiyonları

ġekil 3.8 de Üyelik Fonksiyonları

26


ġekil 3.9 Çıkış Üyelik Fonksiyonları 3.4.2 Üyelik derecelerinin belirlenmesi mfe = [enb;enm;ens;ez;eps;epm;epb]; mfde = [denb;denm;dens;dez;deps;depm;depb]; mde = zeros(1,7); mdde = zeros(1,7);

% % % %

mfe: e üyelik fonksiyonları mfde:de üyelik fonksiyonları mde: e üyelik dereceleri mdde: de üyelik dereceleri

for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)-mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)-mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

Daha az kodla işlem yapabilmek için, dizi olarak değişkenlere atanmış üyelik fonksiyonları, her üyelik fonksiyonu bir satır olacak şekilde birleştirilerek 7x3 boyutunda iki üyelik matrisi 27


tanımlanmıştır. Daha sonra iki farklı döngü içinde, geometrik üçgen benzerliği yöntemi kullanılarak

“e” ve “de” girişleri için her bir üyelik fonksiyonunun üyelik dereceleri

belirlenmiş ve bu üyelik dereceleri 2 farklı diziye yazılmıştır. 3.4.3 Aktif Kuralların ve Kuralların Kesinliğinin Belirlenmesi

AM=zeros(2,2);

%AM:Aktif üyelikler

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Aktif kurallar %ARC: Aktif kural kesinliği

AR(1)= RT(AM(1,1),AM(2,1)); %Yöntem 1 ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yöntem 2 %if (mde(AM(1,1))< mdde(AM(2,1))) % ARP(1)= mde(AM(1,1)); %else % ARP(1)= mdde(AM(2,1)); %end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yöntem 1 ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yöntem 2 %if (mde(AM(1,1))< mdde(AM(2,2))) % ARP(2)= mde(AM(1,1));

28


%else % ARP(2)= mdde(AM(2,2)); %end end

if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yöntem 1 ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yöntem 2 %if (mde(AM(1,2))< mdde(AM(2,1))) % ARP(3)= mde(AM(1,12)); %else % ARP(3)= mdde(AM(2,1)); %end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yöntem 1 ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yöntem 2 %if (mde(AM(1,2))< mdde(AM(2,2))) % ARP(4)= mde(AM(1,2)); %else % ARP(4)= mdde(AM(2,2)); %end end

Aktif kuralların belirlenebilmesi için, aktif üyeliklerin (üyelik derecesi sıfırdan büyük olan üyelik fonksiyonlarının) belirlenmesi gerekmektedir. Aktif üyeliklerin belirlenmesi için, üyelik derecelerinin bulunduğu iki diziden, sıfırdan büyük değere sahip olanlar tespit edilip, ilgili üyelik fonksiyonları 2x2 boyutundaki bir matrise yazıldı. Bu matristeki ilk satır aktif “e” üyelik fonksiyonlarını, ikinci satır aktif “de” üyelik fonksiyonlarını bulundurmaktadır. Daha sonra bu matriste bulunan üyelik fonksiyonları bilgisine göre, aktif olan kurallar ve bu kuralların kesinlik derecesi belirlenir. Aktif olan kuralların karşılığı olan çıkış üyelik fonksiyonları kural matrisinden okunur. Burada, kural kesinliğinin belirlenmesinde iki farklı yöntem vardır ve ikisi de kodların içinde mevcuttur. Alınan çıkış sonuçlarının yakınlığına göre iki yöntemden biri seçilecektir. Birinci yöntemde kuralın kesinliği belirlenirken, kuralı oluşturan iki üyelik fonksiyonunun üyelik derecelerinin çarpımı ele alınır. 29


Ă&#x2013;rnek: Âľe = 0,25 , Âľde =0,75 => Âľr = 0,25 * 0,75 = 0,1875 Ä°kinci yĂśntemde ise kuralÄą oluĹ&#x;turan iki Ăźyelik fonksiyonun Ăźyelik derecelerinin hangisi kßçßkse, o kuralÄąn kesinlik derecesi olarak kabul edilir. Ă&#x2013;rnek: Âľe = 0,25 , Âľde =0,75 => Âľr = 0,25 (Âľe < Âľde) 3.4.4 Ă&#x2021;ÄąkĹĢĹn HesaplanmasÄą AAR = zeros(1,4); %AAR: Aktif kurallarÄąn oluĹ&#x;turduÄ&#x;u alanlar mfo = [onb;onm;ons;oz;ops;opm;opb]; %mfo: Ă&#x2021;ÄąkÄąĹ&#x; Ăźyelik fonksiyonlarÄą for b=1:4 tb=mfo(AR(b)+4 , 3) - mfo(AR(b)+4 , 1);

%tb: Base of mfo Triangle

%YĂśntem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %YĂśntem 2 %AAR(b)= tb*ARP(b)/2; end if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) fOutput=0; else fOutput= (mfo(AR(1)+4,2)* AAR(1) ... + mfo(AR(2)+4,2)* AAR(2) ... + mfo(AR(3)+4,2)* AAR(3) ... + mfo(AR(4)+4,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end

Ă&#x2021;ÄąkÄąĹ&#x;Äąn hesaplanmasÄą, daha Ăśnce belirlenen aktif kurallarÄąn iĹ&#x;aret ettiÄ&#x;i çĹkÄąĹ&#x; Ăźyelik fonksiyonlarÄąnÄąn, kesinlik derecesine gĂśre belirlenmiĹ&#x; alanlarÄąnÄąn aÄ&#x;ÄąrlÄąk merkezinin bulunmasÄą esasÄąna dayanÄąr. Ă&#x153;yelik fonksiyonlarÄąmÄąz ßçgen olduÄ&#x;u için, Ăśncelikle aktif çĹkÄąĹ&#x; fonksiyonlarÄąnÄąn taban geniĹ&#x;likleri bulunur. Ă&#x2021;ÄąkÄąĹ&#x;Äąn hesaplanmasÄą için gerekli alan iki farklÄą yĂśntemle hesaplanabilir. Ä°lk yĂśntemde, ßçgen, kuralÄąn kesinlik derecesine denk gelen noktada yatay bir çizgiyle kesilir ve o çizginin altÄąnda kalan yamuÄ&#x;un alanÄą dikkate alÄąnÄąr. Bu alan Ĺ&#x;u formĂźl ile hesaplanabilir: đ??´=đ?&#x153;&#x201D; â&#x201E;&#x17D;â&#x2C6;&#x2019; Ď&#x2030; = Ă&#x153;çgenin taban geniĹ&#x;liÄ&#x;i h = YĂźkseklik (KuralÄąn kesinlik derecesi)

30

â&#x201E;&#x17D;2 2


ÄĄekil 3.10 0,25 kesinlik derecesi için birinci yĂśntem ile hesaplanmÄąĹ&#x; alan

Ä°kinci yĂśntemde ise, Ăźyelik fonksiyonu ßçgeni ile eĹ&#x; tabanlÄą, yĂźksekliÄ&#x;i kuralÄąn kesinlik derecesi deÄ&#x;erinde olan bir ßçgenin alanÄą dikkate alÄąnÄąr.

ÄĄekil 3.11 0,25 ve 0,75 kesinlik dereceleri için ikinci yĂśntem ile hesaplanmÄąĹ&#x; alanlar Bu alan hesaplama yĂśntemlerinden biri seçilip alan hesaplandÄąktan sonra, bu alanlarÄąn aÄ&#x;ÄąrlÄąk merkezi hesaplanÄąr. Bu aÄ&#x;ÄąrlÄąk merkezinin x eksenindeki deÄ&#x;eri bize bulanÄąk sistemin çĹkÄąĹ&#x;ÄąnÄą verir. AÄ&#x;ÄąrlÄąk merkezinin x eksenindeki deÄ&#x;eri aĹ&#x;aÄ&#x;Äądaki formĂźlle hesaplanÄąr: đ??ş=

đ?&#x2018;&#x2013;

đ?&#x153;&#x2021;đ?&#x2018;&#x2013; đ??´đ?&#x2018;&#x2013; đ?&#x2018;&#x2013; đ??´đ?&#x2018;&#x2013;

A: Ă&#x153;yelik fonksiyonu alanÄą Âľ: Aktif kural kesinliÄ&#x;i 3.4.5 Algoritma Ă&#x2021;ÄąkĹĢĹnÄąn Ä ncelenmesi ve Ă&#x2021;ÄąkĹĢlarÄąn KarĢĹlaĢtÄąrÄąlmasÄą

YazÄąlan algoritmanÄąn çĹkÄąĹ&#x;ÄąnÄąn ne derece iyi olduÄ&#x;unu anlayabilmek için Matlab yazÄąlÄąmÄąnÄąn â&#x20AC;&#x153;BulanÄąk kontrolcĂź editĂśrĂźâ&#x20AC;? referans olarak alÄąnmÄąĹ&#x;tÄąr. Bu bĂślĂźmde, Ăśrnek bir giriĹ&#x; altÄąnda Matlab bulanÄąk kontrolcĂź editĂśrĂź ile oluĹ&#x;turulan bir kontrolcĂźnĂźn çĹkÄąĹ&#x;Äą ile yazÄąlan algoritmanÄąn çĹkÄąĹ&#x;larÄą karĹ&#x;ÄąlaĹ&#x;tÄąrÄąlacaktÄąr. AyrÄąca algoritmanÄąn daha Ăśnce bahsedilen farklÄą hesaplama yĂśntemlerinin arasÄąnda bir seçim yapabilmek için, her yĂśntem ile alÄąnan çĹkÄąĹ&#x;lar ayrÄą ayrÄą karĹ&#x;ÄąlaĹ&#x;tÄąrÄąlacaktÄąr. KontrolcĂźlerde giriĹ&#x; olarak, hata için [-25 25] aralÄąÄ&#x;Äąnda bir sinĂźs dalgasÄą, hatanÄąn deÄ&#x;iĹ&#x;imi için [-250 250] aralÄąÄ&#x;Äąnda bir sinĂźs dalgasÄą kullanÄąlmÄąĹ&#x;tÄąr.

31


Girişler: Sinüs dalgası [-25 25] (e), [-250 250] (de) Kural kesinliğinin belirlenmesi: 1. Yöntem Çıkış üyelik fonksiyonu alan hesaplaması: 1. Yöntem

ġekil 3.12 Matlab bulanık konrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması

Girişler: Sinüs dalgası [-25 25] (e), [-250 250] (de) Kural kesinliğinin belirlenmesi: 1. Yöntem Çıkış üyelik fonksiyonu alan hesaplaması: 2. Yöntem

ġekil 3.13 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması

32


Girişler: Sinüs dalgası [-25 25] (e), [-250 250] (de) Kural kesinliğinin belirlenmesi: 2. Yöntem Çıkış üyelik fonksiyonu alan hesaplaması: 1. Yöntem

ġekil 3.14 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması Girişler: Sinüs dalgası [-25 25] (e), [-250 250] (de) Kural kesinliğinin belirlenmesi: 2. Yöntem Çıkış üyelik fonksiyonu alan hesaplaması: 2. Yöntem

ġekil 3.15 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması

33


Şekil 3.6, Şekil 3.7, Şekil 3.8 ve Şekil 3.9 „da görüldüğü üzere Matlab bulanık kontrolcü editörünün çıkışına en yakın çıkış, kural kesinliğinin belirlenmesi 2. yöntem ve çıkış hesaplaması 1. yöntem ile yapıldığında elde edilmiştir. Ayrıca yapılan testler sonucunda, Matlab bulanık kontrolcü editöründe [-3,3] aralığında çıkışı olan bir bulanık kontrolcü tanımlandığında, sistemin çıkışının yaklaşık [-2.6849, 2.6849] aralığında olduğu ampirik olarak tespit edildi. Yazılan algoritmanın Matlab bulanık kontrolcü editörünün çıkışına daha yakın bir çıkış oluşturabilmesi için, algoritmanın çıkış aralığı [-2.6849, 2.6849] olarak değiştirildi. Bu durumdaki çıkışların karşılaştırılması Şekil 3.10 „da gösterilmiştir. Çıkış aralığı: [-2.6849, 2.6849] Girişler: Sinüs dalgası [-25 25] (e), [-250 250] (de) Kural kesinliğinin belirlenmesi: 2. Yöntem Çıkış üyelik fonksiyonu alan hesaplaması: 1. Yöntem

ġekil 3.16 Matlab bulanık kontrolcü çıkışı ile yazılan algoritma çıkışının karşılaştırılması

Şekil 3.10 „da görüldüğü üzere, yazılan algoritma Matlab bulanık kontrolcü editörü ile hazırlanan bulanık kontrolcüye oldukça yakın bir çıkış vermektedir. Dolayısıyla yazılan algoritmanın iyi bir kontrolcü olduğu söylenebilir. Hava aracının bulanık kontrolü yapılırken bu kontrolcünün kullanılmasında bir sakınca görülmemiştir.

34


4. 4.1

HAVA ARACININ KONTROLÜ Kontrol Sistemi

Sistemde x ve y eksenlerindeki kontrol iki aşamalı yapılmıştır. Bunun sebebi, sistemin istenilen konuma gelmesinin yanı sıra, istenilen noktaya giderken oluşan yunuslama ve yalpalama açılarının da belli bir seviyenin altında tutulmak istenmesidir. z eksenindeki hareket ve sapma açısının kontrolü ise tek aşamalı yapılmıştır. Bulanık kontrollü sistemde kullanılan üyelik fonksiyonlarının genel yapısı Şekil 4.1, Şekil 4.2 ve Şekil 4.3‟te gösterilmiştir.

ġekil 4.1 Hata girişi için hazırlanmış üyelik fonksiyonları

ġekil 4.2 Hatadaki değişim girişi için hazırlanmış üyelik fonksiyonları

35


ġekil 4.3 Bulanık kontrolcü çıkışı için hazırlanmış üyelik fonksiyonları

Üyelik fonksiyonlarını isimlendirmede kullanılan kısaltmaların açıklamaları Çizelge 4.1 „de verilmiştir.

Çizelge 4.1 Üyelik fonksiyonlarını isimlendirmede kullanılan kısaltmaların açıklamaları Ġsim

Açıklaması

Ġsim

Açıklaması

Ġsim

Açıklaması

enb

Negatif büyük hata

denb

Negatif büyük hata değişimi

unb

Negatif büyük çıkış

enm

Negatif orta hata

denm

Negatif orta hata değişimi

unm

Negatif orta çıkış

ens

Negatif küçük hata

dens

Negatif küçük hata değişimi

uns

Negatif küçük çıkış

ez

Sıfır hata

dez

Sıfır hata değişimi

uz

Sıfır çıkış

eps

Pozitif küçük hata

deps

Pozitif küçük hata değişimi

ups

Pozitif küçük çıkış

epm

Pozitif orta hata

depm

Pozitif orta hata değişimi

upm

Pozitif orta çıkış

epb

Pozitif büyük hata

depb

Pozitif büyük hata değişimi

upb

Pozitif büyük çıkış

4.2

Birincil Kontrolcüler

PID kontrollü sistemde birincil PID kontrolcülerin P katsayıları 100, D katsayıları ise 50 olarak belirlenmiştir. Sistem konum kontrol sistemi olduğu için modelde integratör kullanılmaktadır. Bu sebeple daha fazla kutup oluşturmamak için z birincil PID kontrolcüsü hariç diğer kontrolcülerde I katsayısı sıfır olarak belirlenmiştir. z birincil PID kontrolcüsünde ise I katsayısı 50 olarak belirlenmiştir. Bunun sebebi, yapılan simulasyonlarda z çıkışlarında ciddi bir kararlı hal hatası gözlemlenmiş olmasıdır.

36


Bulanık kontrollü sistemde birincil bulanık kontrolcü olarak daha önce bahsedilen bulanık kontrol algoritması kullanılmıştır. Birincil kontrolcülerde kullanılan kodların tamamı Ek 1 ‟de mevcuttur. Birincil bulanık kontrolcülerde kullanılan üyelik fonksiyonlarının tepe noktaları ve kural tablosu Çizelge 4.2 ve Çizelge 4.3 „de verilmiştir.

Çizelge 4.2 Birincil bulanık kontrolcülerde kullanılan üyelik fonksiyonlarının tepe noktaları x Kontrolcüsü

y Kontrolcüsü

ψ Kontrolcüsü

z Kontrolcüsü

enb

-2

-2

-8

-20

enm

-1.4

-1.4

-5.32

-8

ens

-0.7

-0.7

-2.66

-3

0

0

0

0

eps

0.7

0.7

2.66

3

epm

1.4

1.4

5.32

8

epb

2

2

8

20

denb

-4

-4

-10

-1

denm

-2

-2

-3

-0.25

dens

-1

-1

-1

-0.1

dez

0

0

0

0

deps

1

1

1

0.1

depm

2

2

3

0.25

depb

4

4

10

1

unb

-5

-5

-5

-5

ez

unm

-1

-1

-3

-3

-0.5

-0.5

-1

-1

0

0

0

0

0.5

0.5

1

1

upm

1

1

3

3

upb

5

5

5

5

uns uz ups

Çizelge 4.3 Birincil bulanık kontrolcülerde kullanılan kural tablosu e\Δe

denb

denm

dens

dez

deps

depm

depb

enb

unb

unb

unm

unm

uns

uns

uz

enm

unb

unm

unm

uns

uns

uz

ups

ens

unm

unm

uns

uns

uz

ups

ups

ez

unm

uns

uns

uz

ups

ups

upm

eps

uns

uns

uz

ups

ups

upm

upm

epm

uns

uz

ups

ups

upm

upm

upb

epb

uz

ups

ups

upm

upm

upb

upb

37


4.3

Ġkincil Kontrolcüler

PID kontrollü sistemde ikincil PID kontrolcülerin P katsayıları 0.2, D katsayıları ise 0.4 olarak belirlenmiştir. Sistem konum kontrol sistemi olduğu için modelde integratör kullanılmaktadır. Bu sebeple daha fazla kutup oluşturmamak için ikincil PID kontrolcülerde I katsayısı sıfır olarak belirlenmiştir. Bulanık kontrollü sistemde ikincil bulanık kontrolcü olarak daha önce bahsedilen bulanık kontrol algoritması kullanılmıştır. İkincil bulanık kontrolcülerde kullanılan kodların tamamı Ek 2 ‟de mevcuttur. İkincil bulanık kontrolcülerde kullanılan üyelik fonksiyonlarının tepe noktaları ve kural tablosu Çizelge 4.4 ve Çizelge 4.5 „te verilmiştir.

Çizelge 4.4 İkincil bulanık kontrolcülerde kullanılan üyelik fonksiyonlarının tepe noktaları x Ġkincil Kontrolcüsü

y Ġkincil Kontrolcüsü

enb

-10

-10

enm

-6.66

-6.66

ens

-3.33

-3.33

0

0

eps

3.33

3.33

epm

6.66

6.66

epb

10

10

denb

-2.8

-2.8

denm

-1.8

-1.8

dens

-0.9

-0.9

0

0

deps

0.9

0.9

depm

1.8

1.8

depb

2.8

2.8

unb

-2

-2

unm

-1.4

-1.4

uns

-0.7

-0.7

0

0

ups

0.7

0.7

upm

1.4

1.4

upb

2

2

ez

dez

uz

38


Çizelge 4.5 İkincil bulanık kontrolcülerde kullanılan kural tablosu e\Δe

denb

denm

dens

dez

deps

depm

depb

enb

unb

unb

unm

unm

uns

uns

uz

enm

unb

unm

unm

uns

uns

uz

ups

ens

unm

unm

uns

uns

uz

ups

ups

ez

unm

uns

uns

uz

ups

ups

upm

eps

uns

uns

uz

ups

ups

upm

upm

epm

uns

uz

ups

ups

upm

upm

upb

epb

uz

ups

ups

upm

upm

upb

upb

4.4

Kendinden Ayarlama Kontrolcüleri

Bulanık kontrollü sistemde PID kontrollü sistemden farklı olarak kendinden ayarlama kontrolcüleri kullanılmıştır. Kendinden ayarlama kontrolcüleri olarak daha önce bahsedilen bulanık kontrol algoritması kullanılmıştır. Kendinden ayarlama kontrolcülerinde kullanılan kodların tamamı Ek 3 ‟te mevcuttur. Kendinden ayarlama kontrolcülerinde kullanılan üyelik fonksiyonlarının tepe noktaları ve kural tablosu Çizelge 4.6 ve Çizelge 4.7 „te verilmiştir.

Çizelge 4.6 Kendinden ayarlama kontrolcülerinde kullanılan üyelik fonksiyonlarının tepe noktaları x K.A. Kontrolcüsü

y K.A. Kontrolcüsü

z K.A Kontrolcüsü

ψ K.A. kontrolcüsü

enb

-2

-2

-8

-20

enm

-1.4

-1.4

-5.32

-8

ens

-0.7

-0.7

-2.66

-3

0

0

0

0

eps

0.7

0.7

2.66

3

epm

1.4

1.4

5.32

8

epb

2

2

8

20

denb

-4

-4

-10

-1

denm

-2

-2

-3

-0.25

dens

-1

-1

-1

-0.1

dez

0

0

0

0

deps

1

1

1

0.1

depm

2

2

3

0.25

depb

4

4

10

1

ez

39


x K.A. Kontrolcüsü

y K.A. Kontrolcüsü

z K.A Kontrolcüsü

ψ K.A. kontrolcüsü

0

0

0

0

0.15

0.15

0.15

0.15

uz uvs us

0.3

0.3

0.3

0.3

usb

0.45

0.45

0.45

0.45

umb

0.6

0.6

0.6

0.6

0.75

0.75

0.75

0.75

1

1

1

1

ub uvb

Çizelge 4.7 Kendinden ayarlama kontrolcülerinde kullanılan kural tablosu e\Δe

denb

denm

dens

dez

deps

depm

depb

enb

uvb

uvb

uvb

ub

usb

us

uz

enm

uvb

uvb

ub

ub

umb

us

uvs

ens

uvb

umb

ub

uvb

uvs

us

uvs

ez

us

usb

umb

uz

umb

usb

us

eps

uvs

us

uvs

uvb

ub

umb

uvb

epm

uvs

us

umb

ub

ub

uvb

uvb

epb

uz

us

usb

ub

uvb

uvb

uvb

40


5.

SĠMULASYONLAR

Bu bölümde, tasarlanan bulanık kontrolcünün farklı durumlarda nasıl tepki verdiği incelenecektir. Farklı durumların kolaylıkla karşılaştırılabilmesi için bazı çıkış grafikleri üst üste çizdirilmiştir. Simulasyonlarda olumsuz etkileri simule etmek amacıyla gürültü elemanları kullanılmıştır. Analog sensörler, çevredeki manyetik alanın etkisiyle gürültülü ölçüm sonuçları gönderirler. Bu gürültünün etkisini oluşturabilmek için simulasyonda 50 Hz frekansında, 3o genliğinde gürültü yollayan bir gürültü elemanı kullanılmıştır. Bu gürültü frekansını simulasyon örnekleme zamanıyla eşleştirmek için “Discrete Butterworth Filter” bloğu kullanılmıştır. Şekil 5.1 „de bu gürültü elemanının 20 saniye boyunca oluşturduğu gürültünün grafiği görülmektedir.

ġekil 5.1 Gürültü elemanının 50 Hz frekans ve 3o genlikle oluşturduğu gürültünün grafiği

41


Senaryo 1 : Giriş değerleri:

Ortam değişkenleri:

xd = 3 m

Gürültü frekansı ve genliği: Yok

yd = 9 m

Kendinden ayarlama kontrolü: Kapalı

zd = 7 m

PD katsayıları: 1, 1 (e,de)

yawd = 20o

Simulasyon süresi: 20 sn

Bu senaryonun amacı, genel olarak PID kontrolcü ile bulanık kontrolcünün verdiği çıkışların karşılaştırılmasıdır. İki kontrolcünün verdiği çıkışların net bir biçimde karşılaştırılabilmesi için, olumsuz etkiler ihmal edildi ve kendinden ayarlama kontrolü devre dışı bırakıldı.

ġekil 5.2 PID ve bulanık kontrolcülü sistemlerin x konum çıkışlarının karşılaştırılması

42


ġekil 5.3 PID ve bulanık kontrolcülü sistemlerin y konum çıkışlarının karşılaştırılması

ġekil 5.4 PID ve bulanık kontrolcülü sistemlerin z konum çıkışlarının karşılaştırılması 43


ġekil 5.5 PID ve bulanık kontrolcülü sistemlerin sapma açısı çıkışlarının karşılaştırılması

Şekil 5.2, Şekil 5.3, Şekil 5.4 ve Şekil 5.5 „te görüldüğü üzere, x, y ve z eksenindeki hareketlerde PID kontrolcülü sistem, bulanık kontrolcülü sistemden daha kısa sürede hedef konuma ulaşmaktadır. Sapma açısı kontrolünde ise, PID kontrolcülü sistem ile bulanık kontrolcülü sistem aynı sürede hedef konuma ulaşmaktadır. Fakat PID kontrolcülü sistem, hedef konuma aşım yaparak oturmaktadır.

Senaryo 2 : Giriş değerleri:

Ortam değişkenleri:

xd = 3 m

Gürültü frekansı ve genliği: 50 Hz, 3o

yd = 9 m

Kendinden ayarlama kontrolü: Açık

zd = 7 m

PD katsayıları: 1, 1 (e,de)

yawd = 20o

Simulasyon süresi: 20 sn 44


Bu senaryonun amacı, analog sensörlerin olumsuz etkilerinin PID ve bulanık kontrollü sistemlerin çıkışı üzerindeki etkilerini karşılaştırmaktır. Bu etkileri inceleyebilmek için, kontrolcülerin sensör geri beslemeleri üzerine daha önce bahsedilen ve bu etkiyi simule edecek bir gürültü elemanı eklenmiştir. PID kontrolcülerin sensör geri beslemeleri üzerine bahsedilen gürültü elemanları eklendiğinde, sistem kararsızlığa gittiği ve simulasyonun belli bir anında değerler çok büyüdüğü için modelin hata verdiği gözlenmiştir. Bu sebeple bu senaryo için bir çıkış grafiği karşılaştırması mümkün olmamıştır. Bulanık kontrolcülü sistemin bu olumsuz etki altındaki çıkışları ise daha sonraki senaryolarda incelenebilir.

Senaryo 3 : Giriş değerleri:

Ortam değişkenleri:

xd = 3 m

Gürültü frekansı ve genliği: 50 Hz, 3o

yd = 9 m

Kendinden ayarlama kontrolü: Açık

zd = 7 m

PD katsayıları: 1 , 1 (e,de)

yawd = 20o

Simulasyon süresi: 20 sn

Bu senaryonun amacı, analog sensörlerin olumsuz etkilerinin bulanık kontrollü sistemin çıkışı üzerindeki etkilerini incelemektir. Bu etkileri inceleyebilmek için, kontrolcülerin sensör geri beslemeleri üzerine daha önce bahsedilen ve bu etkiyi simule edecek bir gürültü elemanı eklenmiştir. Şekil 5.6, 5.7 ve 5.8 „de bu gürültü elemanının devrede ve devre dışı olduğu durumlardaki çıkışları karşılaştırılmıştır. x, y ve sapma açısı konum sensörleri analog sensörler olduklarından, sadece bu eksenlerdeki konum çıkışları ele alınmıştır.

45


ġekil 5.6 Gürültü etkisi altında ve gürültüsüz durumlar için x konumu çıkışları

ġekil 5.7 Gürültü etkisi altında ve gürültüsüz durumlar için y konumu çıkışları

46


ġekil 5.8 Gürültü etkisi altında ve gürültüsüz durumlar için sapma çıkışları

Şekil 5.6, 5.7 ve 5.8 „de görüldüğü üzere, sistem analog sensörlerin olumsuz etkisi altındayken, x ve y eksenlerinde hedef konumun yaklaşık 0.03 m altında stabil bir duruma geçmektedir. Gözlenen bir salınım hali yoktur. Sapma açısı hareketinde ise, hedef konumun etrafında 0.3o genliğinde salınımlar yapmaktadır. Kontrolcüler bu olumsuz etkiyi kompanse etmektedir. Bu olumsuz etki sistemi kararsızlığa sürüklememiştir.

Senaryo 4 : Giriş değerleri:

Ortam değişkenleri:

xd = 3 m

Gürültü frekansı ve genliği: Yok

yd = 9 m

Kendinden ayarlama kontrolü: Açık - Kapalı PD katsayıları: 1 , 1 (e,de)

zd = 7 m yawd = 20

o

Simulasyon süresi: 20 sn

Bu senaryonun amacı, olumsuz etkilerin ihmal edildiği durumda bulanık kontrolcülü sistemde kendinden ayarlama kontrolünün etkisini görmektir. Bunu sağlamak için, kendinden ayarlama kontrolü devredeyken ve devre dışıyken sistemin çıkışları incelendi. 47


ġekil 5.9 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için x konumu çıkışı

ġekil 5.10 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için y konumu çıkışı 48


ġekil 5.11 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için z konumu çıkışı

ġekil 5.12 Kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için sapma çıkışı 49


Şekil 5.9, Şekil 5.10, Şekil 5.11 ve Şekil 5.12 „de görüldüğü üzere, kendinden ayarlamalı kontrol devredeyken, devre dışı olduğu duruma göre daha yumuşak bir hareketle hedef konuma yerleşmektedir. Senaryo 5 : Giriş değerleri:

Ortam değişkenleri:

xd = 3 m

Gürültü frekansı ve genliği: 50 Hz, 3o

yd = 9 m

Kendinden ayarlama kontrolü: Açık - Kapalı PD katsayıları: 1 , 1 (e,de)

zd = 7 m yawd = 20

o

Simulasyon süresi: 20 sn

Bu senaryonun amacı, analog sensörlerin gürültüsü altında bulanık kontrolcülü sistemde kendinden ayarlama kontrolünün etkisini görmektir. Bunu sağlamak için, kendinden ayarlama kontrolü devredeyken ve devre dışıyken sistemin çıkışları incelendi. Şekil 5.14, Şekil 5.15 ve Şekil 5.16 „da sistem gürültü altındayken kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için konum çıkışlarının zamana bağlı değişimi gösterilmiştir.

ġekil 5.13 Gürültü altında kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için x konumu çıkışı 50


ġekil 5.14 Gürültü altında kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için y konumu çıkışı

ġekil 5.15 Gürültü altında kendinden ayarlama kontrolünün devrede ve devre dışı olduğu durumlar için sapma açısı çıkışı 51


Senaryo 6 : Giriş değerleri:

Ortam değişkenleri:

xd = 0, 3 m

Gürültü frekansı ve genliği: 50 Hz, 3o

yd = 0, 9 m

Kendinden ayarlama kontrolü: Açık PD katsayıları: 1 , 1 (e,de)

zd = 2, 7 m o

yawd = 0, 20

Simulasyon süresi: 50 sn

Basamak süresi: 25 sn Bu senaryonun amacı, hava aracının durgun ilk halden başlayan hareketini incelemektir. Bunu sağlamak için sistemde girişler basamak fonksiyonu olarak seçilmiştir. Bunun amacı, sistemin daha gerçekçi bir simulasyonunun yapılabilmesi için, z = 2 m yüksekliğinin orijin noktası olarak kabul edilip, sistem bu yüksekliğe çıkana kadar giriş değerlerinin göz ardı edilmek istenmesidir.

ġekil 5.16 Hava aracının durgun ilk halden başlayan hareketinde x konumunun zamana bağlı değişimi

52


ġekil 5.17 Hava aracının durgun ilk halden başlayan hareketinde y konumunun zamana bağlı değişimi

ġekil 5.18 Hava aracının durgun ilk halden başlayan hareketinde y konumunun zamana bağlı değişimi 53


ġekil 5.19 Hava aracının durgun ilk halden başlayan hareketinde y konumunun zamana bağlı değişimi

Şekil 5.19 „da görüldüğü üzere, ilk 25 saniyelik sürede hava aracı z = 2 m yüksekliğine yerleşmektedir. Sonraki 25 saniyede ise istenilen yükseklik konumuna ulaşmaktadır. Şekil 5.17, Şekil 5.18 ve Şekil 5.17 „de görüldüğü üzere, hava aracı ilk 25 saniye boyunca istenilen x, y ve sapma açısı konumlarına yönelmemekte, aracın z = 2m yüksekliğine ulaşmasını beklemektedir. Sonraki 25 saniyede ise istenilen x, y ve sapma açısı konumlarına ulaşmaktadır.

54


6.

SONUÇLAR

Bu çalışmada referans olarak ele alınan bir insansız hava aracı (Quadrotor) için bulanık kontrolcü tasarımı yapılmıştır. Tasarlanan bulanık kontrol sisteminde, kontrolcü olarak kod tabanlı olarak hazırlanmış bir bulanık kontrol algoritması kullanılmıştır. Matlab yazılımı içerisinde bulunan “Bulanık Kontrolcü Editörü (FIS)” tarafından hazırlanan bulanık kontrolcü referans olarak ele alındığında, hazırlanan bulanık kontrol algoritmasının oldukça iyi çalıştığı gözlemlenmiştir. Hazırlanan bulanık kontrolcü ile sistemin bulanık kontrol sistemi hazırlanmış ve çeşitli durumlar için verdiği çıkışları incelemek amacıyla simulasyonlar yapılmıştır. Bu simulasyonlar sonucunda bulanık kontrollü sistemin genel olarak PID kontrollü sistemden daha iyi bir sonuç verdiği gözlemlenmiştir. Özellikle PID kontrollü sisteme giriş olarak zaman değişkenli bir fonksiyon verildiğinde ve geri beslemesine gürültü eklendiğinde sistemin kararsızlığa gidip simulasyonun hata vermesi bu farkı daha da belirginleştirmiştir. Kendinden ayarlama kontrolü devrede iken, devre dışı olduğu duruma göre sistemin daha yumuşak bir hareket grafiği çizdiği gözlenmiştir. Bu durum kendinden ayarlama kontrolünün amacına ulaştığını göstermektedir. Sistemde analog sensörlerden kaynaklanan gürültüyü simule etmek amacıyla geri besleme üzerine etki eden bir gürültü elemanı kullanılmıştır. Bu gürültü etkisi altında bulanık kontrollü sistemin gürültüden kaynaklanan olumsuz etkiyi kompanse ettiği ve kararsızlığa gitmediği gözlenmiştir. Bu durum, simulasyon ortamında tasarlanan bu bulanık kontrolcü sisteminin kısmen gerçeklenebilir olduğunu göstermektedir. Hava aracının zeminde durgun ilk halden hareketinin simulasyonu yapılmıştır. Bu simulasyon yapılırken, kalkış anındaki diğer olumsuz etkiler ihmal edilmiştir.

Gelecekte yapılabilecek çalışmalara değinirsek, gaus eğrisi şeklinde üyelik fonksiyonları oluşturabilecek bir bulanık kontrol algoritması hazırlanabilir. Ayrıca sistemin rüzgar etkisi altında stabilizasyonunu sağlayacak çalışmalar yapılabilir.

55


EKLER

Ek – 1 Birincil Bulanık Kontrolcülerde Kullanılan Kodlar

x Kontrolcüsü :

function u_x2 = Fzy_x2(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-2 -2 -1.4]; enm = [-2 -1.4 -0.7]; ens = [-1.4 -0.7 0]; ez = [-0.7 0 0.7]; eps = [0 0.7 1.4]; epm = [0.7 1.4 2]; epb = [1.4 2 2];

% e negative big % e negative medium % e negative small % e zero % e positive small % e positive medium % e positive big

%Giris denb = denm = dens = dez = deps = depm = depb =

(de) [-4 -4 -2]; % de negative big [-4 -2 -1]; % de negative medium [-2 -1 0]; % de negative small [-1 0 1]; % de zero [0 1 2]; % de positive small [1 2 4]; % de positive medium [2 4 4]; % de positive big

%Cikis onb = onm = ons = oz = ops = opm = opb =

[-5 -5 -1]; [-5 -1 -0.5]; [-1 -0.5 0]; [-0.5 0 0.5]; [0 0.5 1]; [0.5 1 5]; [1 5 5];

% output negative big % output negative medium % output negative small % output zero % output positive small % output positive medium % output positive big

% Kural Tablosu %

denb denm dens dez

RT = [-3 , -3 , -2 , -2 , -1 , -1 , 0 , 1

-3 , -2 , -2 , -1 , -1 , 0 , 1 , 1 ,

-2 , -2 , -1 , -1 , 0 , 1 , 1 , 2 , 2

deps depm depb -2 , -1 , -1 , 0 , 1 , 1 , 2 , 2 , 3 ,

-1 , -1 , 0; %enb -1 , 0 , 1; %enm 0 , 1 , 1; %ens , 1 , 2; %ez 2 , 2; %eps , 3; %epm 3];%epb

%onb: -3 %onm: -2

56


%ons: -1 %oz: 0 %ops: 1 %opm: 2 %opb: 3

if if if if if if

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end for l=1:7 if mdde(l)>0

57


if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2));

58


%Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+4 , 3) - mfo(AR(b)+4 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) u_x2=0; else u_x2= (mfo(AR(1)+4,2)* AAR(1) ... + mfo(AR(2)+4,2)* AAR(2) ... + mfo(AR(3)+4,2)* AAR(3) ... + mfo(AR(4)+4,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

y Kontrolc端s端 : function u_y2 = Fzy_y2(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-2 -2 -1.4]; enm = [-2 -1.4 -0.7]; ens = [-1.4 -0.7 0]; ez = [-0.7 0 0.7]; eps = [0 0.7 1.4]; epm = [0.7 1.4 2]; epb = [1.4 2 2];

%Giris denb = denm = dens = dez = deps =

% e negative big % e negative medium % e negative small % e zero % e positive small % e positive medium % e positive big

(de) [-4 -4 -2]; % de negative big [-4 -2 -1]; % de negative medium [-2 -1 0]; % de negative small [-1 0 1]; % de zero [0 1 2]; % de positive small

59


depm = [1 2 4]; depb = [2 4 4]; %Cikis onb = onm = ons = oz = ops = opm = opb =

% de positive medium % de positive big

[-5 -5 -1]; [-5 -1 -0.5]; [-1 -0.5 0]; [-0.5 0 0.5]; [0 0.5 1]; [0.5 1 5]; [1 5 5];

% output negative big % output negative medium % output negative small % output zero % output positive small % output positive medium % output positive big

% Kural Tablosu %

denb denm dens dez

RT = [-3 , -3 , -2 , -2 , -1 , -1 , 0 , 1

-3 , -2 , -2 , -1 , -1 , 0 , 1 , 1 ,

-2 , -2 , -1 , -1 , 0 , 1 , 1 , 2 , 2

deps depm depb -2 , -1 , -1 , 0 , 1 , 1 , 2 , 2 , 3 ,

-1 , -1 , 0; %enb -1 , 0 , 1; %enm 0 , 1 , 1; %ens , 1 , 2; %ez 2 , 2; %eps , 3; %epm 3];%epb

%onb: -3 %onm: -2 %ons: -1 %oz: 0 %ops: 1 %opm: 2 %opb: 3

if if if if if if

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7

60


if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2));

61


%Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+4 , 3) - mfo(AR(b)+4 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) u_y2=0; else u_y2= (mfo(AR(1)+4,2)* AAR(1) ... + mfo(AR(2)+4,2)* AAR(2) ... + mfo(AR(3)+4,2)* AAR(3) ... + mfo(AR(4)+4,2)* AAR(4))...

62


/ (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

z Kontrolc端s端 : function u_z = Fzy_z(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-8 -8 -5.32]; % e negative big enm = [-8 -5.32 -2.66]; % e negative medium ens = [-5.32 -2.66 0]; % e negative small ez = [-2.66 0 2.66]; % e zero eps = [0 2.66 5.32]; % e positive small epm = [2.66 5.32 8]; % e positive medium epb = [5.32 8 8]; % e positive big

%Giris denb = denm = dens = dez = deps = depm = depb =

(de) [-10 -10 -3]; % de negative big [-10 -3 -1]; % de negative medium [-3 -1 0]; % de negative small [-1 0 1]; % de zero [0 1 3]; % de positive small [1 3 10]; % de positive medium [3 10 10]; % de positive big

%Cikis onb = [-5 -5 -3]; onm = [-5 -3 -1]; ons = [-3 -1 0]; oz = [-1 0 1]; ops = [0 1 3]; opm = [1 3 5]; opb = [3 5 5];

% output negative big % output negative medium % output negative small % output zero % output positive small % output positive medium % output positive big

% Kural Tablosu % denb RT = [-3 , -3 , -2 , -2 , -1 ,

denm -3 , -2 , -2 , -1 , -1 ,

dens -2 , -2 , -1 , -1 , 0 ,

dez -2 , -1 , -1 , 0 , 1 ,

deps -1 , -1 , 0 , 1 , 1 ,

depm depb -1 , 0; %enb 0 , 1; %enm 1 , 1; %ens 1 , 2; %ez 2 , 2; %eps

63


-1 , 0 ,

%onb: %onm: %ons: %oz: %ops: %opm: %opb:

if if if if if if

0 , 1 ,

1 , 1 ,

1 , 2 ,

2 , 2 ,

2 , 3 ,

3; %epm 3];%epb

-3 -2 -1 0 1 2 3

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k;

64


end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end

65


if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+4 , 3) - mfo(AR(b)+4 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) u_z=0; else u_z= (mfo(AR(1)+4,2)* AAR(1) ... + mfo(AR(2)+4,2)* AAR(2) ... + mfo(AR(3)+4,2)* AAR(3) ... + mfo(AR(4)+4,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

Sapma Kontrolc端s端 : function u_yaw = Fzy_Yaw(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-20 -20 -8]; enm = [-20 -8 -3]; ens = [-8 -3 0]; ez = [-3 0 3]; eps = [0 3 8]; epm = [3 8 20]; epb = [8 20 20];

% % % % % % %

e e e e e e e

negative negative negative zero positive positive positive

big medium small small medium big

66


%Giris denb = denm = dens = dez = deps = depm = depb =

(de) [-1 -1 -0.25]; % de negative big [-1 -0.25 -0.1]; % de negative medium [-0.25 -0.1 0]; % de negative small [-0.1 0 0.1]; % de zero [0 0.1 0.25]; % de positive small [0.1 0.25 1]; % de positive medium [0.25 1 1]; % de positive big

%Cikis onb = onm = ons = oz = ops = opm = opb =

[-5 -5 -3]; [-5 -3 -1]; [-3 -1 0]; [-1 0 1]; [0 1 3]; [1 3 5]; [3 5 5];

% % % %

output negative big output negative medium output negative small output zero % output positive small % output positive medium % output positive big

% Kural Tablosu % denb denm dens dez RT = [-3 , -3 , -2 , -3 , -2 , -2 , -2 , -2 , -1 , -2 , -1 , -1 , -1 , -1 , 0 , 1 -1 , 0 , 1 , 1 , 0 , 1 , 1 , 2 , 2

deps -2 , -1 , -1 , 0 , 1 , 1 , 2 , 2 , 3 ,

depm depb -1 , -1 , 0; %enb -1 , 0 , 1; %enm 0 , 1 , 1; %ens , 1 , 2; %ez 2 , 2; %eps , 3; %epm 3];%epb

%onb: -3 %onm: -2 %ons: -1 %oz: 0 %ops: 1 %opm: 2 %opb: 3

if if if if if if

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1));

67


end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0)

68


AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+4 , 3) - mfo(AR(b)+4 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) u_yaw=0; else

69


u_yaw= (mfo(AR(1)+4,2)* AAR(1) ... + mfo(AR(2)+4,2)* AAR(2) ... + mfo(AR(3)+4,2)* AAR(3) ... + mfo(AR(4)+4,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

Ek – 2 Ġkincil Bulanık Kontrolcülerde Kullanılan Kodlar x Kontrolcüsü : function u_x1 = Fzy_x1(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-10 -10 -6.66]; enm = [-10 -6.66 -3.33]; ens = [-6.66 -3.33 0]; ez = [-3.33 0 3.33]; eps = [0 3.33 6.66]; epm = [3.33 6.66 10]; epb = [6.66 10 10];

% e negative big % e negative medium % e negative small % e zero % e positive small % e positive medium % e positive big

%Giris denb = denm = dens = dez = deps = depm = depb =

(de) [-2.8 -2.8 -1.8]; % de negative big [-2.8 -1.8 -0.9]; % de negative medium [-1.8 -0.9 0]; % de negative small [-0.9 0 0.9]; % de zero [0 0.9 1.8]; % de positive small [0.9 1.8 2.8]; % de positive medium [1.8 2.8 2.8]; % de positive big

%Cikis onb = onm = ons = oz = ops = opm = opb =

[-2 -2 -1.4]; [-2 -1.4 -0.7]; [-1.4 -0.7 0]; [-0.7 0 0.7]; [0 0.7 1.4]; [0.7 1.4 2]; [1.4 2 2];

% output negative big % output negative medium % output negative small % output zero % output positive small % output positive medium % output positive big

% Kural Tablosu %

denb

RT = [-3 -3 -2 -2 -1 -1 0

denm , , , , , , ,

-3 -2 -2 -1 -1 0 1

dens , , , , , , ,

-2 -2 -1 -1 0 1 1

dez , , , , , , ,

-2 -1 -1 0 1 1 2

deps , , , , , , ,

-1 -1 0 1 1 2 2

depm , , , , , , ,

-1 0 1 1 2 2 3

70

depb , , , , , , ,

0; %enb 1; %enm 1; %ens 2; %ez 2; %eps 3; %epm 3];%epb


%onb: -3 %onm: -2 %ons: -1 %oz: 0 %ops: 1 %opm: 2 %opb: 3

if if if if if if

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end

71


for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1

72


%ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+4 , 3) - mfo(AR(b)+4 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) u_x1=0; else u_x1= (mfo(AR(1)+4,2)* AAR(1) ... + mfo(AR(2)+4,2)* AAR(2) ... + mfo(AR(3)+4,2)* AAR(3) ... + mfo(AR(4)+4,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); % *(-1) kural tablosunu degistirmeden cikisin isaretini degistirmek icin kullanildi end end

y Kontrolc端s端 : function u_y1 = Fzy_y1(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-10 -10 -6.66]; enm = [-10 -6.66 -3.33]; ens = [-6.66 -3.33 0]; ez = [-3.33 0 3.33]; eps = [0 3.33 6.66]; epm = [3.33 6.66 10]; epb = [6.66 10 10];

% e negative big % e negative medium % e negative small % e zero % e positive small % e positive medium % e positive big

%Giris (de) denb = [-2.8 -2.8 -1.8]; % de negative big

73


denm = dens = dez = deps = depm = depb =

[-2.8 -1.8 -0.9]; % de negative medium [-1.8 -0.9 0]; % de negative small [-0.9 0 0.9]; % de zero [0 0.9 1.8]; % de positive small [0.9 1.8 2.8]; % de positive medium [1.8 2.8 2.8]; % de positive big

%Cikis onb = onm = ons = oz = ops = opm = opb =

[-2 -2 -1.4]; [-2 -1.4 -0.7]; [-1.4 -0.7 0]; [-0.7 0 0.7]; [0 0.7 1.4]; [0.7 1.4 2]; [1.4 2 2];

% output negative big % output negative medium % output negative small % output zero % output positive small % output positive medium % output positive big

% Kural Tablosu %

denb

RT = [-3 -3 -2 -2 -1 -1 0

denm , , , , , , ,

-3 -2 -2 -1 -1 0 1

dens , , , , , , ,

-2 -2 -1 -1 0 1 1

dez , , , , , , ,

-2 -1 -1 0 1 1 2

deps , , , , , , ,

-1 -1 0 1 1 2 2

depm , , , , , , ,

-1 0 1 1 2 2 3

depb , , , , , , ,

0; %enb 1; %enm 1; %ens 2; %ez 2; %eps 3; %epm 3];%epb

%onb: -3 %onm: -2 %ons: -1 %oz: 0 %ops: 1 %opm: 2 %opb: 3

if if if if if if

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end

74


if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2));

75


%Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+4 , 3) - mfo(AR(b)+4 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) u_y1=0; else

76


u_y1= (mfo(AR(1)+4,2)* AAR(1) ... + mfo(AR(2)+4,2)* AAR(2) ... + mfo(AR(3)+4,2)* AAR(3) ... + mfo(AR(4)+4,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4))*(-1); % *(-1) kural tablosunu degistirmeden cikisin isaretini degistirmek icin kullanildi end end

Ek – 3 Kendinden AyarlamaKontrolcülerinde Kullanılan Kodlar

x Kendinden Ayarlama Kontrolcüsü : function g_x = SlfTun_x(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-2 -2 -1.4]; enm = [-2 -1.4 -0.7]; ens = [-1.4 -0.7 0]; ez = [-0.7 0 0.7]; eps = [0 0.7 1.4]; epm = [0.7 1.4 2]; epb = [1.4 2 2];

%Giris denb = denm = dens = dez = deps = depm = depb =

% e negative big % e negative medium % e negative small % e zero % e positive small % e positive medium % e positive big

(de) [-4 -4 -2]; % de negative big [-4 -2 -1]; % de negative medium [-2 -1 0]; % de negative small [-1 0 1]; % de zero [0 1 2]; % de positive small [1 2 4]; % de positive medium [2 4 4]; % de positive big

%Cikis onb = [0 0 0.15]; % output negative big onm = [0 0.15 0.3]; % output negative medium ons = [0.15 0.3 0.45]; % output negative small oz = [0.3 0.45 0.6]; % output zero ops = [0.45 0.6 0.75]; % output positive small opm = [0.6 0.75 0.9]; % output positive medium opb = [0.9 1 1]; % output positive big

% Kural Tablosu % denb denm dens dez deps depm depb RT = [6 , 6 , 6 , 2 , 1 , 1 , 0; %enb 6 , 6 , 4 , 3 , 2 , 2 , 2; %enm 6 , 5 , 5 , 4 , 1 , 4 , 3; %ens 5 , 5 , 6 , 0 , 6 , 5 , 5; %ez 3 , 4 , 1 , 4 , 5 , 5 , 6; %eps

77


2 , 0 ,

%onb: %onm: %ons: %oz: %ops: %opm: %opb:

if if if if if if

2 , 1 ,

2 , 1 ,

3 , 2 ,

4 , 6 ,

6 , 6; %epm 6 , 6];%epb

-3 -2 -1 0 1 2 3

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k;

78


end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end

79


if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+1 , 3) - mfo(AR(b)+1 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) g_x=0; else g_x= (mfo(AR(1)+1,2)* AAR(1) ... + mfo(AR(2)+1,2)* AAR(2) ... + mfo(AR(3)+1,2)* AAR(3) ... + mfo(AR(4)+1,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

y Kendinden Ayarlama Kontrolc端s端 :

function g_y = SlfTun_y(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-2 -2 -1.4]; enm = [-2 -1.4 -0.7]; ens = [-1.4 -0.7 0]; ez = [-0.7 0 0.7]; eps = [0 0.7 1.4]; epm = [0.7 1.4 2]; epb = [1.4 2 2];

% e negative big % e negative medium % e negative small % e zero % e positive small % e positive medium % e positive big

80


%Giris denb = denm = dens = dez = deps = depm = depb =

(de) [-4 -4 -2]; % de negative big [-4 -2 -1]; % de negative medium [-2 -1 0]; % de negative small [-1 0 1]; % de zero [0 1 2]; % de positive small [1 2 4]; % de positive medium [2 4 4]; % de positive big

%Cikis onb = [0 0 0.15]; % output negative big onm = [0 0.15 0.3]; % output negative medium ons = [0.15 0.3 0.45]; % output negative small oz = [0.3 0.45 0.6]; % output zero ops = [0.45 0.6 0.75]; % output positive small opm = [0.6 0.75 0.9]; % output positive medium opb = [0.9 1 1]; % output positive big

% Kural Tablosu % denb denm dens dez deps depm depb RT = [6 , 6 , 6 , 2 , 1 , 1 , 0; %enb 6 , 6 , 4 , 3 , 2 , 2 , 2; %enm 6 , 5 , 5 , 4 , 1 , 4 , 3; %ens 5 , 5 , 6 , 0 , 6 , 5 , 5; %ez 3 , 4 , 1 , 4 , 5 , 5 , 6; %eps 2 , 2 , 2 , 3 , 4 , 6 , 6; %epm 0 , 1 , 1 , 2 , 6 , 6 , 6];%epb

%onb: %onm: %ons: %oz: %ops: %opm: %opb:

if if if if if if

-3 -2 -1 0 1 2 3

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; mfde = [denb;denm;dens;dez;deps;depm;depb]; mde = zeros(1,7); mdde = zeros(1,7); for i = 1:7 if (e == mfe(i,2)) mde(i) = 1;

81

%Membership functions (e) %Membership functions (de) %Membership degrees (e) %Membership degrees (de)


elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

82


if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+1 , 3) - mfo(AR(b)+1 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

83

%tb: Base of mfo Triangle


if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) g_y=0; else g_y= (mfo(AR(1)+1,2)* AAR(1) ... + mfo(AR(2)+1,2)* AAR(2) ... + mfo(AR(3)+1,2)* AAR(3) ... + mfo(AR(4)+1,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

z Kendinden ayarlama Kontrolc端s端 : function g_z = SlfTun_z(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-8 -8 -5.32]; % e negative big enm = [-8 -5.32 -2.66]; % e negative medium ens = [-5.32 -2.66 0]; % e negative small ez = [-2.66 0 2.66]; % e zero eps = [0 2.66 5.32]; % e positive small epm = [2.66 5.32 8]; % e positive medium epb = [5.32 8 8]; % e positive big

%Giris denb = denm = dens = dez = deps = depm = depb =

(de) [-10 -10 -3]; % de negative big [-10 -3 -1]; % de negative medium [-3 -1 0]; % de negative small [-1 0 1]; % de zero [0 1 3]; % de positive small [1 3 10]; % de positive medium [3 10 10]; % de positive big

%Cikis onb = [0 0 0.15]; % output negative big onm = [0 0.15 0.3]; % output negative medium ons = [0.15 0.3 0.45]; % output negative small oz = [0.3 0.45 0.6]; % output zero ops = [0.45 0.6 0.75]; % output positive small opm = [0.6 0.75 0.9]; % output positive medium opb = [0.9 1 1]; % output positive big

% Kural Tablosu % denb denm dens dez deps depm depb RT = [6 , 6 , 6 , 2 , 1 , 1 , 0; %enb 6 , 6 , 4 , 3 , 2 , 2 , 2; %enm 6 , 5 , 5 , 4 , 1 , 4 , 3; %ens 5 , 5 , 6 , 0 , 6 , 5 , 5; %ez 3 , 4 , 1 , 4 , 5 , 5 , 6; %eps 2 , 2 , 2 , 3 , 4 , 6 , 6; %epm 0 , 1 , 1 , 2 , 6 , 6 , 6];%epb

84


%onb: %onm: %ons: %oz: %ops: %opm: %opb:

if if if if if if

-3 -2 -1 0 1 2 3

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7 if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end

85


for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2))) ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1

86


%ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+1 , 3) - mfo(AR(b)+1 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) g_z=0; else g_z= (mfo(AR(1)+1,2)* AAR(1) ... + mfo(AR(2)+1,2)* AAR(2) ... + mfo(AR(3)+1,2)* AAR(3) ... + mfo(AR(4)+1,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

Sapma Kendinden Ayarlama Kontrol端: function g_yaw = SlfTun_x(e, de) %% UYELIK FONKSIYONLARININ VE KURALLARIN TANIMLANMASI %Giris (e) enb = [-20 -20 -8]; enm = [-20 -8 -3]; ens = [-8 -3 0]; ez = [-3 0 3]; eps = [0 3 8]; epm = [3 8 20]; epb = [8 20 20];

%Giris denb = denm = dens = dez =

% % % % % % %

e e e e e e e

negative negative negative zero positive positive positive

big medium small small medium big

(de) [-1 -1 -0.25]; % de negative big [-1 -0.25 -0.1]; % de negative medium [-0.25 -0.1 0]; % de negative small [-0.1 0 0.1]; % de zero

87


deps = [0 0.1 0.25]; depm = [0.1 0.25 1]; depb = [0.25 1 1]; %Cikis onb = onm = ons = oz = ops = opm = opb =

[-5 -5 -3]; [-5 -3 -1]; [-3 -1 0]; [-1 0 1]; [0 1 3]; [1 3 5]; [3 5 5];

% de positive small % de positive medium % de positive big

% output negative big % output negative medium % output negative small % output zero % output positive small % output positive medium % output positive big

% Kural Tablosu % denb denm dens dez deps depm depb RT = [6 , 6 , 6 , 2 , 1 , 1 , 0; %enb 6 , 6 , 4 , 3 , 2 , 2 , 2; %enm 6 , 5 , 5 , 4 , 1 , 4 , 3; %ens 5 , 5 , 6 , 0 , 6 , 5 , 5; %ez 3 , 4 , 1 , 4 , 5 , 5 , 6; %eps 2 , 2 , 2 , 3 , 4 , 6 , 6; %epm 0 , 1 , 1 , 2 , 6 , 6 , 6];%epb

%onb: %onm: %ons: %oz: %ops: %opm: %opb:

if if if if if if

-3 -2 -1 0 1 2 3

(e>epb(3)) e=epb(3); end (e<enb(1)) e=enb(1); end (de>depb(3)) de=depb(3); end (de<denb(1)) de=denb(1); end (de==Inf) de=denb(3); end (de== -Inf) de=denb(1); end

%% UYELIK DERECELERININ BELIRLENMESI mfe = [enb;enm;ens;ez;eps;epm;epb]; %Membership functions (e) mfde = [denb;denm;dens;dez;deps;depm;depb]; %Membership functions (de) mde = zeros(1,7); %Membership degrees (e) mdde = zeros(1,7); %Membership degrees (de) for i = 1:7 if (e == mfe(i,2)) mde(i) = 1; elseif (e == mfe(i,1)||e == mfe(i,1)) mde(i) = 0; elseif (e > mfe(i,2)) mde(i) = (mfe(i,3)-e)/(mfe(i,3)-mfe(i,2)); else mde(i) = (e-mfe(i,1))/(mfe(i,2)-mfe(i,1)); end if (mde(i)>1 || mde(i)<0) mde(i)=0; end end for j = 1:7

88


if (de == mfde(j,2)) mdde(j) = 1; elseif (de == mfde(j,1)||de == mfde(j,1)) mdde(j) = 0; elseif (de > mfde(j,2)) mdde(j) = (mfde(j,3)-de)/(mfde(j,3)mfde(j,2)); else mdde(j) = (de-mfde(j,1))/(mfde(j,2)mfde(j,1)); end if (mdde(j)>1 || mdde(j)<0) mdde(j)=0; end end

%%

AKTIF KURALLARIN VE KURALLARIN KESINLIKLERININ BELIRLENMESI

AM=zeros(2,2);

%AR:Active Memberships

for k=1:7 if mde(k)>0 if AM(1,1)==0 AM(1,1)=k; else AM(1,2)=k; end end end for l=1:7 if mdde(l)>0 if AM(2,1)==0 AM(2,1)=l; else AM(2,2)=l; end end end AR = zeros(1,4); ARP = zeros(1,4);

%AR: Active Rules %ARC: Active Rule Precision

AR(1)= RT(AM(1,1),AM(2,1)); %Yontem 1 %ARP(1)= mde(AM(1,1)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,1))) ARP(1)= mde(AM(1,1)); else ARP(1)= mdde(AM(2,1)); end

if (AM(2,2)>0) AR(2) = RT(AM(1,1),AM(2,2)); %Yontem 1 %ARP(2)= mde(AM(1,1)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,1))< mdde(AM(2,2)))

89


ARP(2)= mde(AM(1,1)); else ARP(2)= mdde(AM(2,2)); end end if (AM(1,2)>0) AR(3) = RT(AM(1,2),AM(2,1)); %Yontem 1 %ARP(3)= mde(AM(1,2)) * mdde(AM(2,1)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,1))) ARP(3)= mde(AM(1,2)); else ARP(3)= mdde(AM(2,1)); end end if (AM(1,2)>0) && (AM(2,2)>0) AR(4) = RT(AM(1,2),AM(2,2)); %Yontem 1 %ARP(4)= mde(AM(1,2)) * mdde(AM(2,2)); %Yontem 2 if (mde(AM(1,2))< mdde(AM(2,2))) ARP(4)= mde(AM(1,2)); else ARP(4)= mdde(AM(2,2)); end end

%%

CIKISIN HESAPLANMASI

AAR = zeros(1,4); mfo = [onb;onm;ons;oz;ops;opm;opb];

%AAR: Area of Active Rules %mfo: Output Membership Functions

for b=1:4 tb=mfo(AR(b)+1 , 3) - mfo(AR(b)+1 , 1); %Yontem 1 AAR(b)= tb*(ARP(b)-(ARP(b)^2)/2); %Yontem 2 %AAR(b)= tb*ARP(b)/2; end

%tb: Base of mfo Triangle

if (AAR(1) + AAR(2) + AAR(3) + AAR(4) == 0) g_yaw=0; else g_yaw= (mfo(AR(1)+1,2)* AAR(1) ... + mfo(AR(2)+1,2)* AAR(2) ... + mfo(AR(3)+1,2)* AAR(3) ... + mfo(AR(4)+1,2)* AAR(4))... / (AAR(1) + AAR(2) + AAR(3) + AAR(4)); end end

90


KAYNAKLAR

[1]

Mills, P.; “Fuzzy Logic Control of a Four Rotor Autonomous Aerial Platform” , Neverland Software and Systems, Arlington, ABD, 2001.

[2]

Mills, P.; Karani, C.; “Fuzzy Logic Control of a Four Rotor Autonomous Aerial Platform” , Aplications of MEMS, Arlington, ABD, Nisan 2003.

[3]

Kıvrak, A.Ö.; “Design Of Control Systems For A Quadrotor Flight Vehicle Equipped With Inertial Sensors” , Atılım Üniversitesi Mekatronik Mühendisliği Yüksek Lisans Tezi, Ankara, Türkiye, Aralık 2006.

[4]

Coza, C.; Macnab, C.J.B.; “A New Robust Adaptive-Fuzzy Control Method Applied to Quadrotor Helicopter Stabilization” , Calragy Üniversitesi, Alberta, Kanada, 2006.

[5]

Erginer, B.; Altuğ, E.; “Modeling and PD Control of a Quadrotor VTOL Vehicle” , IEEE Intelligent Vehicles Symposium, İstanbul, Türkiye, Haziran 2007.

[6]

Ömürlü, V. E. , Engin, Ş. N. , Kırlı, A., Kurtoğlu, S. , Büyükşahin, U., “İnsansız Dört Rotorlu Hava Araçları İçin Değişken Serbestlik Dereceli Yere Sabit Uçuş Kontrol Sistemi” , İstanbul, Türkiye, 2009.

[7]

Erginer, B., “Quadrotor VTOL Aracının Modellenmesi ve Kontrolü”, Makina Mühendisliği, İstanbul Teknik Üniversitesi, İstanbul, 2007.

[8]

Wikipedia, the free encyclopedia; Url: “http://en.wikipedia.org/wiki/PID_controller”

[9]

Oğuz, G., Demirören,A., “Bulanık Mantıklı Kontrolörlerle Güç Sistemlerinde Geçici Kararlılığın İyileştirilmesi”, Eleco Elektrik - Elektronik - Bilgisayar Mühendisliği Sempozyumu ve Fuarı, İstanbul, 2004

[10] Wikipedia, the free encyclopedia; Url: “http://en.wikipedia.org/wiki/Self-tuning”

91


ÖZGEÇMĠġ

09.08.1985 Bursa doğumlu Lise

2000-2003

Bursa Fen Lisesi

Lisans

2003-2010

Yıldız Teknik Üniversitesi Makine Mühendisliği Bölümü

92

Lisans Bitirme Tezi  

Ender Ortak Lisans Bitirme Tezi