bahay - Pag-ayos ng kasaysayan
Proportional integral differential PID controller sa Lego Mindstorms robotics. Proporsyonal na controller. International Robot Competition - Mga Panuntunan - Mga Sample na Robot - LEGO EV3 Trajectory Robot Proportional R Program

Ang robotics ay isang kawili-wiling bagong direksyon, na, tila, ay patuloy na bubuo sa loob ng balangkas ng mga kurso sa paaralan impormasyon at teknolohiya. Ang boom ng robotics ay higit sa lahat dahil sa ang katunayan na ito ay nagbibigay-daan sa iyo upang sagutin ang tanong na: "Bakit tayo talaga 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 simulator para sa programming at Arduino boards na binuo ng may-akda. Makakatulong sila sa mga kaso kung saan sa ilang kadahilanan ay hindi posible na gumamit ng tunay na hardware.

Gumagamit ang mga tagapagsanay ng mga feature ng HTML5, kaya gagana lang ang mga ito mga modernong browser(pinakamahusay na gamitin Google Chrome o Mozilla Firefox).

Balita ngayon sa Telegram channel

Nobyembre 27, 2015
Ang track ng "germ" ay idinagdag sa mga simulator ( M.V. Lazarev, Orekhovo-Zuevo).

Oktubre 13, 2015
Ngayon sa mga simulator para sa LEGO robot, maaari mong i-upload ang iyong mga track (mga field para sa robot). 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 pamagat SiRoP (Simpleng Robot Programming).

Kontrol ng robot na may light sensor

Ang light sensor ay nagbibigay-daan sa robot na mag-navigate sa ibabaw ng mesa, halimbawa, upang lumipat sa 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 paglipat sa isang linya. Sa tulong ng simulator, maaari mong pag-aralan ang iba't ibang mga batas sa kontrol - relay, proporsyonal, at kahit na kontrol ng PID (proportional-integral-derivative).

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

Habang 1 ( kung sensor > 128 ( motor = 100 motor = 0 ) iba pa ( 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 wait(10) ) likod() turn() ) ) likod ( motor = -100 motor = -100 wait(260) ) turn ( motor = -50 motor = 50 maghintay(50) )

Kontrol ng robot na may dalawang light sensor

Pinapayagan ng dalawang light sensor ang robot na mas mahusay na mag-navigate at sumunod sa isang manipis na linya. Iniharap sila ng kaunti at nahati sa mga gilid. Tulad ng para sa mga gawain na may isang solong sensor, gamit ang simulator na ito, maaari mong pag-aralan ang iba't ibang mga batas sa kontrol.

Mga halimbawang 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 matatalim na pagliko. Ang mga panloob na sensor ay ginagamit para sa mahusay na pagsasaayos, ang proporsyonal na kontrol ay ginagamit para sa kanila. Dalawa mga panlabas na sensor dinala ng kaunti pasulong at humiwalay sa mga gilid. Ginagamit ang mga ito kapag may matalim na pagliko. Ang kadahilanan ng nakuha para sa kontrol ayon sa mga pagbabasa ng mga sensor ng panlabas na pares ay piniling mas malaki kaysa sa panloob na pares (tingnan ang Fig. L.Yu. Ovsyanitskaya et al., Algorithms at mga programa para sa paggalaw ng Lego Mindstorms EV3 robot sa linya, M.: "Pero", 2015).

Mga halimbawang 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 mag-navigate sa isang maze na may kilalang hugis ngunit hindi kilalang laki.

Ang gawaing ito ay klasikal, simple sa ideolohiya, maaari itong malutas nang maraming beses, at sa bawat oras na makatuklas ka ng bago.

Mayroong maraming mga diskarte upang malutas ang sumusunod na linya ng problema. 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 bawat isa.

Sa aming halimbawa, tatlong halimbawa ng robot ang kakalasin batay sa pangunahing modelo ng tutorial ng Robot Educator.

Upang magsimula, binubuo namin ang pangunahing modelo ng robot na pang-edukasyon ng 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 red illumination 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 landas na inilalarawan sa isang pantay, maliwanag na background:

· Isang sensor, na may P regulator.

