суббота, 29 сентября 2012 г.

Световые датчики SmartBricks - отчет о использовании

Как сообщалось ранее, на рынке датчиков предназначенных для роботы с LEGO Mindstorms NXT появилась новая фирма-разработчик - SmartBricks. Компания - российская и в первую очередь ориентируется на российского потребителя - школы, кружки и энтузиастов-одиночек.
Одно из предложений, которое делает компания, - широкая линейка датчиков освещения: здесь есть датчики с традиционными цветам подсветки: красный, зеленый и синий, а также с источником белого света и даже ультрафиолетового. Для того, чтобы оценить насколько данные датчики подходят для нужд образовательной LEGO-робототехники, блог NiNoXT решил провести их полномасштабное тестирование, результаты которого публикуются в данной заметке.

Итак, объектами тестирования будут 4 датчика:
Начнем с внешнего вида:

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 датчикам и датчику освещенности. Первая итерация измерений (br 0) проводилась при неярком освещении, в остальных двух - освещенность увеличивалась (br 0 < br 1 < br 2).

Датчик NXT:
Датчик SmartBricks с синей подсветкой:
Датчик 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.

Те, кто заинтересовался возможностью приобретения датчиков SmartBricks, могут посетить интеренет-магазин компании

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

  1. http://www.ebay.com/itm/LEGO-Mindstorms-NXT-Electric-Light-Sensor-Exc-/261105407833?pt=Building_Toys_US&hash=item3ccb185759
    цена на датчик света почти аналогична, зато оригинальный лего. ИМХО российский самопал тут ни к чему

    ОтветитьУдалить
    Ответы
    1. Я бы не был столь категоричным.
      Во-первых, написано, что датчик указанный вами б/у. А во-вторых, сколько выйдет с доставкой - Вы считали? В-третьих, почему Вы решили, что самопал? Являются ли HiTechnic датчики самопалом?

      А если теперь мне надо 10 штук - на весь компьютерный класс?

      Удалить
  2. в каждой итерации цикла с датчика снимаются сырые (RAW) инвертированные показания (т.е. большие значения соответствуют светлым участкам), которые записываются в файл вместе с текущим значением таймера и угла поворота оси двигателя. За одно перемещение балки выполняется от 610 до 650 измерений, т.е. в среднем одно измерение на каждые 4 градуса

    В итоге, после работы программы для каждого датчика на выходе получается CSV файл. Несколько файлов объединяются в одну электронную таблицу Excel, где показания датчиков интерполируются и объединяются на графике. По оси Х графика - градусы поворота оси двигателя, по сути отображающие положение датчика над карточкой. По оси Y - показания датчика над карточкой в соответствующей позиции.


    Подскажите, пожалуйста, как осуществить это на NXT-G? т.е., снять показания датчика, передать их в компьютер и сохранить в текстовом или экселевском файле

    ОтветитьУдалить
    Ответы
    1. Вот тут была заметка - можно с нее начать: http://nnxt.blogspot.ru/2011/02/nxt-g.html

      Удалить

Related Posts Plugin for WordPress, Blogger...