Lego ev3 proportional integral differential regulator. International Robot Competition - Mga Panuntunan - Mga Halimbawa ng Robot - LEGO EV3 Trajectory Robot

Ang robotics ay isang kawili-wiling bagong direksyon, na, tila, ay higit pang bubuo sa loob ng balangkas ng mga kurso sa computer science at teknolohiya ng paaralan. Ang boom sa robotics ay higit sa lahat dahil sa ang katunayan na ito ay nagpapahintulot sa iyo na sagutin ang tanong na: "Bakit tayo, sa katunayan, natututo ng programming?" Bilang karagdagan, sa kurso ng robotics, maaari kang maging pamilyar sa mga elementarya na konsepto ng teorya awtomatikong kontrol.

Ang pahinang ito ay nagpapakita ng mga programming simulator at Arduino board na binuo ng may-akda. Makakatulong sila sa mga kaso kung saan sa ilang kadahilanan ay hindi posible na gumamit ng tunay na hardware.

Ginagamit ng mga simulator ang mga kakayahan ng HTML5, kaya gagana lamang sila sa mga modernong browser (pinakamahusay na gamitin Google Chrome o Mozilla Firefox).

balita ngayon din sa Telegram channel

Nobyembre 27, 2015
Ang "embryo" na track ay naidagdag sa mga simulator ( M.V. Lazarev, Orekhovo-Zuevo).

Oktubre 13, 2015
Maaari mo na ngayong i-load ang iyong mga track (mga robot field) sa LEGO Robot Simulators. Paano ito gagawin? Tingnan mo.
Nagdagdag ng mga bagong simulator - LEGO robot na may dalawa, tatlo, apat na light sensor.

Wika ng kontrol ng robot

Upang makontrol ang mga robot sa mga simulator, isang simpleng programming language ang ginagamit, na nakatanggap ng gumaganang pangalan SiRoP (Simpleng Robot Programming).

Robot control na may light sensor

Ang light sensor ay nagpapahintulot sa robot na i-orient ang sarili sa ibabaw ng mesa, halimbawa, upang magmaneho sa kahabaan ng hangganan sa pagitan ng puti at itim na mga lugar (sa gilid ng itim na linya). Ang photodiode ay nag-iilaw sa ibabaw, ang photodetector ay "nahuhuli" ang mga sinasalamin na sinag at sinusukat ang kanilang intensity.

Ang pinakasikat na gawain ng ganitong uri ay ang pagsunod sa isang linya. Gamit ang simulator, maaari mong pag-aralan ang iba't ibang mga batas sa kontrol - relay, proporsyonal, at kahit na kontrol ng PID (proportional-integral-differential).

Mga halimbawa ng mga programa para sa isang robot na may light sensor

Habang 1 (kung sensor> 128 (motor = 100 motor = 0) kung hindi (motor = 0 motor = 100) maghintay (10))

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

Pangunahin (habang 1 (habang sensor> 128 (motor = 100 motor = 100 paghihintay (10)) pabalik () liko ())) pabalik (motor = -100 motor = -100 paghihintay (260)) pagliko (motor = -50 motor = 50 paghihintay (50))

Robot control na may dalawang light sensor

Ang dalawang light sensor ay nagbibigay-daan sa robot na mas mahusay na mag-navigate at magmaneho sa isang manipis na linya. Bahagyang dinala ang mga ito pasulong at magkahiwalay. Tulad ng para sa mga gawain na may isang sensor, ang simulator na ito ay maaaring gamitin upang pag-aralan ang iba't ibang mga batas sa kontrol.

Mga halimbawa ng mga programa para sa isang robot na may tatlong light sensor

Robot control na may apat na light sensor

Pinahihintulutan ng apat na light sensor ang robot na mas mahusay na makakita ng masikip na pagliko. Ang mga panloob na sensor ay ginagamit para sa mahusay na pagsasaayos, ang proporsyonal na kontrol ay ginagamit para sa kanila. Dalawa panlabas na sensor iniharap nang bahagya at nagkahiwalay. Ginagamit ang mga ito kapag nakatagpo ang isang matalim na pagliko. Ang pakinabang para sa kontrol ayon sa mga pagbabasa ng mga sensor ng panlabas na pares ay pinili nang higit pa kaysa sa panloob na pares (tingnan. L.Yu. Ovsyanitskaya et al., Algorithms at mga programa para sa paggalaw ng Lego Mindstorms EV3 robot sa linya, M .: "Pero", 2015).

Mga halimbawa ng mga programa para sa isang robot na may apat na light sensor

