В этом уроке:
- Обучаем робота двигаться по линии;
- Знакомимся с понятиями "ошибка регулирования" и "коэффициент регулирования";
Простое движение по линии
Давайте начнём с создания простого алгоритма движения, после чего добавим к нему несколько полезных функций.
Поскольку робот должен двигаться по линии и отслеживать своё смещение относительно неё постоянно, то вся основная программа будет находиться в бесконечном цикле.
Необходимо получить сигналы с двух датчиков света. Переведём их в режим измерения яркости отраженного света.
Указываем порты, к которым они подключены.
Далее необходимо сравнить сигналы с этих датчиков. Если значение отражённого света с одного датчика становится больше значения, получаемого с другого датчика, это значит, что машинка стала отклоняться от центра линии (линия сместилась под один из датчиков, и теперь возвращаемое им значение меньше. Под вторым датчиком — светлое поле, и значение с него — больше).
Итак, давайте отнимем от одного значения другое. В результате получим число. По его величине можно будет судить, насколько сильно машинка отклонилась от центра линии, а по знаку — в какую сторону.
Подаём на вход блока "Математика" два числа, полученные от датчиков линии.
Вычисленное значение часто называют значением ошибки, ведь, по сути, это значение возникло из-за "неидеальности" езды по центру линии, то есть — является ошибкой.
Разумеется, в данной ошибке нет ничего плохого, и она не несёт в себе негативный подтекст. Напротив, она помогает в регулировании — то есть в возвращении машинки обратно на линию.
Добавим блок "Рулевое управление". Он получает ошибку регулирования и включает моторы на заданную скорость. При этом, один мотор вращается быстрее другого (какой именно — зависит от знака ошибки, т.е. от направления смещения машинки от центра линии).
Выбираем опцию "Включить".
Устанавливаем порты, к которым подключены моторы (A и D), а также устанавливаем скорость. Пусть это будет 20.
Ну что же, можно попробовать запустить программу. Поставьте машинку на линию трассы и посмотрите, как она работает. Автомобиль должен ехать по линии, но, возможно, не идеально.
Добавляем возможность изменения резкости поворота
Как мы уже сказали, резкость поворота зависит от величины отклонения от линии. Но что, если мы хотим, чтобы машинка быстрее возвращалась к линии при отклонении, или наоборот, не сильно дёргалась при малейших отклонениях?
Давайте умножим ошибку регулирования на некоторый коэффициент, и уже после этого подадим на рулевое управление.
Получается, что если коэффициент больше 1, то значение ошибки, подаваемой на рулевое управление, увеличивается, и машинка движется более резко. А если значение меньше 1 — то машинка едет более плавно.
Кстати, введённый нами коэффициент называется коэффициентом регулирования.
Поэкспериментируйте с коэффициентом регулирования: попробуйте проехать разные участки трассы и подберите такой коэффициент, при котором машинка будет уверенно проезжать все участки.
Попробуйте также ввести слишком большой или слишком малый коэффициент, скажем, 0,1 или 10. В случае,если коэффициент будет слишком мал, величины ошибки будет недостаточно для того, чтобы изменить направление движения машинки. Это называется недорегулированием. Слишком большой коэффициент вызывает сильное виляние машинки даже при незначительном отклонении от центра. Это называется перерегулированием.
Создание блока движения по линии
Поскольку в дальнейшей работе нам часто будет нужен созданный алгоритм движения по линии, давайте сохраним его в блок. Так им будет удобнее пользоваться. Кроме того, он будет занимать меньше места на экране, а значит не будет загромождать остальные части программы.
Выделите часть программы, находящуюся внутри бесконечного цикла.
В меню выберите Инструменты -> Конструктор Мой Блок.
Введите название блока, выберите подходящий значок, добавьте описание, после чего нажмите Завершить.
Теперь алгоритм движения по линии оформлен в виде компактного блока, который находится во вкладке "Мои блоки".
Алгоритм сегодняшнего урока стал гораздо компактнее.
Если дважды кликнуть по созданному нами блоку, то появится возможность его редактирования. Помните про это, ведь, возможно, в будущем вы захотите поменять коэффициент регулирования.
Обсуждение