Рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Содержание урока

Введение:

Наш очередной урок мы посвятим последнему режиму совместной работы инфракрасного датчика и инфракрасного маяка - режиму "Маяк". В этом режиме инфракрасный датчик способен обнаруживать излучение инфракрасного маяка, а также определять примерное направление и расстояние до него. 

9.1. Инфракрасный датчик. Режим "Маяк"

Для того, чтобы использовать инфракрасный маяк в этом режиме, следует, нажав отдельную горизонтальную серую кнопку, перевести маяк в режим непрерывного излучения сигнала (Рис. 1 поз. 1). При этом на инфракрасном маяке загорится зеленый индикатор.

Инфракрасный маяк

Рис. 1

Давайте рассмотрим программный блок "Инфракрасный датчик" Желтой палитры в режиме "Измерение" - "Маяк". (Рис. 2) В этом режиме программный блок имеет один входной параметр, определяющий номер канала работы инфракрасного маяка (Рис. 2 поз.1), а также три выходных параметра: "Направление" (Рис. 2 поз.2), "Приближение" (Рис. 2 поз.3) и "Обнаружено" (Рис. 2 поз.4).

Инфракрасный датчик. Режим "Маяк"

Рис. 2

  • Параметр "Обнаружено" выдает логическое значение "Да" - если инфракрасный маяк обнаружен датчиком, и "Нет" - в противном случае.
  • Параметр "Приближение" выдает числовое значение в диапазоне от 0 до 100. Значение, равное 0, означает, что инфракрасный маяк находится очень близко. Значения, меньшие 100, сигнализируют о том, что инфракрасный маяк уверенно обнаруживается датчиком и находится в относительной удаленности от робота. Значение, равное 100 говорит нам о том, что инфракрасный маяк находится очень далеко или не обнаружен датчиком.
  • Параметр "Направление" выдает числовое значение в диапазоне от -25 до 25. Значение, равное 0, означает, что инфракрасный маяк находится строго напротив инфракрасного датчика. Отрицательные значения свидетельствуют об отклонении инфракрасного датчика в левую сторону от направления датчика (против часовой стрелки), а положительные - в правую сторону от направления датчика (по часовой стрелке) (Рис. 3)

Инфракрасный датчик. Направление.

Рис. 3

Попробуем применить полученные знания на практике и создать программу для робота, позволяющую ему находить инфракрасный маяк и следовать за ним.

9.2. Поиск инфракрасного маяка 

На первом этапе приступим к созданию программы поиска роботом инфракрасного маяка.

Задача № 19: написать программу для робота, вращающегося вокруг своей оси и останавливающегося в направлении инфракрасного датчика.

Решение:

  1. Используя программный блок "Независимое управление моторами", начать вращение робота вокруг своей оси против часовой стрелки (Рис. 4 поз. 1).
  2. Используя программный блок "Ожидание" в режиме "Инфракрасный датчик" - "Сравнение" - "Приближение маяка" (Рис. 4 поз. 2) с пороговым значением равным 80 (Рис. 4 поз. 3), ожидаем, пока робот не обнаружит инфракрасный маяк (значение параметра "Приближение" станет меньше 100).
  3.  Так как наш робот вращается против часовой стрелки, то, когда инфракрасный датчик обнаружит маяк, его параметр "Направление" примет отрицательное значение. Поэтому, следующий программный блок "Ожидание" в режиме "Инфракрасный датчик" - "Сравнение" - "Направление маяка" (Рис. 4 поз. 4) даст возможность роботу вращаться до тех пор, пока робот не окажется напротив инфракрасного маяка (значение параметра "Пороговое значение" превысит 0 (Рис. 4 поз. 5)).
  4. Так как наш робот, вращаясь с большой скоростью, может повернуть чуть больше в результате сил инерции, то, на малой скорости, используя следующие два программных блока, повернем робота по часовой стрелке (Рис. 4 поз. 6, 7).
  5. Выключим моторы робота (Рис. 4 поз. 8).

Загрузите программу в робота, поверните робота спиной к инфракрасному маяку, включите маяк и запустите программу на выполнение. Наш робот должен остановиться напротив маяка. Получилось? Для того чтобы лучше понять принцип работы нашей программы, попробуйте, изменив направление начального вращения робота (по часовой стрелке), отредактировать необходимые программные блоки и добиться правильной её работы. 

Решение задачи №19

Рис. 4

9.3. Следование за инфракрасным маяком

Задача №20: написать программу следования робота за инфракрасным маяком.

Решение:

Наш робот научился уверенно определять направление инфракрасного маяка и поворачивать в его сторону. Осталось только доехать до него и остановиться напротив. Решить эту задачу можно различными способами. Предлагаю вам воспользоваться возможностями, предоставляемыми программным блоком "Инфракрасный датчик" Желтой палитры, который мы рассмотрели в первой части сегодняшнего урока. Как поведет себя наш робот, если в бесконечном цикле мы подадим значение параметра "Приближение" (Рис. 5 поз. 1) программного блока "Инфракрасного датчика" на вход параметра "Мощность" (Рис. 5 поз. 2) программного блока "Рулевое управление" Зеленой палитры?

Поместим включенный маяк непосредственно перед роботом. Загрузим получившуюся программу (Рис. 5) в робота и запустим её на выполнение. Приближаясь к маяку, наш робот будет постепенно замедляться. Подъехав вплотную к маяку, робот остановится. Если отодвинуть маяк, то робот снова устремится в его сторону.

Прямолинейное движение за маяком

Рис. 5

К сожалению, пока наш робот не умеет изменять направление движения. Если инфракрасный маяк переместить влево - вправо от направления движения робота, то, наш робот проедет мимо. Давайте научим движущегося робота поворачивать в сторону маяка. Для этого возьмем параметр "Направление" (Рис. 6 поз. 1) программного блока "Инфракрасный датчик", умножим его на 2 (Рис. 6 поз. 2) и подадим на вход параметра "Рулевое управление" (Рис. 6 поз. 3) программного блока "Рулевое управление". Для чего нам потребовалось умножение? Диапазон значений параметра "Направление" от -25 до 25. Получая значения из этого диапазона, робот будет поворачивать на недостаточный угол - умножение же расширяет диапазон значений от -50 до 50, что позволит роботу уверенно следовать за перемещениями маяка. 

Снова поместим включенный инфракрасный маяк напротив робота. Загрузим исправленную программу (Рис. 6) в робота и запустим её на выполнение. Как только робот устремится в сторону инфракрасного маяка, начнем перемещать маяк влево или вправо от направления движения робота. Наш робот будет уверено поворачивать в сторону маяка!

Следование за маяком

Рис. 6

Теперь наша программа отлично справляется с задачей следования за инфракрасным маяком. Но, если выключить маяк, то робот начинает вести себя непредсказуемо. Ведь мы никак не учитываем показание параметра "Обнаружено" (Рис. 7 поз. 1) программного блока "Инфракрасный датчик". Если робот теряет маяк, то значение параметра "Обнаружено" становится равным "Нет". Подадим значение параметра "Обнаружено" на вход программного блока "Переключатель", установленного в режим "Логическое значение". В контейнер логического значения "Нет" установим программный блок "Прерывание цикла" Оранжевой палитры (Рис. 7 поз. 2). Параметр "Имя прерывания" программного блока "Прерывание цикла" должно соответствовать имени цикла!

Решение задачи №20 (Нажмите для увеличения)

Рис. 7

Протестируем получившуюся программу (Рис. 7) - стоит выключить инфракрасный маяк, как программный блок "Прерывание цикла" фактически остановит выполнение нашей программы!

9.4. Поиск и следование за инфракрасным маяком

Задача №21: написать программу поиска и следования за инфракрасным маяком.

Решение:

Настало время объединить знания, полученные в разделе 9.2. Поиск инфракрасного маяка и 9.3. Следование за инфракрасным маяком. Внутрь бесконечного цикла сначала поместим программу поиска маяка (Рис. 4), а затем - программу следования за маяком (Рис. 7). Получившуюся программу (Рис. 8) загрузим в робота и запустим на выполнение. Сначала наш робот будет вращаться на месте, пока не повернется в сторону инфракрасного маяка, а затем устремится в его сторону. Если маяк выключить, то робот остановится и снова начнет вращаться на месте, пока не обнаружит инфракрасный маяк.

Задача решена!

Решение задачи №21 (Нажмите для увеличения)

Рис. 8

Комментарии   
+11 #1 цдт 07.10.2017 12:42
это гениально!
Цитировать
+1 #2 Георгий 19.11.2017 23:19
спасибо за интересный материал!
Но у меня робот едет в обратном направлении от маяка. а функция invert motor почему то не срабатывает.
Подскажите пожалуйста в чем ошибка.
Цитировать
-5 #3 rogov81 11.12.2018 21:00
Цитирую Георгий:
спасибо за интересный материал!
Но у меня робот едет в обратном направлении от маяка. а функция invert motor почему то не срабатывает.
Подскажите пожалуйста в чем ошибка.

Сделайте математическое умножение на -1 как мощности так и направления для блока "Рулевое управление".
Цитировать
Добавить комментарий
Внимание!
Возрастная категория посетителей сайта - (10+).
Все комментарии перед публикацией проходят модерацию.