основен - История на поправка
  Пропорционално интегриран диференциален PID контролер в Lego Mindstorms роботи. Пропорционален регулатор. Международни състезания за роботи - Правила - Примери за роботи - Робот за траектория въз основа на програма LEGO EV3, пропорционална на

Роботика е интересно ново направление, което очевидно ще бъде доразвито като част от училищните курсове по компютърни науки и технологии. Бумът на роботиката до голяма степен се дължи на факта, че тя ви позволява да отговорите на въпроса: "Но защо всъщност се учим на програмиране?" Освен това в хода на роботиката можете да се запознаете с основните понятия от теорията на автоматичното управление.

На тази страница са представени симулаторите, разработени от автора за програмиране и Arduino дъската. Те могат да помогнат в случаите, когато по някаква причина не е възможно да се използва истински хардуер.

Обучителите използват възможностите на HTML5, така че те ще работят само в съвременни браузъри (най-добре е да се използват Google хром   или Mozilla firefox).

новини сега в канала на Telegram

27 ноември 2015 г.
   В симулаторите добави маршрута "ембрион" ( MV Лазарев, Орехово-Зуево).

13 октомври 2015 г.
   Сега в симулаторите за робота LEGO можете да заредите вашите песни (полета за робота). Как да го направя? Обърнете внимание.
Добавени са нови симулатори - LEGO роботи с два, три, четири сензора за светлина.

Език за управление на робота

За управление на роботи в симулатори се използва прост език за програмиране, който получи работното име SiRoP (Просто програмиране на роботи).

Управление на робота със сензор за околна светлина

Светлинният сензор позволява на робота да се движи по повърхността на масата, например, да пътува по границата между бялата и черната зона (по ръба на черната линия). Фотодиод осветява повърхността, фотодетектор "улавя" отразените лъчи и измерва тяхната интензивност.

Най-популярната задача от този тип е да се движите по линия. С помощта на симулатора можете да изучавате различни закони за управление - релейно, пропорционално и дори PID управление (пропорционално-интегрално-диференциално).

Примери за програми за робот със светлинен сензор

Докато 1 (ако сензорът\u003e 128 (двигател \u003d 100 двигателя \u003d 0) в противен случай (двигател \u003d 0 мотор \u003d 100) изчакайте (10))

КП \u003d 0,2, докато 1 (u \u003d kP * (сензор-128) двигател \u003d 50 + u двигател \u003d 50 - u изчакайте (20))

Основен (докато 1 (докато сензорът\u003e 128 (мотор \u003d 100 мотора \u003d 100 изчака (10)) назад () завъртете ())) назад (мотор \u003d -100 мотор \u003d -100 изчакайте (260)) завъртете (мотор \u003d -50 мотор \u003d 50 изчакване (50))

Управление на робота с два сензора за околната светлина

Два светлинни сензора позволяват на робота по-добре да се ориентира и да кара по тънка линия. Те се пренасят малко напред и се разделят. Що се отнася до задачите с един сензор, с помощта на този симулатор можете да изучавате различни закони за управление.

Примери за програми за робот с три светлинни сензора

Управление на робота с четири сензора за околната среда

Четири светлинни сензора позволяват на робота по-добре да разпознава резки завои. Вътрешните сензори се използват за фина настройка; пропорционалното регулиране се използва за тях. Два външни сензора са малко напред и разположени един от друг. Използват се, когато настъпи рязък завой. Коефициентът на усилване за контрол според показанията на сензорите на външната двойка е избран повече, отколкото за вътрешната двойка (виж LY Ovsyanitskaya et al., Алгоритми и програми за движението на робота Lego Mindstorms EV3 по линията, М.: „Перо“, 2015).

Примери за програми за робот с четири светлинни сензора

Докато 1 (d0 \u003d сензор\u003e 128 d1 \u003d сензор\u003e 128 d2 \u003d сензор\u003e 128 d3 \u003d сензор\u003e 128, ако d1 &! D2 (двигател \u003d 100 двигателя \u003d 0), ако! D1 и d2 (двигател \u003d 0 мотор \u003d 100), ако d1 \u003d\u003d d2 (мотор \u003d 100 двигателя \u003d 100), ако d0 &! d3 (двигател \u003d 30 двигателя \u003d 0), ако! d0 & d3 (мотор \u003d 0 мотор \u003d 30) изчакайте (10))

