Тут вам нужно для начала просто попробовать, различают ли ваши датчики вообще промежуточные положения.
Возможно их нужно приподнять над полом, отрегулировать подсветку или даже заменить, чтобы они так работали.
Если различают, то можно использовать разные алгоритмы.
Например у элм-чена ищутся два соседних глаза, которые наименее освещены (то есть находятся над линией),
и по соотношению их яркостей считается положение линии между этими глазами.
Я бы тупо нашел центр масс линии вообще без калибровки.
- получить данные от датчиков.
- взять показания самого освещенного датчика, скорректировать показания остальных по нему,
так чтобы самому освещенному датчику соответствовал ноль, и чем темнее датчик, тем значение было выше
(я предполагаю, что линия темная на белом фоне)
- Найти положение "центра масс"
где D
i - скорректированные показания датчика i, X
i - "положение" датчика i
Как-то так.
Добавлено спустя 10 минут 47 секунд:В принципе, никто не мешает использовать эту же "формулу" для дискретных датчиков:
Например:
Задаете положения шести датчиков -50, -30, -10, +10, +30, +50
Они показывают, допустим 0, 0, 0, 1, 1, 0
(важно: единицы соответствуют линии!)
Считаем
Добавлено спустя 7 минут 53 секунды:Для ясности приведу тот же пример с "аналоговыми" датчиками:
Допустим датчики показывают 0, 0, 5, 35, 15, 0
(Чем больше значение, тем больше датчик "над линией")
Считаем: