реклама

основен - гипскартон
  Lego ev3 следвайки черната линия. Lego EV3. Движение по черната линия. Цветен сензор - яркост на околната светлина


За да накарате робота да се движи плавно по черната линия, трябва да го принудите да изчисли самата скорост на движение.

Човек вижда черна линия и нейната ясна граница. Сензорът за светлина работи малко по-различно.

Именно това свойство на светлинния сензор - невъзможността ясно да разграничава границата на бялото и черното - ще използваме за изчисляване на скоростта на движение.

Първо, ние въвеждаме концепцията за „Идеална точка на траекторията“.

Показанията на светлинния сензор варират от 20 до 80, най-често на бяло показанията са около 65, на черно около 40.

Идеалната точка е условна точка, приблизително по средата на бели и черни цветове, след която роботът ще се движи по черната линия.

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

Емпирично изчислихме, че идеалната точка може да бъде изчислена по следната формула:

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

Грим математическо описание на проблема.

Източни данни.

Идеалната точка.

Текущи показания на сензора за светлина

Резултат.

Мощност на въртене на двигателя V.

Мощност на въртене на двигателя C.

Решение.

Помислете за две ситуации. Първо: роботът се отклони от черната линия към бялото.

В този случай роботът трябва да увеличи силата на въртене на двигател B и да намали мощността на двигателя C.

В ситуация, в която роботът навлиза в черната линия, важи обратното.

Колкото по-силно роботът се отклонява от идеалната точка, толкова по-бързо трябва да се върне към него.

Но създаването на такъв регулатор е доста трудна задача и не винаги се изисква в неговата цялост.

Затова решихме да се ограничим само до P-регулатор, който реагира адекватно на отклонения от черната линия.

На езика на математиката ще се пише така:

където Hb и Hc са общите мощности на двигателите B и C, съответно,

База - определена основна мощност на двигателите, която определя скоростта на робота. Избира се експериментално, в зависимост от дизайна на робота и остротата на завоите.

Itec - текущи показания на сензора за светлина.

Аз - изчислена идеална точка.

k - коефициент на пропорционалност, избран експериментално.

В третата част ще разгледаме как да програмираме това в NXT-G среда.

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

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

В нашия пример ще бъдат анализирани три примера за роботи въз основа на основния образователен модел 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 контролер.

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

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

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

Така човек вижда линията:

Така роботът вижда:


Ще използваме тази функция при проектирането и програмирането на робота за категорията на конкуренцията „Траектория“.

Има много начини да научите робота да вижда линия и да се движи по нея. Има сложни програми и много прости.

Искам да говоря за метод на програмиране, който дори децата в 2-3-та степен ще учат. На тази възраст те са много по-лесни за сглобяване на структури според инструкциите, а програмирането на робот е трудна задача за тях. Но този метод ще позволи на детето да програмира робота по всеки маршрут на маршрута за 15-30 минути (като се вземат предвид поетапната проверка и приспособяването на някои характеристики на траекторията).

Този метод е тестван на общински и регионални състезания по роботика в региона Сургут и Ханти-Мансийски автономен окръг-Югра и донесе на нашето училище първо място. Там се убедих, че тази тема е много актуална за много отбори.

Е, да започнем.

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

Помислете за варианта на робот с два сензора за светлина, тъй като е по-разбираем за учениците от началното училище.

Светлинните сензори са свързани към портове 2 и 3. Двигатели към портове B и C.
Сензорите са поставени в краищата на линията (опитайте да експериментирате, като позиционирате сензорите на различни разстояния един от друг и на различни височини).
Важен момент. За най-доброто функциониране на такава схема е желателно да изберете чифт сензори според параметрите. В противен случай ще е необходимо да въведете блок за регулиране на стойностите на сензора.
Монтаж на сензори върху шасито по класическата схема (триъгълник), приблизително, както е на фигурата.

Програмата ще се състои от малък брой блокове:


1. Два блока на сензора за светлина;
2. Четири блока на "Математика";
3. Два блока на двигателя.

За управление на робота се използват два мотора. Мощността на всеки 100 единици. За нашата схема вземаме средната стойност на мощността на двигателя, равна на 50. Тоест средната скорост при движение по права линия ще бъде 50 единици. При отклонение от праволинейното движение силата на двигателите пропорционално ще се увеличава или намалява, в зависимост от ъгъла на отклонение.

