rumah - Membaiki sejarah
Pengawal PID Pembezaan Integral Berkadar dalam Robotik Lego Mindstorms. Pengawal berkadar. Pertandingan robot antarabangsa - Peraturan - Contoh robot - Robot trajektori berdasarkan program LEGO EV3 Proportional p

Robotik adalah hala tuju baru yang menarik, yang, nampaknya, akan terus berkembang dalam rangka kerja kursus sekolah sains komputer dan teknologi. Ledakan dalam robotik sebahagian besarnya disebabkan oleh fakta bahawa ia membolehkan kita menjawab soalan: "Mengapa kita sebenarnya belajar pengaturcaraan?" Di samping itu, dalam kursus robotik anda boleh berkenalan dengan konsep asas teori kawalan automatik.

Halaman ini membentangkan simulator pengaturcaraan dan papan Arduino yang dibangunkan oleh pengarang. Mereka boleh membantu dalam kes di mana atas sebab tertentu tidak mungkin untuk menggunakan perkakasan sebenar.

Simulator menggunakan keupayaan HTML5, jadi ia hanya akan berfungsi pelayar moden(sebaiknya digunakan Google Chrome atau Mozilla Firefox).

Berita kini juga di saluran Telegram

27 November 2015
Trek "embrio" telah ditambahkan pada simulator ( M.V. Lazarev, Orekhovo-Zuevo).

13 Oktober 2015
Kini anda boleh memuatkan trek anda sendiri (medan untuk robot) dalam simulator robot LEGO. Bagaimana hendak melakukannya? Lihat.
Simulator baharu telah ditambah - robot LEGO dengan dua, tiga, empat penderia cahaya.

Bahasa kawalan robot

Untuk mengawal robot dalam simulator, bahasa pengaturcaraan mudah digunakan, yang menerima nama kerja SiRoP (Pengaturcaraan Robot Mudah).

Kawalan robot dengan sensor cahaya

Penderia cahaya membolehkan robot menavigasi pada permukaan meja, sebagai contoh, bergerak di sepanjang sempadan antara kawasan putih dan hitam (di sepanjang tepi garis hitam). Sebuah fotodiod menerangi permukaan, sebuah photodetector "menangkap" sinaran yang dipantulkan dan mengukur keamatannya.

Tugas paling popular jenis ini ialah bergerak sepanjang satu baris. Menggunakan simulator, anda boleh mengkaji pelbagai undang-undang kawalan - geganti, berkadar, dan juga kawalan PID (berkadar-integral-derivatif).

Contoh program untuk robot dengan sensor cahaya

Manakala 1 (jika sensor > 128 (motor = 100 motor = 0) sebaliknya (motor = 0 motor = 100) tunggu(10))

KP = 0.2 manakala 1 ( u = kP*(sensor-128) motor = 50 + u motor = 50 - u tunggu(20) )