Habang 1 (d0 = encoder> 128 d1 = encoder> 128 d2 = encoder> 128 d3 = encoder> 128 kung d1 &! D2 (motor = 100 motor = 0) kung! D1 & d2 (motor = 0 motor = 100) kung d1 == d2 (motor = 100 motor = 100) kung d0 &! d3 (motor = 30 motor = 0) kung! d0 & d3 (motor = 0 motor = 30) maghintay (10))

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

Pagkontrol sa isang robot na may sensor ng distansya (sonar)

Ang sensor ng distansya (sonar) ay nagbibigay-daan sa iyo upang matukoy ang distansya sa pinakamalapit na balakid habang gumagalaw ang robot. Nagpapalabas ito ng ultrasonic signal at tumatanggap ng sinasalamin na signal. Kung mas mahaba ang oras sa pagitan ng ipinadala at natanggap na mga signal, mas malaki ang distansya.

Gamit ang isang sensor ng distansya, maaaring i-program ang isang robot upang awtomatikong tumawid sa isang labyrinth na may alam na hugis ngunit hindi kilalang mga sukat.

Proporsyonal na controller

Paglalarawan

Sa awtomatikong kontrol, ang control action na u (t) ay karaniwang isang function ng dynamic na error - ang deviation e (t) ng kinokontrol na variable x (t) mula sa tinukoy nitong halaga x0 (t):

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

Ito ang prinsipyo ng Polzunov-Watt ng regulasyon sa paglihis, o ang prinsipyo ng feedback. Ang mathematical expression ng functional dependence ng ninanais na control action u0 (t) sa mga halaga na sinusukat ng controller ay tinatawag na batas o ang control algorithm, na nabanggit sa itaas.

Ang proporsyonal na controller ay isang device na nagsasagawa ng control effect sa isang bagay na proporsyon sa paglihis nito mula sa isang partikular na estado:

Narito ang k ay ang pakinabang ng controller.

Ang ibinigay na estado x0 ay karaniwang tinatawag na setpoint, at ang paglihis mula dito ay tinatawag na tira. Sa mga sumusunod, para sa katiyakan, tutukuyin natin ang nalalabi sa pamamagitan ng pagdadaglat na mali (mula sa salitang ingles"Error" - error).

Kontrol ng motor

Ang isang bihasang mandirigma ay hindi maghahampas ng espada, gaya ng ginagawa ng isang robot sa isang relay controller. Ito ay kinakailangan upang makabuo ng isang algorithm na hahawak sa motor na may hawak na tabak sa isang mahigpit na nakapirming posisyon (Larawan 7.1). Ang P-controller ay makakatulong dito.

Hayaan ang e 1 - ang mga pagbabasa ng speed sensor 1 sa motor A - ay ang kinokontrol na halaga. Ang setting ay x0 = 45, at ang nalalabi ay e = 45 - e 1. Pagkatapos ang control action sa motor ay ibinibigay ng formula

u = k ∙ (45 - e 1).

Narito ang k ay ang pakinabang, halimbawa 5, na magpapahusay sa tugon ng motor kahit na may maliliit na paglihis mula sa setpoint.

1 Huwag malito ang matematikal na pagtatalaga ng natitirang e (mula sa error) sa mga pagbabasa ng encoder e 1 (mula sa encoder), ang paunang-natukoy na Robolab environment variable.

Kapag lumihis ka positibong panig ang negatibong kontrol ay ilalapat sa motor, at kabaliktaran. Ang kontrol na ito ay maaaring ilapat sa motor sa isang loop na may maliit na pagkaantala ng 1-10 ms upang i-unload ang controller (Figure 7.8).

kanin. 7.8. Algorithm para sa kontrol ng motor sa isang proporsyonal na controller.

Kung ang gain factor ay tataas mula 5 hanggang 100, ang aming proporsyonal na regulator ay magsisimulang gumana bilang isang relay, na magdudulot ng malalaking pagbabago dahil sa paglitaw ng isang overshoot effect.

Sa wikang RobotC, walang ganoong maginhawang notasyon para sa mga pagbabasa ng encoder tulad ng sa Robolab, kaya medyo mas matagal ang programa:

int k = 5, u; nMotorEncoder = 0; habang (totoo)

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

Dagdag pa, upang hampasin gamit ang tabak, sapat na, pagkakaroon ng isang variable sa halip na numero 45, upang baguhin ang halaga nito mula sa labas, halimbawa, mula sa isang parallel na gawain. Sinasaklaw ito sa seksyon ng mga robotic drummer sa Kabanata 8.

Ngayon ay bumuo tayo ng isang regulator na kumokontrol hindi lamang sa static na posisyon ng motor, kundi pati na rin sa bilis ng paggalaw nito. Kasunod ng lohika ng algorithm, ang setpoint, na hanggang ngayon ay pare-pareho at hindi nagbabago, ay dapat magsimulang lumipat sa direksyon ng pagtaas o pagbaba. Ang pagsunod sa regulator, ang motor ay hindi maaaring hindi sumunod sa kanya. Ang pinakasimpleng tool para sa patuloy na pagtaas ng halaga ng setpoint ay ang timer.