· Isang sensor, na may PK regulator.

· Dalawang sensor.

Halimbawa 1. Isang sensor, na may P regulator.

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, ang sensor illumination beam na may isang 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 data ng input mula sa light sensor, nabuo ng control system ang halaga ng bilis ng pagliko ng robot.


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

Sa wakas, sa programa, ang calculator function ay isang simpleng proportional controller. kaninong tungkulin ( (a-50)*1.5 ) sa operating range ng light sensor ay bumubuo ng mga halaga ng pag-ikot alinsunod sa graph:

Isang halimbawa ng algorithm

Halimbawa 2. Isang sensor, na may PK controller.

Ang halimbawang ito ay pinagsama-sama sa parehong disenyo.

Marahil ay napansin mo na sa nakaraang halimbawa, ang robot ay umindayog nang labis, na hindi pinapayagan 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 twist sa controller function. Bawasan nito ang pag-indayog ng robot malapit sa nais na hangganan ng trajectory, pati na rin ang paggawa ng mas malakas na mga jerks sa isang malaking distansya mula dito.

Ang proportional controller ay isang device na nagsasagawa ng control action na u(t) sa isang bagay na 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 ang amplifying factor.
Iyon ay, habang ang robot ay lumihis mula sa itinakdang kurso, mas aktibong dapat gumana ang mga motor, na pinapa-level ito.

Naglalakad sa isang linya na may isang light sensor gamit ang P controller

Ang paggalaw sa kahabaan ng hangganan ng itim at puti ay maaari ding itayo sa P-regulator. Bagaman sa panlabas, ang gawain 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. Maaari nating sabihin na siya ay maikli ang paningin at nakikita ang isang gradient transition ng shades of grey.

Ito ang makakatulong sa pagbuo ng P-regulator.
Ang pagtukoy sa estado ng trabaho bilang mga pagbabasa ng light sensor, matututunan natin kung paano magbigay ng proporsyonal na control effect sa mga motor ayon sa sumusunod na batas:
e=s1-grey, kung saan ang s1 ay ang kasalukuyang sensor reading at gray ang set value.

Coefficient k (katumbas ng halimbawang ito 2) dapat sapat na maliit (mula 1 hanggang 3). Ang naturang controller 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-regulator ay makinis. at sa ilang mga lugar ng trabaho ito ay gumagalaw halos rectilinearly o eksaktong paulit-ulit ang mga liko ng linya.

Pag-calibrate ng sensor

Tingnan natin ang numero 48 na ginamit sa formula. Ito ang arithmetic average ng light sensor na nagbabasa sa itim at puti, halimbawa (40+56)/2=48. Gayunpaman, ang mga pagbabasa ng mga sensor ay madalas na nagbabago ayon sa iba't ibang dahilan: 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 itim.

Line tracking na may dalawang light sensor gamit ang P controller
Medyo mahirap magmaneho ng tama sa intersection gamit ang isang light sensor. Kung gusto mong gawin ito sa sapat na bilis, kailangan mo ng hindi bababa sa dalawang sensor na may pagitan ng hindi bababa sa dalawang lapad ng linya (o mas malawak).
Mayroong apat na estado ng sensor kapag gumagalaw:

  • 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 - dumiretso.
yun. kung ang mga pagbabasa ng sensor ay pantay (parehong puti o parehong itim), dumiretso ang robot. 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 magiging ganito:

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.
Mahalagang kondisyon. Ang autocalibration 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 robot ay gumagalaw sa kahabaan ng itim na linya sa isang puting patlang, pagkatapos ay kinakailangan na mag-calibrate sa isang puti. Yung. ang posisyon ng robot sa simula ay dapat na ganito:


