Lego ev3 proportsional integral differentsial regulyator. Xalqaro robotlar tanlovi - Qoidalar - Robotga misollar - LEGO EV3 Trajectory Robot

Robototexnika qiziqarli yangi yo'nalish bo'lib, u maktabda informatika va texnologiya kurslari doirasida yanada rivojlanadi. Robototexnikadagi bum ko‘p jihatdan “Nega biz, aslida, dasturlashni o‘rganyapmiz?” degan savolga javob berishga imkon berishi bilan bog‘liq. Bundan tashqari, robototexnika kursida siz nazariyaning elementar tushunchalari bilan tanishishingiz mumkin avtomatik boshqaruv.

Ushbu sahifada muallif tomonidan ishlab chiqilgan dasturlash simulyatorlari va Arduino platalari taqdim etilgan. Ba'zi sabablarga ko'ra haqiqiy uskunadan foydalanish mumkin bo'lmagan hollarda ular yordam berishi mumkin.

Simulyatorlar HTML5 imkoniyatlaridan foydalanadi, shuning uchun ular faqat zamonaviy brauzerlarda ishlaydi (foydalanish eng yaxshisidir) Gugl xrom yoki Mozilla Firefox).

Yangiliklar Endi Telegram kanalida ham

2015 yil 27 noyabr
Simulyatorlarga "embrion" treki qo'shildi ( M.V. Lazarev, Orexovo-Zuevo).

2015 yil 13 oktyabr
Endi siz treklaringizni (robot maydonlarini) LEGO Robot Simulators-ga yuklashingiz mumkin. Buni qanday qilish kerak? Qarang.
Yangi simulyatorlar qo'shildi - ikki, uch, to'rtta yorug'lik datchikli LEGO robotlari.

Robot boshqaruv tili

Simulyatorlarda robotlarni boshqarish uchun ishchi nomini olgan oddiy dasturlash tili qo'llaniladi SiRoP (Oddiy robot dasturlash).

Yorug'lik sensori bilan robot boshqaruvi

Yorug'lik sensori robotga stol yuzasida o'zini yo'naltirish imkonini beradi, masalan, oq va qora joylar orasidagi chegara bo'ylab (qora chiziqning chetida) harakat qilish imkonini beradi. Fotodiod sirtni yoritadi, fotodetektor aks ettirilgan nurlarni "ushlaydi" va ularning intensivligini o'lchaydi.

Ushbu turdagi eng mashhur vazifa chiziqqa amal qilishdir. Simulyatordan foydalanib, siz turli xil nazorat qonunlarini o'rganishingiz mumkin - o'rni, proportsional va hatto PID nazorati (proportsional-integral-differensial).

Yorug'lik sensori bo'lgan robot uchun dasturlarga misollar

1 (agar sensor> 128 bo'lsa (dvigatel = 100 dvigatel = 0), aks holda (motor = 0 motor = 100) kuting (10))

KP = 0,2 esa 1 (u = kP * (sensor-128) vosita = 50 + u vosita = 50 - u kutish (20))

Asosiy (1 (sensor> 128 (dvigatel = 100 motor = 100 kutish (10)) orqaga () burilishga ())) orqaga (motor = -100 motor = -100 kutish (260)) burilish (motor = -50) vosita = 50 kutish (50))

Ikkita yorug'lik sensori bilan robot boshqaruvi

Ikkita yorug'lik datchiklari robotga yaxshi navigatsiya qilish va nozik chiziq bo'ylab harakat qilish imkonini beradi. Ular bir oz oldinga tortiladi va bir-biridan tarqaladi. Bitta sensorli vazifalarga kelsak, ushbu simulyator turli nazorat qonunlarini o'rganish uchun ishlatilishi mumkin.

Uchta yorug'lik sensori bo'lgan robot uchun dasturlarga misollar

To'rtta yorug'lik sensori bilan robot boshqaruvi

To'rtta yorug'lik sensori robotga qattiq burilishlarni yaxshiroq aniqlash imkonini beradi. Ichki sensorlar nozik sozlash uchun ishlatiladi, ular uchun proportsional nazorat qo'llaniladi. Ikki tashqi sensor bir oz oldinga olib, bir-biridan tarqaldi. Ular keskin burilish sodir bo'lganda ishlatiladi. Tashqi juftlik sensorlarining o'qishlariga ko'ra nazorat qilish uchun daromad ichki juftlikka qaraganda ko'proq tanlanadi (qarang. L.Yu. Ovsyanitskaya va boshqalar, Lego Mindstorms EV3 robotining chiziq bo'ylab harakatlanishi uchun algoritmlar va dasturlar., M .: "Pero", 2015).

To'rtta yorug'lik sensori bo'lgan robot uchun dasturlarga misollar

