Міжнародні змагання роботів – Правила – Приклади роботів – Робот для траєкторії на основі LEGO EV3. Старт у науці Алгоритм руху по лінії ev3

На цьому уроці ми будемо вивчати використання датчика кольору. Матеріал, викладений нижче, дуже важливий подальшого вивчення курсу робототехніки. Після того, як ми навчимося використовувати всі датчики конструктора Lego mindstorms EV3, при вирішенні безлічі практичних завдань будемо спиратися на знання, отримані на цьому занятті.

6.1. Датчик кольору - режим "Яскравість відбитого світла"

Отже, ми приступаємо до вивчення наступного режиму роботи датчика кольору, який називається "Яскравість відбитого світла". У цьому режимі датчик кольору направляє потік червоного світла на предмет або поверхню, що близько розташований, і вимірює кількість відбитого світла. Темніші предмети поглинатимуть світловий потік, тому датчик буде показувати менше значення, порівняно з більш світлими поверхнями. Діапазон значень датчика вимірюється від 0 (дуже темний) до 100 (Дуже яскравий). Даний режим роботи датчика кольору використовується в багатьох задачах з робототехніки, наприклад, для організації руху робота по заданому маршруту вздовж чорної лінії, нанесеної на біле покриття. При використанні цього режиму рекомендується розташовувати датчик таким чином, щоб відстань від нього до поверхні, що досліджується, становила приблизно 1 см (Рис. 1).

Мал. 1

Перейдемо до практичних занять: датчик кольору вже встановлений на нашому роботі і спрямований вниз до поверхні покриття, яким буде пересуватися наш робот. Відстань між датчиком та підлогою відповідає рекомендованому. Датчик кольору вже підключено до порту "2" модуля EV3 Давайте завантажимо середовище програмування, підключимо робота до середовища та для проведення вимірів скористаємось полем з кольоровими смугами, виготовленим нами для виконання завдань Розділу 5.4 Уроку №5. Встановимо робота таким чином, щоб датчик кольору розташувався над білою поверхнею. "Сторінку апаратних засобів"середовища програмування перемкнемо в режим "Перегляд портів" (Рис. 2 поз. 1). У цьому режимі ми можемо спостерігати всі виконані нами підключення. на Мал. 2відображено підключення до портів "B"і "C"двох великих моторів, а до порту "2" - Датчика кольору.

Мал. 2

Для вибору варіанта відображення показань датчиків необхідно натиснути на зображення датчика та вибрати потрібний режим (Мал. 3)

Мал. 3

на Мал. 2 поз. 2ми бачимо, що значення показання датчика кольору над білою поверхнею дорівнює 84 . У вашому випадку може вийти інше значення, адже воно залежить від матеріалу поверхні та освітлення всередині приміщення: частина освітлення, відбиваючись від поверхні, потрапляє на датчик і впливає на його показання. Встановивши робота таким чином, щоб датчик кольору розташувався над чорною смугою, зафіксуємо його показання (Мал. 4). Спробуйте виміряти самостійно значення відбитого світла над кольоровими смугами, що залишилися. Які значення ви отримали? Напишіть відповідь у коментарі до цього уроку.

Мал. 4

Давайте тепер вирішуємо практичні завдання.

Завдання №11:необхідно написати програму руху робота, що зупиняється під час досягнення чорної лінії.

Рішення:

Проведений експеримент показав нам, що при перетині чорної лінії значення датчика кольору в режимі "Яскравість відбитого світла"дорівнює 6 . Значить для виконання Завдання №11наш робот повинен рухатися прямолінійно, поки значення датчика кольору не стане менше 7 . Скористаємося вже знайомим нам програмним блоком "Чекання"Помаранчевий палітри. Виберемо потрібний умові завдання режим роботи програмного блоку "Очікування" (Рис. 5).

Мал. 5

Необхідно також налаштувати параметри програмного блоку "Чекання". Параметр "Тип порівняння" (Рис. 6 поз. 1)може приймати такі значення: "Рівно"=0, "Не дорівнює"=1, "Більше"=2, "Більше або дорівнює"=3, "Менше"=4, "Менше або дорівнює"=5. У нашому випадку встановимо "Тип порівняння"на значення "Менше". Параметр "Порогове значення"встановимо рівним 7 (Рис.6 поз. 2).