At isa pang tala. 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. Mga Detalye May-akda: Konovalov Igor Ang proporsyonal na controller ay isang pagpapabuti. Ang pangunahing kawalan ng relay ay walang pakialam kung magkano ang pagkakaiba ng kasalukuyang mga halaga mula sa normal na halaga ng sensor. Mayroon lamang itong dalawang estado - subukang taasan ang mga halaga ng sensor ng isang tiyak na pare-parehong numero kung mas mababa sila sa normal na halaga, o dagdagan ito. Dahil dito, nangyayari ang mga oscillations na may pare-pareho ang amplitude, na kung saan ay napaka hindi mabisa.
Ito ay higit na lohikal upang matukoy kung gaano "malayo" ang kasalukuyang mga pagbabasa mula sa normal, at baguhin ang amplitude depende dito. Upang gawing mas malinaw, tingnan natin ang isang halimbawa. Ang halimbawa ay kapareho ng sa nakaraang artikulo: isang robot mula sa Lego Mindstorms EV3 ang nagmamaneho sa isang itim na linya gamit ang isang color sensor sa light mode.

Sinusubukan ng robot na magmaneho kasama ang hangganan sa pagitan ng puti at itim, at doon ang sensor ay nagpapakita ng humigit-kumulang 50% na pag-iilaw. At kung mas malayo ito sa normal na posisyon, mas maraming pagsisikap ang ginagawa ng robot upang bumalik sa 50%.
Upang magsulat ng isang programa, gagamitin namin ang mga terminong "error", "control action". Error - ang pagkakaiba sa pagitan ng kasalukuyang pagbabasa ng sensor at ng normal. Sa aming kaso, kung ngayon nakikita ng robot ang 20% ​​ng pag-iilaw, kung gayon ang error ay 20-50= -30%. Isinasaad ng error sign kung saang direksyon dapat lumiko ang robot upang maalis ang error. Ngayon kailangan nating sabihin sa mga motor kung aling paraan upang i-on ang robot, sa anong bilis at kung gaano kabilis. Kinakailangang magsagawa ng control effect sa mga motor, na nangangahulugan kung gaano ito kabilis dapat bumalik sa normal nitong posisyon. Ang control action (UP) ay kinakalkula bilang error (error) na pinarami ng proportionality factor (k). Ang salik na ito ay ginagamit upang madagdagan o bawasan ang impluwensya ng error sa pagkilos ng kontrol. Inilapat ang pagkilos na kontrol sa pagpipiloto, kung saan nakatakda ang average na bilis ng robot.
Paano itakda ang aspect ratio? Empirically piliin ang mga halaga, para sa pagpasa ng trajectory maaari itong maging, halimbawa, mula 0.2 hanggang 1.5, depende sa bilis at disenyo ng robot. Kung ang koepisyent ay masyadong malaki, kung gayon ang robot ay kumakawag nang malakas, kung ito ay maliit, ito ay magmaneho nang maayos, ngunit sa ilang mga punto sa pagliko, umalis dahil sa hindi sapat na pagkilos ng kontrol. Sumulat tayo ng dalawang bersyon ng programa - na may mga variable (para sa mga nakapag-aral na sa kanila) at wala.


Ngunit ang regulator na ito ay maaari ding palakasin sa pamamagitan ng pagpapakilala ng isang proporsyonal at mahalagang bahagi, ang paglalarawan ay nasa mga sumusunod na artikulo. Hanggang sa muli!

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 itinakdang halaga nito x0(t) :

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

Ito ang prinsipyo ng Polzunov-Watt ng regulasyon sa pamamagitan ng paglihis, o ang prinsipyo ng feedback. Ang mathematical expression ng functional dependence ng ninanais na control action u0(t) sa mga value na sinusukat ng controller ay tinatawag na batas o control algorithm, na tinalakay 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 tinukoy na estado x0 ay karaniwang tinatawag na setpoint, at ang paglihis mula dito e ay ang nalalabi. Dagdag pa, para sa katiyakan, tutukuyin natin ang pagkakaiba sa pamamagitan ng pagdadaglat na mali (mula sa salitang Ingles"error" - isang error).

kontrol ng motor

Ang isang bihasang mandirigma ay hindi magwawalang-bahala ng espada, gaya ng ginagawa ng isang robot sa isang relay controller. Kailangan nating makabuo ng isang algorithm na hahawak sa motor na may hawak ng espada sa isang mahigpit na nakapirming posisyon (Larawan 7.1). Ang P-regulator ay tutulong dito.

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

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

Narito ang k ay isang gain factor, halimbawa 5, na magpapataas ng tugon ng motor kahit na may maliliit na deviations mula sa setpoint.

