Избор на редакторите:

Реклама

У дома - Коридор
Движение на линията Lego ev3. Започнете в науката. Сензор за цвят - режим на интензитет на околната светлина

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

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


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

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

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

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

Е, нека започваме.

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

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

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

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


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

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

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

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

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

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


Докато роботът се движи по права линия, стойностите на сензора съвпадат, което означава, че изходът на блока "Изваждане" ще има стойност 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) и след това към блоковете за управление на двигателя.
Сега, в математическия блок (Добавяне) на управлението на мотор B, стойността на мощността 50 +50 = 100 ще бъде подадена към мотор B.
В математическия блок (Изваждане) на управлението на двигател C, стойността на мощността 50 - 50 = 0 ще бъде подадена към мотор C.
И роботът ще направи остър завой.

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

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

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

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

Едно от основните движения в леката конструкция е следването на черната линия.

Общата теория и конкретни примери за създаване на програма са описани на уебсайта wroboto.ru

Ще опиша как внедряваме това в средата EV3, тъй като има разлики.

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

Местоположението на червената точка на фигурата точно отговаря на тази позиция.

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

Това може да се направи ръчно. Но недостатъците са видими веднага: дори за кратко време осветлението може да се промени и изчислената стойност ще се окаже неправилна.

Това означава, че можете да накарате робота да го направи.

Чрез нашите експерименти установихме, че не е необходимо да се измерва черното и бялото. Само бялото може да бъде измерено. И идеалната стойност на точката се изчислява като стойността на бялото, разделена на 1,2 (1,15), в зависимост от ширината на черната линия и скоростта на робота.

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

Изчисление на идеалната точка

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

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

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

Съотношение на кормилното управление и базова мощност

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

За да направите това, изчисляваме две числа - стойността на мощността на всеки от двигателите B и C поотделно.

Под формата на формули изглежда така:

Където Isens е стойността на показанията на светлинния сензор.

И накрая, реализацията в EV3. Най-удобно е да го подредите като отделен блок.

Изпълнение на алгоритъма

Точно този алгоритъм беше внедрен в робота за средната категория WRO 2015



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

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

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

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

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

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

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

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

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

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

Първоначални данни.

Перфектна точка.

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

Резултат.

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

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

Решение.

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

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

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

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

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

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

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

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

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

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

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

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

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

Алгоритми за управление на мобилен LEGO робот. Движение на линия с два светлинни сензора

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

Казакова Любов Александровна


Движение по линията

  • Два светлинни сензора
  • Пропорционален контролер (P-контролер)

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

  • И двата двигателя се въртят с еднаква мощност
  • Ако десният светлинен сензор удари черната линия, тогава мощността на левия мотор (например B) намалява или спира
  • Ако левият сензор за светлина удари черната линия, тогава мощността на другия от двигателите (например C) намалява (връща се към линията) намалява или спира
  • Ако и двата сензора са на бяло или черно, тогава има движение по права линия.

Движението се организира чрез промяна на мощността на един от двигателите


Пример за програма за движение по черната линия без P-контролер

Движението се организира чрез промяна на ъгъла на въртене


  • Пропорционалният контролер (P-controller) ви позволява да регулирате поведението на робота в зависимост от това колко поведението му се различава от желаното.
  • Колкото повече роботът се отклонява от целта, толкова повече сили са необходими, за да се върнете към нея.

  • P-контролерът се използва за поддържане на робота в определено състояние:
  • Задържане на позицията на манипулатора Движение по линията (светлинен сензор) Движение по стената (датчик за разстояние)
  • Задържане на позицията на манипулатора
  • Движение на линията (светлинен сензор)
  • Движение на стената (датчик за разстояние)

Проследяване на линия с един сензор

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

Кръстопът

При използване на два светлинни сензора е възможно да се организира движение по по-сложни маршрути



Алгоритъм на движение по магистрала с кръстовища

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


Как работи P-контролерът

Позиция на сензорите

O = O1-O2


Алгоритъм на движение по черната линия с пропорционален контролер

UV = K * (Ts-T)

  • C - целеви стойности (вземете показания от светлинния сензор на бяло и черно, изчислете средната стойност)
  • T - текущата стойност - получаваме от сензора
  • K е коефициентът на чувствителност. Колкото повече, толкова по-висока е чувствителността


15.01.2012, 18:51

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

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

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

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

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

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



 


Прочети:



Определяне на пола на детето по сърдечен ритъм

Определяне на пола на детето по сърдечен ритъм

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

Как да си направим диета за дете с гастрит: общи препоръки

Как да си направим диета за дете с гастрит: общи препоръки

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

Какъв е правилният начин да се държиш с човек, така че да се влюби?

Какъв е правилният начин да се държиш с човек, така че да се влюби?

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

Богатири на руската земя - списък, история и интересни факти

Богатири на руската земя - списък, история и интересни факти

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

feed-image Rss