Мал. 6

Як тільки встановиться значення датчика кольору менше 7 Що станеться, коли датчик кольору виявиться розташованим над чорною лінією, нам необхідно буде вимкнути мотори, зупинивши робота. Завдання вирішено (Мал. 7).

Мал. 7

Для продовження занять нам знадобиться виготовити нове поле, що є чорним колом діаметром приблизно 1 метр, нанесене на біле поле. Товщина лінії кола дорівнює 2 - 2,5 см. Для основи поля можна взяти один аркуш паперу розміром A0 (841x1189 мм), склеїти разом два аркуші паперу розміром A1 (594x841 мм). На цьому полі розмітити лінію кола та зафарбувати її чорною тушшю. Можна також завантажити макет поля, виконаний у форматі Adobe Illustrator, а потім замовити його друк на банерній тканині у друкарні. Розмір макету дорівнює 1250x1250 мм. (Переглянути завантажений нижче макет можна, відкривши його у програмі Adobe Acrobat Reader)

Це поле стане нам у нагоді для вирішення декількох класичних завдань курсу робототехніки.

Завдання №12:необхідно написати програму для робота, що пересувається всередині кола, окантованого чорним колом за таким правилом:

  • робот рухається вперед прямолінійно;
  • досягнувши чорної лінії, робот зупиняється;
  • робот від'їжджає назад на два обороти двигунів;
  • робот повертає праворуч на 90 градусів;
  • рух робота повторюється.

Знання, отримані на попередніх уроках, допоможуть вам самостійно створити програму, яка вирішує завдання №12.

Розв'язання задачі №12

  1. Почати прямолінійний рух уперед (Рис. 8 поз. 1);
  2. Чекати на перетин чорної лінії датчиком кольору (Мал. 8 поз. 2);
  3. Рухатися назад на 2 обороти (Мал. 8 поз. 3);
  4. Повернути праворуч на 90 градусів (Рис. 8 поз. 4); значення кута повороту розраховано для робота, зібраного за інструкцією small-robot-45544 (Мал. 8 поз. 5);
  5. Повторювати команди 1 - 4 у нескінченному циклі (Мал. 8 поз. 6).

Мал. 8

До роботи датчика кольору в режимі "Яскравість відбитого світла"ми ще неодноразово повернемося, коли розглядатимемо алгоритми руху вздовж чорної лінії. А поки що розберемо третій режим роботи датчика кольору.

6.2. Датчик кольору - режим "Яскравість зовнішнього освітлення"

Режим роботи датчика кольору "Яскравість зовнішнього освітлення"дуже схожий на режим "Яскравість відбитого світла", тільки в цьому випадку датчик не випромінює освітлення, а вимірює природне світлове освітлення довкілля. Візуально даний режим роботи датчика можна визначити по синьому світлодіоду, що слабо світиться. Показники датчика змінюються від 0 (відсутність світла) до 100 (Найяскравіший світло). При вирішенні практичних завдань, що вимагають вимірювання зовнішнього освітлення, рекомендується розташовувати датчик так, щоб датчик залишався максимально відкритим і не загороджувався іншими деталями та конструкціями.

Давайте закріпимо датчик кольору на нашому роботі так само, як ми кріпили датчик торкання в Уроці №4 (Мал. 9). Підключимо датчик кольору кабелем до порту "2" модуля EV3 Перейдемо до вирішення практичних завдань.

Мал. 9

Завдання №13:необхідно написати програму, яка змінює швидкість руху нашого робота залежно від інтенсивності зовнішнього висвітлення.

Щоб вирішити це завдання, нам треба дізнатися, як набувати поточного значення датчика. А допоможе нам у цьому Жовта палітра програмних блоків, яка називається "Датчики".

6.3. Жовта палітра - Датчики

Жовта палітра середовища програмування Lego mindstorms EV3 містить програмні блоки, що дозволяють отримувати поточні показання датчиків подальшої обробки програмі. На відміну, наприклад, від програмного блоку "Чекання"Помаранчевий палітри, програмні блоки Жовтої палітри відразу передають управління до наступним програмним блокам.

