ПО:Infrared Finder Calibration
Содержание
Проблема
В робототехнике широко распространены сенсоры измерения расстояния - инфракрасные дальномеры - в силу своей компактности, простоты и дешевизны. Такой сенсор представляет собой специальное устройство, которое преобразует входное напряжение в выходное исходя из расстояния от устройства до препятствия в зоне видимости. Зависимость преобразования нелинейна и сильно зависит от конкретного сенсора, поэтому возникает проблема калибровки конкретного сенсора - поиска наилучшего вида нелинейной зависимости, которая бы давала наименьшую погрешность в показаниях сенсора.
Существующие решения
На данный момент тематика точного пересчета выходного сигнала датчика в расстояние достаточно хорошо описана:
- Отличная статья по инфракрасным дальномерам с принципами работы и методами расчета расстояния по выходному сигналу приведена тут (русский)
- Краткое введение в проблему
- Вариант для экспоненциальной зависимости (английский)
- Подробная и наглядная презентация по ИК дальномеру (английский)
- Обсуждение на форуме компании Microchip
- Подробнейшее исследование по проблеме (английский)
- Пошаговый расчет для самого популярного сенсора Sharp
Калибровка инфракрасного сенсора методом наименьших квадратов
Метод наименьших квадратов — метод нахождения оптимальных параметров линейной регрессии, таких, что сумма квадратов ошибок (регрессионных остатков) минимальна. Метод заключается в минимизации евклидова расстояния между двумя векторами — вектором восстановленных значений зависимой переменной и вектором фактических значений зависимой переменной.
Наше решение
Решение аналогично вышеописанным вариантам с той разницей, что для поиска функции аппроксимации используется метод наименьших квадратов. Для реализации этого подхода сделана утилита IR_approximation.
Алгоритм калибровки инфракрасного сенсора:
- Произвести измерения показаний сенсора на различных дистанциях (чем больше измерений, тем выше точность аппроксимации, начать можно с 20 измерений)
- Создать текстовый файл вида(Первая строка - количество измерений, вторая строка и далее пары значений через пробел - значение сенсора значение расстояния) (Пример файла, слева значения сенсора в вольтах(можно сразу аналоговый сигнал), справа - расстояние)
- запустить программу и указать имя файла данных
- результатом работы программы будет экспоненциальная функция вида y = A * e^(B*x), где A и B - уникальные коэффициенты для каждого сенсора в определенных условиях, x - входное значение с сенсора, y - значение расстояния
- После нахождения программой коэффициентов A и B данную функцию можно использовать в прошивке робота для преобразования сигнала дальномера в расстояние.
Замечания:
- Сигнал сенсора имеет диапазон значений 0-1024, это достаточно большие значения, поэтому коэффициенты А и В могуть также иметь большие значения, поэтому предварительно данные сенсора можно преобразовать в значение напряжения.
На рисунке приведен пример кривой аппроксимации данных файла data.txt.