K1 \u003d 0,2 k2 \u003d 0,4, докато 1 (u1 \u003d сензор - сензор u2 \u003d сензор - двигател на сензора \u003d 50 + k1 * u1 + k2 * u2 мотор \u003d 50-k1 * u1-k2 * u2 изчакайте (10))

Контрол на робот със сензор за разстояние (сонар)

Сензорът за разстояние (сонар) ви позволява да определите разстоянието до най-близкото препятствие, докато роботът се движи. Излъчва ултразвуков сигнал и получава отразен сигнал. Колкото по-дълго е времето между излъчените и приетите сигнали, толкова по-голямо е разстоянието.

С помощта на сензора за разстояние можете да програмирате робота така, че той автоматично да преминава през лабиринт с известна форма, но с неизвестен размер.

Тази задача е класическа, идеологически проста, тя може да бъде решена много пъти и всеки път ще откривате нещо ново.

Има много подходи за решаване на следващия проблем. Изборът на един от тях зависи от конкретния дизайн на робота, от броя на сензорите, местоположението им спрямо колелата и един спрямо друг.

В нашия пример ще бъдат анализирани три примера за роботи въз основа на основния образователен модел Robot Educator.

За начало ние събираме основния модел на обучаващия робот Robot Educator, за това можете да използвате инструкциите в софтуера MINDSTORMS EV3.

Също така, за примери, се нуждаем от светлинни сензори EV3. Тези светлинни сензори, както никой друг, са най-подходящи за нашата задача, когато работим с тях, не е нужно да се притесняваме за интензитета на заобикалящата светлина. За този сензор в програмите ще използваме режим на отразена светлина, в който се изчислява количеството на отразената светлина на червената подсветка на сензора. Границите на показанията на сензора са 0 - 100 единици, съответно за "без отражение" и "пълно отражение".

Като пример ще анализираме 3 примерни програми за движение по черна траектория, изобразена на гладък, светъл фон:

· Един сензор, с P регулатор.

· Един сензор, с PK регулатор.

· Два сензора.

Пример 1. Един сензор, с P регулатор.

дизайн

Сензорът за светлина е монтиран на лъч, удобно разположен на модела.


алгоритъм

Алгоритъмът се основава на факта, че в зависимост от степента на припокриване, подсветката на сензора с черна линия, показанията, върнати от сензора, варират с наклон. Роботът съхранява положението на сензора за светлина на границата на черната линия. Преобразувайки входните данни от сензора за светлина, управляващата система генерира стойността на скоростта на въртене на робота.


Тъй като сензорът генерира стойности в целия си работен диапазон (0-100) на реалния път, стойността, към която роботът се стреми, е 50. В този случай стойностите на предаваните функции на въртене се формират в диапазон -50 - 50, но тези стойности не са достатъчни за стръмен завъртане на траекторията. Следователно обхвата трябва да се разшири един и половина пъти до -75 - 75.

В резултат на това в програмата функцията на калкулатора е прост пропорционален регулатор. Чия функция ( (a-50) * 1.5 ) в работния диапазон на светлинния сензор генерира стойности на въртене в съответствие с графика:

Пример за работа с алгоритъм

Пример 2. Един сензор с PK контролер.

Този пример е съставен на същия дизайн.

Вероятно сте забелязали, че в предишния пример роботът се люлееше твърде много, което не му позволяваше да ускори достатъчно. Сега ще се опитаме да подобрим малко тази ситуация.

Към нашия пропорционален регулатор добавяме обикновен кубичен регулатор, който ще добави завой към функциите на регулатора. Това ще намали люлеенето на робота близо до желаната граница на траекторията, както и ще направи по-силни ритници със силно разстояние от него

Пропорционален контролер е устройство, което упражнява контролно действие u (t) върху обект, пропорционално на неговото линейно отклонение e (t) от дадено състояние x0 (t);

e (t) \u003d x0 (t) -x (t), където x (t) е състоянието в даден момент;

u (t) \u003d ke (t), където k е коефициентът на усилване.
  Тоест, колкото по-нататък роботът се отклонява от даден курс, толкова по-активно трябва да работят моторите, изравнявайки го.

Движение на линия с един сензор за светлина с помощта на P-контролера