Кількість програмних блоків Жовтої палітри відрізняється у домашній та освітній версії середовища програмування. У домашній версії середовища програмування відсутні програмні блоки для датчиків, які не входять до домашньої версії конструктора. Але, за потреби, їх можна самостійно підключити.

Освітня версія програмування містить програмні блоки для всіх датчиків, які можна використовувати з конструктором Lego mindstorms EV3.

Повернемося ж до рішення Завдання №13і подивимося, як можна отримувати та обробляти показання датчика кольору. Як ми вже знаємо: діапазон значень датчика кольору в режимі "Яскравість зовнішнього освітлення"знаходиться в межах від 0 до 100 . Такий самий діапазон у параметра, що регулює потужність моторів. Спробуємо показанням датчика кольору регулювати потужність двигунів у програмному блоці. "Рульове управління".

Рішення:


Мал. 10

Давайте завантажимо програму, що вийшла, в робота і запустимо її на виконання. Робот поїхав повільно? Увімкнемо світлодіодний ліхтарик і спробуємо підносити його до датчика кольору на різній відстані. Що відбувається із роботом? Закриємо датчик кольору долонею – що трапилося в цьому випадку? Напишіть відповіді на ці запитання у коментарі до уроку.

Завдання - Bonus

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


Щоб подивитися презентацію з картинками, оформленням та слайдами, скачайте її файл і відкрийте PowerPointна комп'ютері.
Текстовий вміст слайдів презентації:
“Алгоритм руху по чорній лінії з одним датчиком кольору”Кружок з «Робототехніки»Педагог до Єзидів Ахмед ЕлійовичПри МБУ ДО «Шовківської ЦТТ» Для вивчення алгоритму руху по чорній лінії буде використовуватися робот Lego Mindstorms EV3 з одним датчиком кольору Датчик кольоруДатчик кольору розрізняє 7 кольорів і може визначити відсутність кольору. Як і в NXT, він може працювати як датчик освітленості. Поле для змагань роботів "Лінія S" Пропонований полігон з трасою у формі літери "S" дозволить вам провести ще одне цікаве тестування створених роботів на швидкість та реакцію. Розглянемо найпростіший алгоритм руху по чорній лінії на одному датчику кольору на EV3. Даний алгоритм є найповільнішим, але найстабільнішим. Якщо датчик бачить чорний колір, то робот повертає в один бік, якщо білий - в інший. Рух по лінії в режимі яскравості відображеного світла двома датчиками Іноді датчик кольору недостатньо ефективно може розрізнити чорний і білий кольори. Вирішення цієї проблеми полягає у використанні датчика не в режимі визначення кольору, а в режимі визначення яскравості відбитого світла. У цьому режимі ми, знаючи значення датчика на темній і світлій поверхні, можемо самостійно говорити, що буде вважатися білим, а що чорним. Тепер визначимо значення яскравості на білій та чорній поверхнях. Для цього в меню блоку EV3 знаходимо вкладку «Додатки модуля». Тепер ви знаходитесь у вікні перегляду портів і можете побачити показання всіх датчиків на даний момент. наші датчики повинні підсвітитися червоним, що означає, що вони працюють у режимі визначення яскравості відбитого світла. Якщо ж вони світять синім – у вікні перегляду портів на потрібному порті натискаємо центральну кнопку та вибираємо режим COL-REFLECT. Тепер поставимо робота так, щоб обидва датчики розташовувалися над білою поверхнею. Дивимося на цифри в портах 1 та 4. У нашому випадку, значення 66 та 71 відповідно. Це і будуть значення білого датчиків. Тепер поставимо робота так, щоб датчики розташовувалися над чорною поверхнею. Знову подивимося значення портів 1 та 4. У нас 5 та 6 відповідно. Це значення чорного. Далі ми змінимо попередню програму. А саме – змінимо налаштування перемикачів. Поки у них встановлено Датчик кольору -> Вимір -> Колір. Нам же потрібно встановити Датчик кольору -> Порівняння -> Яскравість відбитого світла Тепер ми повинні встановити тип порівняння і порогове значення. Порогове значення – це значення деякого «сірого», значення менше якого ми вважатимемо чорним, а більше – білим. Для першого наближення зручно використовувати середнє значення між білим та чорним кожного датчика. Таким чином, граничне значення першого датчика (порт №1) буде (66+5)/2=35.5. Округлимо до 35. Порогове значення другого датчика (порт №4): (71+6)/2 = 38.5. Округлимо до 38. Тепер виставляємо ці значення в кожному перемикачі відповідно.<», то все, что сверху (под галочкой) будет считаться черным, а снизу (под крестиком) – белым, как и было в предыдущей программе.Старайтесь ставить датчики так, чтобы разница между белым и черным была как можно больше. Если разница меньше 30 - ставьте датчики ниже. Это было краткое руководство по программированию робота Lego ev3, для движения по черной линии, с одним и двумя датчиками цвета

