ana - Onarım Geçmişi
  Lego Mindstorms robotunda oransal entegre diferansiyel PID kontrolörü. Oransal Regülatör. Uluslararası robot yarışmaları - Kurallar - Robot örnekleri - LEGO EV3 Programına göre orantılı bir yörünge robotu

Robotik, görünüşe göre, bilgisayar bilimi ve teknolojisindeki okul derslerinin bir parçası olarak daha da geliştirilecek ilginç bir yeni yön. Robotik patlaması büyük ölçüde şu soruyu cevaplamanıza izin vermesinden kaynaklanmaktadır: "Ama neden programlamayı gerçekten öğreniyoruz?" Ayrıca, robotik dersinde, otomatik kontrol teorisinin temel kavramlarını öğrenebilirsiniz.

Bu sayfada, yazar tarafından programlama için geliştirilen simülatörler ve Arduino kartı sunulmaktadır. Herhangi bir nedenden dolayı gerçek donanımı kullanmanın mümkün olmadığı durumlarda yardımcı olabilirler.

Eğitmenler HTML5'in yeteneklerini kullanır, bu nedenle yalnızca modern tarayıcılarda çalışırlar (kullanmak en iyisidir Google chrome  veya Mozilla firefox).

haber şimdi Telegram kanalında

27 Kasım 2015
   Simülatörlerde rota "embriyo" ( MV Lazarev, Orekhovo-Zuevo).

13 Ekim 2015
   Şimdi LEGO robot simülatörlerinde parçalarınızı yükleyebilirsiniz (robot için alanlar). Nasıl yapılır? Bir bak.
Yeni simülatörler eklendi - iki, üç, dört ışık sensörüne sahip LEGO robotları.

Robot Kontrol Dili

Simülatörlerde robotları kontrol etmek için, çalışma adını alan basit bir programlama dili kullanılır. Sirop (Basit robot programlama).

Ortam ışığı sensörlü robot kontrolü

Işık sensörü, robotun masa yüzeyinde gezinmesini, örneğin beyaz ve siyah alanlar arasındaki sınır boyunca (siyah çizginin kenarı boyunca) gitmesini sağlar. Bir fotodiyot yüzeyi aydınlatır, bir fotodetektör yansıyan ışınları "yakalar" ve yoğunluğunu ölçer.

Bu türün en popüler görevi bir çizgi boyunca ilerlemektir. Simülatörü kullanarak çeşitli kontrol yasalarını inceleyebilirsiniz - röle, orantılı ve hatta PID kontrolü (orantılı-integral-diferansiyel).

Işık sensörlü bir robot için program örnekleri

1 (sensör\u003e 128 ise (motor \u003d 100 motor \u003d 0) aksi halde (motor \u003d 0 motor \u003d 100) bekleyin (10))

KP \u003d 0,2 1 iken (u \u003d kP * (sensör-128) motor \u003d 50 + u motor \u003d 50 - u bekleyin (20))

Ana (1 iken (sensör\u003e 128 (motor \u003d 100 motor \u003d 100 bekleme (10)) geri () dönüş ())) geri (motor \u003d -100 motor \u003d -100 bekleme (260)) dönüş (motor \u003d -50 motor \u003d 50 bekleme (50))

İki ortam ışığı sensörü ile robot kontrolü

İki ışık sensörü, robotun ince bir çizgi üzerinde daha iyi gezinmesini ve sürmesini sağlar. Biraz ileri taşınırlar ve birbirlerinden ayrılırlar. Tek bir sensörlü görevlere gelince, bu simülatörü kullanarak çeşitli kontrol yasalarını inceleyebilirsiniz.

Üç ışık sensörüne sahip bir robot için program örnekleri

Dört ortam ışığı sensörü ile robot kontrolü

Dört ışık sensörü robotun keskin dönüşleri daha iyi algılamasını sağlar. Dahili sensörler ince ayar için kullanılır, onlar için oransal düzenleme kullanılır. İki harici sensör biraz öne ve birbirinden ayrılmıştır. Keskin bir dönüş meydana geldiğinde kullanılırlar. Dış çiftin sensörlerinin okumalarına göre kontrol kazancı, iç çiftten daha fazla seçilir (bkz. LY Ovsyanitskaya ve diğerleri, Lego Mindstorms EV3 robotunun hat boyunca hareketi için algoritmalar ve programlar, M .: “Tüy”, 2015).

Dört ışık sensörüne sahip bir robot için program örnekleri

