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


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

УВ = К * (Ц-Т)

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



Щоб подивитися презентацію з картинками, оформленням та слайдами, скачайте її файл і відкрийте PowerPointна комп'ютері.
Текстовий вміст слайдів презентації:
“Алгоритм руху по чорній лінії з одним датчиком кольору” Гурток з «Робототехніки»Педагог до Єзидів Ахмед ЕлійовичПри МБУ ДО «Шовківської ЦТТ» Для вивчення алгоритму руху по чорній лінії, буде використовуватися робот Lego Mindstorms EV3 з одним датчиком кольору кольорів і може визначити відсутність кольору. Як і в 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, для движения по черной линии, с одним и двумя датчиками цвета

Текст роботи розміщено без зображень та формул.
Повна версія роботи доступна у вкладці "Файли роботи" у форматі PDF

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

Підготовчий етап

Створення та калібрування програми

Висновок

Література

1. Введення.

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

За останні роки успіхи в робототехніці та автоматизованих системах змінили особисту та ділову сфери нашого життя. Роботи широко використовуються у транспорті, у дослідженнях Землі та космосу, у хірургії, у військовій промисловості, при проведенні лабораторних досліджень, у сфері безпеки, у масовому виробництві промислових товарів та товарів народного споживання. Багато пристроїв, що приймають рішення на основі отриманих від сенсорів даних, теж можна вважати роботами - такі, наприклад, ліфти, без яких вже немислиме наше життя.

Конструктор Mindstorms EV3 запрошує нас увійти у захоплюючий світ роботів, поринути у складне середовище інформаційних технологій.

Ціль: Навчиться програмувати рух робота по прямій лінії.

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

    Написати програми руху робота по прямій на 30 см, 1 м 30 см та 2 м 17 см.

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

Деталі конструктора – 601 шт., серводвигун – 3 шт., датчик кольору, сенсорний датчик руху, інфрачервоний датчик та датчик торкання. Мікропроцесорний блок EV3 є мозком конструктора LEGO Mindstorms.

За рух робота відповідає великий сервомотор, який підключається до мікрокомп'ютера EV3 і змушує робота рухатися: їхати вперед і назад, повертатися та проїжджати заданою траєкторією. Цей сервомотор має вбудований датчик обертання, який дозволяє дуже точно контролювати переміщення робота та його швидкість.

Змусити робота виконувати дію можна за допомогою комп'ютерної програми EV3. Програма складається із різних блоків управління. Ми працюватимемо з блоком руху.

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

    Підготовчий етап.

    Створення технічного поля.

На полі роботи робота нанесемо розмітку, за допомогою ізоленти та лінійки створимо три лінії довжиною 30 см – зелена лінія, 1 м 15 см – червона та 2 м 17 см – чорна лінії.

    Необхідні розрахунки:

Діаметр колеса робота – 5 см 7 мм = 5,7 см.

Один оборот колеса робота дорівнює довжині кола з діаметром 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. lego. com/education/

Loading...Loading...