Движението по границата на черно-бялото също може да бъде изградено на P-контролера. Въпреки че външно изглежда проблемът се решава само с помощта на релеен контролер, тъй като в системата има само две състояния, видими за човешкото око: черно и бяло. Но роботът вижда всичко по различен начин, за него няма остра граница между тези цветове. Можем да кажем, че той е недалновиден и вижда градиентен преход на нюанси на сивото.

  Това ще помогне за изграждането на P-регулатора.
Определяйки състоянието на работа като показанията на сензора за светлина, научаваме как да осигурим пропорционален ефект на управление върху двигателите в съответствие със следния закон:
  e \u003d s1-сиво, където s1 е текущото отчитане на датчика, а сивото е зададената точка.

Коефициентът k (равен в този пример 2) трябва да бъде достатъчно малък (от 1 до 3). Такъв регулатор ефективно работи само за малки ъгли на отклонение, така че роботът трябва да бъде поставен в посоката на движение, така че сензорът да е от лявата страна на черната линия. Лесно е да се види, че движението по линията на P-контролера е плавно. а в някои области на работа се движи почти праволинейно или точно повтаряйки завоите на линията.

Калибриране на сензора

Нека се обърнем към числото 48, използвано във формулата. Това е средноаритметичната стойност на светлинния сензор върху черно и бяло, например (40 + 56) / 2 \u003d 48. Отчитанията на сензорите обаче често се променят по различни причини: различна повърхност, промяна в общата осветеност в стаята, лека модификация на дизайна и т.н. Затова ще калибрираме робота ръчно, като определим показанията на сензора за светлина върху бяло и черно.

Линейно движение с два сензора за светлина с помощта на P-контролера
  Доста е трудно да преминете кръстовището с един светлинен сензор правилно. Ако искате да направите това с доста висока скорост, имате нужда от поне два сензора, които не са зададени на разстояние от две ширини на линиите (или по-широки).
  При движението са възможни четири състояния на сензора:

  • и двете на бяло - право напред;
  • наляво (s1) не е черно, дясно (s2) на бяло - преместете се вляво;
  • наляво на бяло, дясно на черно - преместете се надясно;
  • и двете на черно - право напред.
  по този начин с еднакви показания на сензора (и бял, или и черен), роботът върви направо. Преди да стартираме робота, ще извършим автоматичното калибриране на двата сензора. Тогава алгоритъмът за движение по линията с P-контролера ще изглежда така:

Коефициентът k може да варира в доста широк диапазон (от 1 до 20 или повече) в зависимост от кривината на линията, маневреността на робота и разликата между черно и бяло на полето.
  Важно условие. Автокалибрирането трябва да се извърши върху едноцветна повърхност и за предпочитане под осветеността, която ще заеме по-голямата част от пътеката. Например, ако робот пътува по черна линия в бяло поле, след това го калибрирайте на бяло. Т.е. позицията на робота при стартиране трябва да е така:


И още една забележка. Има сензори, чиито показания се различават с 10-20%. Препоръчително е да не ги сдвоявате на регулатора с голям коефициент, тъй като при рязка промяна на цялостната осветеност дори при равномерно бяло поле отклоненията могат да се окажат различни, което ще доведе до неочаквани последици. Подробности Автор: Игор Коновалов    Пропорционалният контролер е подобрение. Основният минус на релето е, че не му пука доколко стойностите на тока се различават от нормалната стойност на сензора. Той има само две състояния - или се опитайте да увеличите стойностите на сензора с определено постоянно число, ако са по-малки от нормалната стойност, или да го увеличите. Поради това възникват колебания с постоянна амплитуда, което е много неефективно.
   Много по-логично е да определим доколко текущите показания са от нормалното и да промените амплитудата в зависимост от това. За да стане по-ясно, нека разгледаме един пример. Примерът, както в предишната статия, е същият: роботът от Lego Mindstorms EV3 се движи по черната линия с един цветен сензор в светлинен режим.

Роботът се опитва да пътува по границата между бяло и черно и там сензорът показва около 50% от светлината. И колкото по-далече е от нормалното си положение, толкова повече усилия роботът полага, за да се върне на 50%.
   За да напишем програма, използваме термините „грешка“, „контролно действие“. Грешка - разликата между текущото отчитане на сензора и нормалното. В нашия случай, ако сега роботът вижда 20% от осветеността, то грешката е 20-50 \u003d -30%. Знакът за грешка показва в коя посока трябва да се обърне роботът, за да се отърве от грешката. Сега трябва да кажем на двигателите по какъв начин роботът трябва да се завърти, с каква скорост и колко рязко. Необходимо е да има контролиращ ефект върху двигателите, което означава колко рязко трябва да се върне в нормалното си положение. Управляващото действие (UP) се изчислява като грешка (грешка), равна на коефициента на пропорционалност (k). Този коефициент се използва за усилване или намаляване на ефекта на грешката върху контролното действие. Управляващото действие се подава към волана, където е зададена средната скорост на робота.
Как да настроите коефициента на пропорционалност? Емпирично изберете стойностите за преминаването на траекторията, тя може да бъде например от 0,2 до 1,5, в зависимост от скоростта и дизайна на робота. Ако коефициентът е твърде голям, тогава роботът ще вили силно, ако е малък, той ще се движи плавно, но в някакъв момент в ъгъла, ще се движи навън поради недостатъчно контролно действие. Ще напишем две версии на програмата - с променливи (за тези, които вече са ги изучили) и без.


   Но този регулатор може да бъде засилен и чрез въвеждане на пропорционален и интегрален компонент, описанието ще бъде в следващите статии. Ще се видим скоро!

Пропорционален регулатор

описание

При автоматичното управление, управляващото действие u (t) обикновено е функция на динамичната грешка - отклонението e (t) на контролираната променлива x (t) от дадената й стойност x0 (t):

e (t) \u003d x0 (t) - x (t).

Това е принципът на Polzunov-Watt за контрол на отклоненията или принципът за обратна връзка. Математическият израз на функционалната зависимост на желаното управляващо действие u0 (t) от стойностите, измерени от регулатора, се нарича алгоритъм на закона или регулация, който беше споменат по-горе.

Пропорционалният контролер е устройство, което упражнява контролен ефект върху обект пропорционално на отклонението му от дадено състояние:

Тук k е печалбата на регулатора.

Даденото състояние x0 се нарича зададена точка, а отклонението от него e се нарича остатъчно. По-нататък за определеност ще обозначим остатъка от съкращението err (от английската дума „error“ - грешка).

Управление на двигателя

Опитен войн няма да замахне меча си, както робот прави на реле контролер. Необходимо е да се създаде алгоритъм, който да държи мотора, който държи меча в строго фиксирано положение (фиг. 7.1). Това ще помогне на P-контролера.

Нека e 1 - показанията на сензора за скорост1 на двигател A - е регулируема стойност. Настройката е x0 \u003d 45, а остатъчната е e \u003d 45 - e 1. Тогава управляващото действие върху двигателя се дава чрез формулата

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

Тук k е усилването, например 5, което ще засили реакцията на двигателя дори и при малки отклонения от зададената точка.

1 Не бъркайте математическото обозначение на остатъчното e (от грешка) с показанията на енкодера e 1 (от енкодера), предварително дефинирана променлива среда на Robolab.

В случай на отклонение в положителна посока, върху двигателя ще се приложи отрицателно управляващо действие и обратно. Това управление може да се приложи към двигателя в цикъл с малко закъснение от 1-10 ms, за да се освободи контролерът (фиг. 7.8).

Фиг. 7.8. Алгоритъм за управление на двигателя на пропорционален контролер.

Ако усилването се увеличи от 5 на 100, пропорционалният ни регулатор ще започне да работи като реле, причинявайки силни колебания поради появата на ефект на превишаване.

RobotC няма толкова удобно обозначение на показанията на енкодера като Robolab, така че програмата изглежда малко по-дълго:

int k \u003d 5, u; nMotorEncoder \u003d 0; докато (вярно)

u \u003d k * (45-nMotorEncoder); мотор \u003d u;

Освен това, за да нанесете „удар с меч“, е достатъчно, като вместо числото 45 променлива, промените стойността си отвън, например, от паралелна задача. Това е описано в раздела за роботите-барабанисти в глава 8.

А сега ще изградим регулатор, който контролира не само статичното положение на двигателя, но и неговата скорост. Следвайки логиката на алгоритъма, зададената точка, която досега е била постоянна и не се е променила, трябва да започне да се движи в посока на увеличаване или намаляване. Спазвайки регулатора, моторът неизбежно ще я последва. Най-лесният инструмент за постоянно увеличаване на зададената точка е таймерът.

Контролерът NXT има четири вградени таймера, всеки от които може да измерва времето в десети, стотни и хилядни от секундата. Ще овладеем първия таймер, който на секунда прави 10 „ty-

cove. " В Robolab се обозначава T1 или Timer100ms1, а в RobotC - timer100.

Ъгълът α на отклонението на двигателя, зададен в предишния пример до 45, ще зависи от показанията на таймера с ускоряващ коефициент k 2:

алфа \u003d k2 ∙ T1.

Управляващото действие ще остане същото с коефициент на усилване k 1:

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

Накратко, в програма на езика на Robolab, контролното действие се прилага незабавно към двигателя, след инициализиране на таймера

Фиг. 7.9. Контрол на скоростта на двигателя - един оборот в секунда.

Коефициентът k 2 \u003d 36 определя, че за секунда алфа стойността достига до 360, което съответства на едно пълно завъртане на двигателя:

int k1 \u003d 2, k2 \u003d 36, u, алфа; nMotorEncoder \u003d 0; ClearTimer (T1); докато (вярно)

алфа \u003d таймер100 * k2; u \u003d k1 * (alpha-nMotorEncoder); мотор \u003d u;

Използвайки целочислено деление, прието на език С (и в Robolab) за променливи от цяло число, е възможно да се постигне дискретна промяна в ъгъла, т.е. нарастване от нея веднъж в секунда:

алфа \u003d T 1/10 ∙ k 2.

С коефициент k 2 \u003d 60, движенията на лъча ще съответстват на движението на втората ръка на циферблата на часовника. Но не е достатъчно

значително. За по-голяма яснота можете да зададете k2 \u003d 30, след това стрелката ще направи пълен оборот за 12 "кърлежи" от 30 градуса всеки. Внимавайте с последователността на операциите с цяло деление и умножение, ако промените реда им или „намалите“ резултатът със сигурност ще се промени (Фиг. 7.10).

Фиг. 7.10. Ускорена имитация на движение на часовника.

И накрая, пример за математически барабанист. Вместо постоянно да се движи напред, стрелката ще се колебае назад под контрола на P-контролера. Операцията за разделяне на остатъка, която се обозначава с% в С, ще помогне. Остатъкът от разделяне на отрицателно цяло число на 2 винаги ще бъде 0 или 1:

алфа \u003d T 1% 2 ∙ k 2.

Увеличавайки отклонението с k 2 \u003d 15 пъти, получаваме осцилиращата настройка алфа, която ще принуди регулатора да движи двигателя 5 пъти в секунда, след това при 0º, след това при 15 градуса. Промените в програмата са малки. Помислете за пример на RobotC:

int k1 \u003d 3, k2 \u003d 15, u, alpha; nMotorEncoder \u003d 0; ClearTimer (T1); докато (вярно)

алфа \u003d таймер100% 2 * k2; u \u003d k1 * (alpha-nMotorEncoder); мотор \u003d u;

Този прототип барабанист удари по масата на равни интервали. Основното е да започнете в правилната позиция. С помощта на цяло число математика можете да зададете по-сложен ритмичен модел, например (Таблица 7.1):

алфа \u003d T 1% 5% 2 ∙ k 2.

център \u003d S3.

Коефициентът се определя в цикъла:

k 1 \u003d c + (S 3 - център) / k 2.

Фиг. 7.36. Движение на линията на пропорционален контролер с плаващ коефициент.

Полученият закон за контрол на усилването може да се приложи не само за пропорционалния компонент, но и за всеки друг, както и за контролното действие като цяло (фиг. 7.36).

PID контролер

Пропорционалният интегрално-диференциален (PID) контролер е един от най-популярните и се използва в огромен брой устройства от различни видове, които изискват бърза реакция и точно позициониране на системата. Както подсказва името, този контролер се състои от сумата от три компонента и е изобразен графично на фиг. 7.37.

Фиг. 7.37. Верига PID контролер

Това е опростена диаграма. Стойността на динамичната грешка e (t) се подава към входа на контролера, а управляващото действие u (t) се генерира на изхода:

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

e (τ) d τ + k d ∙

де.

Пропорционалният компонент, показан на диаграмата от триъгълник, е отговорен за позиционирането на системата в дадено състояние. В някои случаи може да доведе до превишаване с последващи автоколебания. Тоест, P-контролерът може да "прекалява" и роботът ще започне да се движи от страна на страна.

Интегралният компонент натрупва отрицателен опит (обобщава грешките) и произвежда компенсиращ ефект. С минимални отклонения, пропорционалният компонент „отслабва“, а интегралният компонент, поради бързото си увеличаване чрез сумиране, помага за „разтягане“ на регулируемата стойност до зададената точка.

Диференциалният компонент (D-компонент) следи скоростта на промяна на състоянието на системата и предотвратява възможно превишаване. В някои случаи D-компонентът е противоположен пропорционално на знака, а в някои съвпада.

Вече сме запознати с пропорционалния компонент; диференциалният компонент е описан в предишната глава 6. Заемаме интегралния компонент. Този компонент се определя динамично, обобщавайки с предишната стойност:

i \u003d i + ki × e (t) × dt.

Физическият смисъл на количеството e (t) × dt е, че то

пропорционална на продължителността на времето, когато системата е била в състояние на грешка. Тъй като коефициентът k i е извън скобите, можем да говорим за стойността на i като сбора от продължителността на грешките. По този начин ние намираме интеграла чрез сумиране.

Помислете за използването на PID контролер, като използвате пример за робот, балансиращ на две колела. Този класически проблем може да бъде решен с помощта на различни сензори по много начини. В предложения пример се използват светлинен сензор и най-простата форма на PID контролер. За постигане на стабилизация на робота обаче ще е необходимо да се използват по-точни показания на сензора.

RAW формат

Данните от сензорите се изпращат до NXT контролера в суров „суров“ вид. Всички сензори предават на операционната система цифрова стойност от 0 до 1023, която след това се обработва от съответния драйвер и се свежда до по-разбираема форма (разстояние 0 ... 255, осветеност 0 ... 100, докосване 0 или 1 и т.н.). Но данните могат да бъдат получени директно, заобикаляйки драйвера. Този суров формат обикновено се нарича RAW (от англ. "Raw"). В някои случаи може да се използва за постигане на по-голяма точност. Така например диапазонът на стойностите на сензора за светлина може да се увеличи с около 10 пъти. Тази възможност се използва допълнително.

Можете да получавате данни във формат RAW както в Robolab, така и в RobotC. За да направите това, сензорът се инициализира съответно и данните от него се четат с помощта на специална предварително определена променлива.

Балансиращ робот

Дизайнът на робота Segway е показан на фиг. 7.38: вертикално разположен контролер, тясно разположени колела и сензор за надолу. Алгоритъмът ще бъде малко по-сложен.

Принципът на стабилизиране на шейна в равновесно положение е следният. Ако роботът се наклони напред, показанията на сензора за светлина се увеличават поради отразената светлина. В отговор на това се генерира контролно действие, което принуждава робота да се придвижи напред и по този начин отново да заеме вертикално положение.

Ако се облегнете назад, показанията на сензора намаляват и роботът започва да се движи назад. Пропорционалният компонент е отговорен за всичко това. Ролята на интегралните и диференциалните компоненти се дава на застраховка срещу превишаване.

Фиг. 7.38. Балансиращ робот Segway.

На фиг. 7.39 представя алгоритъма в Robolab. Повечето от него е в инициализацията на променливи. За да се подобри точността, не само данните на сензора се четат във формат RAW, но повечето променливи се декларират във флоат формат. Самият PID алгоритъм е в цикъл.

Фиг. 7.39. Алгоритъмът за балансиране се основава на PID контролера.

Следвайки традицията да се движим по линията, като зададена точка ние използваме променливата сива - средните показания на сензора за светлина в равновесно положение. Новият мащабен параметър задава мащабирането на контролното действие. Всъщност това е отслабващ фактор, тъй като стойността, генерирана от регулатора, е твърде висока за NXT двигателите. Би било възможно да се въведе вътре в съществуващите коефициенти, но за RobotC този параметър ще бъде различен и коефициентите са същите.

С дадените коефициенти роботът се стабилизира добре на монофоничен лек линолеум или ученическо бюро. Тоест, той не се нуждае от бял цвят на повърхността. За да започнете, трябва точно да настроите сегмента в положение на равновесие. Ако роботът започне с определен наклон напред или назад, той веднага ще започне да се движи в посока на наклон.

