Pertandingan robot antarabangsa - Peraturan - Contoh robot - Robot trajektori berdasarkan LEGO EV3. Pengawal PID Pembezaan Integral Berkadar dalam Robotik Lego Mindstorms. Pengawal berkadar Contoh cara algoritma berfungsi

Plaster

Salah satu pergerakan asas dalam pembinaan ringan adalah mengikut garis hitam.

Teori am dan contoh khusus Penciptaan program diterangkan di laman web wroboto.ru

Saya akan menerangkan cara kami melaksanakan ini dalam persekitaran EV3, kerana terdapat perbezaan.

Perkara pertama yang robot perlu tahu ialah maksud "titik ideal" yang terletak di sempadan hitam dan putih.

Lokasi titik merah dalam rajah sepadan dengan tepat dengan kedudukan ini.

Pilihan pengiraan yang ideal adalah untuk mengukur nilai hitam dan putih dan mengambil purata aritmetik.

Anda boleh melakukan ini secara manual. Tetapi kelemahannya dapat dilihat dengan serta-merta: walaupun dalam tempoh yang singkat, pencahayaan mungkin berubah, dan nilai yang dikira akan menjadi tidak betul.

Jadi, anda boleh mendapatkan robot untuk melakukannya.

Semasa eksperimen, kami mendapati bahawa tidak perlu mengukur kedua-dua hitam dan putih. Hanya putih boleh diukur. Dan nilai titik ideal dikira sebagai nilai putih dibahagikan dengan 1.2 (1.15), bergantung pada lebar garis hitam dan kelajuan robot.

Nilai yang dikira mesti ditulis kepada pembolehubah untuk mengaksesnya kemudian.

Pengiraan "titik ideal"

Parameter seterusnya yang terlibat dalam pergerakan ialah pekali putaran. Semakin besar, semakin tajam robot bertindak balas terhadap perubahan dalam pencahayaan. Tetapi terlalu banyak sangat penting akan menyebabkan robot bergoyang-goyang. Nilai dipilih secara eksperimen secara individu untuk setiap reka bentuk robot.

Parameter terakhir ialah kuasa asas motor. Ia menjejaskan kelajuan robot. Meningkatkan kelajuan pergerakan membawa kepada peningkatan dalam masa tindak balas robot kepada perubahan pencahayaan, yang boleh membawa kepada penyingkiran dari trajektori. Nilai juga dipilih secara eksperimen.

Untuk kemudahan, parameter ini juga boleh ditulis ke dalam pembolehubah.

Nisbah Pusingan dan Kuasa Asas

Logik bergerak di sepanjang garis hitam adalah seperti berikut: sisihan dari titik ideal diukur. Semakin besar, semakin kuat robot itu harus berusaha untuk kembali kepadanya.

Untuk melakukan ini, kami mengira dua nombor - nilai kuasa setiap motor B dan C secara berasingan.

Dalam bentuk formula ia kelihatan seperti ini:

Di mana Isens ialah nilai bacaan sensor cahaya.

Akhir sekali, pelaksanaan dalam EV3. Ia adalah paling mudah untuk mengaturnya dalam bentuk blok berasingan.

Pelaksanaan algoritma

Ini betul-betul algoritma yang telah dilaksanakan dalam robot untuk kategori pertengahan WRO 2015

Masalah ini adalah 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. Sensor cahaya ini tidak seperti yang lain cara yang paling baik sesuai untuk tugas kita; apabila bekerja dengan mereka, kita tidak perlu risau tentang keamatan cahaya sekeliling. Untuk sensor ini, dalam program kami akan menggunakan mod cahaya yang dipantulkan, di mana jumlah cahaya yang dipantulkan daripada 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

Penderia 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.


Memandangkan pada trajektori sebenar, sensor menjana nilai sepanjang julat operasi keseluruhannya (0-100), 50 dipilih sebagai nilai yang diusahakan oleh robot. Dalam kes ini, nilai yang dihantar ke fungsi putaran dijana dalam 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.

Robotik ialah bidang baharu yang menarik yang mungkin akan dikembangkan lagi dalam kursus sains komputer dan teknologi sekolah. 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 dalam penyemak imbas 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; kawalan berkadar digunakan untuknya. 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 sensor jarak, robot boleh diprogramkan untuk menavigasi secara automatik labirin yang diketahui bentuknya tetapi saiznya tidak diketahui.

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 itu cuba memandu di sepanjang sempadan antara putih dan hitam, dan di sana penderia 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 betapa tajamnya ia harus kembali kedudukan biasa. Tindakan kawalan (UP) dikira sebagai ralat (ralat) didarab dengan faktor kekadaran (k). Pekali ini digunakan untuk meningkatkan atau mengurangkan pengaruh ralat pada tindakan kawalan. Input kawalan dihantar ke stereng, 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 membelok 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; penerangan 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. Dalam perkara berikut, untuk kepastian, kita 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.

Apabila melencong ke arah positif, tindakan 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 dengan pedang", cukup untuk mempunyai pembolehubah 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.

Sudut pesongan motor alfa, dinyatakan dalam contoh sebelumnya nilai 45, mari kita bergantung pada bacaan pemasa dengan faktor 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 satu saat 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, kemudian anak panah akan membuat revolusi penuh dalam 12 "kutu" 30 darjah setiap satu. Berhati-hati dengan urutan pembahagian integer dan operasi pendaraban; menukar susunan atau "mengurangkan" pasti akan mengubah keputusan (Rajah 7.10).

nasi. 7.10. Tiruan dipercepatkan pergerakan jarum jam.

Dan akhirnya, contoh pemain drum matematik. Sebaliknya pergerakan berterusan ke hadapan anak panah 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 pada komponen berkadar, tetapi juga kepada mana-mana komponen lain, dan juga 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 nilai digital dari 0 hingga 1023 ke sistem pengendalian, 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, dan lain-lain.). 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 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 kecondongan.

Contoh serupa dalam RobotC sedikit berbeza atas beberapa sebab. Pertama, prestasi NXT dengan perisian tegar persekitaran ini adalah lebih kurang 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; errold=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 pengetahuan profesional mereka. 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 kawalan gerakan robot mudah alih 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 saat s nombor siri t , masing-masing, dengan t = 0, 1, 2, … - bilangan momen 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:

Memandangkan sisihan kursus daripada nominal θt =0 kecil, dan kelajuan purata pemalar robot: 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 peringkat 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) tidak dicapai dengan kawalan berterusan. Ini mudah ditunjukkan secara analitik dengan merumuskan beberapa