Так бачить лінію людина:

Так бачить її робот:


Ось цю особливість ми будемо використовувати при конструюванні та програмуванні робота для категорії змагань «Траєкторія».

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

Я хочу розповісти про спосіб програмування, який засвоять навіть діти 2-3 класів. У цьому віці їм набагато легше дається складання конструкцій за інструкціями, а програмування робота – для них складне завдання. Але цей спосіб дозволить дитині запрограмувати робота на будь-який маршрут траси за 15-30 хвилин (з урахуванням поетапної перевірки та припасування деяких особливостей траєкторії).

Цей спосіб було перевірено на муніципальних та регіональних змаганнях з робототехніки в Сургутському районі та ХМАО-Югрі та приніс нашій школі перші місця. Там же я переконався, що ця тема є дуже актуальною для багатьох команд.

Ну, приступимо.

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

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

Датчики освітленості підключені до 2 та 3 портів. Мотори до портів В та С.
Датчики виставлені по краях лінії (спробуйте поекспериментувати, маючи датчики на різній відстані один від одного і на різній висоті).
Важливий момент. Для кращої роботи такої схеми кілька датчиків бажано підібрати за параметрами. Інакше необхідно буде вводити блок коригування значень датчиків.
Установка датчиків на шасі за класичною схемою (трикутник) приблизно як на малюнку.

Програма складатиметься з невеликої кількості блоків:


1. Два блоки датчика освітленості;
2. Чотири блоки «Математики»;
3. Двох блоків двигунів.

Для керування роботом використовується два мотори. Потужність кожного – 100 одиниць. Для нашої схеми ми візьмемо середнє значення потужності двигуна рівним 50. Тобто, середня швидкість при русі по прямій, дорівнюватиме 50 одиницям. При відхиленні від прямолінійного руху потужність моторів пропорційно збільшуватиметься або зменшуватиметься, залежно від кута відхилення.

Тепер розберемося, як з'єднати всі блоки, налаштувати програму і що відбуватиметься в ній.
Виставимо два датчики освітленості та призначимо їм порти 2 та 3.
Беремо блок математики та оберемо «Віднімання».
Підключимо датчики освітленості з виходів «Інтенсивність» шинами до блоку математики до входів «А» та «В».
Якщо датчики робота встановлені симетрично від центру лінії траси, значення обох датчиків буде рівними. Після віднімання ми отримаємо значення – 0.
Наступний блок математики буде використаний як коефіцієнт і в ньому потрібно виставити «Множення».
Для обчислення коефіцієнта вам необхідно виміряти за допомогою блоку NXT рівень "білого" та "чорного".
Припустимо: білий –70, чорний –50.
Далі вважаємо: 70-50 = 20 (різниця між білим і чорним), 50/20 = 2,5 (середнє значення потужності при русі по прямій в блоках математики ми виставили в 50. Це значення плюс додана потужність при коригуванні руху повинна дорівнювати 100)
Спробуйте виставити значення 2,5 на вході «А», а потім підберете точніше.
До входу "В" блоку математики "Умноження" підключіть вихід "Результат" попереднього блоку математики "Віднімання".
Далі йде пара – блок математики (Складання) та мотор В.
Налаштування блоку математики:
На вході «А» виставлено значення 50 (половина потужності двигуна).
Вихід блоку «Результат» з'єднаний шиною з входом «Потужність» двигуна.
Слідом пари - блок математики (Віднімання) і мотор С.
Налаштування блоку математики:
На вході «А» виставлено значення 50.
Вхід "В" з'єднаний шиною з виходом "Результат" блоку математики "Умноження".
Вихід блоку «Результат» з'єднаний шиною із входом «Потужність» двигуна С.