Ang NXT controller ay may apat na built-in na timer, na ang bawat isa ay maaaring masukat ang oras sa tenths, hundredths, at thousandths ng isang segundo. Ipaalam sa amin ang unang timer, na kumukumpleto ng 10 "ti-

kov ". Sa Robolab ito ay tinukoy bilang T1 o Timer100ms1, at sa RobotC ito ay timer100.

Ang anggulo ng alpha ng deflection ng motor, na ibinigay sa nakaraang halimbawa ng halaga na 45, ay depende sa mga pagbabasa ng timer na may isang accelerating factor k 2:

alpha = k2 ∙ T1.

Ang pagkilos ng kontrol ay mananatiling pareho sa amplifying coefficient k 1:

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

Sa madaling sabi, sa isang Robolab program, agad naming ilalapat ang control action sa motor, na dati nang nasimulan ang timer

kanin. 7.9. Ang kontrol sa bilis ng motor ay isang rebolusyon bawat segundo.

Tinutukoy ng coefficient k 2 = 36 na sa isang segundo ang halaga ng alpha ay umaakyat hanggang 360, na tumutugma sa isang buong rebolusyon ng makina:

int k1 = 2, k2 = 36, u, alpha; nMotorEncoder = 0; ClearTimer (T1); habang (totoo)

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

Gamit ang integer division, na tinatanggap sa wikang C (at sa Robolab) para sa mga variable ng isang uri ng integer, posibleng makamit ang isang discrete na pagbabago sa anggulo, i.e. pagdaragdag nito nang isang beses bawat segundo:

alpha = T 1/10 ∙ k 2.

Sa coefficient k 2 = 60, ang paggalaw ng beam ay tumutugma sa paggalaw ng pangalawang kamay sa watch dial. Pero hindi ito sapat

kapansin-pansin. Para sa kalinawan, maaari mong itakda ang k2 = 30, pagkatapos ang arrow ay gagawa ng isang buong rebolusyon sa 12 "ticks" na 30 degrees bawat isa. Mag-ingat sa pagkakasunud-sunod ng mga operasyon ng integer division at multiplication, ang pagbabago ng kanilang pagkakasunud-sunod o "pagbawas" ay tiyak na magbabago sa resulta (Larawan 7.10).

kanin. 7.10. Pinabilis na panggagaya sa paggalaw ng kamay ng orasan.

At panghuli, isang halimbawa ng isang math drummer. Sa halip na patuloy na sumulong, ang arrow ay mag-o-oscillate pabalik-balik sa ilalim ng kontrol ng P-controller. Ang natitirang dibisyon, na tinutukoy ng% sign sa C, ay makakatulong dito. Ang natitira sa paghahati ng isang hindi negatibong integer sa 2 ay palaging magiging 0 o 1:

alpha = T 1% 2 ∙ k 2.

Ang pagpapalakas ng deviation sa pamamagitan ng factor na k 2 = 15 beses, nakakakuha tayo ng pabagu-bagong setpoint alpha, na pipilitin ang regulator na ilipat ang motor ng 5 beses bawat segundo, halili sa 0º, pagkatapos ay sa 15 degrees. Ang mga pagbabago sa programa ay maliit. Tingnan natin ang isang halimbawa sa RobotC:

int k1 = 3, k2 = 15, u, alpha; nMotorEncoder = 0; ClearTimer (T1); habang (totoo)

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

Ang prototype na drummer na ito ay tumatama sa mesa sa mga regular na pagitan. Ang pangunahing bagay ay magsimula sa tamang posisyon. Gamit ang integer mathematics, maaari kang magtakda ng mas kumplikadong rhythmic pattern, halimbawa (Talahanayan 7.1):

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

sentro = S3.

Ang koepisyent ay tinutukoy sa cycle:

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

kanin. 7.36. Ang paggalaw ng linya sa isang proporsyonal na floating-factor controller.

Ang nakuha na batas ng kontrol ng mga nadagdag ay maaaring ilapat hindi lamang sa proporsyonal na bahagi, kundi pati na rin sa anumang iba pa, pati na rin sa kontrol na aksyon sa kabuuan (Larawan 7.36).

PID controller

Ang proportional-integral-derivative (PID) controller ay isa sa pinakasikat at ginagamit sa marami mga device sa karamihan iba't ibang uri na nangangailangan ng pagtugon at katumpakan ng pagpoposisyon ng system. Tulad ng iminumungkahi ng pangalan, ang regulator na ito ay binubuo ng kabuuan ng tatlong bahagi at graphic na inilalarawan sa Fig. 7.37.

