Занятие23-24

Движение робота вдоль черной линии. Релейный регулятор

Одна из классических задач для мобильного робота - это движение по черной линии на белом поле с использование датчиков освещенности.

Соберите робота с одним датчиком освещенности:

 Этап 1

 Этап 2

 Этап 3

 Этап 4

 Этап 5

 Этап 6

 Этап 7

 Этап 8

 Этап 9 Левый мотор подключаем к порту В, а правый - к порту С на NXT

Датчик освещенности надо немного выдвинуть вперед:

 Этап 10

 Этап 11

 Этап 12 Датчик освещенности подключаем к порту №1 на NXT

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

Перед стартом поставим робота на линию так, чтобы датчик был над белым полем на расстоянии 2-3 см от черного.

Задача 1

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

 Для данного алгоритма будем использовать команды "Жди темнее на..." и "Жди светлее на..." со стандартными установками ( по умолчанию 5 пунктов):

Если возникли проблемы:

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

2. Робот проскакивает линию, не успев среагировать. Следует понизить мощность моторов.

3. Робот реагирует на мелкие помехи на белом, не доезжая до черного. Надо увеличить порог чувствительности датчика (например, не на 5, а на 8 пунктов)

Задача 2

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

Показания датчика определим с помощью меню Viev на NXT.

Выберите View в меню NXT.

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

Выберите порт к которому подключено устройство.

Данные с этого устройства появятся на экране дисплея.

Задание 1 (1 способ движения)

Пусть показания датчика на белом и на черном 60 и 40. Их среднее арифметическое (60+40)/2=50.  Пересекая датчиком значение 50, робот будет менять направление движения.  Алгоритм будет выглядеть так:

Задание 2 (2 способ движения)

Пусть робот двигается по кругу по часовой стрелке вдоль правой границы  черного и белого.

Напишем программу движения вдоль правой границы. В качестве границы перехода черного и белого возьмем число 50. Пока датчик на черном, робот движется в сторону белого (поворот направо: мотор С остановлен, мотор B работает вперед); пока датчик на белом, робот движется в сторону черного (мотор В остановлен, С работает вперед).

Пример программы:

Такое устройство и программа к нему называются РЕГУЛЯТОРОМ.

Регулятор - устройство, определяющее отклонение объекта от заданного состояния и вырабатывающее управляющее воздействие на моторы, чтобы это отклонение ликвидировать.

Данный вариант программы называют релейный регулятор.

Эксперимент

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

Задание 3(3 способ движения)

Рассмотрим другой пример пропорционального регулятора.

Вместо конкретного значения датчика освещенности 50 лучше брать значение, получаемое с помощью калибровки: например, запоминание черного цвета (датчик робота надо поставить на черный в начале калибровки). Это необходимо делать потому, что освещенность в помещении может быть различной в разное время суток.

При калибровке в данном примере значение освещенности сохраняется в переменную s3

Пропорциональный регулятор - устройство, оказывающее воздействие U на моторы пропорционально отклонению. То есть, чем больше робот отклоняется от заданного состояния, тем активнее должны работать моторы. Воздействие U определяют по формуле: U=(s3-Grey)*k, где s3 - текущее показание датчика освещенности, Grey - установленное показание датчика s3 в процессе калибровки. для улучшения результата, увеличивают чувствительность датчика с помощью следующей формулы: Grey=s3-8. Значение 8 можно подбирать и менять. k-усиливающий коэффициент. Пусть k=1.1 (это значение можно увеличивать). 

Будем считать базовой (стартовой) мощностью моторов - среднюю мощность равную 50. Тогда пропорциональное воздействие на моторы будет следующее:

МоторВ: 50-U

МоторС:50+U

Для реализации регулятора используется инструмент:

Пример программы:

Такая программа будет хорошо работать на траекториях с небольшими изгибами. На траекториях с большими изгибами, углами лучше использовать пропорционально-дифференцируемый и кубический регулятор.

Задание 4: попробуйте написать программы движения робота против часовой стрелки.

Итоги работы:

 1 Команда: Чиркова В., Казарина С., 

1балл - 3 место

2 Команда Семенов И., Потапкин М. - 2 балла - 2 место

 

3 Команда:

Дерябин Д., Семидоцкий В. - 2 балла - 2 место 

 4 Команда:

Лисин Р., 

Макрушин А., Манухин С.- 3 балла - 1 место

Лучший результат: