Следуйте по черной и белой линии одновременно

У меня есть бот, следующий по линии, который использует ИК-датчики (точнее, LSA08), чтобы обнаруживать белую линию на черной поверхности и оставаться на пути. Однако для проекта есть хитрость. В определенный момент линия меняется с белой на черную, и ожидается, что бот будет следовать по черной линии на белой поверхности.

Мой вопрос: как мне разработать алгоритм, который заставит бота распознавать, что путь и условия изменились.

, 👍0

Обсуждение

Сколько ИК-датчиков вы используете для обнаружения линии?, @chrisl

LSA08 имеет 8 ИК-датчиков., @RishiC


2 ответа


Лучший ответ:

1

Предположим, что линия "дорога" уже, чем ширина бота. Распознавание света/темноты по ширине дороги настолько больше, что он может видеть оба края, а также достаточно, чтобы вернуться на проезжую часть на крутом повороте.

Теперь представим, что мы не знаем, какого цвета проезжая часть. На самом деле это правда! Но мы знаем, что датчики должны видеть либо: [W, W, W, ... W, B, B, ..., B, W, ..., W] (черная полоса), или [B, B, B, ... B, W, W, ..., W, B, ..., B] (белая полоса).

Назовите W (высокий) равным 1, а B (отсутствующий) равным нулю. Вышеупомянутые условия, сохраненные в беззнаковом int, могут выглядеть (в двоичном виде) так:

1111110000111111 или 0000001111000000.

Одно из них просто инверсия другого, верно? Так что читайте ваши датчики (и я собираюсь на мгновение предположить идеальное роботизированное зрение: никаких шумных сигналов, и мы знаем, что находимся на проезжей части) и, если необходимо, инвертируйте результат так, чтобы он похоже на мой второй случай, 0000001111000000, группа единиц, окруженная группой нулей, показывает, что мы (несколько) сосредоточены на дорожке. Вам больше не нужно знать, какого цвета проезжая часть!

Мы исходили из идеальных сигналов. На самом деле вам потребуется некоторая смекалка, чтобы обнаружить и исправить нечетную единицу среди группы нулей (здесь используется технический термин) или наоборот.

Мы предположили, что ваш бот как бы сосредоточен на треке; в состоянии видеть оба края проезжей части. На самом деле иногда вы можете терять его - 111000000000000 или дрейфовать вправо. Если вы не можете гарантировать, что этого не произойдет, вам нужно уметь распознавать это и исправлять. И здесь нам нужно кое-что знать о цвете проезжей части. Мы знали, какого цвета он был недавно, как раз перед тем, как мы начали дрейфовать, поэтому мы просто продолжим инвертировать (или не инвертировать) наши сохраненные данные датчика - ЕСЛИ цвет не изменится, пока бот не переместится в центр (неприятный трек дизайнеры)! Если ваши критерии дизайна могут включать в себя то, что бот не теряет ни одного края дорожки, вы всегда можете восстановиться, даже во время изменения цвета. В противном случае вам придется распознавать и реагировать на изменение цвета, даже если вы видите только один край. Используйте последний цвет дороги, чтобы отслеживать это.

Надеюсь, это поможет.

,

1

Это немного зависит от ваших конкретных требований. В настоящее время вы следуете за черной линией (что означает ощущение черного посередине и белого по бокам). Вместо этого вы можете следовать границе этой линии. Для этого вам придется управлять моторами таким образом, чтобы в середине датчиков был высокий контраст (черный справа, белый слева или наоборот). Он будет следовать не по тому же пути, что и раньше, а немного в сторону.

,