Сегодня наш робот будет искать свое место под Солнцем. Как известно, роботы лучше всего себя чувствуют в теплых и сухих местах, а значит Солнце светит там особенно ярко.
Оборудуем нашего робота датчиком освещенности, направленным вверх и настроенным в режим измерения внешней освещенности.
Решение задачи не предполагает построения карты освещенности, оно будет основано на методе "проб и ошибок". Наш робот будет ехать вперед на длину своего корпуса и сравнивать, не стала ли в этом месте освещенность выше, чем там, где он стоял до этого. Если стала - он движется в нужном направлении и следует продолжить путь. Если нет - следует вернуться назад и придумать, куда бы ему двинуться дальше и попытать счастья развернувшись для поиска направо или налево.
На псевдокоде решение задачи выглядит так:
// L - Освещенность (яркость внешнего освещения)
L = ДАТЧИК(ОСВЕЩЕННОСТЬ)
// T - смена направления поиска
T = ИСТИНА
ЦИКЛ (ВСЕГДА)
ЕСЛИ (T = ИСТИНА)
// ВЫБИРАЕМ НАПРАВЛЕНИЕ ПОВОРОТА
N = СЛУЧАЙНОЕ_ЧИСЛО (2)
ЕСЛИ (N = 1) МОТОРЫ(ПОВОРОТ_ВЛЕВО)
ЕСЛИ (N = 2) МОТОРЫ(ПОВОРОТ_ВПРАВО)
// ИЗМЕРЯЕМ ОСВЕЩЕННОСТЬ В НОВОЙ ОБЛАСТИ
МОТОРЫ (ВПЕРЕД_НА_ДЛИНУ_РОБОТА)
МОТОРЫ (СТОП)
ЕСЛИ (ДАТЧИК(ОСВЕЩЕННОСТЬ) > L)
L = ДАТЧИК(ОСВЕЩЕННОСТЬ)
T = ЛОЖЬ
ИНАЧЕ
МОТОРЫ (НАЗАД_НА_ДЛИНУ_РОБОТА)
МОТОРЫ (СТОП)
Т = ИСТИНА
КОНЕЦ_ЦИКЛА
Оборудуем нашего робота датчиком освещенности, направленным вверх и настроенным в режим измерения внешней освещенности.
На псевдокоде решение задачи выглядит так:
// L - Освещенность (яркость внешнего освещения)
L = ДАТЧИК(ОСВЕЩЕННОСТЬ)
// T - смена направления поиска
T = ИСТИНА
ЦИКЛ (ВСЕГДА)
ЕСЛИ (T = ИСТИНА)
// ВЫБИРАЕМ НАПРАВЛЕНИЕ ПОВОРОТА
N = СЛУЧАЙНОЕ_ЧИСЛО (2)
ЕСЛИ (N = 1) МОТОРЫ(ПОВОРОТ_ВЛЕВО)
ЕСЛИ (N = 2) МОТОРЫ(ПОВОРОТ_ВПРАВО)
// ИЗМЕРЯЕМ ОСВЕЩЕННОСТЬ В НОВОЙ ОБЛАСТИ
МОТОРЫ (ВПЕРЕД_НА_ДЛИНУ_РОБОТА)
МОТОРЫ (СТОП)
ЕСЛИ (ДАТЧИК(ОСВЕЩЕННОСТЬ) > L)
L = ДАТЧИК(ОСВЕЩЕННОСТЬ)
T = ЛОЖЬ
ИНАЧЕ
МОТОРЫ (НАЗАД_НА_ДЛИНУ_РОБОТА)
МОТОРЫ (СТОП)
Т = ИСТИНА
КОНЕЦ_ЦИКЛА
Разместив на корпусе два датчика освещённости, на разных концах робота, и откалибровав их, можно достаточно верно выбрать направление источника света.
ОтветитьУдалитьДвух датчиков в наборе у начинающих робототехников может не оказаться, поэтому мы в своем решении предложили использовать один.
УдалитьКонечно, и с одним датчиком, установленным на подвижную платформу можно точно искать источник света, но в условиях задачи речь идет именно о простой тележке с датчиком.
А если робот будет водить датчиком из стороны в сторону или вперед-назад?
ОтветитьУдалитьЭто тоже хороший вариант решения данной задачи, правда конструкция робота будет чуть сложнее.
Удалить