kanin. 7.37. PID controller circuit.

Ito ay isang pinasimple na diagram. Ang halaga ng dynamic na error e (t) ay ibinibigay sa controller input, at ang control action na u (t) ay nabuo sa output:

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

e (τ) d τ + k d ∙

de.

Ang proporsyonal na bahagi, na ipinapakita sa diagram bilang isang tatsulok, ay responsable para sa pagpoposisyon ng system sa isang partikular na estado. Sa ilang mga kaso, maaari itong magdulot ng overshoot na may kasunod na mga self-oscillations. Iyon ay, ang P-controller ay maaaring "labisan" at ang robot ay magsisimulang lumipat mula sa gilid patungo sa gilid.

Ang mahalagang bahagi ay nag-iipon ng negatibong karanasan (nagbubuod ng mga error) at nagkakaroon ng kabayarang epekto. Sa kaunting mga paglihis, ang proporsyonal na bahagi ay "humina" at ang integral, dahil sa mabilis na pagtaas nito sa pamamagitan ng pagsusuma, ay tumutulong na "hilahin" ang kinokontrol na halaga sa setpoint.

Sinusubaybayan ng differential component (D-component) ang rate ng pagbabago sa estado ng system at pinipigilan ang posibleng overshoot. Sa ilang mga kaso, ang D-component ay kabaligtaran sa proporsyonal na isa sa sign, at sa ilang mga ito coincides.

Pamilyar na tayo sa proporsyonal na bahagi, ang pagkakaiba ay inilarawan sa nakaraang kabanata 6. Kunin natin ang integral. Ang bahaging ito ay dynamic na tinutukoy, na nagdaragdag sa nakaraang halaga:

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

Ang pisikal na kahulugan ng dami e (t) × dt ay na ito ay

proporsyonal sa tagal ng panahon na ang system ay nasa estado ng error. Dahil ang koepisyent k i ay inalis sa mga panaklong, maaari nating pag-usapan ang halaga ng i bilang kabuuan ng mga tagal ng error. Kaya't nakita natin ang integral sa pamamagitan ng pagsusuma.

Isaalang-alang natin ang aplikasyon ng PID controller sa halimbawa ng isang robot na nagbabalanse sa dalawang gulong. Ang klasikong problemang ito ay maaaring malutas sa iba't ibang mga sensor sa iba't ibang paraan. Sa iminungkahing halimbawa, ginagamit ang isang light sensor at ang pinakasimpleng anyo ng isang PID controller. Gayunpaman, upang makamit ang pagpapapanatag ng robot, mas tumpak na pagbabasa ng sensor ang kailangang gamitin.

RAW na format

Ang data ng sensor ay ipinapadala sa NXT controller sa isang raw, raw form. Ang lahat ng mga sensor ay nagpapadala operating system isang digital na halaga mula 0 hanggang 1023, na pagkatapos ay pinoproseso ng naaangkop na driver at binabawasan sa isang mas maliwanag na anyo (distansya 0 ... 255, pag-iilaw 0 ... 100, pindutin ang 0 o 1, atbp.). Ngunit ang data ay maaari ding matanggap, na lampasan ang driver, nang direkta. Ang raw format na ito ay karaniwang tinutukoy bilang RAW (mula sa English na "raw"). Sa ilang mga kaso, maaari itong magamit upang makakuha ng higit na katumpakan. Kaya, halimbawa, ang hanay ng mga halaga ng light sensor ay maaaring tumaas ng halos 10 beses. Ang pagkakataong ito ang higit na ginagamit.

Parehong Robolab at RobotC ay maaaring makatanggap ng RAW na data. Para dito, ang sensor ay pinasimulan nang naaayon, at ang data ay binabasa mula dito gamit ang isang espesyal na paunang natukoy na variable.

Pagbalanse ng robot

Ang disenyo ng isang segway robot ay ipinapakita sa Fig. 7.38: Vertical positioned controller, malapit na pagitan ng mga gulong at light sensor na nakaharap pababa. Ang algorithm ay magiging mas kumplikado.

Ang prinsipyo ng pagpapatatag ng Segway sa posisyon ng balanse ay ang mga sumusunod. Kung ang robot ay sumandal pasulong, ang pagbabasa sa light sensor ay tataas ng sinasalamin na liwanag. Bilang tugon dito, nabuo ang isang kontrol na aksyon, na pinipilit ang robot na sumulong at sa gayon ay muling ipagpalagay ang isang tuwid na posisyon.