Сега ще разберем как да свържем всички блокове, да конфигурираме програмата и какво ще се случи в нея.
Задайте два сензора за светлина и им присвойте портове 2 и 3.
Взимаме блока по математика и избираме „Изваждане“.
Свързваме сензорите за светлина от изходите „Интензитет“ с гумите към математическия блок към входовете „A“ и „B“.
Ако сензорите на робота са инсталирани симетрично от центъра на линията на пистата, тогава стойностите и на двата сензора ще бъдат равни. След изваждане получаваме стойността - 0.
Следващият блок от математика ще се използва като коефициент и трябва да зададете „Умножение“ в него.
За да изчислите коефициента, трябва да измерите нивото на "бяло" и "черно", като използвате блока NXT.
Да предположим: бяло -70, черно -50.
  На следващо място, ние считаме: 70-50 \u003d 20 (разликата между бяло и черно), 50/20 \u003d 2,5 (задаваме средната стойност на мощността, когато се движим по права линия в блокове по математика, на 50. Тази стойност плюс добавената мощност при регулиране на движението трябва да бъде равна на 100)
Опитайте да зададете стойност 2,5 на входа "A" и след това вземете по-точно.
Към входа "В" на блока по математика "Умножение" свържете изхода "Резултат" от предишния блок по математика "Изваждане".
Следва двойка - блок от математика (допълнение) и мотор Б.
  Настройка на математическия блок:
  На вход “A” се задава стойност 50 (половината мощност на двигателя).
  Изходът на блока „Резултат“ е свързан с шина към входа „Мощност“ на двигател B.
След двойката е блок от математика (изваждане) и мотор С.
Настройка на математическия блок:
  Входът „A“ е зададен на 50.
  Входът "B" е свързан с шина към изхода "Резултат" от математическия блок "Умножение".
  Изходът на блока „Резултат“ е свързан с шина към входа „Мощност“ на двигателя C.

В резултат на всички тези действия ще получите следната програма:

Тъй като всичко това ще работи в цикъл, добавяме „Цикъл“, избираме и прехвърляме всичко в „Цикъл“.

Сега нека се опитаме да разберем как ще работи програмата и как да я конфигурирате.


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

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

Фигурата показва, че осветяването на сензора, свързан към порт 2 (наричан по-долу сензори 2 и 3), се увеличава, когато се придвижва към бяло поле, а осветеността на сензор 3 намалява. Да предположим, че стойностите на тези сензори стават: сензор 2 - 55 единици и сензор 3 - 45 единици.
Блокът за изваждане ще определи разликата между стойностите на двата сензора (10) и ще го изпрати на коригиращия блок (умножение по коефициент (10 * 2,5 \u003d 25)) и след това към контролните единици
  двигатели.
В блока на математиката (Добавяне) на управление на двигателя B до стойността на средната скорост 50
25 ще бъдат добавени и стойност на мощността 75 ще бъде подадена на двигател B.
В математическия блок (изваждане) на управлението на двигателя С 25 ще се извади от средната скорост 50 и стойността на мощността 25 ще бъде приложена към мотор С.
Така отклонението от правия ред ще бъде коригирано.

Ако пистата рязко се обърне встрани и сензорът 2 се оказва бял, а сензорът 3 - черен. Стойностите на осветеността на тези сензори стават: сензор 2 - 70 единици и сензор 3 - 50 единици.
Блокът за изваждане ще определи разликата между стойностите на двата сензора (20) и ще го подаде към коригиращия блок (20 * 2.5 \u003d 50), а след това към блоковете за управление на двигателя.
Сега в математическия блок (Добавяне) на управление на двигател B, стойност на мощността 50 +50 \u003d 100 ще бъде приложена към двигател B.
В блока на математиката (изваждане) на управлението на двигателя С, стойност на мощността 50 - 50 \u003d 0 ще бъде приложена към мотор С.
И роботът ще направи рязък завой.

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

Сега създайте нов блок и го използвайте, за да премествате робота по всяка песен.
Изберете контура, след което в менюто "Редактиране" изберете командата "Създаване на моя блок".

В диалоговия прозорец „Block Designer“ ще дадем името на нашия блок, например „Go“, изберете иконата за блока и щракнете върху „DONE“.

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

Текстът на творбата е публикуван без изображения и формули.
   Пълната версия на работата е достъпна в раздела "Работни файлове" в PDF

Конструктор Lego Mindstorms EV3

Подготвителна фаза

Създаване и калибриране на програма

заключение

литература

1. Въведение.

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

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

Конструкторът на Mindstorms EV3 ни кани да влезем във завладяващия свят на роботите, да се потопим в сложната среда на информационните технологии.