Utama ( manakala 1 ( manakala sensor > 128 ( motor = 100 motor = 100 tunggu(10) ) belakang() pusing() ) belakang ( motor = -100 motor = -100 tunggu(260) ) pusing ( motor = -50 motor = 50 tunggu(50) )

Kawalan robot dengan dua sensor cahaya

Dua penderia cahaya membolehkan robot menavigasi dan memandu dengan lebih baik di sepanjang garisan nipis. Mereka dibawa ke hadapan sedikit dan tersebar ke tepi. Seperti masalah penderia tunggal, simulator ini boleh digunakan untuk mengkaji pelbagai undang-undang kawalan.

Contoh program untuk robot dengan tiga sensor cahaya

Kawalan robot dengan empat sensor cahaya

Empat sensor cahaya membolehkan robot mengesan selekoh tajam dengan lebih baik. Penderia dalaman digunakan untuk pelarasan halus; dua sensor luaran dibawa sedikit ke hadapan dan merebak ke tepi. Ia digunakan apabila terdapat selekoh tajam. Keuntungan untuk kawalan berdasarkan bacaan penderia pasangan luaran dipilih lebih besar daripada pasangan dalaman (lihat. L.Yu. Ovsyanitskaya et al., Algoritma dan program untuk pergerakan robot Lego Mindstorms EV3 di sepanjang baris, M.: “Pero”, 2015).

Contoh program untuk robot dengan empat sensor cahaya

Manakala 1 ( d0 = sensor > 128 d1 = sensor > 128 d2 = sensor > 128 d3 = sensor > 128 jika d1 & !d2 ( motor = 100 motor = 0 ) jika! d1 & d2 ( motor = 0 motor = 100 ) jika d1 == d2 ( motor = 100 motor = 100 ) jika d0 & !d3 ( motor = 30 motor = 0 ) jika!d0 & d3 ( motor = 0 motor = 30 ) tunggu(10) )

K1 = 0.2 k2 = 0.4 manakala 1 ( u1 = sensor - sensor u2 = sensor - motor sensor = 50+k1*u1+k2*u2 motor = 50-k1*u1-k2*u2 tunggu(10) )

Mengawal robot dengan sensor jarak (sonar)

Sensor jarak (sonar) membolehkan anda menentukan jarak ke halangan terdekat semasa robot bergerak. Ia mengeluarkan isyarat ultrasonik dan menerima isyarat yang dipantulkan. Semakin lama masa antara isyarat yang dipancarkan dan diterima, semakin jauh jaraknya.

Menggunakan penderia jarak, robot boleh diprogramkan untuk menavigasi secara automatik labirin bentuk yang diketahui tetapi saiz yang tidak diketahui.

Masalah ini klasik, mudah dari segi ideologi, ia boleh diselesaikan berkali-kali, dan setiap kali anda akan menemui sesuatu yang baharu.

Terdapat banyak pendekatan untuk menyelesaikan masalah baris berikut. Pilihan salah satu daripada mereka bergantung pada reka bentuk khusus robot, pada bilangan sensor, lokasi mereka berbanding dengan roda dan satu sama lain.

Dalam contoh kami, tiga contoh robot akan dianalisis berdasarkan model pendidikan utama Robot Educator.

Sebagai permulaan, kami memasang model asas robot pendidikan Robot Educator, untuk ini anda boleh menggunakan arahan dalam perisian MINDSTORMS EV3.

Selain itu, sebagai contoh, kami memerlukan penderia warna terang EV3. Penderia cahaya ini, tidak seperti yang lain, paling sesuai untuk tugas kita apabila bekerja dengannya, kita tidak perlu risau tentang keamatan cahaya sekeliling. Untuk penderia ini, dalam program kami akan menggunakan mod cahaya pantulan, di mana jumlah cahaya pantulan dari lampu latar merah penderia dianggarkan. Had bacaan sensor ialah 0 - 100 unit, masing-masing untuk "tiada pantulan" dan "total pantulan".

Sebagai contoh, kami akan menganalisis 3 contoh program untuk bergerak sepanjang trajektori hitam yang digambarkan pada latar belakang rata dan terang:

· Satu sensor, dengan pengawal selia P.

· Satu sensor, dengan pengawal selia PC.

· Dua sensor.

Contoh 1. Satu sensor, dengan pengawal selia P.

Reka bentuk

Sensor cahaya dipasang pada rasuk yang terletak dengan mudah pada model.


Algoritma

Operasi algoritma adalah berdasarkan fakta bahawa, bergantung pada tahap pertindihan pancaran pencahayaan sensor dengan garis hitam, bacaan yang dikembalikan oleh sensor berbeza-beza secara beransur-ansur. Robot mengekalkan kedudukan sensor cahaya pada sempadan garis hitam. Dengan menukar data input daripada sensor cahaya, sistem kawalan menjana nilai untuk kelajuan pusingan robot.


Oleh kerana pada trajektori sebenar, sensor menjana nilai di seluruh julat operasinya (0-100), 50 dipilih sebagai nilai yang diusahakan oleh robot Dalam kes ini, nilai yang dihantar ke fungsi putaran dijana julat -50 - 50, tetapi nilai ini tidak mencukupi untuk membelok trajektori yang curam. Oleh itu, julat perlu dikembangkan satu setengah kali ganda kepada -75 - 75.

Akibatnya, dalam program ini, fungsi kalkulator adalah pengawal berkadar mudah. Fungsi yang ( (a-50)*1.5 ) dalam julat operasi sensor cahaya menjana nilai putaran mengikut graf:

Contoh bagaimana algoritma berfungsi

Contoh 2. Satu sensor, dengan pengawal selia PK.

Contoh ini adalah berdasarkan pembinaan yang sama.

Anda mungkin perasan bahawa dalam contoh sebelumnya robot itu bergoyang secara berlebihan, yang tidak membenarkannya memecut dengan cukup. Sekarang kita akan cuba memperbaiki keadaan ini sedikit.

Pada pengawal berkadar kami, kami juga menambah pengawal kiub ringkas, yang akan menambah sedikit lenturan pada fungsi pengawal. Ini akan mengurangkan hayunan robot berhampiran sempadan trajektori yang dikehendaki, serta membuat hentakan yang lebih kuat apabila jauh daripadanya.

Pengawal berkadar ialah peranti yang melakukan tindakan kawalan u(t) pada objek berkadaran dengan sisihan linearnya e(t) daripada keadaan tertentu x0(t);

e(t)=x0(t)-x(t), dengan x(t) ialah keadaan pada masa tertentu;

u(t)=ke(t), dengan k ialah faktor penguatan.
Iaitu, semakin jauh robot menyimpang dari kursus yang diberikan, semakin aktif motor mesti bekerja untuk meratakannya.

Pergerakan garisan dengan satu sensor cahaya menggunakan pengawal P

Pergerakan di sepanjang sempadan hitam dan putih juga boleh dibina pada P-regulator. Walaupun secara luaran masalah itu nampaknya hanya boleh diselesaikan dengan bantuan pengawal geganti, kerana sistem ini hanya mempunyai dua keadaan yang boleh dilihat oleh mata manusia: hitam dan putih. Tetapi robot melihat segala-galanya secara berbeza; untuk itu tiada sempadan yang tajam antara warna-warna ini. Kita boleh mengatakan bahawa dia rabun jauh dan melihat peralihan kecerunan warna kelabu.

Ini akan membantu membina pengawal selia P.
Mentakrifkan keadaan kerja sebagai bacaan daripada sensor cahaya, kita akan belajar untuk menggunakan kesan kawalan berkadar pada motor mengikut undang-undang berikut:
e=s1-kelabu, dengan s1 ialah bacaan sensor semasa, dan kelabu ialah nilai yang ditetapkan.

Pekali k (sama dengan dalam contoh ini 2) hendaklah cukup kecil (dari 1 hingga 3). Pengawal selia sedemikian hanya berfungsi dengan berkesan untuk sudut pesongan kecil, jadi robot mesti diletakkan ke arah pergerakan supaya sensor berada di sebelah kiri garis hitam. Adalah mudah untuk melihat bahawa pergerakan di sepanjang garisan pada P-regulator adalah lancar. dan dalam beberapa bidang kerja ia bergerak hampir secara linear atau tepat mengikut selekoh garisan.

Penentukuran sensor

Mari kita lihat nombor 48 yang digunakan dalam formula. Ini ialah purata aritmetik bacaan sensor cahaya pada hitam dan putih, contohnya (40+56)/2=48. Walau bagaimanapun, bacaan sensor sering berubah disebabkan oleh pelbagai alasan: permukaan yang berbeza, perubahan dalam pencahayaan keseluruhan di dalam bilik, sedikit pengubahsuaian reka bentuk, dsb. Oleh itu, kami akan menentukur robot secara manual dengan menentukan bacaan sensor cahaya pada putih dan hitam.

Pergerakan garisan dengan dua penderia cahaya menggunakan pengawal P
Agak sukar untuk menavigasi persimpangan dengan betul dengan satu sensor cahaya. Jika anda ingin melakukan ini pada kelajuan yang cukup tinggi, anda memerlukan sekurang-kurangnya dua penderia yang diletakkan pada jarak dua lebar garisan (atau lebih lebar).
Semasa memandu, empat keadaan sensor adalah mungkin:

  • kedua-duanya berwarna putih - bergerak lurus;
  • kiri (s1) bukan hitam, kanan (s2) putih - pergerakan ke kiri;
  • kiri pada putih, kanan pada hitam - pergerakan ke kanan;
  • kedua-duanya berwarna hitam - lurus ke hadapan.
Itu. dengan bacaan sensor yang sama (kedua-duanya putih atau kedua-duanya hitam), robot memandu lurus. Sebelum memulakan robot, kami akan menentukur secara automatik kedua-dua sensor. Kemudian algoritma untuk bergerak sepanjang garis dengan P-regulator akan kelihatan seperti ini:

Pekali k boleh berubah dalam julat yang agak luas (dari 1 hingga 20 atau lebih) bergantung pada kelengkungan garisan, kebolehgerakan robot dan perbezaan antara hitam dan putih di atas padang.
Syarat penting. Penentukuran automatik hendaklah dijalankan pada permukaan satu warna dan sebaik-baiknya pada pencahayaan yang akan menduduki bahagian terbesar laluan. Sebagai contoh, jika robot bergerak di sepanjang garis hitam pada medan putih, maka ia mesti ditentukur pada medan putih. Itu. Kedudukan robot pada permulaan hendaklah seperti ini:


Dan satu lagi nota. Terdapat sensor yang bacaannya berbeza sebanyak 10-20%. Adalah dinasihatkan untuk tidak memasangkannya dengan pengawal selia dengan pekali yang besar, kerana dengan perubahan mendadak dalam pencahayaan keseluruhan, walaupun pada medan putih seragam, penyimpangan mungkin berbeza, yang akan membawa kepada akibat yang tidak dijangka. Butiran Pengarang: Konovalov Igor     Pengawal berkadar adalah penambahbaikan. Kelemahan utama relay ialah ia tidak peduli bagaimana nilai semasa berbeza daripada nilai normal sensor. Ia hanya mempunyai dua keadaan - sama ada cuba meningkatkan nilai sensor dengan nombor tetap tertentu jika ia kurang daripada nilai normal, atau meningkatkannya. Oleh kerana itu, ayunan berlaku dengan amplitud malar, yang sangat tidak cekap.
    Adalah lebih logik untuk menentukan sejauh mana "jauh" bacaan semasa daripada normal, dan menukar amplitud bergantung pada ini. Untuk menjadikannya lebih jelas, mari kita lihat contoh. Contoh, seperti dalam artikel sebelumnya, adalah sama: robot dari Lego Mindstorms EV3 memandu sepanjang garis hitam menggunakan satu sensor warna dalam mod cahaya.

Robot cuba memandu di sepanjang sempadan antara putih dan hitam, dan di sana sensor menunjukkan kira-kira 50% daripada pencahayaan. Dan semakin jauh dari kedudukan biasa, semakin banyak usaha yang dilakukan oleh robot untuk kembali ke 50%.
    Untuk menulis program, kami akan menggunakan istilah "ralat" dan "tindakan kawalan". Ralat ialah perbezaan antara bacaan sensor semasa dan yang biasa. Dalam kes kami, jika robot kini melihat 20% daripada pencahayaan, maka ralatnya ialah 20-50 = -30%. Tanda ralat menunjukkan arah mana robot harus berpaling untuk menyingkirkan ralat. Sekarang kita mesti memberitahu motor arah mana robot harus berpusing, pada kelajuan dan seberapa tajam. Ia adalah perlu untuk memberikan kesan kawalan pada motor, yang bermaksud seberapa cepat ia harus kembali ke kedudukan normalnya. Tindakan kawalan (UP) dikira sebagai ralat (ralat) didarab dengan faktor kekadaran (k). Pekali ini digunakan untuk meningkatkan atau mengurangkan pengaruh ralat pada tindakan kawalan. Tindakan kawalan dibekalkan kepada kemudi, di mana kelajuan purata robot ditetapkan.
    Bagaimana untuk menyesuaikan faktor perkadaran? Pilih nilai secara eksperimen; untuk mengembara trajektori ia boleh, sebagai contoh, dari 0.2 hingga 1.5, bergantung pada kelajuan dan reka bentuk robot. Jika pekali terlalu besar, maka robot akan bergoyang banyak; jika ia kecil, ia akan memandu dengan lancar, tetapi pada satu ketika ia akan meluncur apabila berpusing kerana input kawalan yang tidak mencukupi. Mari kita tulis dua versi program - dengan pembolehubah (bagi mereka yang telah mempelajarinya) dan tanpa.


    Tetapi pengawal selia ini juga boleh diperkukuh dengan memperkenalkan komponen berkadar dan integral huraian akan ada dalam artikel berikut. Jumpa lagi!

Pengawal berkadar

Penerangan

Dalam kawalan automatik, tindakan kawalan u(t) biasanya merupakan fungsi ralat dinamik - sisihan e(t) pembolehubah terkawal x(t) daripada nilai setnya x0(t):

e(t) = x0(t) – x(t).

Ini ialah prinsip pengawalseliaan Polzunov-Watt melalui sisihan, atau prinsip maklum balas. Ungkapan matematik kebergantungan fungsi tindakan kawalan yang dikehendaki u0(t) pada kuantiti yang diukur oleh pengawal dipanggil undang-undang atau algoritma kawalan yang dibincangkan di atas.

Pengawal berkadar ialah peranti yang memberikan kesan kawalan pada objek mengikut kadar sisihan daripada keadaan tertentu:

Di sini k ialah keuntungan pengawal.

Keadaan yang diberikan x0 biasanya dipanggil titik set, dan sisihan daripadanya e dipanggil baki. Di bawah, untuk kepastian, kami akan menandakan baki dengan singkatan err (daripada perkataan Inggeris"ralat" - ralat).

Kawalan motor

Pahlawan yang berpengalaman tidak akan menghayunkan pedang seperti robot pada pengawal relay. Kita perlu menghasilkan algoritma yang akan memegang motor yang memegang pedang dalam kedudukan tetap (Gamb. 7.1). Pengawal selia P akan membantu dengan ini.

Biarkan e 1 - bacaan sensor kelajuan 1 pada motor A - menjadi pembolehubah boleh laras. Tetapan x0 = 45, dan baki e = 45 – e 1. Kemudian tindakan kawalan pada motor diberikan oleh formula

u = k ∙ (45 – e 1).

Di sini k ialah faktor keuntungan, contohnya 5, yang akan meningkatkan tindak balas motor walaupun dengan sisihan kecil dari titik set.

1 Jangan mengelirukan penetapan matematik baki e (daripada ralat) dengan bacaan pengekod e 1 (dari pengekod), pembolehubah persekitaran Robolab yang dipratentukan.

Sekiranya terdapat penyelewengan dalam sisi positif input kawalan negatif akan digunakan pada motor, dan sebaliknya. Kawalan ini boleh digunakan pada motor dalam kitaran dengan kelewatan singkat 1-10 ms untuk melegakan pengawal (Rajah 7.8).

nasi. 7.8. Algoritma kawalan motor menggunakan pengawal berkadar.

Jika faktor keuntungan dinaikkan daripada 5 kepada 100, pengawal berkadar kami akan mula bertindak seperti geganti, menyebabkan turun naik yang kuat disebabkan oleh kesan overshoot.

Bahasa RobotC tidak mempunyai notasi yang begitu mudah untuk bacaan pengekod seperti dalam Robolab, jadi program kelihatan lebih lama sedikit:

int k=5, u; nMotorEncoder=0; sementara (benar)

u=k*(45-nMotorEncoder); motor=u;

Selanjutnya, untuk menyampaikan "serangan pedang", cukup untuk mempunyai pembolehubah dan bukannya nombor 45 dan menukar nilainya dari luar, sebagai contoh, dari tugas selari. Ini diliputi dalam bahagian tentang pemain drum robot dalam Bab 8.

Sekarang mari kita bina pengawal selia yang mengawal bukan sahaja kedudukan statik motor, tetapi juga kelajuan pergerakannya. Mengikut logik algoritma, setpoint, yang sehingga kini adalah tetap dan tidak berubah, harus mula bergerak ke arah peningkatan atau penurunan. Mematuhi pengawal selia, motor pasti akan mengikutinya. Alat paling mudah untuk menambah nilai titik tetap secara berterusan ialah pemasa.

Pengawal NXT mempunyai empat pemasa terbina dalam, setiap satunya boleh mengukur masa dalam persepuluh, perseratus dan perseribu saat. Mari kita kuasai pemasa pertama, yang melaksanakan 10 "petua" sesaat.

kov". Dalam Robolab ia ditetapkan T1 atau Pemasa100ms1, dan dalam RobotC ia adalah pemasa100.

Mari kita buat sudut pesongan motor alfa, yang dinyatakan dalam contoh sebelumnya pada 45, bergantung pada bacaan pemasa dengan pekali pecutan k 2:

alfa = k2 ∙ T1.

Tindakan kawalan akan kekal sama dengan faktor amplifikasi k 1:

u = k 1 ∙ (alfa – e 1).

Secara ringkas, dalam program dalam bahasa Robolab, kami akan menggunakan tindakan kawalan terus ke motor, setelah memulakan pemasa sebelum ini

nasi. 7.9. Kawalan kelajuan motor adalah satu pusingan sesaat.

Pekali k 2 = 36 menentukan bahawa dalam sesaat nilai alfa meningkat kepada 360, yang sepadan dengan satu revolusi penuh enjin:

int k1=2, k2=36, u, alfa; nMotorEncoder=0; ClearTimer(T1); sementara (benar)

alpha=pemasa100*k2; u=k1*(alpha-nMotorEncoder); motor=u;

Menggunakan pembahagian integer, seperti yang diterima pakai dalam bahasa C (dan dalam Robolab) untuk pembolehubah jenis integer, adalah mungkin untuk mencapai perubahan diskret dalam sudut, i.e. menambahnya sekali sesaat:

alfa = T 1 / 10 ∙ k 2.

Dengan pekali k 2 = 60, pergerakan rasuk akan sepadan dengan pergerakan tangan kedua pada dail jam tangan. Tetapi itu tidak mencukupi

ketara. Untuk kejelasan, anda boleh menetapkan k2 = 30, maka anak panah akan membuat revolusi penuh dalam 12 "kutu" 30 darjah setiap satu. Berhati-hati dengan urutan pembahagian integer dan operasi pendaraban; mengubah susunan atau "mengurangkan" pasti akan mengubah keputusan (Rajah 7.10).

nasi. 7.10. Tiruan dipercepatkan pergerakan jarum jam.

Dan akhirnya, contoh pemain drum matematik. Daripada sentiasa bergerak ke hadapan, jarum akan berayun ke depan dan ke belakang di bawah kawalan pengawal selia P. Operasi pembahagian dengan baki, yang dalam C dilambangkan dengan tanda %, akan membantu dengan ini. Baki integer bukan negatif dibahagikan dengan 2 akan sentiasa menjadi 0 atau 1:

alfa = T 1% 2 ∙ k 2.

Meningkatkan sisihan sebanyak k 2 = 15 kali, kita memperoleh titik set berayun alfa, yang akan memaksa pengawal untuk menggerakkan motor 5 kali sesaat, sama ada 0º atau 15 darjah. Perubahan dalam program adalah kecil. Mari lihat contoh dalam RobotC:

int k1=3, k2=15, u, alfa; nMotorEncoder=0; ClearTimer(T1); sementara (benar)

alpha=pemasa100%2*k2; u=k1*(alpha-nMotorEncoder); motor=u;

Pemain dram prototaip ini memukul meja pada selang masa yang tetap. Perkara utama ialah bermula pada kedudukan yang betul. Menggunakan matematik integer, anda boleh menetapkan corak irama yang lebih kompleks, contohnya (Jadual 7.1):

alfa = T 1% 5% 2 ∙ k 2.

pusat = S3.

Pekali ditentukan dalam kitaran:

k 1 = c + (S 3 - tengah) / k 2.

nasi. 7.36. Pergerakan sepanjang garisan pada pengawal berkadar dengan pekali terapung.

Undang-undang kawalan keuntungan yang terhasil boleh digunakan bukan sahaja kepada komponen berkadar, tetapi juga kepada mana-mana komponen lain, serta kepada tindakan kawalan secara keseluruhan (Rajah 7.36).

Pengawal PID

Pengawal proportional-integral-derivative (PID) adalah salah satu yang paling popular dan digunakan dalam sebilangan besar peranti yang paling banyak jenis yang berbeza, yang memerlukan tindak balas pantas dan ketepatan kedudukan sistem. Seperti namanya, pengawal selia ini terdiri daripada jumlah tiga komponen dan digambarkan secara grafik dalam Rajah. 7.37.

nasi. 7.37. litar pengawal PID.

Ini adalah gambar rajah yang dipermudahkan. Nilai ralat dinamik e (t) dibekalkan kepada input pengawal, dan tindakan kawalan u (t) dijana pada output:

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

e (τ)d τ + k d ∙

de.

Komponen berkadar, ditunjukkan dalam rajah sebagai segi tiga, bertanggungjawab untuk meletakkan sistem dalam keadaan tertentu. Dalam sesetengah kes, ia boleh menyebabkan overshoot dengan ayunan diri yang seterusnya. Iaitu, P-regulator mungkin "berlebihan" dan robot akan mula hanyut dari sisi ke sisi.

Komponen integral mengumpul pengalaman negatif (menjumlahkan kesilapan) dan menghasilkan kesan pampasan. Dengan sisihan minimum, komponen berkadar "melemah" dan komponen kamiran, disebabkan peningkatan pesatnya melalui penjumlahan, membantu "mencapai" nilai terkawal ke titik set.

Komponen pembezaan (komponen D) memantau kadar perubahan dalam keadaan sistem dan menghalang kemungkinan overshoot. Dalam sesetengah kes, komponen D adalah bertentangan dalam tanda dengan yang berkadar, dan dalam yang lain ia bertepatan.

Kita sudah biasa dengan komponen berkadar, yang berbeza diterangkan dalam bab 6 sebelumnya. Mari kita ambil bahagian integral. Komponen ini ditentukan secara dinamik, dijumlahkan dengan nilai sebelumnya:

i = i + ki × e(t) × dt.

Maksud fizikal kuantiti e(t) × dt ialah ia adalah

berkadar dengan tempoh sistem berada dalam keadaan ralat. Oleh kerana pekali k i dikeluarkan daripada kurungan, kita boleh bercakap tentang nilai i sebagai jumlah tempoh ralat. Oleh itu, kita mencari kamiran dengan penjumlahan.

Mari kita pertimbangkan penggunaan pengawal PID menggunakan contoh pengimbangan robot pada dua roda. Masalah klasik ini boleh diselesaikan menggunakan penderia yang berbeza dalam pelbagai cara. Dalam contoh yang dicadangkan, sensor cahaya digunakan dan bentuk paling ringkas Pengawal PID. Walau bagaimanapun, untuk mencapai penstabilan robot memerlukan penggunaan bacaan sensor yang lebih tepat.

Format RAW

Data sensor memasuki pengawal NXT dalam bentuk mentah yang belum diproses. Semua sensor menghantar sistem operasi nilai digital dari 0 hingga 1023, yang kemudiannya diproses oleh pemacu yang sepadan dan dikurangkan kepada bentuk yang lebih mudah difahami (jarak 0...255, pencahayaan 0...100, sentuh 0 atau 1, dsb.). Tetapi data boleh diterima secara langsung, memintas pemandu. Format mentah ini biasanya dipanggil RAW (dari bahasa Inggeris "raw"). Dalam sesetengah kes, ia boleh digunakan untuk mencapai ketepatan yang lebih tinggi. Sebagai contoh, julat nilai sensor cahaya boleh meningkat lebih kurang 10 kali ganda. Peluang inilah yang digunakan lebih jauh.

Anda boleh menerima data dalam format RAW dalam kedua-dua Robolab dan RobotC. Untuk melakukan ini, sensor dimulakan dengan sewajarnya, dan data dibaca daripadanya menggunakan pembolehubah khas yang dipratentukan.

Robot pengimbang

Reka bentuk robot Segway ditunjukkan dalam Rajah. 7.38: pengawal kedudukan menegak, roda diletakkan rapat dan penderia cahaya menghadap ke bawah. Algoritma akan menjadi lebih rumit.

Prinsip menstabilkan Segway dalam kedudukan seimbang adalah seperti berikut. Jika robot condong ke hadapan, bacaan pada sensor cahaya meningkat disebabkan oleh cahaya yang dipantulkan. Sebagai tindak balas kepada ini, tindakan kawalan dijana, memaksa robot untuk bergerak ke hadapan dan dengan itu sekali lagi mengambil kedudukan menegak.

Apabila bergerak ke belakang, bacaan sensor berkurangan dan robot mula bergerak ke belakang. Komponen berkadar bertanggungjawab untuk semua ini. Peranan komponen integral dan pembezaan dimainkan oleh insurans terhadap overshoot.

nasi. 7.38. Mengimbangi robot Segway.

Dalam Rajah. 7.39 menunjukkan algoritma dalam Robolab. Kebanyakannya diduduki oleh permulaan pembolehubah. Untuk meningkatkan ketepatan, bukan sahaja data sensor dibaca dalam format RAW, tetapi kebanyakan pembolehubah diisytiharkan dalam format apungan sebenar. Algoritma PID itu sendiri berada dalam gelung.

nasi. 7.39. Algoritma pengimbang adalah berdasarkan pengawal PID.

Mengikuti tradisi bergerak sepanjang garisan, kami menggunakan pembolehubah kelabu sebagai titik tetap - bacaan purata sensor cahaya dalam kedudukan keseimbangan. Parameter skala baharu menentukan penskalaan tindakan kawalan. Ini pada asasnya merupakan faktor pengecilan kerana nilai yang dihasilkan oleh pengawal selia terlalu tinggi untuk motor NXT. Ia mungkin untuk menambahnya di dalam pekali sedia ada, tetapi untuk RobotC parameter ini akan berbeza, tetapi pekali akan sama.

Dengan pekali yang diberikan, robot itu stabil dengan baik pada linoleum atau meja kosong berwarna terang. Maksudnya, dia tidak perlu warna putih permukaan. Untuk melancarkan, anda perlu menetapkan Segway dengan tepat kepada kedudukan keseimbangan. Jika robot bermula dengan sedikit condong ke hadapan atau ke belakang, ia akan serta-merta mula bergerak ke arah condong.

Contoh yang sama dalam RobotC sedikit berbeza atas beberapa sebab. Pertama, prestasi NXT dengan perisian tegar persekitaran ini adalah kira-kira 1.4 kali lebih tinggi daripada Robolab, jadi faktor skala perlu ditingkatkan. Kedua, nilai RAW dipindahkan ke mengikut susunan yang betul dan anda perlu menetapkan motor untuk terbalik atau hanya menggunakan tindakan kawalan negatif:

int grey=SensorRaw; int err, errold=0;

apungan kp=25, ki=350, kd=0.3; skala apungan=14;

apungan dt=0.001; apungkan p, i=0, d, u; manakala (benar)

err= grey-SensorRaw; //Sisihan dengan tanda bertentangan p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; err=err; u=(p+i+d)/skala; motor=u; motor=u; tunggu1Msec(1);

Elemen teori kawalan automatik di sekolah1

Tugas metodologi yang penting dan menarik ialah "membuang jambatan" antara bidang pengetahuan pakar dan pelajar, membantu pelajar sekolah melihat prospek kepakaran masa depan, i.e. menjalankan bimbingan kerjaya, dan pelajar melihat kebolehgunaan praktikal mereka pengetahuan profesional. Untuk mencapai kesan yang sama, kaedah untuk mengira pengawal selia telah dibangunkan menggunakan alat matematik yang tidak melampaui program sekolah dalam matematik dan fizik. Khususnya, bukannya persamaan pembezaan perbezaan telah digunakan, yang sesuai dengan sifat diskret interaksi antara objek dan pengawal dalam kawalan komputer.

Mari kita pertimbangkan, sebagai contoh, masalah membina pengawal berkadar (P) dan terbitan berkadar (PD) dalam masalah mengawal pergerakan robot mudah alih di sepanjang dinding. Mari kita nyatakan dengan x t jarak antara robot dan dinding, dengan θt - sudut tajuk robot, dan dengan u t - tindakan kawalan pada masa ini dengan nombor siri t, masing-masing, di mana t = 0, 1, 2, ... - bilangan detik perubahan

renium. Adalah dipercayai bahawa tinjauan penderia dan perubahan dalam magnitud tindakan kawalan dijalankan pada selang masa yang sama h. Untuk tugas kawalan robot Lego NXT, adalah wajar untuk menganggap bahawa tindakan kawalan adalah perbezaannya halaju sudut putaran roda, berkadar dengan kadar perubahan sudut tajuk:

Dengan mengandaikan bahawa sisihan kursus daripada nominal θt =0 adalah kecil, dan kelajuan purata robot adalah malar: vt=v , dinamik perubahan dalam pembolehubah keadaan robot boleh diterangkan kepada anggaran pertama. persamaan linear menyatakan:

di mana g = h2vr / b.

Mari kita tetapkan jarak yang diingini ke dinding x*> 0 dan tentukan matlamat kawalan (CT) dengan hubungan

xt → x* sebagai t→∞.

Sekarang marilah kita secara semula jadi memperkenalkan pada tahap substantif konsep kestabilan asimptotik sebagai sifat penyelesaian kepada sistem (4), memastikan pencapaian nilai sasaran (5) di bawah sebarang keadaan awal yang berbeza sedikit daripada sasaran. Adalah mudah untuk melihat bahawa untuk u t = 0, penyelesaian kepada persamaan (4) ialah sebarang nilai malar x t = x*. Tetapi kerana persamaan (4), sepadan dengan model penyepadu berganda (penambah berganda), tidak mempunyai sifat kestabilan asimptotik, pusat kawalan (5) di pengurusan berterusan tidak tercapai. Ini mudah ditunjukkan secara analitik dengan merumuskan beberapa



 


Baca:



Perakaunan untuk penyelesaian dengan belanjawan

Perakaunan untuk penyelesaian dengan belanjawan

Akaun 68 dalam perakaunan berfungsi untuk mengumpul maklumat mengenai pembayaran mandatori kepada belanjawan, ditolak kedua-duanya dengan mengorbankan perusahaan dan...

Kek keju dari keju kotej dalam kuali - resipi klasik untuk kek keju gebu Kek keju dari 500 g keju kotej

Kek keju dari keju kotej dalam kuali - resipi klasik untuk kek keju gebu Kek keju dari 500 g keju kotej

Bahan-bahan: (4 hidangan) 500 gr. keju kotej 1/2 cawan tepung 1 telur 3 sudu besar. l. gula 50 gr. kismis (pilihan) secubit garam baking soda...

Salad mutiara hitam dengan prun Salad mutiara hitam dengan prun

salad

Hari yang baik kepada semua mereka yang berusaha untuk variasi dalam diet harian mereka. Jika anda bosan dengan hidangan yang membosankan dan ingin menyenangkan...

Lecho dengan resipi pes tomato

Lecho dengan resipi pes tomato

Lecho yang sangat lazat dengan pes tomato, seperti lecho Bulgaria, disediakan untuk musim sejuk. Beginilah cara kami memproses (dan makan!) 1 beg lada dalam keluarga kami. Dan siapa yang akan saya...

imej suapan RSS