1 (d0 \u003d sensör\u003e 128 d1 \u003d sensör\u003e 128 d2 \u003d sensör\u003e 128 d3 \u003d sensör\u003e 128 ise d1 &! D2 (motor \u003d 100 motor \u003d 0) ise! D1 & d2 (motor \u003d 0 motor \u003d 100) ise d1 \u003d\u003d d2 (motor \u003d 100 motor \u003d 100) eğer d0 &! d3 ise (motor \u003d 30 motor \u003d 0)! d0 & d3 ise (motor \u003d 0 motor \u003d 30) bekleyin (10))

K1 \u003d 0,2 k2 \u003d 0,4 1 (u1 \u003d sensör - sensör u2 \u003d sensör - sensör motoru \u003d 50 + k1 * u1 + k2 * u2 motor \u003d 50-k1 * u1-k2 * u2 bekleme (10))

Bir robotu mesafe sensörü (sonar) ile kontrol etme

Mesafe sensörü (sonar), robot hareket ederken en yakın engele olan mesafeyi belirlemenizi sağlar. Ultrasonik bir sinyal yayar ve yansıyan bir sinyal alır. Yayılan ve alınan sinyaller arasındaki süre ne kadar uzun olursa mesafe o kadar büyük olur.

Mesafe sensörünü kullanarak, robotu otomatik olarak bilinen şeklin ancak bilinmeyen boyuttaki bir labirentinden geçecek şekilde programlayabilirsiniz.

Bu görev klasik, ideolojik olarak basit, birçok kez çözülebilir ve her seferinde yeni bir şey keşfedeceksiniz.

Problemi takip eden çizgiyi çözmek için birçok yaklaşım vardır. Bunlardan birinin seçimi, robotun özel tasarımına, sensör sayısına, tekerleklere ve birbirlerine göre konumlarına bağlıdır.

Örneğimizde, üç robot örneği Robot Eğitimci temel eğitim modeline göre analiz edilecektir.

Başlamak için Robot Eğitimci eğitim robotunun temel modelini topluyoruz, bunun için MINDSTORMS EV3 yazılımındaki talimatları kullanabilirsiniz.

Ayrıca, örnekler için EV3 açık renk sensörlerine ihtiyacımız var. Bu ışık sensörleri, diğerleri gibi, görevimiz için en uygun olanıdır, onlarla çalışırken çevreleyen ışığın yoğunluğu hakkında endişelenmemize gerek yoktur. Bu sensör için, programlarda, sensörün kırmızı arka ışığının yansıyan ışık miktarının tahmin edildiği yansıyan ışık modunu kullanacağız. Sensör okumalarının sınırları "yansıma yok" ve "tam yansıma" için sırasıyla 0 - 100 birimdir.

Örnek olarak, yumuşak, hafif bir arka plan üzerinde tasvir edilen siyah bir yörünge boyunca hareket etmek için 3 örnek programı analiz edeceğiz:

· P regülatörlü bir sensör.

· PK regülatörlü bir sensör.

· İki sensör.

Örnek 1. P regülatörlü bir sensör.

dizayn

Işık sensörü, modelin üzerinde uygun bir kiriş üzerine monte edilmiştir.


algoritması

Algoritma, örtüşme derecesine bağlı olarak, sensörün siyah çizgili arka ışığının, sensör tarafından döndürülen okumaların bir gradyanla değişmesine dayanmaktadır. Robot, ışık sensörünün konumunu siyah çizginin sınırında saklar. Giriş verilerini ışık sensöründen dönüştüren kontrol sistemi, robotun dönme hızı değerini üretir.


Sensör, gerçek yol üzerindeki tüm çalışma aralığında (0-100) değerler ürettiğinden, robotun amaçladığı değer 50'dir. Bu durumda, iletilen dönüş işlevlerinin değerleri -50 - 50 aralığında oluşturulur, ancak bu değerler dik bir değer için yeterli değildir. Yörüngeyi çevirmek. Bu nedenle, aralık bir buçuk kez -75-75'e genişletilmelidir.

Sonuç olarak, programda, hesap makinesinin işlevi basit bir oransal regülatördür. Kimin işlevi ( (a-50) * 1,5 ) ışık sensörünün çalışma aralığında programa göre dönme değerleri üretir:

Algoritma İşlemi Örneği

Örnek 2. PK denetleyicili bir sensör.

Bu örnek aynı tasarımda derlenmiştir.

Muhtemelen önceki örnekte robotun çok fazla sallandığını fark ettiniz, bu da yeterince hızlanmasına izin vermedi. Şimdi bu durumu biraz düzeltmeye çalışacağız.