Цел: Научете се да програмирате движението на робота по права линия.

    Той ще се запознае с конструктора на Mindstorms EV3 и неговата програмна среда.

    Напишете програма за преместване на робота по права линия на 30 cm, 1 m 30 cm и 2 m 17 cm.

    Конструктор на Mindstorms EV3.

Детайли за дизайнера - 601 бр., Серво мотор - 3 бр., Цветен сензор, сензор за движение на допир, инфрачервен сензор и сензор за докосване. Микропроцесорният блок EV3 е мозъкът на дизайнера на LEGO Mindstorms.

Голям сервомотор е отговорен за движението на робота, който се свързва с микрокомпютъра EV3 и кара робота да се движи: вървете напред и назад, завъртете и карайте по даден път. Този серво мотор има вграден сензор за въртене, който ви позволява много точно да контролирате движението на робота и неговата скорост.

Можете да принудите робота да извърши действие, използвайки компютърната програма EV3. Програмата се състои от различни контролни звена. Ще работим с блока за движение.

Блокът за движение управлява двигателите на робота, включва го, изключва и го кара да работи в съответствие с поставените задачи. Можете да програмирате движението за определен брой обороти или градуси.

    Подготвителен етап.

    Създаване на техническо поле.

На полето на работата на робота ще начертаем маркировки, с помощта на електрическа лента и линийка, създаваме три линии с дължина 30 см - зелена линия, 1 м 15 см - червена и 2 м 17 см - черни линии.

    Необходими изчисления:

Диаметърът на колелото на робота е 5 cm 7 mm \u003d 5.7 cm.

Един оборот на колелото на робота е равен на обиколката с диаметър 5.7 см. Намираме обиколката по формулата

Където r е радиусът на колелото, d е диаметърът, π \u003d 3.14

l \u003d5,7 * 3,14 = 17,898 = 17,9.

Т.е. за един оборот на колелото роботът преминава 17,9 cm.

Изчисляваме броя на оборотите, необходими за задвижване:

N \u003d 30: 17,9 \u003d 1,68.

    1 m 30 cm \u003d 130 cm

N \u003d 130: 17,9 \u003d 7,26.

    2 m 17 cm \u003d 217 cm.

N \u003d 217: 17.9 \u003d 12.12.

    Създаване и калибриране на програмата.

Ще създадем програмата според следния алгоритъм:

алгоритъм:

    Изберете блок за движение в програмата Mindstorms EV3.

    Включете двата мотора в зададената посока.

    Очаквайте промяна в показанията на датчика за въртене на един от двигателите до определената стойност.

    Изключете двигателите.

Готовата програма се зарежда в контролния блок на робота. Поставяме робота на полето и натискаме бутона за старт. EV3 пътува през полето и спира в края на дадена линия. Но за да се постигне точен завършек, е необходимо да се калибрира, тъй като външните фактори влияят върху движението.

    Полето е инсталирано на бюра за ученици, така че е възможно леко отклонение на повърхността.

    Повърхността на полето е гладка, така че не се изключва лоша адхезия на колелата на робота към полето.

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

5. Заключение.

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

На следващия етап на запознаване с робота Lego Mindstorms EV3, трябва да се научите как да програмирате завои под определен ъгъл, в кръг, в спирала.

Работата с дизайнера е много интересна. Научавайки повече за неговите възможности, можете да решите всеки технически проблем. И в бъдеще е възможно да създадете свои собствени интересни модели Lego Mindstorms EV3.

Литература.

    Копосов Д. Г. „Първата стъпка в роботиката за 5-6 клас.“ - М .: Бином. Лаборатория на знанието, 2012 - 286 с.

    Филипов С. А. „Роботика за деца и родители” - „Наука” 2010

    Интернет ресурси

    http: // lego. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http: // www. LEGO. com / образование /

15.01.2012, 18:51

Досега статиите за алгоритмите, използвани при движение по линията, разглеждаха този метод, когато сензорът за светлина сякаш следваше лявата или дясната му граница: малко роботът ще се придвижи към бялата част на полето - регулаторът ще върне робота на границата, той ще започне да се движи дълбоко в черното линии - регулаторът го изправи обратно.
  Въпреки факта, че картината по-горе е за релеен контролер, общият принцип на пропорционалното движение (P-контролер) ще бъде същият. Както вече споменахме, средната скорост на такова движение не е много висока и бяха направени няколко опита за увеличаването му поради леко усложнение на алгоритъма: в единия случай беше използвано "меко" спиране, в другия, освен завои, беше въведено движение напред.
  За да може роботът да се придвижва напред в някои области, в диапазона от стойности, издаван от светлинния сензор, се отличава тясна зона, която условно може да се нарече „сензорът е на границата на линията“.
  Този подход има малък недостатък - ако роботът „наблюдава“ лявата граница на линията, а след това отдясно завоите не откриват веднага кривината на траекторията и в резултат на това прекарват повече време в търсене на линията и завъртане. Освен това е безопасно да се каже, че колкото по-стръмен е завойът, толкова по-дълго се извършва това търсене.
