реклама

Начало - Гипсокартон
Lego ev3 следва черната линия. Лего EV3. Движение по черната линия. Цветен сензор - режим "Яркост на околната светлина".


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

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

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

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

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

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

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

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

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

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

Изходни данни.

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

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

Резултат.

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

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

Решение.

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

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

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

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

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

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

На математически език ще бъде написано така:

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

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

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

Iid – изчислена идеална точка.

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

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

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

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

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

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

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

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

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

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

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

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

Дизайн

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


Алгоритъм

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


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

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

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

Пример 2. Един датчик, с PK регулатор.

Този пример се основава на същата конструкция.

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

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

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

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


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

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

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

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

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

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

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

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

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


1. Два светлинни сензора;
2. Четири блока „Математика”;
3. Два мотоблока.

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

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

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

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

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


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

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

Фигурата показва, че осветеността на сензора, свързан към порт 2 (наричан по-нататък сензори 2 и 3), се увеличава, докато се движи върху бялото поле, а осветеността на сензор 3 намалява. Да приемем, че стойностите на тези сензори стават: сензор 2 – 55 единици, а сензор 3 – 45 единици.
Блокът „Изваждане“ ще определи разликата между стойностите на два сензора (10) и ще я подаде към коригиращия блок (умножавайки по коефициент (10*2,5=25)) и след това към контролните блокове
двигатели.
В математическия блок (Добавяне) на моторно управление B към средната стойност на скоростта 50
25 ще бъдат добавени и стойност на мощността от 75 ще бъде доставена на мотор B.
В математическия блок (Изваждане) за управление на мотор C, 25 ще бъдат извадени от средната стойност на скоростта 50 и стойност на мощността от 25 ще бъде подадена към мотор C.
По този начин ще се коригира отклонението от правата линия.

Ако пистата рязко завие настрани, сензор 2 се оказва бял, а сензор 3 е черен. Стойностите на осветеност на тези сензори стават: сензор 2 – 70 единици, а сензор 3 – 50 единици.
Блокът „Изваждане“ ще определи разликата между стойностите на два сензора (20) и ще я подаде към коригиращия блок (20*2,5=50) и след това към блоковете за управление на двигателя.
Сега в блока за математика (Addition) на управление на мотор B, стойност на мощността от 50 +50 =100 ще бъде доставена към мотор B.
В математическия блок (Изваждане) на управлението на мотор C, стойност на мощността от 50 – 50 = 0 ще бъде подадена към мотор C.
И роботът ще направи рязък завой.

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

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

В диалоговия прозорец „Дизайнер на блокове“ дайте име на нашия блок, например „Отиди“, изберете икона за блока и щракнете върху „ГОТОВО“.

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

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

Лего 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 cm - зелена линия, 1 m 15 cm - червена и 2 m 17 cm - черна линия.

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

Диаметърът на колелото на робота е 5 cm 7 mm = 5,7 cm.

Един оборот на колелото на робота равен на дължинатакръг с диаметър 5,7 см. Обиколката се намира по формулата

Където r е радиусът на колелото, d е диаметърът, π = 3,14

l = 5,7 * 3,14 = 17,898 = 17,9.

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

Нека изчислим броя обороти, необходими за шофиране:

N = 30: 17,9 = 1,68.

    1 м 30 см = 130 см

N = 130 : 17,9 = 7,26.

    2 м 17 см = 217 см.

N = 217 : 17,9 = 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. лего com/образование/

15.01.2012, 18:51

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

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

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

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

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

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



 


Прочетете:



Отчитане на разчети с бюджета

Отчитане на разчети с бюджета

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

Чийзкейкове от извара на тиган - класически рецепти за пухкави чийзкейкове Чийзкейкове от 500 г извара

Чийзкейкове от извара на тиган - класически рецепти за пухкави чийзкейкове Чийзкейкове от 500 г извара

Продукти: (4 порции) 500 гр. извара 1/2 чаша брашно 1 яйце 3 с.л. л. захар 50 гр. стафиди (по желание) щипка сол сода бикарбонат...

Салата Черна перла със сини сливи Салата Черна перла със сини сливи

Салата

Добър ден на всички, които се стремят към разнообразие в ежедневната си диета. Ако сте уморени от еднообразни ястия и искате да зарадвате...

Рецепти за лечо с доматено пюре

Рецепти за лечо с доматено пюре

Много вкусно лечо с доматено пюре, като българско лечо, приготвено за зимата. Така обработваме (и изяждаме!) 1 торба чушки в нашето семейство. И кой бих...

feed-image RSS