Oransal regülatörümüze, regülatör işlevlerine bir bükülme ekleyecek basit bir kübik regülatör ekliyoruz. Bu, robotun yörüngenin istenen sınırına yakın salınımını azaltacak ve ondan güçlü bir mesafe ile daha güçlü gerizekalılar yapacak

Orantılı bir kontrolör, belirli bir x0 (t) durumundan doğrusal sapması e (t) ile orantılı olarak bir cisme kontrol u (t) uygulayan bir cihazdır;

e (t) \u003d x0 (t) -x (t); buradaki x (t), belirli bir zamanda durumdur;

u (t) \u003d ke (t); buradaki k, amplifikasyon katsayısıdır.
  Yani, robot belirli bir rotadan ne kadar saparsa, motorlar o kadar hizalanarak daha aktif çalışmalıdır.

P-kontrolörü kullanarak tek bir ışık sensörü ile hat hareketi

Siyah-beyaz sınırı boyunca hareket de P-kontrolörü üzerine kurulabilir. Dışa doğru olsa da, sorun sadece bir röle kontrolörünün yardımıyla çözülmüş gibi görünmektedir, çünkü sistemdeki insan gözünün görebildiği sadece iki durum vardır: siyah ve beyaz. Ancak robot her şeyi farklı görüyor, çünkü onun için bu renkler arasında keskin bir sınır yok. Kısa görüşlü olduğunu ve gri tonlarının gradyan geçişini gördüğünü söyleyebiliriz.

  Bu P-regülatörünün oluşturulmasına yardımcı olacaktır.
Işık sensörünün okumaları olarak çalışma durumunu belirleyerek, aşağıdaki yasaya göre motorlar üzerinde oransal bir kontrol etkisinin nasıl sağlanacağını öğreniriz:
  e \u003d s1-gri, burada s1 geçerli sensör okuması ve gri ayar noktasıdır.

