1. Робот с одним датчиком
Одна их классических задач для мобильного робота - это движение по черной линии на белом поле с использование датчиков освещенности. В первом опыте используем робота с одним датчиком освещенности. Датчик следует выдвинуть немного вперед:Конструкцию можно построить множеством способом. Рассмотрим один их них. Крепление датчика освещенности к трехколесной тележке:
Короткая двухмодульная ось может быть красного или черного цвета:
Датчик подключен:
2. Релейный регулятор
Задача такова: двигаться по плоскому полю вдоль границы черного и белого.
Решается элементарно применением релейного двухпозиционного регулятора. В таком регуляторе рассматривается только два состояния датчика и, соответственно, два управляющих воздействия на моторы.
Пока датчик на белом, робот двигается в сторону черного, пока датчик на черном, робот двигается в сторону белого.
Благодаря тому, что поворот осуществляется по дуге с небольшим радиусом, в итоге происходит движение вперед.
Алгоритм записан и использованием блоков "Жди темнее на..." и "Жди светлее на...":
Вот простейшее решение:
Без дополнительных уточнений предполагается, что датчик освещенности подключен к первому порту. Левый мотор подключен к порту В, правый - к порту С. Перед стартом ставим робота на линию так, чтобы датчик был над белым полем на расстоянии 2-3 см от черного. По алгоритму робот плавно поворачивается направо, пока освещенность не понизится на 5 пунктов (по умолчанию). Затем поворачивается налево, пока освещенность не повысится на 5 пунктов. Движение получается похожим на "змейку".
3. Возможные проблемы
- Робот крутится на месте, не заезжая на линию. В этом случае следует стартовать с другой стороны линии, либо поменять подключение моторов к контроллеру местами.
- Робот проскакивает линию, не успев среагировать. Следует понизить мощность моторов.
- Робот реагирует на мелкие помехи на белом, не доезжая до черного. Надо увеличить порог чувствительности датчика (например, не на 5, а на 8 пунктов)
Есть возможность заранее определить уровень освещенности на данном поле и использовать его абсолютное значение. Воспользовавшись показаниями датчика на белом и черном, полученными через меню View, рассчитаем их среднее арифметическое (53+37)/2=45, которое условно назовем "значением серого". Пересекая датчиком значение 45, робот будет менять направление движения. Очевидно, что по левую луку от "серого" все показания датчика будут "белыми", а по правую "черными". Алгоритм будет выглядеть так:
Чтобы сделать поворот более плавным, не будем полностью останавливать моторы на повороте, а лишь притормозим. Числа 80 и 20 поставлены условно, их стоит подобрать самостоятельно:
Лучший результат 22 сек (на больших колесах) Дьяконов Николай