воскресенье, 5 декабря 2010 г.

Робот для состязаний: калибровка сенсора освещенности




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

Для начала рассмотрим, что же происходит при калибровке сенсора.



Для начала надо условиться, что калибровку сенсора будем проверять на полоске с оттенками серого, напечатанной на стандартном поле, идущем вместе с комплектом Lego Mindstorms NXT (v1.0). Полоска состоит из 6 секций. Самая первая секция - белая, последняя секция - черная, между ними секции раличных градаций серого.

Светочувствительный сенсор прикреплен на "оптимальном" (что это такое будет рассмотрено позже) расстоянии от поверхности поля.


Проведем измерения некалиброванным сенсором.

Теперь, если проводить калибровку, то минимальное значение будет фиксироваться при показаниях в 37% на сенсоре, а максимальное - при 66%.

Легче всего представить то, что происходит внутри NXT блока, после калибровки сенсора, если вообразить себе эластичный шнур фиксированной длины (скажем, 1 метр). Начало шнура, примем за 0%, а конец - за 100%. Теперь, после измерения минимальной и максимальной освещенности, обозначим их на шнуре (а также и остальные измерения). Следовательно, 37% будет на 37 см. от начала шнура, 66% - 66 см. от начала шнура. Сейчас, давайте растягивать шнур в разные стороны, пользуясь его эластичностью. Тянем до тех пор пока, отметка в 37% не совпадет с бывшим началом шнура, а отметка в 66% - с бывшим концом.

В результате этого, все остальные отметки также "растянуться", но их положение относительно отметок в 37% и 66% не измениться. Т.е. если отметки в 45% и 58% раньше находились на одинаковом расстоянии от отметок в 37% и 66%, то и сейчас они будут находиться также на одинаковом расстоянии, за исключением того, что это расстояние увеличилось пропорционально расстояниию, на которое был растянут шнур.
Чтобы убедиться в этом, проведем измерение освещенности, после калибровки сенсора.


Видно, что по большей части предполагаемые показания откалиброванного сенсора совпадают с реальными. Хотя есть и такие, что слегка отличаются - по большей части это связано с погрешностью работы сенсора.
Также можно сделать вывод, что если в программа робота использует для внутренних операций довольно контрастные значения (смотрите, относительные позиции 58% и 45% практически остались неизменными), то можно быть уверенным, что после калибровки сенсора в измененных условиях освещения, эти значения в программе изменять будет не нужно. В то время, как привязка к "плавающим" значениям (показания с сенсора в силу его погрешности могут варьироваться), может потребовать изменения программы при смене условий освещенности.

Давайте посмотрим, как показания на сенсоре изменяться, если датчик поднять чуть выше над поверхностью поля.

Запишем показания датчика освещенности до и после калибровки:

Для того, чтобы сделать выводы было прощей, сведем результаты всех измерений в одну таблицу:


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

Где можно применить полученные выводы?
Например, при проектировании робота, двигающегося вдоль черной линии. Если, например, сенсор расположить очень высоко, то робот начнет часто уходить с траектории движения как из-за теней зрителей или участников, так и из-за работы их фотоаппаратов или видеокамер.
Также высота расположения сенсора становится критична, если робот использует программу движения, значительно сложнее, чем была здесь рассмотрена. У датчика расположенного высоко, значительная смена освещенности произойдет даже при маленьком перемещении робота, а значит ему чаще придется вносить коррективы в движение, что значительно скажется на стабильности следования траектории.

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

  1. Здравствуйте, а если ли возможность калибровать датчик на ev3?

    ОтветитьУдалить

Related Posts Plugin for WordPress, Blogger...