Следващата фигура показва, че ако сензорът не беше от лявата страна на границата, а от дясната, тогава той вече беше открил кривина на траекторията и щеше да започне да прави маневри чрез завъртане.

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

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

  Диаграмата по-горе веднага показва как точно трябва да се промени поведението на двигателите в програмата.Сега писането на програма не трябва да е много трудно.Трябва да започнете с избора на кой сензор ще бъде разпитан първо. Това всъщност няма значение, така че нека остане. Необходимо е да се определи дали е над светлата или тъмната повърхност:
Това действие все още не ни позволява да кажем в коя посока трябва да върви роботът. Но тя ще раздели състоянията, изброени по-горе, на две групи: (I, II) за горния клон и (III, IV) за долния. Всяка група вече има две състояния, така че трябва да изберете едно от тях. Ако внимателно погледнете първите две състояния I и II, те се различават в положението на десния сензор - в единия случай той е над светла повърхност, в другия - над тъмен. Именно това ще определи избора на това какво действие да предприемете:
  Сега можете да вмъкнете блокове, които определят поведението на двигателите според таблиците по-горе: горният клон на вложеното състояние определя комбинацията от „двата сензора са на светлина“, горният е „наляво на светлина, дясно на тъмно“:
  Долният клон на основното условие е отговорен за друга група държави III и IV. Тези две състояния също се различават едно от друго по нивото на осветеност, което десният сензор вдига. Така той ще определи избора на всеки от тях:
  Получените два клона са изпълнени с блокове за движение. Горният клон е отговорен за състоянието „ляво на тъмно, дясно на светло”, а долният клон за „двата сензора на тъмно”.
  Трябва да се отбележи, че този дизайн определя само как да включите двигателите в зависимост от показанията на датчиците на определено място на полето, естествено, в един момент програмата трябва да провери дали показанията не са се променили, за да се коригира правилно поведението на моторите и след секунда отново .d. Следователно, той трябва да бъде поставен в цикъл, който ще осигури такава многократна проверка:

  Такава доста проста програма ще осигури доста висока скорост на движение на робота по линията, без да се отклонява отвъд нейните граници, ако максималната скорост е правилно зададена при движение в състояния I и IV, както и задаване на оптимален метод на спиране в състояния II и III - колкото по-стръмни завои на трасето , "по-строгото" спиране трябва да бъде - скоростта трябва да се нулира по-бързо и обратно - по време на плавни завои е напълно възможно да се приложи спиране чрез изключване на енергията или дори като цяло чрез лек спад на скоростта.

За поставянето на сензори върху робота трябва да се кажат и няколко отделни думи. Очевидно, според местоположението на тези два сензора спрямо колелата, ще се прилагат същите препоръки като за един сензор, само горната част на триъгълника ще заеме средата на сегмента, свързващ двата сензора. Разстоянието между сензорите също трябва да бъде избрано от характеристиките на маршрута: колкото по-близо са сензорите са разположени един до друг, толкова по-често роботът ще се подравнява (изпълнява сравнително бавни завои), но ако сензорите са разпръснати достатъчно широко, тоест съществува риск от заминаване от маршрута, така че трябва да изпълните повече „стегнати“ завои и намаляване на скоростта на движение в прави участъци.



 


Прочетено:



Домашен пречиствател за въздух за дома

Домашен пречиствател за въздух за дома

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

Пречистване на въздух в апартамент и къща

Пречистване на въздух в апартамент и къща

Отстраняване на отпадъци, преработка и обезвреждане от клас на опасност от 1 до 5 Работим с всички региони на Русия. Валиден лиценз. Пълен комплект ...

Ягода и ябълка задушено ябълково дърво

Ягода и ябълка задушено ябълково дърво

Само си представете: горещо лято, жарко слънце, извън мащабните показатели на живачни колони на термометри. Вие сте изтощени от жегата. Какво ще бъде най-доброто ...

Домати хляб Тайната и ползите от тора за хляб

Домати хляб Тайната и ползите от тора за хляб

Оказва се, че доматът "обича" кафявия хляб. Зеленчуците, отглеждани у дома, без да се използват химикали, не се купуват в ...

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