Kapag nakasandal, bumababa ang mga pagbabasa ng sensor at ang robot ay nagsisimulang gumalaw pabalik. Ang proporsyonal na bahagi ay responsable para sa lahat ng ito. Ang overshoot na insurance ay itinalaga sa papel ng integral at differential na bahagi.

kanin. 7.38. Pagbabalanse ng robot segway.

Sa fig. Ipinapakita ng 7.39 ang algorithm sa Robolab. Karamihan sa mga ito ay inookupahan ng pagsisimula ng mga variable. Upang mapabuti ang katumpakan, hindi lamang ang data mula sa sensor ang binabasa sa RAW na format, ngunit ang karamihan sa mga variable ay idineklara sa totoong float na format. Ang PID algorithm mismo ay nasa isang loop.

kanin. 7.39. Ang balancer algorithm ay batay sa isang PID controller.

Kasunod ng tradisyon ng paglipat sa linya, ginagamit namin ang variable na kulay abo bilang setpoint - ang average na pagbabasa ng light sensor sa posisyon ng equilibrium. Itinatakda ng bagong sukatan ng parameter ang pag-scale ng kontrol. Ito ay mahalagang isang attenuation factor dahil ang halaga na ginawa ng regulator ay masyadong mataas para sa NXT motors. Posibleng idagdag ito sa loob ng mga umiiral na coefficient, ngunit para sa RobotC ang parameter na ito ay magkakaiba, at ang mga coefficient ay pareho.

Gamit ang ibinigay na mga coefficient, ang robot ay nagpapatatag nang maayos sa plain light linoleum o school desk. Ibig sabihin, hindi niya kailangan kulay puti ibabaw. Upang magsimula, kailangan mong tumpak na itakda ang segway sa posisyon ng balanse. Kung ang robot ay magsisimula sa ilang pasulong o paatras na pagtabingi, agad itong magsisimulang gumalaw sa direksyon ng pagtabingi.

Ang isang katulad na halimbawa sa RobotC ay bahagyang naiiba para sa ilang mga kadahilanan. Una, ang pagganap ng NXT kasama ang firmware ng kapaligirang ito ay humigit-kumulang 1.4 beses na mas mataas kaysa sa Robolab, kaya dapat tumaas ang scale factor. Pangalawa, ang mga halaga ng RAW ay ipinadala sa tamang pagkakasunud-sunod at kakailanganin mong itakda ang kabaligtaran ng mga motor o maglapat lamang ng isang negatibong aksyon na kontrol:

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

float kp = 25, ki = 350, kd = 0.3; float scale = 14;

float dt = 0.001; lumutang p, i = 0, d, u; habang (totoo)

err = gray-SensorRaw; // Paglihis na may kabaligtaran na palatandaan p = kp * err;

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

Mga elemento ng teorya ng awtomatikong kontrol sa paaralan1

Ang isang mahalaga at kawili-wiling gawaing pamamaraan ay ang "paglipat ng isang tulay" sa pagitan ng mga lugar ng kaalaman ng isang espesyalista at isang mag-aaral, na tumutulong sa mga mag-aaral sa paaralan na makita ang pananaw ng kanilang espesyalidad sa hinaharap, i.e. magbigay ng gabay sa karera, at nakikita ng mga estudyante ang praktikal na kakayahang magamit ng kanilang propesyonal na kaalaman... Upang makamit ang isang katulad na epekto, ang mga pamamaraan para sa pagkalkula ng mga regulator ay binuo gamit ang isang mathematical apparatus na hindi lalampas kurikulum ng paaralan sa matematika at pisika. Sa partikular, sa halip na mga differential equation, ginagamit ang mga difference equation na mahusay na tumutugma sa discrete na katangian ng interaksyon sa pagitan ng object at ng controller sa ilalim ng kontrol ng computer.

Isaalang-alang, halimbawa, ang problema sa pagbuo ng proportional (P) at proportional-differential (PD) controllers sa problema ng pagkontrol sa paggalaw ng isang mobile robot sa kahabaan ng dingding. Tukuyin natin sa pamamagitan ng xt ang distansya sa pagitan ng robot at ng pader, sa pamamagitan ng θt - ang heading angle ng robot, at sa pamamagitan ng ut - ang control action sa sandaling ito na may ordinal number t, ayon sa pagkakabanggit, kung saan t = 0, 1, 2 , ... ay ang mga bilang ng mga sandali ng mga sukat.

rhenium. Ito ay pinaniniwalaan na ang botohan ng mga sensor at ang pagbabago sa magnitude ng pagkilos ng kontrol ay ginagawa sa mga regular na pagitan h. Para sa mga gawain ng pagkontrol sa mga robot ng Lego NXT, natural na ipagpalagay na ang pagkilos ng kontrol ay ang pagkakaiba sa mga angular na bilis ng mga gulong, na proporsyonal sa rate ng pagbabago ng anggulo ng heading:

Ipagpalagay na ang mga paglihis ng kurso mula sa nominal na θt = 0 ay maliit, at ang average na bilis ng robot ay pare-pareho: vt = v, ang dynamics ng mga pagbabago sa mga variable ng estado ng robot sa unang pagtatantya ay maaaring ilarawan linear na equation nagsasaad:

kung saan ang g = h2vr / b.

Itakda natin ang nais na distansya sa dingding x *> 0 at tukuyin ang layunin ng kontrol (CC) sa pamamagitan ng ratio

xt → x * bilang t → ∞.

Ngayon, natural nating ipinakilala sa makabuluhang antas ang konsepto ng asymptotic stability bilang isang pag-aari ng mga solusyon sa system (4) na nagsisiguro sa pagkamit ng control system (5) para sa anumang mga paunang kundisyon na kakaunti ang pagkakaiba sa mga target. Madaling makita na para sa u t = 0 ang solusyon sa equation (4) ay anumang pare-parehong halaga x t = x *. Ngunit dahil ang equation (4), na tumutugma sa modelo ng isang double integrator (double adder), ay hindi nagtataglay ng pag-aari ng asymptotic stability, control equation (5) para sa permanenteng pamamahala ay hindi nakakamit. Madali itong ipinakita sa parehong analytically - sa pamamagitan ng pagbubuod ng serye

Ang gawaing ito ay klasiko, simple sa konsepto, maaari itong malutas nang maraming beses, at sa bawat oras na makatuklas ka ng bago para sa iyong sarili.

Mayroong maraming mga diskarte sa paglutas ng line-following problem. Ang pagpili ng isa sa mga ito ay depende sa tiyak na disenyo ng robot, sa bilang ng mga sensor, ang kanilang lokasyon na may kaugnayan sa mga gulong at sa bawat isa.

Sa aming halimbawa, susuriin namin ang tatlong halimbawa ng isang robot batay sa pangunahing modelo ng pagsasanay na Robot Educator.

Upang magsimula, binubuo namin ang pangunahing modelo ng robot ng pagsasanay na Robot Educator, para dito maaari mong gamitin ang mga tagubilin sa software MINDSTORMS EV3.

Gayundin, para sa mga halimbawa kailangan namin ng EV3 light-color na sensor. Ang mga light sensor na ito, tulad ng walang iba, ay pinakaangkop para sa aming gawain, kapag nagtatrabaho sa kanila, hindi namin kailangang mag-alala tungkol sa intensity ng ambient light. Para sa sensor na ito, sa mga programa ay gagamitin namin ang reflected light mode, kung saan tinatantya ang dami ng reflected light ng pulang backlight ng sensor. Ang mga limitasyon ng mga pagbabasa ng sensor ay 0 - 100 mga yunit, para sa "walang pagmuni-muni" at "kabuuang pagmuni-muni", ayon sa pagkakabanggit.

Halimbawa, susuriin namin ang 3 halimbawa ng mga programa para sa paglipat sa isang itim na trajectory na inilalarawan sa isang patag, maliwanag na background:

· Isang sensor, na may P regulator.

· Isang sensor, na may PC controller.

· Dalawang sensor.

Halimbawa 1. Isang sensor, na may P controller.

Disenyo

Ang light sensor ay naka-mount sa isang beam na maginhawang matatagpuan sa modelo.


Algorithm

Ang pagpapatakbo ng algorithm ay batay sa katotohanan na depende sa antas ng overlap ng sensor backlight beam na may itim na linya, ang mga pagbabasa na ibinalik ng sensor ay nag-iiba sa isang gradient. Pinapanatili ng robot ang posisyon ng light sensor sa hangganan ng itim na linya. Sa pamamagitan ng pag-convert ng input data mula sa light sensor, ang control system ay bumubuo ng isang halaga para sa bilis ng pag-ikot ng robot.


Dahil sa isang tunay na tilapon ang sensor ay bumubuo ng mga halaga sa buong saklaw ng pagtatrabaho nito (0-100), kung gayon ang halaga kung saan nagsusumikap ang robot ay 50. Sa kasong ito, ang mga halaga ng ipinadala na mga pag-andar ng pag-ikot ay nabuo sa saklaw -50-50, ngunit ang mga halagang ito ay hindi sapat para sa isang matarik na pag-ikot sa tilapon. Samakatuwid, ang hanay ay dapat na palawakin ng isa at kalahating beses hanggang -75 - 75.

Bilang resulta, sa programa, ang calculator function ay isang simpleng proportional controller. Kaninong function ( (a-50) * 1.5 ) sa hanay ng pagtatrabaho ng light sensor ay bumubuo ng mga halaga ng pag-ikot alinsunod sa graph:

Isang halimbawa kung paano gumagana ang algorithm

Halimbawa 2. Isang sensor, na may PC controller.

Ang halimbawang ito ay nagtatayo sa parehong konstruksiyon.

Maaaring napansin mo na sa nakaraang halimbawa, ang robot ay umindayog nang labis, na hindi pinahintulutan itong bumilis nang sapat. Ngayon ay susubukan naming mapabuti nang kaunti ang sitwasyong ito.

Sa aming proporsyonal na controller, nagdaragdag din kami ng simpleng cube controller na magdaragdag ng flex sa function ng controller. Bawasan nito ang pag-uyog ng robot malapit sa nais na hangganan ng tilapon, pati na rin ang paggawa ng mas malakas na mga jerks sa isang malaking distansya mula dito.

Ang isa sa mga pangunahing paggalaw sa magaan na konstruksyon ay ang pagsunod sa itim na linya.

Pangkalahatang teorya at tiyak na mga halimbawa ang paglikha ng programa ay inilarawan sa website na wroboto.ru

Ilalarawan ko kung paano natin ito ipinapatupad sa kapaligiran ng EV3, dahil may mga pagkakaiba.

Ang unang bagay na kailangang malaman ng robot ay ang halaga ng "ideal point" na matatagpuan sa hangganan ng itim at puti.

Ang lokasyon ng pulang tuldok sa figure ay eksaktong tumutugma sa posisyon na ito.

Ang perpektong opsyon sa pagkalkula ay sukatin ang halaga ng itim at puti at kunin ang arithmetic mean.

Maaari itong gawin nang manu-mano. Ngunit ang mga disadvantages ay makikita kaagad: sa loob ng kahit na isang maikling panahon, ang pag-iilaw ay maaaring magbago, at ang kinakalkula na halaga ay magiging hindi tama.

Nangangahulugan ito na maaari mong gawin ang robot.

Sa pamamagitan ng aming mga eksperimento, nalaman namin na hindi kinakailangang sukatin ang parehong itim at puti. Puti lang ang masusukat. At ang perpektong halaga ng punto ay kinakalkula bilang puting halaga na hinati sa 1.2 (1.15), depende sa lapad ng itim na linya at ang bilis ng robot.

Ang kinakalkula na halaga ay dapat na nakasulat sa isang variable upang ma-access ito sa ibang pagkakataon.

Tamang pagkalkula ng punto

Ang susunod na parameter na kasangkot sa paggalaw ay ang steering ratio. Kung mas malaki ito, mas matalas ang reaksyon ng robot sa mga pagbabago sa pag-iilaw. Ngunit din pinakamahalaga ay magiging sanhi ng pag-urong ng robot. Ang halaga ay pinili nang eksperimento nang paisa-isa para sa bawat disenyo ng robot.

Ang huling parameter ay ang base power ng mga motors. Nakakaapekto ito sa bilis ng paggalaw ng robot. Ang pagtaas sa bilis ng paggalaw ay humahantong sa pagtaas sa oras ng pagtugon ng robot sa mga pagbabago sa pag-iilaw, na maaaring humantong sa pag-alis mula sa tilapon. Ang halaga ay pinili din sa pang-eksperimentong paraan.

Para sa kaginhawahan, ang mga parameter na ito ay maaari ding isulat sa mga variable.

Steering Ratio at Base Power

Ang lohika ng paggalaw sa kahabaan ng itim na linya ay ang mga sumusunod: ang paglihis mula sa perpektong punto ay sinusukat. Kung mas malaki ito, mas malakas ang robot na dapat magsikap na bumalik dito.

Upang gawin ito, kinakalkula namin ang dalawang numero - ang halaga ng kapangyarihan ng bawat isa sa mga motor B at C nang hiwalay.

Sa anyo ng mga formula, ganito ang hitsura:

Kung saan ang Isens ay ang halaga ng mga pagbabasa ng light sensor.

Panghuli, ang pagpapatupad sa EV3. Ito ay pinaka-maginhawa upang ayusin ito bilang isang hiwalay na bloke.

Pagpapatupad ng algorithm

Ito ang eksaktong algorithm na ipinatupad sa robot para sa gitnang kategorya WRO 2015

Ang proporsyonal na controller ay isang device na nagsasagawa ng control effect na u (t) sa isang bagay na may proporsyon sa linear deviation nito e (t) mula sa isang ibinigay na estado x0 (t);

e (t) = x0 (t) -x (t), kung saan ang x (t) ay ang estado sa isang partikular na oras;