K katsayısı (bu örnek 2'de eşittir) yeterince küçük olmalıdır (1'den 3'e). Böyle bir regülatör sadece küçük sapma açıları için etkili bir şekilde çalışır, bu nedenle robotun hareket yönünde yerleştirilmesi gerekir, böylece sensör siyah çizginin sol tarafındadır. P-kontrolöründeki çizgi boyunca hareketin pürüzsüz olduğunu görmek kolaydır. ve bazı çalışma alanlarında çizginin kıvrımlarını neredeyse doğrusal veya hassas bir şekilde tekrarlar.

Sensör kalibrasyonu

Formülde kullanılan 48 numarasına dönelim. Bu, siyah ve beyazdaki ışık sensörünün aritmetik ortalamasıdır, örneğin (40 + 56) / 2 \u003d 48. Bununla birlikte, sensörlerin okumaları genellikle çeşitli nedenlerle değişir: farklı bir yüzey, odadaki genel aydınlatmada bir değişiklik, tasarımda hafif bir değişiklik, vb. Bu nedenle, beyaz ve siyah ışık sensörünün değerlerini belirleyerek robotu manuel olarak kalibre edeceğiz.

P-kontrolörü kullanarak iki ışık sensörü ile hat hareketi
  Bir ışık sensörü ile kavşağı doğru bir şekilde geçmek oldukça zordur. Bunu oldukça yüksek bir hızda yapmak istiyorsanız, iki çizgi genişliğine (veya daha geniş) mesafeye ayarlanmamış en az iki sensöre ihtiyacınız vardır.
  Hareket ederken dört sensör durumu mümkündür:

  • ikisi de beyaz - düz önde;
  • sol (s1) siyah değil, beyaz sağ (s2) - sola git;
  • solda beyaz, sağda siyah - sağa git;
  • ikisi de siyah - düz önde.
  böylece eşit sensör okumalarıyla (hem beyaz hem de siyah) robot düz gider. Robotu başlatmadan önce, her iki sensörün de otomatik kalibrasyonunu yapacağız. Daha sonra P-kontrolörü ile çizgi boyunca hareket algoritması şöyle görünecektir:

Katsayı k, hattın eğriliğine, robotun manevra kabiliyetine ve sahada siyah ile beyaz arasındaki farka bağlı olarak oldukça geniş bir aralıkta (1 ila 20 veya daha fazla) değişebilir.
  Önemli bir durum. Otomatik kalibrasyon, tek renkli bir yüzey üzerinde ve tercihen yolun çoğunu kaplayacak aydınlatma altında gerçekleştirilmelidir. Örneğin, bir robot beyaz bir alanda siyah bir çizgi boyunca seyahat ederse, beyaz üzerinde kalibre edin. yani robotun başlangıçtaki konumu şu şekilde olmalıdır:


Ve bir açıklama daha. Okumaları% 10-20 arasında değişen sensörler var. Düzenleyici üzerinde büyük bir katsayı ile eşleştirilmemeleri tavsiye edilir, çünkü tek tip bir beyaz alanda bile genel aydınlatmada keskin bir değişiklik olduğunda, sapmalar farklı olabilir ve bu da beklenmedik sonuçlara yol açacaktır. Ayrıntılar Yazar: Igor Konovalov    Oransal kontrolör bir gelişmedir. Rölenin ana eksi, akım değerlerinin sensörün normal değerinden ne kadar farklı olduğunu umursamamasıdır. Sadece iki durumu vardır - normal değerden küçükse sensör değerlerini belirli bir sabit sayı ile artırmaya çalışın veya artırın. Bu nedenle, sabit bir genliğe sahip salınımlar meydana gelir, bu da çok verimsizdir.
   Mevcut okumaların normalden ne kadar uzak olduğunu belirlemek ve genliği buna bağlı olarak değiştirmek çok daha mantıklıdır. Daha açık bir şekilde ifade etmek için, bir örneğe bakalım. Önceki makalede olduğu gibi örnek aynıdır: Lego Mindstorms EV3'ten robot, ışık modunda tek bir renk sensörü ile siyah çizgi boyunca sürüyor.

Robot beyaz ve siyah arasındaki sınır boyunca hareket etmeye çalışır ve orada sensör ışığın yaklaşık% 50'sini gösterir. Ve normal konumundan ne kadar uzak olursa, robotun% 50'ye geri dönmesi için o kadar fazla çaba harcar.
   Bir program yazmak için "error", "control action" terimlerini kullanıyoruz. Hata - geçerli sensör okuması ile normal arasındaki fark. Bizim durumumuzda, şimdi robot aydınlatmanın% 20'sini görürse, hata 20-50 \u003d -30% 'dur. Hata işareti, hatadan kurtulmak için robotun hangi yöne dönmesi gerektiğini gösterir. Şimdi motorlara robotun hangi yöne, hangi hızda ve ne kadar keskin bir şekilde dönmesi gerektiğini söylemeliyiz. Motorlar üzerinde kontrol edici bir etkiye sahip olmak gerekir, bu da normal konumuna ne kadar keskin bir şekilde dönmesi gerektiği anlamına gelir. Kontrol eylemi (UP) orantılılık katsayısının (k) bir katı (hata) olarak hesaplanır. Bu katsayı, hatanın kontrol eylemi üzerindeki etkisini arttırmak veya azaltmak için kullanılır. Kontrol eylemi, robotun ortalama hızının ayarlandığı direksiyona beslenir.
Orantılılık katsayısı nasıl ayarlanır? Yörüngenin geçişi için ampirik olarak değerleri seçin, örneğin robotun hızına ve tasarımına bağlı olarak 0.2 ila 1.5 arasında olabilir. Katsayı çok büyükse, robot güçlü bir şekilde sallanacak, eğer küçükse, sorunsuz bir şekilde sürecek, ancak bir noktada, yetersiz kontrol eylemi nedeniyle bir dönüş yapacaktır. Programın iki versiyonunu yazacağız - değişkenler (daha önce çalışmış olanlar için) ve olmadan.


   Ancak bu regülatör, orantılı ve entegre bir bileşen eklenerek de güçlendirilebilir, açıklama aşağıdaki makalelerde olacaktır. Yakında görüşürüz!

Oransal regülatör

tanım

Otomatik kontrol ile, kontrol eylemi u (t) genellikle dinamik hatanın bir fonksiyonudur - kontrollü değişken x (t) 'nin verilen x0 (t) değerinden sapması e (t):

e (t) \u003d x0 (t) - x (t).

Bu, Polzunov-Watt sapma kontrolü ilkesi veya geri bildirim ilkesidir. İstenen kontrol eyleminin u0 (t) regülatör tarafından ölçülen değerlere fonksiyonel bağımlılığının matematiksel ifadesine yukarıda belirtilen yasa veya düzenleme algoritması denir.

Orantılı kontrolör, bir nesne üzerinde belirli bir durumdan sapmasıyla orantılı olarak kontrol etkisi uygulayan bir cihazdır:

Burada k regülatörün kazancıdır.

Verilen x0 durumuna ayar noktası denir ve ondan sapmaya artık adı verilir. Ayrıca, kesinlik için, kalıntıyı err kısaltmasıyla belirteceğiz (İngilizce "hata" - hata kelimesinden).

Motor kontrolü

Deneyimli bir savaşçı, bir robot röle kontrol cihazında yaptığı gibi kılıcını sallamaz. Kılıcı sıkıca sabit bir konumda tutan motoru tutacak bir algoritma bulmak gerekir (Şekil 7.1). Bu P kontrolörüne yardımcı olacaktır.

E 1 - motor A'daki hız sensörü1'in değerleri - ayarlanabilir bir değer olsun. Ayar x0 \u003d 45, kalan artık e \u003d 45 - e 1'dir. Sonra motordaki kontrol eylemi formül tarafından verilir.

u \u003d k ∙ (45 - e1).

Burada k, ayar noktasından küçük sapmalarda bile motor tepkisini artıracak kazanç, örneğin 5'tir.

1 Artık e'nin (hatadan) matematiksel tanımlamasını, önceden tanımlanmış bir Robolab ortam değişkeni olan e 1 kodlayıcısının (kodlayıcıdan) okumalarıyla karıştırmayın.

Pozitif yönde bir sapma olması durumunda, motora bir negatif kontrol eylemi uygulanır ve bunun tersi de geçerlidir. Bu kontrol, kontrol cihazını boşaltmak için motora 1-10 ms'lik küçük bir gecikmeyle bir döngüde uygulanabilir (Şekil 7.8).

Şek. 7.8. Oransal kontrolörde motor kontrol algoritması.

Kazanç 5'ten 100'e çıkarılırsa, orantılı regülatörümüz bir röle olarak çalışmaya başlayacak ve bir aşırı atış etkisinin ortaya çıkması nedeniyle güçlü dalgalanmalara neden olacaktır.

RobotC, Robolab gibi kodlayıcı okumalarının uygun bir atamasına sahip değildir, bu nedenle program biraz daha uzun görünür:

int k \u003d 5, u; nMotorEncoder \u003d 0; while (true)

u \u003d k * (45-nMotorEncoder); motor \u003d u;

Ayrıca, bir “kılıçla darbe” vermek için, 45 sayısı yerine bir değişkene sahip olmak, değerini dışarıdan, örneğin paralel bir görevden değiştirmek yeterlidir. Bu, bölüm 8'deki robot davulcular ile ilgili bölümde açıklanmaktadır.

Ve şimdi sadece motorun statik konumunu değil, aynı zamanda hızını da kontrol eden bir regülatör inşa edeceğiz. Algoritmanın mantığını takiben, şimdiye kadar sabit olan ve değişmeyen ayar noktası, artış veya azalma yönünde hareket etmeye başlamalıdır. Regülatöre uyarak, motor kaçınılmaz olarak onu takip edecektir. Nominal değeri sürekli artırmak için en kolay araç bir zamanlayıcıdır.

NXT kontrol cihazında her biri onda biri, yüzde biri ve saniyenin binde biri cinsinden zamanı ölçebilen dört dahili zamanlayıcı bulunur. İlk zamanlayıcıda ustalaşacağız, bu da saniyede 10 “ty-

koyu. " Robolab'da T1 veya Timer100ms1 ve RobotC'de timer100 olarak adlandırılmıştır.

Önceki örnekte 45 olarak ayarlanan motor sapmasının α açısı, hızlanma katsayısı k2 ile zamanlayıcının okumalarına bağlı olacaktır:

alfa \u003d k2 ∙ T1.

Kontrol eylemi, amplifikasyon katsayısı k 1 ile aynı kalacaktır:

u \u003d k 1 ∙ (alfa - e 1).

Kısaca, Robolab dilindeki bir programda, kontrol eylemi zamanlayıcıyı başlattıktan hemen sonra motora uygulanır.

Şek. 7.9. Motor hız kontrolü - saniyede bir devir.

K 2 \u003d 36 katsayısı, bir saniyede alfa değerinin 360'a kadar çalıştığını ve bu da motorun bir tam devrine karşılık geldiğini belirler:

int k1 \u003d 2, k2 \u003d 36, u, alfa; nMotorEncoder \u003d 0; ClearTimer (T1); while (true)

alfa \u003d zamanlayıcı100 * k2; u \u003d k1 * (alfa-nMotorEncoder); motor \u003d u;

Tamsayı tipi değişkenler için C dilinde (ve Robolab'da) kabul edilen tamsayı bölmesini kullanarak, açıda ayrı bir değişiklik elde etmek mümkündür, yani. saniyede bir artışlar:

alfa \u003d T 1/10 ∙ k2.

K2 \u003d 60 katsayısıyla, ışın hareketleri saniye ibresinin saat kadranı üzerindeki hareketine karşılık gelir. Ama bu yeterli değil

belirgin. Netlik için, k2 \u003d 30'u ayarlayabilirsiniz, sonra ok, her biri 30 derecelik 12 "keneler" için tam bir devrim yaratacaktır. Tamsayı bölme ve çarpma işlemlerinin sırasına dikkat edin, sıralarını değiştirirseniz veya “azaltırsanız” sonuç kesinlikle değişecektir (Şekil 7.10).

Şek. 7.10. Saat hareketinin hızlandırılmış taklidi.

Ve son olarak, matematiksel bir davulcu örneği. Sürekli olarak ilerlemek yerine, ok P-kontrolörün kontrolü altında geriye doğru salınacaktır. C cinsinden% ile gösterilen kalan bölüm işlemi yardımcı olacaktır. Negatif olmayan bir tamsayıyı 2'ye bölmenin geri kalanı her zaman 0 veya 1 olacaktır:

alfa \u003d T% 1 2 ∙ k2.

Sapmayı k2 \u003d 15 kat arttırdıktan sonra, regülatörü motoru saniyede 5 kez, sonra 0 ° 'de, sonra 15 derecede hareket ettirmeye zorlayacak olan salınımlı ayar alfa alırız. Programdaki değişiklikler küçüktür. RobotC hakkında bir örnek düşünün:

int k1 \u003d 3, k2 \u003d 15, u, alfa; nMotorEncoder \u003d 0; ClearTimer (T1); while (true)

alfa \u003d zamanlayıcı% 100 2 * k2; u \u003d k1 * (alfa-nMotorEncoder); motor \u003d u;

Bu prototip davulcu masaya düzenli aralıklarla vurur. Ana şey doğru pozisyonda başlamaktır. Tamsayı matematiğini kullanarak, daha karmaşık bir ritmik model belirtebilirsiniz, örneğin (Tablo 7.1):

alfa \u003d T% 1% 5 2 ∙ k2.

merkezi \u003d S3.

Katsayı döngüde belirlenir:

k 1 \u003d c + (S3 - orta) / k2.

Şek. 7.36. Yüzer katsayılı oransal bir kontrolörde çizgi hareketi.

Elde edilen kazanç kontrolü yasası sadece oransal bileşene değil, aynı zamanda diğerlerine ve bir bütün olarak kontrol eylemine uygulanabilir (Şekil 7.36).

PID denetleyicisi

Orantılı-integral-diferansiyel (PID) kontrolör en popüler olanlardan biridir ve hızlı tepki ve sistemin doğru konumlandırılmasını gerektiren çeşitli tiplerde çok sayıda cihazda kullanılır. Adından da anlaşılacağı gibi, bu kontrolör üç bileşenin toplamından oluşur ve Şekil l'de grafiksel olarak gösterilir. 7.37.

Şek. 7.37. PID kontrol devresi.

Bu basitleştirilmiş bir diyagramdır. Dinamik hatanın e (t) değeri kontrolörün girişine beslenir ve çıkışta kontrol eylemi u (t) oluşturulur:

u (t) \u003d p + i + d \u003d k p ∙ e (t) + k i ∙ ò t

e (τ) d τ + k d ∙

de.

Şemada bir üçgenle gösterilen oransal bileşen, sistemi belirli bir duruma getirmekten sorumludur. Bazı durumlarda, müteakip kendi kendine salınımlarla aşmaya neden olabilir. Yani, P kontrolörü "aşırıya kaçabilir" ve robot bir yandan diğer yana kaymaya başlayacaktır.

İntegral bileşen negatif deneyim biriktirir (hataları özetler) ve telafi edici bir etki yaratır. Minimum sapmalarla, oransal bileşen, toparlanma ile hızlı bir şekilde artması nedeniyle "zayıflar" ve entegre bileşen, ayarlanabilir değerin ayar noktasına "gerilmesine" yardımcı olur.

Diferansiyel komponent (D komponent) sistemin durumundaki değişim oranını izler ve olası aşımı önler. Bazı durumlarda, D bileşeni işaretle orantılıdır ve bazılarında çakışır.

Orantılı bileşene zaten aşinayız; diferansiyel bileşen önceki bölüm 6'da açıklanmaktadır. İntegral bileşeni ele alıyoruz. Bu bileşen, önceki değerle özetlenerek dinamik olarak belirlenir:

i \u003d i + ki × e (t) × dt.

E (t) × dt miktarının fiziksel anlamı

sistemin bir hata durumunda olduğu süre ile orantılı K i katsayısı parantez dışında olduğundan, hataların sürelerinin toplamı olarak i'nin değeri hakkında konuşabiliriz. Böylece, integrali toplayarak buluruz.

İki tekerlek üzerinde bir dengeleme robotu örneği kullanarak bir PID kontrolörü kullanmayı düşünün. Bu klasik problem, çeşitli sensörler kullanılarak birçok şekilde çözülebilir. Önerilen örnekte, bir ışık sensörü ve bir PID kontrolörünün en basit şekli kullanılmıştır. Bununla birlikte, robotun stabilizasyonunu sağlamak için daha doğru sensör okumaları kullanmak gerekecektir.

RAW biçimi

Sensörlerden gelen veriler NXT kontrolörüne ham “ham” formda gönderilir. Tüm sensörler işletim sistemine 0 ila 1023 arasında bir dijital değer iletir, bu daha sonra ilgili sürücü tarafından işlenir ve daha anlaşılabilir bir forma indirilir (mesafe 0 ... 255, aydınlatma 0 ... 100, dokunma 0 veya 1 vb.). Ancak veriler doğrudan sürücüyü atlayarak elde edilebilir. Bu ham biçime genellikle RAW denir (İngilizce'den. "Raw"). Bazı durumlarda, daha fazla doğruluk elde etmek için kullanılabilir. Böylece, örneğin, ışık sensörünün değer aralığı yaklaşık 10 kat artabilir. Bu fırsat daha fazla kullanılır.

Hem Robolab hem de RobotC'de RAW formatında veri alabilirsiniz. Bunu yapmak için, sensör buna göre başlatılır ve ondan gelen veriler önceden tanımlanmış özel bir değişken kullanılarak okunur.

Dengeleme robotu

Segway robotunun tasarımı Şek. 7.38: dikey olarak yerleştirilmiş bir kontrolör, yakın aralıklı tekerlekler ve bir tavan ışığı sensörü. Algoritma biraz daha karmaşık olacaktır.

Segmanın denge konumunda stabilizasyonu prensibi aşağıdaki gibidir. Robot öne doğru eğilirse, yansıyan ışık nedeniyle ışık sensöründeki değerler artar. Buna yanıt olarak, robotu ileri hareket etmeye zorlayan ve böylece tekrar dikey bir pozisyon alan bir kontrol eylemi üretilir.

Arkanıza yaslanırsanız, sensör okumaları düşer ve robot geriye doğru hareket etmeye başlar. Orantılı bileşen tüm bunlardan sorumludur. İntegral ve diferansiyel bileşenlerin rolü aşımlara karşı sigorta verilir.

Şek. 7.38. Dengeleme Robot Segway.

Şek. 7.39 Robolab'da algoritmayı sunar. Çoğu değişkenlerin başlatılmasındadır. Doğruluğu artırmak için, sadece sensör verileri RAW formatında okunmaz, aynı zamanda değişkenlerin çoğu float formatında bildirilir. PID algoritmasının kendisi bir döngüdedir.

Şek. 7.39. Dengeleyici algoritması PID kontrolörüne dayanmaktadır.

Çizgi boyunca hareket etme geleneğini takiben, ayar noktası olarak değişken griyi kullanırız - ışık sensörünün denge konumunda ortalama okumaları. Yeni ölçek parametresi, kontrol eyleminin ölçeklendirmesini ayarlar. Aslında, bu bir zayıflama faktörüdür, çünkü regülatör tarafından üretilen değer NXT motorlar için çok yüksektir. Mevcut katsayıların içine sokmak mümkün olacaktır, ancak RobotC için bu parametre farklı olacaktır ve katsayılar aynı olacaktır.

Verilen katsayılarla, robot monofonik ışık muşamba veya okul masasında iyi stabilize olur. Yani, beyaz bir yüzey rengine ihtiyacı yoktur. Başlamak için, segway'i denge konumuna doğru bir şekilde ayarlamanız gerekir. Robot belirli bir eğimle ileri veya geri başlarsa, hemen eğim yönünde hareket etmeye başlar.

RobotC'deki benzer bir örnek birkaç nedenden dolayı biraz farklıdır. İlk olarak, NXT'nin bu ortam için ürün yazılımı ile performansı Robolab'dan yaklaşık 1.4 kat daha yüksektir, bu nedenle ölçek faktörü artırılmalıdır. İkinci olarak, RAW değerleri doğru sırayla iletilir ve ters motorların monte edilmesi veya sadece bir negatif kontrol eyleminin uygulanması gerekecektir:

int grey \u003d SensorRaw; int err, errold \u003d 0;

şamandıra kp \u003d 25, ki \u003d 350, kd \u003d 0.3; şamandıra ölçeği \u003d 14;

şamandıra dt \u003d 0.001; float p, i \u003d 0, d, u; while (true)

err \u003d gri-SensorRaw; // Ters işaretiyle sapma p \u003d kp * err;

i \u003d i + ki * err * dt; d \u003d kd * (err-errold) / dt; errold \u003d err; u \u003d (p + i + d) / ölçek; motor \u003d u; motor \u003d u; wait1Msn (1);

Okulda otomatik kontrol teorisinin unsurları1

Önemli ve ilginç bir metodolojik görev, uzman ve öğrencinin bilgi alanları arasındaki “köprünün transferi” olup, okul öğrencilerinin uzmanlığın gelecekteki beklentilerini görmelerine yardımcı olmak, kariyer rehberliği yapar ve öğrenciler mesleki bilgilerinin pratik uygulanabilirliğini görürler. Bu etkiyi elde etmek için, matematik ve fizikteki okul programları çerçevesinin ötesine geçmeyen bir matematiksel aparat kullanılarak regülatörlerin hesaplanması için yöntemler geliştirilmiştir. Özellikle, diferansiyel denklemler yerine, nesne ve regülatörün bilgisayar kontrolü ile etkileşiminin ayrık doğasına iyi karşılık gelen fark denklemleri kullanılır.

Örneğin, hareketli bir robotun bir duvar boyunca hareketini kontrol etme probleminde oransal (P) ve oransal diferansiyel (PD) denetleyicileri oluşturma görevini düşünün. X t ile robot ve duvar arasındaki mesafeyi, --t - robotun yön açısı ve u t - sırasıyla seri numarası ile kontrol eylemini belirtin, burada t \u003d 0, 1, 2, ... ölçüm anlarının sayısıdır

renyum. Sensörlerin sorgulanmasının ve kontrol eyleminin büyüklüğündeki değişikliklerin eşit zaman aralıklarında h olduğuna inanılmaktadır. Lego NXT robot kontrol görevleri için, kontrol hareketinin tekerlek açısının değişim hızıyla orantılı olarak tekerleklerin açısal hızlarındaki fark olduğunu varsaymak doğaldır:

Parkurun nominal θt \u003d 0 küçük ve ortalama robot hız sabitinden sapmaları göz önüne alındığında: vt \u003d v, ilk yaklaşımda robotun durum değişkenlerindeki değişikliklerin dinamiği doğrusal durum denklemleriyle tanımlanabilir:

burada g \u003d h2vr / b.

Duvara x *\u003e 0 istenen mesafeyi ayarladık ve kontrol hedefini (CC)

xt → x *, t → ∞ olarak.

Şimdi, doğal bir şekilde, asimptotik stabilite kavramını, sistemden (4) çözümlerin özelliği olarak, hedef sistemden çok az farklı olan herhangi bir başlangıç \u200b\u200bkoşulunda kontrol sisteminin (5) elde edilmesini sağlayan önemli bir düzeyde sunuyoruz. U t \u003d 0 için, denklem (4) 'e yönelik çözümün herhangi bir sabit değer x t \u003d x * olduğunu görmek kolaydır. Ancak bir çift entegratörün (çift toplayıcı) modeline karşılık gelen denklem (4), asimtotik stabilite özelliğine sahip olmadığından, kontrol merkezi (5) sabit kontrol ile elde edilemez. Bu, analitik olarak kolayca gösterilebilir - birkaçını özetleyerek



 


oku:



Balkonu laminatlayın - uygun fiyata pratiklik ve estetik cazibe

Balkonu laminatlayın - uygun fiyata pratiklik ve estetik cazibe

Laminat, tüketiciler arasında uzun zamandır büyük popülerlik ve güven kazanmıştır. Bu çok yönlü döşeme ...

Tanınmış malzemelerin standart dışı kullanımı - laminatı duvara sabitliyoruz

Tanınmış malzemelerin standart dışı kullanımı - laminatı duvara sabitliyoruz

Laminat, yer ve duvar kaplamaları olarak yaygın olarak kullanılmaktadır. Bazı durumlarda, özel yapıştırıcı ...

Lamine laminat - ne yapmalı?

Lamine laminat - ne yapmalı?

Laminatın dairenin zemininde aniden şişmesinin birkaç nedeni olabilir, çoğu zaman uzun süreli sıkışma veya ...

Laminat şişmişse nasıl düzeltilir?

Laminat şişmişse nasıl düzeltilir?

Lamine tahtalar, kurulum kolaylığı, uzun ömür ve yüksek estetik nedeniyle Rusların evlerinde değerli bir yer tuttu ...

besleme-Resim RSS yayını