1 Huwag malito ang mathematical notation e (mula sa error) sa encoder value na e 1 (mula sa encoder), isang paunang natukoy na Robolab environment variable.

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

kanin. 7.8. Algorithm para sa pagkontrol ng motor sa isang proporsyonal na regulator.

Kung ang gain ay tataas mula 5 hanggang 100, ang aming proporsyonal na controller ay magsisimulang kumilos bilang isang relay controller, na magdudulot ng malalakas na oscillations dahil sa overshoot effect.

Ang wikang RobotC ay walang ganoong maginhawang notasyon para sa mga pagbabasa ng encoder tulad ng sa Robolab, kaya medyo mas mahaba ang hitsura ng programa:

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

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

Dagdag pa, upang makapagdulot ng "sword strike", sapat na, pagkakaroon ng 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 robot drummer sa Kabanata 8.

At ngayon ay magtatayo kami ng isang controller 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 dito. Ang pinakasimpleng tool para sa patuloy na pagtaas ng setpoint ay isang 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. Kabisaduhin natin ang unang timer, na gumagawa ng 10 “ti-

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

Ang anggulong alpha ng deflection ng motor, na ibinigay sa nakaraang halimbawa ng value na 45, ay magdedepende sa mga pagbabasa ng timer na may accelerating factor k 2:

alpha = k2 ∙ T1.

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

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

Sa madaling sabi, sa programa sa wikang Robolab, ilalapat namin kaagad ang kontrol na aksyon sa motor, pagkatapos na simulan ang timer

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

Tinutukoy ng koepisyent k 2 = 36 na sa isang segundo ang halaga ng alpha ay tumatakbo 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 isang beses bawat segundo:

alpha \u003d T 1 / 10 ∙ k 2.

Sa coefficient k 2 = 60, ang mga displacement ng mga beam ay tumutugma sa paggalaw ng pangalawang kamay sa mukha ng orasan. Ngunit hindi ito sapat

kapansin-pansin. Para sa kalinawan, maaari mong itakda ang k2 = 30, pagkatapos ang arrow ay gagawa ng isang buong pagliko sa 12 "ticks" na 30 degrees bawat isa. Mag-ingat sa pagkakasunud-sunod ng integer division at multiplication operations, kung babaguhin mo ang kanilang order o "bawasan", tiyak na magbabago ang resulta (Larawan 7.10).

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

At sa wakas, isang halimbawa ng isang mathematical drummer. Sa halip na patuloy na sumulong, ang arrow ay mag-o-oscillate pabalik-balik sa ilalim ng kontrol ng P-controller. Makakatulong ito sa operasyon ng paghahati na may natitira, na sa wikang C ay tinutukoy ng sign %. Ang natitira sa isang hindi negatibong integer na hinati sa 2 ay palaging magiging 0 o 1:

alpha = T 1 % 2 ∙ k 2.

Sa pamamagitan ng pagtaas ng deviation ng k 2=15 beses, nakakakuha tayo ng oscillating setpoint alpha , na pipilitin ang regulator na ilipat ang motor 5 beses bawat segundo alinman sa 0º o 15 degrees. Ang mga pagbabago sa programa ay maliit. Isaalang-alang 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 humahampas sa mesa sa mga regular na pagitan. Ang pangunahing bagay ay magsimula sa tamang posisyon. Gamit ang integer mathematics, maaari ka ring magtakda ng mas kumplikadong rhythmic pattern, halimbawa (Talahanayan 7.1):

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

sentro = S3.

Ang koepisyent ay tinutukoy sa loop:

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

kanin. 7.36. Ang paggalaw sa linya sa isang proporsyonal na regulator na may lumulutang na koepisyent.

Ang nakuhang batas sa pagkontrol ng nakuha ay maaaring ilapat hindi lamang sa proporsyonal na bahagi, kundi pati na rin sa anumang iba pa, gayundin sa pagkilos ng kontrol sa kabuuan (Larawan 7.36).

PID controller

