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

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

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

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

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

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

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

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

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

Я хочу розповісти про спосіб програмування, який освоять навіть діти 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», виберемо іконку для блоку і натиснемо «ГОТОВИЙ».


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

додаткова інформація

Схожі статті