В результаті всіх цих дій ви отримаєте таку програму:

Так як це все буде працювати в циклі, то додаємо «Цикл», виділяємо та переносимо це все у «Цикл».

Тепер давайте спробуємо розібратися, як працюватиме програма та як її налаштувати.


Поки робот їде по прямій лінії значення датчиків збігаються, значить, на виході блоку «Віднімання» буде значення 0. Вихід блоку «Множення» дає значення 0. Це значення подається паралельно на пару управління моторами. Так як в цих блоках виставлено значення 50, то додавання або віднімання 0 не впливає на потужність двигунів. Обидва двигуни працюють з однаковою потужністю 50, і робот котить по прямій.

Припустимо, що траса робить поворот або робот відхиляється від прямої. Що відбуватиметься?

На малюнку видно, що освітленість датчика, підключеного до порту 2 (далі по тексту-датчики 2 і 3) збільшується, оскільки він з'їжджає на біле поле, а освітленість датчика 3 зменшується. Припустимо, значення цих датчиків стають: датчик 2-55 одиниць, а датчик 3-45 одиниць.
Блок "Віднімання" визначить різницю між значеннями двох датчиків (10) і подасть його в блок корекції (множення на коефіцієнт (10 * 2,5 = 25)) і далі в блоки управління
двигунами.
У блоці математики (Складання) управління мотором до значення середньої швидкості 50
додасться 25 і значення потужності 75 буде подано на двигун.
У блоці математики (Віднімання) управління мотором Від значення середньої швидкості 50 буде віднімається 25 і значення потужності 25 буде подано на мотор З.
Таким чином, буде скориговано відхилення від прямої лінії.

Якщо траса різко повертає убік і датчик 2, виявляється білому, а датчик 3 чорному. Значення освітленості цих датчиків стають: датчик 2-70 одиниць, а датчик 3-50 одиниць.
Блок «Віднімання» визначить різницю між значеннями двох датчиків (20) і подасть її до блоку корекції (20*2,5=50) і далі в блоки управління моторами.
Тепер у блоці математики (Складання) управління мотором значення потужності 50 +50 =100 буде подано на мотор В.
У блоці математики (Віднімання) управління мотором значення потужності 50 – 50 = 0 буде подано на мотор С.
І робот виконає крутий розворот.

На білому та чорних полях робот повинен їхати прямою. Якщо цього немає, спробуйте підібрати датчики з однаковими значеннями.

Тепер створимо новий блок і використовуватимемо його для руху робота по будь-якій трасі.
Виділимо цикл, далі в меню "Правка" виберемо команду "Створити мій блок".

У діалоговому вікні "Конструктор блоків" дамо назву нашому блоку, наприклад, "Go", виберемо іконку для блоку та натиснемо "ГОТОВО".

Тепер у нас є блок, який можна використовувати у випадках, коли нам знадобиться рух по лінії.

Для того, щоб змусити робота рухатися плавно чорною лінією, потрібно змусити його самому вважати швидкість руху.

Людина бачить чорну лінію та її чіткий кордон. Датчик освітленості працює дещо інакше.

Саме ця властивість датчика освітленості – неможливість чітко розрізнити межу білого та чорного – ми й використовуватимемо для розрахунку швидкості руху.

По-перше, введемо поняття "Ідеальна точка траєкторії".

Показання датчика освітленості коливаються в діапазоні від 20 до 80, найчастіше білому кольорі показання рівні приблизно 65, чорному порядку 40.

Ідеальна точка – умовна точка приблизно посередині білого та чорного кольорів, за якою робот буде переміщатися вздовж чорної лінії.

Тут принципово розташування точки між білим і чорним. Задати її точно на білому або чорному не вийде з математичних причин, чому буде пізніше.

Емпіричним шляхом ми вирахували, що ідеальну точку можна вирахувати за такою формулою:

Робот повинен рухатися по ідеальній точці. Якщо трапляється відхилення будь-якої сторони, робот повинен повернутися до цієї точки.

Складемо математичний опис задачі.

Вихідні дані.

Ідеальна точка.

Поточні показання датчика освітлення.

Результат.

Потужність обертання двигуна Ст.

Потужність обертання двигуна С.

Рішення.

Розглянемо дві ситуації. Перша: робот відхилився від чорної лінії у бік білого.

У цьому випадку робот повинен збільшити потужність обертання мотора і зменшити потужність мотора С.

У ситуації, коли робот заїжджає на чорну лінію, навпаки.

Чим сильніший робот відхиляється від ідеальної точки, тим швидше йому треба до неї повернутися.

Але створення такого регулятора – завдання досить непросте, та й не завжди він потрібний у цілому вигляді.

Тому ми вирішили обмежитися лише П-регулятором, що адекватно реагує на відхилення від чорної лінії.

Мовою математики це буде записано так:

де Hb та Hc – підсумкові потужності моторів B та C відповідно,

Hбазова - якась базова потужність моторів, що визначає швидкість руху робота. Підбирається експериментально, залежно від конструкції робота та різкості поворотів.

Iтек – поточні показання датчика освітлення.

I ід - розрахована ідеальна точка.

k – коефіцієнт пропорційності, підбирається експериментально.

У третій частині розглянемо, як це запрограмувати серед NXT-G.

Алгоритми керування мобільним LEGO-роботом. Рух по лінії з двома датчиками освітлення

Педагог додаткової освіти

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


Рух по лінії

  • Два датчики освітлення
  • Пропорційний регулятор (П-регулятор)

Алгоритм руху вздовж чорної лінії без пропорційного регулятора

  • Обидва мотори крутяться з однаковою потужністю
  • Якщо правий датчик освітленості потрапляє на чорну лінію, то потужність лівого мотора (наприклад, В) знижується або відбувається зупинка
  • Якщо лівий датчик освітленості потрапляє на чорну лінію, то потужність іншого з моторів (наприклад, С) знижується (здійснюється повернення на лінію) знижується або відбувається зупинка
  • Якщо обидва датчики на білому або чорному, відбувається прямолінійний рух

Рух організований за допомогою зміни потужності один із моторів


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

Рух організований за допомогою зміни кута повороту


  • Пропорційний регулятор (П-регулятор) дозволяє регулювати поведінку робота залежно від цього, наскільки його поведінка відрізняється від бажаного.
  • Чим більше робот відкланяється від мети, тим більше потрібно докласти сил, щоб до неї повернутися.

  • П-регулятор використовується для утримання робота у певному стані:
  • Утримання положення маніпулятора Рух лінії (датчик освітленості) Рух вздовж стіни (датчик відстані)
  • Утримання положення маніпулятора
  • Рух по лінії (датчик освітленості)
  • Рух уздовж стіни (датчик відстані)

Рух по лінії з одним датчиком

  • Мета – рух за кордоном «білий-чорний»
  • Людина може розрізнити межу білого та чорного кольорів. Робот не може.
  • Мета для робота – знаходиться на сірому кольорі

Проїзд перехресть

При використанні двох датчиків освітленості можлива організація руху більш складними трасами.



Алгоритм руху трасою з перехрестями

  • Обидва датчики на білому – робот їде прямолінійно (обидва мотори крутяться з однаковою потужністю)
  • Якщо правий датчик освітленості потрапляє на чорну лінію, а лівий на білому відбувається поворот направо
  • Якщо лівий датчик освітленості потрапляє на чорну лінію, а правий на білому відбувається поворот на ліво
  • Якщо обидва датчики на чорному, відбувається прямолінійний рух. Можна вести підрахунок перехресть або виконувати якісь дії


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

Положення датчиків

О = О1-О2


Алгоритм руху вздовж чорної лінії із пропорційним регулятором

УВ = К * (Ц-Т)

  • Ц - цільові значення (зняти показання з датчика освітленості на білому та чорному, розрахувати середнє)
  • Т – поточне значення – отримуємо з датчика
  • К – коефіцієнт чутливості. Чим більше, тим вища чутливість