Подобен пример за RobotC е малко по-различен по няколко причини. Първо, производителността на NXT с фърмуер за тази среда е приблизително 1,4 пъти по-висока от тази на Robolab, така че коефициентът на мащаб трябва да се увеличи. Второ, стойностите на RAW се предават в правилния ред и ще е необходимо да се инсталират двигатели с обратна сила или просто да се приложи отрицателно контролно действие:

int grey \u003d SensorRaw; int err, errold \u003d 0;

float kp \u003d 25, ki \u003d 350, kd \u003d 0,3; плаваща скала \u003d 14;

float dt \u003d 0,001; float p, i \u003d 0, d, u; докато (вярно)

err \u003d сиво-SensorRaw; // Отклонение с противоположния знак p \u003d kp * err;

i \u003d i + ki * err * dt; d \u003d kd * (err-errold) / dt; errold \u003d грешка; u \u003d (p + i + d) / мащаб; мотор \u003d u; мотор \u003d u; изчакайте1Msec (1);

Елементи на теорията за автоматичното управление в училище1

Важна и интересна методологическа задача е „прехвърлянето на моста“ между областите на знанието на специалиста и ученика, помагайки на учениците от училището да видят перспективата за бъдеща специалност, т.е. провеждат кариерно ориентиране и студентите виждат практическата приложимост на своите професионални знания. За постигането на този ефект са разработени методи за изчисляване на регулатори с помощта на математически апарат, който не излиза извън рамките на училищните програми по математика и физика. По-специално, вместо диференциални уравнения, се използват диференциални уравнения, които добре съответстват на дискретния характер на взаимодействието на обекта и регулатора с компютърното управление.

Помислете например за задачата за конструиране на пропорционални (P) и пропорционални диференциални (PD) контролери в задачата за контрол на движението на мобилен робот по стената. Определете с x t разстоянието между робота и стената, с θt - ъгълът на посоката на робота и с u t - контролното действие в момента със сериен номер t, съответно, където t \u003d 0, 1, 2, ... са числата на моментите на измерване

рений. Смята се, че разпитът на сензорите и промените във величината на контролното действие се извършват на равни интервали от време h. За задачите за управление на Lego NXT е естествено да се приеме, че управляващото действие е разликата в ъгловите скорости на колелата, пропорционална на скоростта на промяна на ъгъла на курса:

Като се имат предвид отклоненията на курса от номиналното θt \u003d 0 малки и средната константа на скоростта на робота: vt \u003d v, динамиката на промените в променливите на състоянието на робота в първо приближение може да бъде описана чрез линейни уравнения на състоянието:

където g \u003d h2vr / b.

Поставяме желаното разстояние до стената x *\u003e 0 и определяме контролната цел (CC) като

xt → x * като t → ∞.

Сега по естествен начин въвеждаме на съществено ниво концепцията за асимптотичната стабилност като свойство на решенията на система (4), която осигурява постигането на системата за управление (5) при всякакви първоначални условия, които се различават малко от целевите. Лесно е да се види, че за u t \u003d 0, решението на уравнение (4) е всяка постоянна стойност x t \u003d x *. Но тъй като уравнение (4), което съответства на модела на двоен интегратор (двоен суматор), не притежава свойството на асимптотична стабилност, центърът за управление (5) не се постига с постоянен контрол. Това лесно се демонстрира като аналитично - чрез обобщаване на няколко



 


Прочетено:



Ламинирайте балкона - практичност и естетическа привлекателност на достъпна цена

Ламинирайте балкона - практичност и естетическа привлекателност на достъпна цена

Ламинатът отдавна придоби голяма популярност и доверие сред потребителите. Тази универсална подова настилка е идеална за ...

Нестандартна употреба на добре познати материали - ние фиксираме ламината на стената

Нестандартна употреба на добре познати материали - ние фиксираме ламината на стената

Ламинатът се използва широко като подови и стенни покрития. В някои случаи се използва специално лепило за ...

Ламиниран ламинат - какво да правя?

Ламиниран ламинат - какво да правя?

Възможно е да има няколко причини, поради които ламинатът внезапно се е подул на пода на апартамента, най-често това е резултат от продължително задръстване или ...

Как да поправя, ако ламинатът е подут?

Как да поправя, ако ламинатът е подут?

Ламинираните плоскости заеха достойно място в домовете на руснаците поради простотата на инсталиране, дългия живот и високата естетичност ...

фуражи изображение RSS емисия