Датчики освещения для LEGO роботов Следы NiNoXT в Галактике / 30.09.2012 Известный факт, что дополнительное оборудование для LEGO Mindstorms NXT в России купить сложнее, чем в Европе или Северной Америке. Причины здесь две - трудности с доставкой из-за рубежа и цена этого оборудования. Но дело вскорости может измениться в лучшую сторону - на так давно на российском рынке появилась компания SMARTBRICKS, одно из направлений которой - производство и продажа аналоговых и цифровых датчиков для конструкторов LEGO.Одно из предложений, которое делает компания, - широкая линейка датчиков освещения: здесь есть датчики с традиционными цветам подсветки: красный, зеленый и синий, а также с источником белого света и даже ультрафиолетового. Такое предложение не может не радовать российского преподавателя робототехники - количество робототехнических задач, которые можно решать только с помощью таких датчиков, настолько велико, что ими можно без труда наполнить годовой курс занятий: движение вдоль линии, вдоль стен, балансиры, задачи сканирования и распознавания и т.п. Для того, чтобы оценить насколько датчики освещенности подходят для нужд образовательной LEGO-робототехники, было решено провести их полномасштабное тестирование, результаты которого публикуются в данной статье.Итак, объектами тестирования будут 4 датчика: стандартный световой NXT датчик; стандартный цветовой NXT датчик; датчик SmartBricks с синей подсветкой; датчик SmartBricks с зеленой подсветкой. Начнем с внешнего вида:SmartBricks - датчики выполнены из черного пластика, по форм-фактору и креплению напоминающие стандартные NXT датчики. Внешне датчики с разной подсветкой ничем не отличаются - разница лишь в маркировке на корпусе.По высоте SmartBricks датчики отличаются от стандартных на 2 мм - т.е. при традиционном креплении их на роботе, двигающемся вдоль линии, светочувствительный элемент будет ниже, чем при использовании NXT датчика.Также крепление несколько отдалено от корпуса ("на одно Technic отверстие"), что также следует учитывать при замещении стандартных датчиков.Светоиспускающий и светочувствительный элементы расположены в небольшом углублении, благодаря чему уменьшается влияние внешней засветки на показания датчика. В отличие от NXT датчиков, элементы не разделены между собой перегородкой, что тем не менее это практически не сказывается на чувствительности - видимо, светоиспускающий элемент сфокусирован и не рассеивает свет в стороны.Для тестирования показаний датчиков была собрана следующая установка: мотор через понижающую червячную передачу перемещает балку с закрепленным на ней датчиком. Конструкция крепления датчика позволяет менять его расположение по высоте. Под датчиком размещена тестовая карточка. Использовались карточки трех видов: бело-черная, красно-синяя, желто-зеленая. Изменение цвета - на середине карточки. Положение карточки под датчиком может изменяться - выдвигаться на одно Technic деление так, чтобы соответствовать креплению SmartBricks датчика. Перемещение балки осуществляется таким образом, что датчик перемещается над карточкой от одной окрашенной половины к другой.Для управления тестовой установкой и сбора показаний с датчиков была написана программа на языке Python. Принцип работы программы: После перемещения балки в базовую позицию (контролируется датчиком касания), начинается цикл сбора показаний датчика. Цикл начинается с запуска двигателя, двигающего балку. Всего выполняет поворот оси на 2400 градусов. За это время балка перемещается на 3 см. В каждой итерации цикла с датчика снимаются сырые (RAW) инвертированные показания (т.е. большие значения соответствуют светлым участкам), которые записываются в файл вместе с текущим значением таймера и угла поворота оси двигателя. За одно перемещение балки выполняется от 610 до 650 измерений, т.е. в среднем одно измерение на каждые 4 градуса. В итоге, после работы программы для каждого датчика, на выходе получается CSV файл. Несколько файлов объединяются в одну электронную таблицу Excel, где показания датчиков интерполируются и объединяются на графике. По оси Х графика - градусы поворота оси двигателя, по сути отображающие положение датчика над карточкой. По оси Y - показания датчика над карточкой в соответствующей позиции.Обозначения датчиков на графиках: LightNXT - датчик освещенности NXT LightSBBlue - датчик освещенности SmartBricks с синей подсветкой LightSBGreen - датчик освещенности SmartBricks с зеленой подсветкой ColorBlue - датчик цвета NXT с включенной синей подсветкой ColorGreen - датчик цвета NXT с включенной зеленой подсветкой Тест #1 - общее сравнение работы сенсоров в режиме замера отраженного светаВсе датчики освещенности находятся примерно на одной высоте от карточки - 1.5 - 2 мм. Датчики цвета были установлены на 2 мм выше, чем остальные - это связано с тем, что при слишком низкой посадке показания датчика на черной половине карточки были равны нулю, что мешало за наблюдением микро-колебаний измеряемой величины.Из графика видно, что диапазон измерений у датчиков SmartBricks больше, чем у датчика NXT. По чувствительности изменения освещенности у световых датчиков примерно одинаковые (кривые на спуске параллельны друг другу) и проигрывают в чувствительности цветового датчика. Также стоить отметить, что близость показаний датчиков SmartBricks к максимальным значениям на "белой" части диаграммы может сыграть плохую шутку - поскольку при слишком ярком внешнем окружении, измерения будут "отрезаться" максимально возможными показаниями. См. отдельных тест.Тест #2 - зависимость чувствительности датчика от высоты расположенияВ тестировании участвовали датчик SmartBricks с зеленой подсветкой (с синей подсветкой, в целом, показывал аналогичную картину) и на световой датчик NXT. Высота датчика увеличивалась с каждым тестом. lvl 0 lvl 1 lvl 2 Испытания датчика SmartBricks:Испытания датчика NXT:При сравнении этих двух графиков видно, что чувствительность датчика NXT увеличивается с ростом высоты быстрее, чем датчика SmartBricks. Тем не менее, датчик SmartBricks все еще сохраняет большой диапазон изменений значений, что позволяет лучше отфильтровывать шум (виден на графике в виде мелких и частых колебаний) и ложные срабатывания.Тест #3 - изменение показаний датчиков при изменении условий окружающей освещенностиДанный тест применялся к двум SmartBricks (диаграммы для синего вошли в статью из-за ограничений на количество картинок, но доступны в блоге NiNoXT) и датчику освещенности. Первая итерация измерений (br 0) проводилась при неярком освещении, в остальных двух - освещенность увеличивалась (br 0 < br 1 < br 2).Датчик NXT:Датчик SmartBricks с зеленой подсветкой:Общая тенденция поведения датчиков такова, что снимаемое значение в одной и той же части карточки увеличивается с усилением окружающей освещенности. При терминальных условиях, когда слишком ярко, показания датчика начнут "отрезаться" максимально допустимым значением. Поэтому у датчика освещенности NXT есть определенное преимущество - изначально его максимальные показания меньше, чем максимальные показания датчиков SmartBricks. Но его маленький диапазон значений делает высокой вероятность влияния шума на поведение робота - ложные срабатывания.Тест #4 - использование датчиков освещенности SmartBricks для определения цветаВ ходе теста использовались желто-зеленая и красно-синяя карточки. Датчики поочередно запускались сначала над красно-синей карточкой, затем над желто-зеленой. Переход от синего к красному. "Синий" датчик показывает большую дифференциацию показаний над поверхностями разных цветов.Переход от зеленого к желтому. Опять "синий" датчик показывает большую дифференциацию показаний над поверхностями разных цветов.Тест #5 - программирование датчиков освещения SmartBricks в средах NXT-G и NXCПоскольку световые датчики SmartBricks - аналоговые и работают по тому же принципу, что и другие датчики - никаких сюрпризов при программировании их в среде NXT-G и на языке Not eXactly C не было - использовались ровно те же NXT-G блоки и NXC функции, как и для стандартных датчиков.Вывод:С точки зрения конструирования SmartBricks датчики имеют незначительные отличия от стандартных NXT датчиков. Испытания датчиков в различных условиях освещенности и расположения по высоте показали, что показания на "черном" цвете у датчиков SmartBricks совпадают c аналогичными замерами датчиками NXT, в то время как показания на "белом" цвете в значительной степени смещены в сторону максимально допустимых значений. Данная особенность может приводить к "неразличимости" градаций светло-серого при условиях, когда робот находится в хорошо освещенном помещении. Тем не менее, большой диапазон измерений даже в таких условиях, позволит различать темные и светлые участки, в то время как датчик NXT будет подвержен шумам и ложным срабатываниям. При изменении (увеличении) высоты установки датчика, стандартный датчик показывает большую чувствительность, чем датчик SmartBricks, но в значительной мере уменьшает диапазон значений. С точки зрения программирования датчики освещенности SmartBricks никакими особенностями не обладают - используются все те же самые средства, что и для программирования датчиков NXT. датчики робототехника