1 (d0 = enkoder> 128 d1 = enkoder> 128 d2 = kodlovchi> 128 d3 = kodlovchi> 128, agar d1 &! D2 bo'lsa (motor = 100 motor = 0) bo'lsa! D1 & d2 (dvigatel = 0 motor = 100) bo'lsa d1 == d2 (dvigatel = 100 motor = 100) agar d0 &! d3 (dvigatel = 30 motor = 0) bo'lsa! d0 & d3 (motor = 0 motor = 30) kuting (10))

K1 = 0,2 k2 = 0,4 esa 1 (u1 = sensor - sensor u2 = sensor - sensor vosita = 50 + k1 * u1 + k2 * u2 vosita = 50-k1 * u1-k2 * u2 kutish (10))

Robotni masofa sensori (sonar) bilan boshqarish

Masofa sensori (sonar) robot harakatlanayotganda eng yaqin to'siqgacha bo'lgan masofani aniqlash imkonini beradi. U ultratovush signalini chiqaradi va aks ettirilgan signalni oladi. O'tkazilgan va qabul qilingan signallar orasidagi vaqt qancha ko'p bo'lsa, masofa shunchalik katta bo'ladi.

Masofa sensori yordamida robotni shakli ma'lum, ammo o'lchamlari noma'lum bo'lgan labirintni avtomatik ravishda bosib o'tish uchun dasturlash mumkin.

Proportsional boshqaruvchi

Tavsif

Avtomatik boshqarishda u (t) boshqaruv harakati odatda dinamik xatoning funksiyasi - boshqariladigan o'zgaruvchining e (t) x (t) belgilangan qiymatidan x0 (t) og'ishi:

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

Bu chetlanishni tartibga solishning Polzunov-Vatt printsipi yoki teskari aloqa printsipi. Istalgan boshqaruv harakati u0 (t) ning boshqaruvchi tomonidan o'lchanadigan qiymatlarga funktsional bog'liqligining matematik ifodasi qonun yoki yuqorida aytib o'tilgan boshqaruv algoritmi deb ataladi.

Proportsional kontroller - bu ob'ektga uning ma'lum bir holatdan og'ishiga mutanosib ravishda boshqaruv ta'sirini ko'rsatadigan qurilma:

Bu erda k - kontrollerning daromadi.

Berilgan x0 holati odatda belgilangan nuqta deb ataladi va undan chetlanish e qoldiq deb ataladi. Keyinchalik aniqlik uchun qoldiqni err (dan) qisqartmasi bilan belgilaymiz. inglizcha so'z"Xato" - xato).

Dvigatelni boshqarish

Tajribali jangchi, robot o'rni boshqaruvchisida qilganidek, qilichni silkitmaydi. Qilichni ushlab turgan dvigatelni qat'iy belgilangan holatda ushlab turadigan algoritmni ishlab chiqish kerak (7.1-rasm). Bunga P-kontroller yordam beradi.

E 1 - A motoridagi tezlik sensori 1 ko'rsatkichlari - boshqariladigan qiymat bo'lsin. Sozlama x0 = 45, qoldiq esa e = 45 - e 1. Keyin dvigatelda boshqaruv harakati formula bilan beriladi.

u = k ∙ (45 - e 1).

Bu erda k - daromad, masalan, 5, u belgilangan nuqtadan kichik og'ishlarda ham dvigatelning javobini kuchaytiradi.

1 Qoldiq e ning matematik belgilanishini (xatodan) kodlovchi e 1 (koderdan), oldindan belgilangan Robolab muhit o'zgaruvchisining o'qishlari bilan aralashtirib yubormang.

Siz ichkariga kirsangiz ijobiy tomoni motorga salbiy nazorat qo'llaniladi va aksincha. Ushbu boshqaruv boshqaruvchini tushirish uchun 1-10 ms kichik kechikish bilan pastadirda dvigatelga qo'llanilishi mumkin (7.8-rasm).

Guruch. 7.8. Proportsional kontrollerda motorni boshqarish algoritmi.

Agar daromad koeffitsienti 5 dan 100 gacha oshirilsa, bizning proportsional regulyatorimiz o'tish effektining paydo bo'lishi sababli katta tebranishlarni keltirib chiqaradigan o'rni sifatida ishlay boshlaydi.

RobotC tilida enkoder o'qishlari uchun Robolab-dagi kabi qulay belgi yo'q, shuning uchun dastur biroz uzoqroq ko'rinadi:

int k = 5, u; nMotorEncoder = 0; esa (to'g'ri)

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

Bundan tashqari, qilich bilan urish uchun 45 raqami o'rniga o'zgaruvchiga ega bo'lish, uning qiymatini tashqaridan, masalan, parallel topshiriqdan o'zgartirish kifoya. Bu 8-bobdagi robot barabanchilar bo'limida yoritilgan.

Endi dvigatelning statik holatini emas, balki uning harakat tezligini ham boshqaradigan regulyatorni quramiz. Algoritm mantig'iga ko'ra, hozirgacha doimiy bo'lgan va o'zgarmagan belgilangan nuqta o'sish yoki pasayish yo'nalishi bo'yicha harakat qilishni boshlashi kerak. Regulyatorga bo'ysungan holda, vosita muqarrar ravishda unga ergashadi. Belgilangan qiymatni doimiy ravishda oshirish uchun eng oddiy vosita taymerdir.

NXT kontrollerida to'rtta o'rnatilgan taymer mavjud bo'lib, ularning har biri vaqtni soniyaning o'ndan, yuzdan va mingdan bir qismi bilan o'lchashi mumkin. Keling, birinchi taymerni o'zlashtiraylik, u 10 "ti-

kov ". Robolabda u T1 yoki Timer100ms1 deb belgilanadi, RobotCda esa timer100.

Oldingi misolda 45 qiymatida berilgan dvigatelning burilish burchagi alfa koeffitsienti k 2 bo'lgan taymerning ko'rsatkichlariga bog'liq bo'ladi:

alfa = k2 ∙ T1.

Boshqarish harakati k 1 kuchaytirish koeffitsienti bilan bir xil bo'lib qoladi:

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

Qisqacha aytganda, Robolab dasturida biz taymerni ishga tushirgandan so'ng, biz darhol dvigatelga boshqaruv harakatini qo'llaymiz.

Guruch. 7.9. Dvigatel tezligini nazorat qilish - soniyada bir aylanish.

K 2 = 36 koeffitsienti bir soniyada alfa rampalarining qiymati 360 gacha bo'lishini aniqlaydi, bu dvigatelning bir to'liq aylanishiga to'g'ri keladi:

int k1 = 2, k2 = 36, u, alfa; nMotorEncoder = 0; ClearTimer (T1); esa (to'g'ri)

alfa = taymer100 * k2; u = k1 * (alfa-nMotorEncoder); motor = u;

Butun son tipidagi o'zgaruvchilar uchun C tilida (va Robolabda) qabul qilingan butun son bo'linmasidan foydalanib, burchakning diskret o'zgarishiga erishish mumkin, ya'ni. soniyada bir marta oshirish:

alfa = T 1/10 ∙ k 2.

K 2 = 60 koeffitsienti bilan nurning harakati soat kadrida ikkinchi qo'lning harakatiga mos keladi. Lekin bu yetarli emas

sezilarli. Aniqlik uchun siz k2 = 30 ni o'rnatishingiz mumkin, keyin o'q har biri 30 graduslik 12 ta "shomil" da to'liq inqilobni amalga oshiradi. Butun sonlarni bo'lish va ko'paytirish operatsiyalari ketma-ketligiga ehtiyot bo'ling, ularning tartibini o'zgartirish yoki "kamaytirish" natijani albatta o'zgartiradi (7.10-rasm).

Guruch. 7.10. Soat qo'lining harakatini tezlashtirilgan taqlid qilish.

Va nihoyat, matematik barabanchining misoli. Doimiy ravishda oldinga siljish o'rniga, o'q P-kontroller nazorati ostida oldinga va orqaga tebranadi. Bunda C da % belgisi bilan belgilangan qolgan bo'linish yordam beradi. Manfiy bo'lmagan butun sonni 2 ga bo'lishning qolgan qismi har doim 0 yoki 1 bo'ladi:

alfa = T 1% 2 ∙ k 2.

Burilishni k 2 = 15 marta kuchaytirib, biz o'zgaruvchan to'siq alfa qiymatini olamiz, bu regulyatorni motorni sekundiga 5 marta, navbat bilan 0º, keyin 15 daraja harakatlantirishga majbur qiladi. Dasturdagi o'zgarishlar unchalik katta emas. Keling, RobotC-dagi misolni ko'rib chiqaylik:

int k1 = 3, k2 = 15, u, alfa; nMotorEncoder = 0; ClearTimer (T1); esa (to'g'ri)

alfa = taymer100% 2 * k2; u = k1 * (alfa-nMotorEncoder); motor = u;

Ushbu prototip barabanchi muntazam ravishda stolga uriladi. Asosiysi, to'g'ri pozitsiyadan boshlash. Butun sonlar matematikasidan foydalanib, siz murakkabroq ritmik naqshni o'rnatishingiz mumkin, masalan (7.1-jadval):

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

markaz = S3.

Koeffitsient tsiklda aniqlanadi:

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

Guruch. 7.36. Proportsional suzuvchi faktorli kontrollerda chiziq harakati.

Olingan yutuqni nazorat qilish qonuni nafaqat proporsional komponentga, balki boshqa har qanday boshqasiga ham, shuningdek, umuman olganda boshqarish harakati uchun ham qo'llanilishi mumkin (7.36-rasm).

PID boshqaruvchisi

Proportsional-integral lotin (PID) boshqaruvchisi eng mashhurlaridan biri bo'lib, u erda qo'llaniladi. katta miqdor eng ko'p qurilmalar turli xil turlari tizimning sezgirligi va joylashish aniqligini talab qiladi. Nomidan ko'rinib turibdiki, ushbu regulyator uchta komponentning yig'indisidan iborat bo'lib, rasmda grafik tarzda tasvirlangan. 7.37.

Guruch. 7.37. PID boshqaruvchi sxemasi.

Bu soddalashtirilgan diagramma. Dinamik xatoning qiymati e (t) boshqaruvchi kirishiga beriladi va chiqishda u (t) boshqaruv harakati hosil bo'ladi:

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

e (t) d t + k d ∙

de.

Diagrammada uchburchak shaklida ko'rsatilgan proportsional komponent tizimni ma'lum bir holatda joylashtirish uchun javobgardir. Ba'zi hollarda, bu keyingi o'z-o'zidan tebranishlar bilan haddan tashqari oshib ketishiga olib kelishi mumkin. Ya'ni, P-kontroller "ortiqcha o'tishi" mumkin va robot u yoqdan-bu yoqqa harakat qila boshlaydi.

Integral komponent salbiy tajribani to'playdi (xatolarni umumlashtiradi) va kompensatsiya effektini rivojlantiradi. Minimal og'ishlar bilan proportsional komponent "zaiflashadi" va integral yig'indisi orqali tez o'sishi tufayli boshqariladigan qiymatni belgilangan nuqtaga "tortib olish" ga yordam beradi.

Differensial komponent (D-komponent) tizim holatining o'zgarish tezligini kuzatib boradi va mumkin bo'lgan oshib ketishining oldini oladi. Ba'zi hollarda D-komponent ishorasi bo'yicha proportsionalga qarama-qarshi, ba'zilarida esa mos keladi.

Biz proportsional komponent bilan allaqachon tanishmiz, differensial oldingi bobda tasvirlangan 6. Keling, integralni olaylik. Ushbu komponent oldingi qiymatga qo'shib, dinamik ravishda aniqlanadi:

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

e (t) × dt miqdorining fizik ma'nosi shundaki

tizim xato holatida bo'lgan vaqt uzunligiga proportsional. Qavslar ichidan k i koeffitsienti olinganligi sababli, i qiymati haqida xatolik davomiyliklarining yig'indisi sifatida gapirish mumkin. Shunday qilib, biz integralni yig'indisi orqali topamiz.

Keling, ikkita g'ildirakda muvozanatlashuvchi robot misolida PID kontrollerning qo'llanilishini ko'rib chiqaylik. Ushbu klassik muammoni turli xil sensorlar yordamida turli yo'llar bilan hal qilish mumkin. Taklif etilgan misolda yorug'lik sensori va PID kontrollerning eng oddiy shakli ishlatiladi. Biroq, robotning barqarorlashuviga erishish uchun sensorning aniqroq ko'rsatkichlaridan foydalanish kerak bo'ladi.

RAW formati

