понедельник, 21 декабря 2015 г.

Решение задачи 14: Поиск места под солнцем

Сегодня наш робот будет искать свое место под Солнцем. Как известно, роботы лучше всего себя чувствуют в теплых и сухих местах, а значит Солнце светит там особенно ярко.


Оборудуем нашего робота датчиком освещенности, направленным вверх и настроенным в режим измерения внешней освещенности.

Решение задачи не предполагает построения карты освещенности, оно будет основано на методе "проб и ошибок". Наш робот будет ехать вперед на длину своего корпуса и сравнивать, не стала ли в этом месте освещенность выше, чем там, где он стоял до этого. Если стала - он движется в нужном направлении и следует продолжить путь. Если нет - следует вернуться назад и придумать, куда бы ему двинуться дальше и попытать счастья развернувшись для поиска направо или налево.

На псевдокоде решение задачи выглядит так:

// L - Освещенность (яркость внешнего освещения)
L = ДАТЧИК(ОСВЕЩЕННОСТЬ)
// T - смена направления поиска
T = ИСТИНА
ЦИКЛ (ВСЕГДА)
  ЕСЛИ (T = ИСТИНА)
    // ВЫБИРАЕМ НАПРАВЛЕНИЕ ПОВОРОТА
    N = СЛУЧАЙНОЕ_ЧИСЛО (2)
    ЕСЛИ (N = 1) МОТОРЫ(ПОВОРОТ_ВЛЕВО)
    ЕСЛИ (N = 2) МОТОРЫ(ПОВОРОТ_ВПРАВО)
  // ИЗМЕРЯЕМ ОСВЕЩЕННОСТЬ В НОВОЙ ОБЛАСТИ
  МОТОРЫ (ВПЕРЕД_НА_ДЛИНУ_РОБОТА)
  МОТОРЫ (СТОП)
  ЕСЛИ (ДАТЧИК(ОСВЕЩЕННОСТЬ) > L)
    L = ДАТЧИК(ОСВЕЩЕННОСТЬ)
    T = ЛОЖЬ
  ИНАЧЕ
    МОТОРЫ (НАЗАД_НА_ДЛИНУ_РОБОТА)
    МОТОРЫ (СТОП)
    Т = ИСТИНА
КОНЕЦ_ЦИКЛА

4 комментария:

  1. Разместив на корпусе два датчика освещённости, на разных концах робота, и откалибровав их, можно достаточно верно выбрать направление источника света.

    ОтветитьУдалить
    Ответы
    1. Двух датчиков в наборе у начинающих робототехников может не оказаться, поэтому мы в своем решении предложили использовать один.
      Конечно, и с одним датчиком, установленным на подвижную платформу можно точно искать источник света, но в условиях задачи речь идет именно о простой тележке с датчиком.

      Удалить
  2. А если робот будет водить датчиком из стороны в сторону или вперед-назад?

    ОтветитьУдалить
    Ответы
    1. Это тоже хороший вариант решения данной задачи, правда конструкция робота будет чуть сложнее.

      Удалить

Самое популярное