29 Temmuz 2015 Çarşamba

Multikopterler için PID kontrol

Herkese Merhabalar,
        Bu yazımda PID kontrol algoritmalarından bahsetmek istiyorum. Bu yazıyı yazmamın 2 sebebi var. PID algoritmaları hakkında bir çok yazı okudum fakat coğu akademik ve karmaşık yazılar. Benim amacım anlaşılırlığı ve ayrıntıyı dengeli bir şekilde maximum değerlerinde kullanmak. İkincisi ise bu algoritmanın özel olarak multikopterlerde kullanımını basit bir şekilde açıklayan bir yazıya rastlamadım. Bu yüzden bu yazıyı yazmaya karar verdim.
        Bir otopilotun en temel 2 bileşeni hava aracının yönelimini tespit eden IMU sensörü ve PID algoritmasıdır. IMU sensörü içinde bir kaç sensör barındırır ve amacı hava aracının 3 boyutlu uzaydaki yönelimini bulmaktır. IMU konusundan bu yazımda bahsetmiştim. PID algoritmasının görevi ise temel olarak şöyledir: Yönelimi (3 eksendeki yere göre açılar) sensörler üzerinden alır, istenen açıları da kullanıcıdan alır. Bu ikisi arasındaki farkı en düşük seviyeye düşürmeyi amaçlar. İşte PID algoritmasının görevi bu farkı minimuma indirmek için gerekli motor hız değerlerini hesaplamaktır.


       Multikopterler için her 3 için ayrı ayrı PID kontrol algoritmaları uygulanır. İstenilen değer ile şu anki değerin farkı alınarak hata elde edilir. PID algoritması bu hata değerlerine uygulandıktan sonra motorların çıkış değerleri hesaplanır. Sonra bu verilen çıkış hata değişkenini bulmak üzere tekrar girişe yönlendirilir. Böylece döngü tamamlanmış olur. PID,  Proportional, Integral ve Derivative olmak üzere 3 farklı algoritmanın uygulanmasıyla elde edilir. Örnekle açıklamak gerekirse: Multikopterimizin pitch açısı için kullnılan PID kontrol algoritmasını ele alalım. P algoritmasından gelen değer, multikopterimizin şu anki pitch açısı ile
kontrol edenin istediği pitch açısı arasındaki farka yani anlık hataya bağlıdır. I algoritmasından gelen değer, pitch açısının geçmiş hatalarının toplamına bağlıdır. D algoritmasından gelen değer ise gelecek açı hatalarının tahminine bağlıdır.



Bu algoritmalardan elde edilen değerler belli katsayılarla(Kp, Ki, Kd) çarpılarak son çıkış değişkeni elde edilir. Bu katsayılara PID katsayıları denir. PID tuning olayı bu katsayıların uygun stabiliteyi sağlayacak şekilde ayarlanmasıdır.  Simdi bu 3 PID algoritmasının nasıl çalıştığını daha ayrıntılı inceleyelim.

Proportional
Proportional, ana kontrol algoritmamızdır. Diğer katsayılar 0 olsa bile sadece bu algoritmayla (stabilite düşük de olsa) hover yapabilir. Proportional, hava aracımızın şu anki açı hatasını baz alarak ilerler. Basitçe anlatmak gerekirse Kp katsayısı ne kadar yüksek olursa multikopter o kadar fazla kendini düzeltmeye çalışır. Eğer olması gerekenden yüksek Kp katsayısı seçilirse kendini fazla düzeltecek ve "overshoot" denen kavram ortaya çıkacaktır. Multikopter oldukça fazla duyarlı olacak ve yüksek frekansta titremeye başlayacaktır.


Integral
Integral, geçmiş hataların toplamını baz alarak ilerleyen algoritmadır. P genellikle hatayı yok etmek için tek başına yeterli değildir. Basitçe, istenen I değeri hataların zamanla çarpılıp toplanmasıyla elde edilir. Yani hatanın sayısal integrali hesaplanmış olur. I algoritması sayesinde multikopterimizin tam istediğimiz değere gelme özelliği artar fakat aynı zamanda istenilen değere gelme zamanı artar. Özellikle düzensiz rüzgarda ve ağırlık merkezi bozukluğu, tribulans gibi olumsuz etkenleri yok etmek için oldukça yararlıdır. Ki katsayısı artırıldığında daha yumuşak ve daha az agresif bir uçuş karakteristiği elde edilir. Yüksek Ki yine titreşimlere neden olur ama daha düşük frekanstadır böylece Kp'den kaynaklanan sorundan ayrılabilir.




Derivative
D parametresi gelecek hata tahminini baz alan bir parametredir. Etkisini ise istenilen açı değeri ile şuanki açı değeri arasındaki bir yay olarak düşünebiliriz. Görevi şokları absorbe ederek sonradan oluşabilecek hataları, "overshootları" baştan engellemektir. Bazı uçuş kontrolcüler bu parametreyi kullanmaz(Örnek: KK 2.0).




PID Tuning İpuçları

Ayarlamaya P parametresinden başlanır. P parametresini ayarlamak için düşük bir değerden başlanır ve titreşim ve osilasyonlar görmeye başlayana kadar artırılır. Düşük frekanstaki osilasyonları Ki parametresine, Yüksek frekanstakiler is genellikle Kp veya Kd bağlıdır. Eğer aracınızda titreşimler görüyorsanız Kp parametresini azaltmak için acele etmeyin. İlk olarak Kd parametresini artırmayı deneyebilirsiniz.


Akrobasi modu için;

  • Birazcık yüksek P
  • Birazcık düşük I
  • D artırılır.

Yumuşak akıcı uçuş için;

  • Birazcık düşük P
  • Birazcık yüksek I
  • D azaltılır.


Son olarak farklı PID ayarlarının stabiliteye etkisi hakkında açıklayıcı bir video göz atmanızı tavsiye ederim. Tekrar görüşmek üzere.





2 yorum:

  1. Emeğiniz için çok teşekkür ederim. :)

    YanıtlaSil
  2. güzel yazı. tebrik ederim elinize sağlık

    YanıtlaSil