Sensor ma'lumotlari NXT kontrolleriga xom, xom shaklda yuboriladi. Barcha sensorlar uzatadi operatsion tizim 0 dan 1023 gacha bo'lgan raqamli qiymat, keyinchalik tegishli drayver tomonidan qayta ishlanadi va tushunarliroq shaklga tushiriladi (masofa 0 ... 255, yorug'lik 0 ... 100, 0 yoki 1 ga teging va hokazo). Ammo ma'lumotlar haydovchini chetlab o'tib, to'g'ridan-to'g'ri olinishi mumkin. Ushbu xom format odatda RAW (inglizcha "raw" dan) deb ataladi. Ba'zi hollarda undan kattaroq aniqlik olish uchun foydalanish mumkin. Masalan, yorug'lik sensori qiymatlari diapazoni taxminan 10 baravar oshishi mumkin. Keyinchalik bu imkoniyatdan foydalaniladi.

Robolab ham, RobotC ham RAW ma'lumotlarini qabul qilishi mumkin. Buning uchun sensor mos ravishda ishga tushiriladi va undan maxsus oldindan belgilangan o'zgaruvchi yordamida ma'lumotlar o'qiladi.

Balanslash roboti

Segway robotining dizayni rasmda ko'rsatilgan. 7.38: Vertikal joylashtirilgan boshqaruvchi, bir-biriga yaqin joylashgan g'ildiraklar va pastga qaragan yorug'lik sensori. Algoritm biroz murakkabroq bo'ladi.

Segwayni muvozanat holatida barqarorlashtirish printsipi quyidagicha. Agar robot oldinga egilgan bo'lsa, yorug'lik sensoridagi o'qish aks ettirilgan yorug'lik bilan ortadi. Bunga javoban robotni oldinga siljishga va shu tariqa yana tik holatni egallashga majburlovchi boshqaruv harakati hosil bo'ladi.

Orqaga egilganida sensor ko'rsatkichlari pasayadi va robot orqaga qarab harakatlana boshlaydi. Bularning barchasi uchun mutanosib komponent javobgardir. Haddan tashqari sug'urta integral va differentsial komponentlarning roliga beriladi.

Guruch. 7.38. Segway robotini muvozanatlash.

Shaklda. 7.39 Robolab-dagi algoritmni ko'rsatadi. Uning katta qismi o'zgaruvchilarni ishga tushirish bilan band. Aniqlikni oshirish uchun nafaqat sensordan olingan ma'lumotlar RAW formatida o'qiladi, balki o'zgaruvchilarning aksariyati haqiqiy float formatida e'lon qilinadi. PID algoritmining o'zi tsiklda.

Guruch. 7.39. Balanslashtiruvchi algoritm PID kontrollerga asoslangan.

Chiziq bo'ylab harakatlanish an'analariga rioya qilgan holda, biz o'zgaruvchan kul rangni belgilangan nuqta sifatida ishlatamiz - muvozanat holatida yorug'lik sensori o'rtacha ko'rsatkichlari. Yangi parametr shkalasi boshqaruvning masshtabini o'rnatadi. Bu, aslida, susaytirish omilidir, chunki regulyator tomonidan ishlab chiqarilgan qiymat NXT motorlari uchun juda yuqori. Uni mavjud koeffitsientlar ichiga qo'shish mumkin edi, lekin RobotC uchun bu parametr boshqacha bo'ladi va koeffitsientlar bir xil.

Berilgan koeffitsientlar bilan robot oddiy engil linoleum yoki maktab stolida yaxshi barqarorlashadi. Ya'ni, unga kerak emas oq rang sirt. Boshlash uchun siz segwayni muvozanat holatiga aniq o'rnatishingiz kerak. Agar robot bir oz oldinga yoki orqaga egilish bilan boshlasa, u darhol egilish yo'nalishi bo'yicha harakatlana boshlaydi.

RobotC-dagi shunga o'xshash misol bir qator sabablarga ko'ra biroz farq qiladi. Birinchidan, NXT-ning ushbu muhitning dasturiy ta'minoti bilan ishlashi Robolab-ga qaraganda taxminan 1,4 baravar yuqori, shuning uchun miqyos koeffitsientini oshirish kerak. Ikkinchidan, RAW qiymatlari to'g'ri tartibda uzatiladi va siz motorlarning teskarisini o'rnatishingiz yoki shunchaki salbiy boshqaruv harakatini qo'llashingiz kerak bo'ladi:

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

float kp = 25, ki = 350, kd = 0,3; float shkalasi = 14;

float dt = 0,001; float p, i = 0, d, u; esa (to'g'ri)

xato = kulrang-SensorRaw; // Qarama-qarshi belgi bilan og'ish p = kp * err;

i = i + ki * err * dt; d = kd * (xato-xato) / dt; xato = xato; u = (p + i + d) / masshtab; motor = u; motor = u; 1 sekund kutib turing (1);

Maktabda avtomatik boshqaruv nazariyasi elementlari1

Muhim va qiziqarli uslubiy vazifa - bu mutaxassis va talabaning bilim sohalari o'rtasidagi "ko'prikni o'tkazish", maktab o'quvchilariga kelajakdagi mutaxassisligining istiqbollarini ko'rishga yordam berish, ya'ni. kasbga yo'naltirishni ta'minlaydi va talabalar ularning amaliy qo'llanilishini ko'rishadi kasbiy bilim... Shunga o'xshash ta'sirga erishish uchun regulyatorlarni hisoblash usullaridan tashqariga chiqmaydigan matematik apparat yordamida ishlab chiqilgan. maktab o'quv dasturlari matematika va fizika fanlarida. Xususan, differensial tenglamalar o'rniga ob'ekt va kompyuter nazorati ostida boshqaruvchi o'rtasidagi o'zaro ta'sirning diskret xarakteriga yaxshi mos keladigan farq tenglamalari qo'llaniladi.

Masalan, mobil robotning devor bo'ylab harakatini boshqarish muammosida proportsional (P) va proportsional-differensial (PD) boshqaruvchilarni qurish muammosini ko'rib chiqing. Robot va devor orasidagi masofani xt orqali - robotning yo'nalish burchagi va ut orqali - hozirgi vaqtda t tartib raqami bilan boshqaruv harakatini belgilaymiz, bu erda t = 0, 1, 2. , ... oʻlchov momentlarining sonlari.

reniy. Datchiklarning so'rovi va nazorat harakatining kattaligining o'zgarishi muntazam ravishda amalga oshiriladi, deb ishoniladi h. Lego NXT robotlarini boshqarish vazifalari uchun boshqaruv harakati g'ildiraklarning burchak tezligidagi farq, yo'nalish burchagining o'zgarish tezligiga mutanosib deb taxmin qilish tabiiydir:

Nominal tht = 0 dan kurs og'ishlari kichik va robotning o'rtacha tezligi doimiy deb faraz qilsak: vt = v, robotning holat o'zgaruvchilari o'zgarishlar dinamikasini birinchi yaqinlashishda tasvirlash mumkin. chiziqli tenglamalar bildiradi:

bu erda g = h2vr / b.

Devorga kerakli masofani x *> 0 o'rnatamiz va nazorat maqsadini (CC) nisbat bilan aniqlaymiz

xt → x * t → ∞ sifatida.

Endi biz tabiiy ravishda asimptotik barqarorlik tushunchasini (4) tizim yechimlarining xossasi sifatida mazmunli darajada kiritamiz, bu esa maqsadli sharoitlardan unchalik farq qilmaydigan har qanday boshlang'ich shartlar uchun boshqaruv tizimiga (5) erishishni ta'minlaydi. U t = 0 uchun (4) tenglamaning yechimi har qanday doimiy qiymat x t = x * ekanligini tushunish oson. Ammo qo'sh integrator (qo'sh qo'shuvchi) modeliga mos keladigan (4) tenglama asimptotik barqarorlik xususiyatiga ega emasligi sababli, boshqaruv tenglamasi (5) doimiy boshqaruv erishilmaydi. Buni ham analitik tarzda - ketma-ketlikni yig'ish orqali osongina ko'rsatish mumkin

Bu vazifa klassik, kontseptual jihatdan sodda, uni ko'p marta hal qilish mumkin va har safar o'zingiz uchun yangi narsalarni kashf etasiz.

Chiziqdan keyingi muammoni hal qilishning ko'plab yondashuvlari mavjud. Ulardan birini tanlash robotning o'ziga xos dizayniga, sensorlar soniga, ularning g'ildiraklarga va bir-biriga nisbatan joylashishiga bog'liq.

Bizning misolimizda biz Robot Educator asosiy o'quv modeliga asoslangan robotning uchta misolini tahlil qilamiz.

Boshlash uchun biz robot o'quv robotining asosiy modelini yig'amiz, buning uchun siz quyidagi ko'rsatmalardan foydalanishingiz mumkin. dasturiy ta'minot MINDSTORMS EV3.

Bundan tashqari, misollar uchun bizga EV3 ochiq rangli sensorlar kerak. Bu yorug'lik datchiklari, boshqalar kabi, bizning vazifamiz uchun eng mos keladi, ular bilan ishlashda biz atrofdagi yorug'likning intensivligi haqida tashvishlanishimiz shart emas. Ushbu sensor uchun dasturlarda biz aks ettirilgan yorug'lik rejimidan foydalanamiz, unda sensorning qizil orqa yorug'ligining aks ettirilgan yorug'lik miqdori taxmin qilinadi. Sensor ko'rsatkichlarining chegaralari mos ravishda "aks ettirish yo'q" va "to'liq aks ettirish" uchun 0 - 100 birlikdir.

Masalan, biz tekis, engil fonda tasvirlangan qora traektoriya bo'ylab harakatlanish uchun dasturlarning 3 ta misolini tahlil qilamiz:

· P regulyatorli bitta datchik.

· Bitta sensor, kompyuter boshqaruvchisi.

· Ikki datchik.

Misol 1. P kontrollerli bitta sensor.

Dizayn

Yorug'lik sensori modelga qulay tarzda joylashgan nurga o'rnatiladi.


Algoritm

Algoritmning ishlashi sensorning orqa yorug'lik nurining qora chiziq bilan bir-biriga yopishish darajasiga qarab, sensor tomonidan qaytarilgan ko'rsatkichlar gradient bilan o'zgarishiga asoslanadi. Robot yorug'lik sensori o'rnini qora chiziq chegarasida saqlaydi. Yorug'lik sensoridan kirish ma'lumotlarini o'zgartirib, boshqaruv tizimi robotning aylanish tezligi uchun qiymat hosil qiladi.


Haqiqiy traektoriya bo'yicha sensor o'zining butun ish diapazonida (0-100) qiymatlarni hosil qilganligi sababli, robot intilayotgan qiymat 50 ga teng. Bunday holda, uzatiladigan aylanish funktsiyalarining qiymatlari diapazon -50-50, lekin bu qiymatlar traektoriyani keskin burilish uchun etarli emas. Shuning uchun diapazonni -75 - 75 gacha bir yarim barobar kengaytirish kerak.

Natijada, dasturda kalkulyator funktsiyasi oddiy proportsional boshqaruvchi hisoblanadi. Kimning vazifasi ( (a-50) * 1,5 ) yorug'lik sensori ish diapazonida grafikga muvofiq aylanish qiymatlarini hosil qiladi:

Algoritm qanday ishlashiga misol

2-misol. Bitta datchik, kompyuter boshqaruvchisi.

Ushbu misol xuddi shu konstruktsiyaga asoslanadi.

Oldingi misolda robot haddan tashqari chayqalganini payqagandirsiz, bu esa uning yetarlicha tezlashishiga imkon bermagan. Endi bu holatni biroz yaxshilashga harakat qilamiz.

Bizning proportsional kontrollerimizga, shuningdek, boshqaruvchi funksiyasiga moslashuvchanlikni qo'shadigan oddiy kub kontroller qo'shamiz. Bu robotning traektoriyaning kerakli chegarasi yaqinida tebranishini kamaytiradi, shuningdek, undan katta masofada kuchliroq silkinishlarni amalga oshiradi.

Engil qurilishdagi asosiy harakatlardan biri qora chiziqdan keyin.

Umumiy nazariya va aniq misollar dasturni yaratish wroboto.ru veb-saytida tasvirlangan

Men buni EV3 muhitida qanday amalga oshirishimizni tasvirlab beraman, chunki farqlar mavjud.

Robot bilishi kerak bo'lgan birinchi narsa - qora va oq chegarada joylashgan "ideal nuqta" ning qiymati.

Rasmdagi qizil nuqtaning joylashuvi ushbu pozitsiyaga to'liq mos keladi.

Ideal hisoblash varianti qora va oqning qiymatini o'lchash va arifmetik o'rtachani olishdir.

Buni qo'lda qilish mumkin. Ammo kamchiliklar darhol ko'rinadi: hatto qisqa vaqt ichida yorug'lik o'zgarishi mumkin va hisoblangan qiymat noto'g'ri bo'lib chiqadi.

Bu shuni anglatadiki, siz robotni buni qilishga majburlashingiz mumkin.

Tajribalarimiz orqali biz qora va oqni o'lchash shart emasligini aniqladik. Faqat oq rangni o'lchash mumkin. Va ideal nuqta qiymati qora chiziqning kengligi va robotning tezligiga qarab, oq qiymat 1,2 (1,15) ga bo'lingan holda hisoblanadi.

Hisoblangan qiymat keyinroq kirish uchun o'zgaruvchiga yozilishi kerak.

Ideal ballni hisoblash

Harakatda ishtirok etadigan keyingi parametr - bu Rulda nisbati. U qanchalik katta bo'lsa, robot yorug'likdagi o'zgarishlarga shunchalik keskin munosabatda bo'ladi. Lekin ham katta ahamiyatga ega robotning chayqalishiga olib keladi. Qiymat har bir robot dizayni uchun eksperimental ravishda alohida tanlanadi.

Oxirgi parametr - motorlarning asosiy quvvati. Bu robotning harakat tezligiga ta'sir qiladi. Harakat tezligining oshishi robotning yorug'lik o'zgarishiga javob berish vaqtining oshishiga olib keladi, bu esa traektoriyadan chiqib ketishiga olib kelishi mumkin. Qiymat ham eksperimental tarzda tanlanadi.

Qulaylik uchun bu parametrlarni o'zgaruvchilarga ham yozish mumkin.

Rulda nisbati va asosiy quvvat

Qora chiziq bo'ylab harakatlanish mantig'i quyidagicha: ideal nuqtadan og'ish o'lchanadi. U qanchalik katta bo'lsa, robot shunchalik kuchliroq unga qaytishga intilishi kerak.

Buning uchun biz ikkita raqamni hisoblaymiz - har bir B va C motorlarining quvvat qiymati.

Formulalar shaklida u quyidagicha ko'rinadi:

Bu erda Isens - yorug'lik sensori o'qishlarining qiymati.

Nihoyat, EV3 da amalga oshirish. Uni alohida blok sifatida tashkil qilish eng qulaydir.

Algoritmni amalga oshirish

Aynan shu algoritm WRO 2015 o'rta toifasi uchun robotda amalga oshirilgan

Proportsional boshqaruvchi - ob'ektga berilgan x0 (t) holatidan e (t) chiziqli chetlanishiga mutanosib ravishda u (t) boshqaruv ta'sirini amalga oshiradigan qurilma;

e (t) = x0 (t) -x (t), bu erda x (t) - ma'lum bir vaqtdagi holat;

u (t) = ke (t), bu erda k - daromad omili.
Ya'ni, robot berilgan yo'nalishdan qanchalik uzoqlashsa, motorlar uni tekislash uchun shunchalik faol ishlashi kerak.

P-kontroller yordamida bitta yorug'lik sensori bilan chiziq bo'ylab harakatlanish

Qora va oq chegara bo'ylab harakat P-kontrollerda ham qurilishi mumkin. Tashqi tomondan, muammo faqat o'rni boshqaruvchisi yordamida hal qilinganga o'xshaydi, chunki tizimda inson ko'ziga ko'rinadigan ikkita holat mavjud: qora va oq. Ammo robot hamma narsani boshqacha ko'radi, chunki bu ranglar o'rtasida aniq chegara yo'q. Aytishimiz mumkinki, u miyopik va kulrang soyalarning gradient o'tishini ko'radi.

Bu P-kontrollerni yaratishga yordam beradi.
Ish holatini yorug'lik sensori o'qishlari sifatida belgilab, biz quyidagi qonunga muvofiq motorlarga mutanosib nazorat ta'sirini ta'minlashni o'rganamiz:
e = s1-kulrang, bu erda s1 - joriy sensorning o'qishi va kulrang - maqsadli qiymat.

K koeffitsienti (bu misolda 2 ga teng) etarlicha kichik bo'lishi kerak (1 dan 3 gacha). Bunday regulyator faqat kichik burilish burchaklari uchun samarali ishlaydi, shuning uchun robot harakat yo'nalishi bo'yicha joylashtirilishi kerak, shunda sensor qora chiziqning chap tomonida bo'ladi. P-kontrollerda chiziq bo'ylab harakat silliq ekanligini ko'rish oson. va ishning ba'zi joylarida deyarli to'g'ri chiziqda yoki chiziqning egilishlarini aniq kuzatib boradi.

Sensorni kalibrlash

Keling, formulada ishlatiladigan 48 raqamiga murojaat qilaylik. Bu qora va oq rangdagi yorug'lik sensorining o'rtacha arifmetik ko'rsatkichidir, masalan (40 + 56) / 2 = 48. Biroq, sensorlarning o'qishlari ko'pincha turli sabablarga ko'ra o'zgaradi: boshqa sirt, xonadagi umumiy yoritishning o'zgarishi, strukturaning engil o'zgarishi va boshqalar. Shuning uchun biz oq va qora rangdagi yorug'lik sensori o'qishlarini aniqlab, robotni qo'lda kalibrlaymiz.

P-kontroller yordamida ikkita yorug'lik sensori bilan chiziq bo'ylab harakatlanish
Bitta yorug'lik sensori bilan chorrahadan to'g'ri haydash juda qiyin. Agar siz buni etarlicha yuqori tezlikda qilishni istasangiz, ikkita chiziq kengligida (yoki kengroq) masofada joylashgan kamida ikkita datchik kerak bo'ladi.
Haydashda sensorning to'rtta holati mumkin:

  • ikkalasi ham oq rangda - to'g'ri oldinga;
  • chap (s1) qora emas, o'ngda (s2) oqda - chapga o'ting;
  • oqda chapda, o'ngda qorada - o'ngga harakat;
  • ikkalasi ham qora rangda - to'g'ridan-to'g'ri oldinga.
Bu. agar sensor ko'rsatkichlari teng bo'lsa (ikkalasi oq yoki ikkalasi ham qora), robot to'g'ri harakat qiladi. Robotni ishga tushirishdan oldin biz ikkala sensorni avtomatik kalibrlaymiz. Keyin P-kontroller bilan chiziq bo'ylab harakatlanish algoritmi s.s.ga o'xshaydi:

K koeffitsienti chiziqning egriligiga, robotning manevr qobiliyatiga va maydondagi oq va qora rang o'rtasidagi farqga qarab ancha keng diapazonda (1 dan 20 gacha yoki undan ko'p) o'zgarishi mumkin.
Muhim shart. Avtomatik kalibrlash bitta rangli sirtda va eng yaxshisi yo'lning eng katta qismini egallagan yorug'likda amalga oshirilishi kerak. Misol uchun, agar robot oq maydonda qora chiziq bo'ylab harakatlansa, u oq rangda kalibrlangan bo'lishi kerak. Bular. robotning boshlang'ich holati quyidagicha bo'lishi kerak:


Va yana bir izoh. O'qishlari 10-20% ga farq qiladigan sensorlar mavjud. Ularni katta koeffitsientli regulyator bilan bog'lamaslik tavsiya etiladi, chunki hatto bir xil oq maydonda ham umumiy yorug'likning keskin o'zgarishi bilan og'ishlar boshqacha bo'lishi mumkin, bu kutilmagan oqibatlarga olib keladi.