ПО:Infrared Finder Calibration

Материал из BrSTU Robotics Wiki
Перейти к: навигация, поиск

Проблема

Инфракрасные дальномеры разных видов

В робототехнике широко распространены сенсоры измерения расстояния - инфракрасные дальномеры - в силу своей компактности, простоты и дешевизны. Такой сенсор представляет собой специальное устройство, которое преобразует входное напряжение в выходное исходя из расстояния от устройства до препятствия в зоне видимости. Зависимость преобразования нелинейна и сильно зависит от конкретного сенсора, поэтому возникает проблема калибровки конкретного сенсора - поиска наилучшего вида нелинейной зависимости, которая бы давала наименьшую погрешность в показаниях сенсора.

Существующие решения

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

Калибровка инфракрасного сенсора методом наименьших квадратов

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


Наше решение

Решение аналогично вышеописанным вариантам с той разницей, что для поиска функции аппроксимации используется метод наименьших квадратов. Для реализации этого подхода сделана утилита IR_approximation.

Алгоритм калибровки инфракрасного сенсора:

  • Произвести измерения показаний сенсора на различных дистанциях (чем больше измерений, тем выше точность аппроксимации, начать можно с 20 измерений)
  • Создать текстовый файл вида(Первая строка - количество измерений, вторая строка и далее пары значений через пробел - значение сенсора значение расстояния) (Пример файла, слева значения сенсора в вольтах(можно сразу аналоговый сигнал), справа - расстояние)
  • запустить программу и указать имя файла данных
  • результатом работы программы будет экспоненциальная функция вида y = A * e^(B*x), где A и B - уникальные коэффициенты для каждого сенсора в определенных условиях, x - входное значение с сенсора, y - значение расстояния
  • После нахождения программой коэффициентов A и B данную функцию можно использовать в прошивке робота для преобразования сигнала дальномера в расстояние.

Замечания:

  • Сигнал сенсора имеет диапазон значений 0-1024, это достаточно большие значения, поэтому коэффициенты А и В могуть также иметь большие значения, поэтому предварительно данные сенсора можно преобразовать в значение напряжения.

На рисунке приведен пример кривой аппроксимации данных файла data.txt.

Так выглядит кривая преобразования сигнала сенсора в расстояние
Сравнение реальной кривой и кривой найденной программой