Ang Proportional-Integral-Derivative (PID) controller ay isa sa pinakasikat at ginagamit sa malaking bilang ng mga device sa buong mundo. iba't ibang uri, na nangangailangan ng mabilis na pagtugon at katumpakan ng pagpoposisyon ng system. Gaya ng ipinahihiwatig ng pangalan, ang controller na ito ay binubuo ng kabuuan ng tatlong bahagi at graphical na inilalarawan sa Fig. 7.37.

kanin. 7.37. Scheme ng PID controller.

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

u (t) \u003d p + i + d \u003d 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-regulator ay maaaring "labis na labis" at ang robot ay magsisimulang mag-skid mula sa gilid patungo sa gilid.

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

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

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

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

Ang pisikal na kahulugan ng dami e (t) × dt ay ang pro-

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

Isaalang-alang ang paggamit ng isang PID controller gamit ang 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 pinakasimpleng anyo PID controller. Gayunpaman, kakailanganin ang mas tumpak na pagbabasa ng sensor upang makamit ang pagpapapanatag ng robot.

RAW na format

Ang data ng sensor ay ipinapadala sa NXT controller sa 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 iko-convert sa isang mas nauunawaan na anyo (distansya 0...255, illumination 0...100, touch 0 o 1, atbp.). Ngunit ang data ay maaari ding matanggap, na lampasan ang driver, nang direkta. Ang raw na format na ito ay karaniwang tinutukoy bilang RAW (mula sa Ingles na "raw"). Sa ilang mga kaso, maaari itong magamit upang makakuha ng higit na katumpakan. Kaya, halimbawa, ang hanay ng halaga ng light sensor ay maaaring tumaas ng humigit-kumulang 10 beses. Ang posibilidad na ito ay ginagamit sa ibaba.

Maaari kang makatanggap ng data sa RAW na format sa parehong Robolab at RobotC. Upang gawin ito, ang sensor ay pinasimulan nang naaayon, at ang data ay binabasa mula dito gamit ang isang espesyal na paunang natukoy na variable.

robot ng pagbabalanse

Ang disenyo ng segway robot ay ipinapakita sa Fig. 7.38: vertically mounted controller, malapit na pagitan ng mga gulong at light sensor na nakaturo pababa. Ang algorithm ay magiging mas kumplikado.

Ang prinsipyo ng pagpapapanatag ng Segway sa posisyon ng balanse ay ang mga sumusunod. Kung sasandal ang robot, tataas ang ambient light sensor dahil sa masasalamin na liwanag. Bilang tugon dito, nabuo ang isang pagkilos na kontrol, na pinipilit ang robot na sumulong at sa gayon ay muling ipagpalagay ang isang patayong posisyon.

Kapag lumihis pabalik, 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 papel ng integral at differential na bahagi ay itinalaga sa insurance laban sa overshoot.

kanin. 7.38. Pagbabalanse ng segway robot.

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 PID controller.

Kasunod ng tradisyon ng paglipat sa linya, ginagamit namin ang gray na variable bilang setpoint - ang average na pagbabasa ng light sensor sa posisyon ng equilibrium. Tinutukoy ng bagong parameter ng sukat ang pag-scale ng pagkilos na kontrol. Ito ay mahalagang isang dampening factor dahil ang halaga na nabuo ng ESC ay masyadong mataas para sa mga NXT motor. Posibleng dalhin ito sa loob ng umiiral na mga coefficient, ngunit para sa RobotC ang parameter na ito ay magkakaiba, at ang mga coefficient ay pareho.

Sa ibinigay na mga coefficient, ang robot ay mahusay na nagpapatatag sa plain light linoleum o isang desk. Ibig sabihin, hindi niya kailangan kulay puti ibabaw. Upang magsimula, kailangan mong tumpak na itakda ang Segway sa posisyon ng equilibrium. Kung ang robot ay magsisimula sa isang tiyak na pagtabingi pasulong o paatras, ito ay agad na magsisimulang gumalaw sa direksyon ng pagtabingi.

Ang isang katulad na halimbawa sa RobotC ay medyo 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 mabilis kaysa sa Robolab, kaya dapat tumaas ang scale factor. Pangalawa, ang mga halaga ng RAW ay ipinapasa sa tamang ayos at kakailanganin mong itakda ang kabaligtaran ng mga motor o maglapat lamang ng negatibong pagkilos na kontrol:

int grey=Sensor Raw; int err, errold=0;

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

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

err=grey-SensorRaw; //Reverse deviation p=kp*err;

i=i+ki*err*dt; d=kd*(err-errold)/dt; errold=err; u=(p+i+d)/scale; 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 "maglipat ng tulay" sa pagitan ng mga larangan ng kaalaman ng isang espesyalista at isang mag-aaral, na tumutulong sa mga mag-aaral sa paaralan na makita ang pag-asam ng isang espesyalidad sa hinaharap, i.e. upang magsagawa ng gabay sa karera, at makita ng mga mag-aaral ang praktikal na kakayahang magamit ng kanilang mga 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 mga programa sa paaralan sa matematika at pisika. Sa partikular, sa halip na differential equation ang mga pagkakaiba ay ginagamit, na tumutugma nang maayos sa discrete na katangian ng pakikipag-ugnayan sa pagitan ng bagay 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 x t ang distansya sa pagitan ng robot at ng pader, sa pamamagitan ng θt - ang heading angle ng robot, at sa pamamagitan ng u t - 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 pagbabago

rhenium. Ito ay pinaniniwalaan na ang mga sensor ng botohan at ang pagbabago ng magnitude ng pagkilos ng kontrol ay isinasagawa 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. angular velocity pag-ikot ng gulong, proporsyonal sa rate ng pagbabago ng anggulo ng heading:

Isinasaalang-alang ang mga paglihis ng kurso mula sa nominal na θt =0 na 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.

Itinakda namin 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 naming ipinakilala ang konsepto ng asymptotic na katatagan sa substantive na antas, bilang isang pag-aari ng mga solusyon sa system (4), na nagsisiguro sa pagkamit ng CC (5) sa ilalim ng anumang mga paunang kondisyon na medyo naiiba sa mga target. Madaling makita na 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 double integrator (double adder) na modelo ay walang katangian ng asymptotic stability, CU (5) sa permanenteng pamamahala ay hindi nakakamit. Madali itong ipinakita bilang analytically - pagbubuod ng serye



 


Basahin:



Ang mga benepisyo at kahalagahan ng hydroamino acid threonine para sa katawan ng tao Mga tagubilin para sa paggamit ng threonine

Ang mga benepisyo at kahalagahan ng hydroamino acid threonine para sa katawan ng tao Mga tagubilin para sa paggamit ng threonine

Siya ang nagdidikta ng sarili niyang mga alituntunin. Ang mga tao ay lalong gumagamit ng pagwawasto sa diyeta at, siyempre, sports, na naiintindihan. Pagkatapos ng lahat, sa mga kondisyon ng malaking ...

Mga prutas ng haras: mga kapaki-pakinabang na katangian, contraindications, mga tampok ng application Fennel ordinaryong kemikal na komposisyon

Mga prutas ng haras: mga kapaki-pakinabang na katangian, contraindications, mga tampok ng application Fennel ordinaryong kemikal na komposisyon

Pamilya Umbelliferae - Apiaceae. Karaniwang pangalan: pharmacy dill. Mga bahaging ginamit: mature na prutas, napakabihirang ugat. Pangalan ng botika:...

Pangkalahatang atherosclerosis: sanhi, sintomas at paggamot

Pangkalahatang atherosclerosis: sanhi, sintomas at paggamot

Class 9 Mga sakit ng circulatory system I70-I79 Mga sakit ng arteries, arterioles at capillaries I70 Atherosclerosis I70.0 Atherosclerosis ng aorta I70.1...

Pagkontrata ng iba't ibang grupo ng mga kasukasuan, sanhi, sintomas at paraan ng paggamot

Pagkontrata ng iba't ibang grupo ng mga kasukasuan, sanhi, sintomas at paraan ng paggamot

Ang mga traumatologist at orthopedist ay nakikibahagi sa paggamot ng contracture ni Dupuytren. Ang paggamot ay maaaring maging konserbatibo o kirurhiko. Pagpili ng mga pamamaraan...

larawan ng feed RSS