Отслеживание линии

14-11-2013, 20:33
Просмотров: 1670
В этом режиме робот "Искатель" отслеживает линию, нанесенную на пол или на другую поверхность. Для решения этой задачи ему необходима пара инфракрасных датчиков. Светодиоды высокой яркости, устанавливаемые на передней панели робота, не являются критически-важным атрибутом, однако они улучшают визуальное восприятие - особенно в условиях слабой освещенности.
Отслеживание линии

Робот может, конечно же, работать как в темноте, так и при ярком освещении. Другой практический момент, связанный со светодиодами: когда робот поворачивается влево или вправо при отслеживании траектории, со стороны поворота включается светодиод.
Это помогает убедиться в том, что программа работает корректно.
Отслеживаемую линию можно сделать из липкой черной ленты или черного картона или же нарисовать краской.
Перед этим следует убедиться в том, что используемый материал действительно поглощает инфракрасный свет.
Некоторые виды черной бумаги и картона отражают лучи из этой области спектра, поэтому черная линия из такого материала для робота не будет отличаться от белой или слегка окрашенной поверхности. Мы пришли к выводу, что приемлемый результат дает рисование линии на тонком белом картоне серой или черной акриловой краской.
Линия должна быть около 20 мм в ширину. Нарисуйте замкнутую петлю с прямолинейными и изогнутыми участками.
Радиус каждой кривой Должен составлять не менее 70 мм. При более резких изгибах робот будет Пытаться пересечь линию и останавливаться.
Как робот с помощью двух датчиков определяет отражение инфракрасного света. Обычно, когда робот перемещается вдоль прямой, датчики позиционируются по обе стороны от линии. Робот перемещается вперед в течении 0,2 с и повторно состояние датчиков.
Как только один из датчиков воспринимает белый цвет, это указывает на поворот траектории. Реакция робота зависит от того, какой из датчиков видит белый цвет, а какой - черный. Так положению соответствует поворот влево. Для того чтобы остаться на линии, робот должен повернуться на месте влево. Программа переходит к метке spinl, включается левый светодиод и в рабочий регистр загружается значение Н' 9 0, и двигатель отрабатывает управляющий код поворота влево. Противоположное происходит, если робот должен повернуть вправо.
Если ни один из датчиков не воспринимает белого цвета, то это означает, что робот пересекает линию.
При этом он останавливается, и программа завершается. Для такого случая можно запрограммировать робота делать что-нибудь интересное (об этом - чуть позже).
В случаях бив программа переходит к метке spinl или spinr в за-0симости от того, в каком направлении должен повернуться робот.
Рабочий регистр w загружается соответствующим кодом, и программа переходит к метке spinnit. Значение, сохраненное в регистре w, используется для поворота робота в требуемом направлении. Программа повторяется, и робот следует по замкнутой траектории неопределенно долго до момента блокировки движения при попытке пересечь линию. Подпрограмма отслеживания линия.
В эту программу можно внести много добавлений и расширений. Например, запрограммируйте робота на отслеживание белой линии на темной поверхности. Можно также поэкспериментировать с линией. Если робот подходит к ее концу, то он продолжает двигаться прямо вперед некоторое короткое расстояние, после чего может распознать начало второй линии и приступить к ее отслеживанию.
Используйте этот вариант поведения для реализации следования робота по траектории в виде восьмерки.
Робот может также проходить лабиринт из разветвляющихся линий В каждой точке ветвления он останавливается и случайным образом выбирает направление движения вправо или влево. В конце концов робот приходит в одну из нескольких конечных точек, из которых только одна является "выходом". Робот должен запоминать свой выбор в каждой точке ветвления и тем самым учиться находить путь к правильной конечной точке.

Источник: delete-it.ru
Автор: ziko
Опубликовано пользователем: 81 (смотреть все)
Комментарии: