Döndürmeyi kontrol etmek için bir PID kullanma


1

Gazebo'da (açık kaynaklı bir robot simülatörü) uçak uçuşunu simüle etmek için çalışıyorum.

Şu anda, PID'leri kullanarak dronun atış / dönüş rotasyonunu kontrol etmeye çalışıyorum. Bir dronun yalnızca açısal dönüşle doğrusal olarak hareket ettiğini hatırlamak önemlidir (ileri / geri eğim dönüşü, sola / sağa dönüş).

Şu anda, PID adım kontrolünü test ediyorum. Amaç, dronun belirli bir açıda dönmesini ve bu pozisyonda kalmasını sağlamak - bir PID için mükemmel bir iş.

Ancak fizik uygulaması bunu zorlaştırıyor. Temel olarak, PID ayar noktasını alır - istenen adım rotasyon açısı (radyan cinsinden) ve geçerli adım rotasyon açısı (ki bu doğrudan simülasyon durumunu oluşturuyorum).

PID çıkışı daha sonra elde edilen torku hesaplamak için kullanılır. Tork denklemi t = I * a'dır (tork = Intertia * açısal ivme). Bu yüzden, esasen, mevcut ve istenen dönme açıları verilen dronun açısal ivmesini kontrol etmek için bir PID kullanıyorum.

Elbette ki sorun, bir PID çıktısının zamanla doğrusal olarak ölçeklenmesidir, bu nedenle drone ayar noktasına yaklaştığında sıfıra düşmesine rağmen, tüm zaman boyunca pozitif ivmelenmeler uygulamaktadır. Sonuç olarak, dronun çok fazla açısal momentumu olduğu ve bu nedenle doğal olarak aşar. Daha sonra, elbette, PID, dönüşü tersine çevirerek yanıt verir, ancak aynı problemle.

Sonunda olan şey, dronun yatay bir tavırla başlaması, ayar noktasına ve ardından yatay konuma ve sonra ayar noktasına geri dönmesidir. Herhangi bir I veya D kazancı eklersem kararsız hale gelir.

Sorun gerçekten çok basit. Uzayda bir aracı kontrol etmek gibi. İtme, pozisyon / rotasyon üzerinde hassas kontrol sağlamak için darbelerde uygulanır. Bununla birlikte, PID, sürekli bir çıktı sağlar. Bu, burada gösterildiği gibi davranan bir tür fiziksel sisteme ihtiyacım olduğu anlamına gelir:

http: //vignette4.wikia.nocookie.net...imation.gif/revision/latest cb = 20141124024926

veya PID çıkışının istenen dönme açısına ulaştığında sıfıra açısal hızı getirecek şekilde ölçeklenmesi için fiziği yeniden yazmam gerekir.

Bunu çözmek düşündüğümden daha zor. - muhtemelen güçlü bir fizik ya da kontrol elemanı değilim.

Bu sorunu zaten başka bir forumda yayınladım. Konuyu buradan okuyabilirsiniz:

Uçağın dönüşleri için PID kontrolü

Nerede kesinleşirim. Korkarım, sorunu yeterince açık bir şekilde ifade edemedim, çünkü kısmen yardım etmeye çalışan adam PID'lere (ya da C ++) aşina değildi.

Her neyse, Bu tür bir şeyle ilgilenen (veya bu konuda benden daha fazla şey bildiklerini düşünen ...) herhangi bir düşüncesi gerçekten memnuniyetle karşılanacaktır. :)

Düzenleme: Davranışı aşağıdaki animasyonlu giflerde görebilirsiniz:

http://gph.is/2lKf9aT


1
Bir tuning problemi olabilir gibi görünüyor. Sabitlerinizi nasıl belirlediniz?
ericksonla

1
Anlaşılan kontrol kazancını ayarlaman gerekiyor. P ile başlardım, sonra d ve sonunda kazanırım. Robotik yığın değişim sitesinde, teorik arka plan için web sitelerine dış bağlantılar da dahil olmak üzere harika cevaplar vardır.
Gürkan Çetin

Genetik bir algoritma kullanarak. Ayar sorunu olmadığından eminim. PID'nin doğası bana karşı çalışan şey. Yani, PID ayar noktasına ulaşmadığı sürece, (bu durumda) açısal ivmelenmeyi uygulamaya devam eder. Böylece, ulaştığı zaman, hızlı bir şekilde düzeltmek için çok balya olması için çok fazla yol uyguladı. Başka bir deyişle, ayar noktasına ulaşmadan önce açısal ivmelenme yolunu azaltmaya ve geriye doğru başlatmaya ihtiyacı vardır . Tıpkı bir vakumda bir uzay gemisine pilotluk yapmaya çalışmak gibi.
Joel Graff

1
D kazancınız doğru işarete sahip mi?
nibot

1
Bir PD kontrol cihazı, aşınmaması için ayarlanabilen bir yaylı amortisör gibi davranır. Bu durumda en az bir PD kontrolörü olması gerekir veya salınacaktır. Ancak bu sorunun doğası gereği, bir PID'nin kesinlikle uygun olmadığını düşünüyorum, bazı model tabanlı denetleyiciler çok daha iyi olurdu.
joojaa

Yanıtlar:


1

y=kpEkdE˙qE˙

kdE˙π2E˙


1
nibot, yukarıdaki yorumlarda bu cevaba işaret etti. Kazanımlar için arama alanını yalnızca pozitif değerlerle sınırlamıştım. Negatif değerlere açmak, uçağı 45 dereceye kadar döndüğü için hızla dronu stabilize etti. Uygulama tamamen doğru olmayabilir (SF'nin yukarıdaki yorumuna göre), ancak şu an için devam edebilecek kadar iyi çalışıyor.
Joel Graff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.