u (t) = ke (t), kung saan ang k ay isang gain factor.
Iyon ay, habang ang robot ay lumihis mula sa ibinigay na kurso, mas aktibong dapat gumana ang mga motor, na nakahanay dito.

Pagmamaneho sa isang linya na may isang light sensor gamit ang isang P-controller

Ang paggalaw sa kahabaan ng hangganan ng itim at puti ay maaari ding itayo sa P-controller. Bagaman sa panlabas, ang problema ay tila malulutas lamang sa tulong ng isang relay controller, dahil mayroon lamang dalawang estado na nakikita ng mata ng tao sa system: itim at puti. Ngunit iba ang nakikita ng robot sa lahat, dahil walang matalim na hangganan sa pagitan ng mga kulay na ito. Masasabi natin na siya ay myopic at nakakakita ng gradient transition ng shades of grey.

Ito ang makakatulong sa pagbuo ng P-controller.
Sa pamamagitan ng pagtukoy sa estado ng trabaho bilang mga pagbabasa ng light sensor, matututuhan nating magbigay ng proporsyonal na control effect sa mga motor ayon sa sumusunod na batas:
e = s1-gray, kung saan ang s1 ay ang kasalukuyang sensor reading at gray ang target na value.

Ang coefficient k (na 2 sa halimbawang ito) ay dapat sapat na maliit (mula 1 hanggang 3). Ang naturang regulator ay epektibong gumagana lamang para sa maliliit na anggulo ng pagpapalihis, kaya dapat ilagay ang robot sa direksyon ng paggalaw upang ang sensor ay nasa kaliwang bahagi ng itim na linya. Madaling makita na ang paggalaw sa kahabaan ng linya sa P-controller ay makinis. at sa ilang mga lugar ng trabaho ay gumagalaw halos sa isang tuwid na linya o eksaktong sumusunod sa mga liko ng linya.

Pag-calibrate ng sensor

Bumaling tayo sa numerong 48 na ginamit sa formula. Ito ang arithmetic average ng light sensor sa itim at puti, halimbawa (40 + 56) / 2 = 48. Gayunpaman, ang mga pagbabasa ng mga sensor ay madalas na nagbabago para sa iba't ibang mga kadahilanan: ibang ibabaw, isang pagbabago sa pangkalahatang pag-iilaw sa silid, isang bahagyang pagbabago ng istraktura, atbp. Samakatuwid, manu-manong i-calibrate namin ang robot sa pamamagitan ng pagtukoy sa mga pagbabasa ng light sensor sa puti at sa itim.

Pagmamaneho sa isang linya na may dalawang light sensor gamit ang P-controller
Ang tamang pagmamaneho sa isang intersection na may isang light sensor ay medyo mahirap. Kung gusto mong gawin ito sa sapat na bilis, kailangan mo ng hindi bababa sa dalawang sensor, na inilagay sa layo na dalawang lapad ng linya (o mas malawak).
Kapag nagmamaneho, posible ang apat na estado ng sensor:

  • pareho sa puti - tuwid sa unahan;
  • kaliwa (s1) hindi itim, kanan (s2) sa puti - lumipat sa kaliwa;
  • kaliwa sa puti, kanan sa itim - paggalaw sa kanan;
  • pareho sa itim - diretso sa unahan.
yun. kung ang mga pagbabasa ng sensor ay pantay (parehong puti o parehong itim), ang robot ay dumiretso. Bago simulan ang robot, awtomatiko naming i-calibrate ang parehong mga sensor. Pagkatapos ang algorithm ng paggalaw kasama ang linya kasama ang P-controller ay magmumukhang isang s.s.:

Ang koepisyent k ay maaaring mag-iba sa isang medyo malawak na hanay (mula 1 hanggang 20 o higit pa) depende sa kurbada ng linya, ang kakayahang magamit ng robot at ang pagkakaiba sa pagitan ng itim at puti sa field.
Isang mahalagang kondisyon. Ang auto-calibration ay dapat isagawa sa isang solong kulay na ibabaw at mas mabuti sa pag-iilaw na sasakupin ang pinakamalaking bahagi ng landas. Halimbawa, kung ang isang robot ay nagmamaneho sa isang itim na linya sa isang puting field, dapat itong i-calibrate sa isang puti. Yung. ang posisyon ng robot sa simula ay dapat na ganito:


At isa pang komento. May mga sensor na ang mga pagbabasa ay naiiba ng 10-20%. Maipapayo na huwag ipares ang mga ito sa isang regulator na may malaking koepisyent, dahil sa isang matalim na pagbabago sa pangkalahatang pag-iilaw kahit na sa isang pare-parehong puting patlang, ang mga paglihis ay maaaring magkakaiba, na hahantong sa hindi inaasahang mga kahihinatnan.