ДО курс по робототехнике

Показаны сообщения с ярлыком световой. Показать все сообщения
Показаны сообщения с ярлыком световой. Показать все сообщения

3 апреля 2013 г.

Робот для состязаний: определить цвет и размер одним сенсором


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

Допустим, у нас есть несколько наборов цветных кубиков - зеленые, синие и крансые, отличающихся по размеру - мальенькие и большие. Необходимо отсортировать их по шести разным позициям: меленькие красные, большие красные, маленькие синие, большие синие и т.д.

Очевидно, что для определения цвета нужно использовать цветовой сенсор. В то время как для определения размера, можно использовать разные способы. Чтобы сократить количество используемых сенсоров, попробуем для этого использовать тот же цветовой сенсор, имея в виду наблюдения освещенные в предыдущих заметках: здесь и здесь.

Сразу хочется сказать, что в данной заметке, просто рассматривается методика определения цвета и размера одним сенсором. Она не освещает, как сконструировать робота-сортировщика, использующего данную методику.

В начале любых испытаний, необходимо озаботить лабораторной установкой, на которой эти испытания будут проходить. Например, можно использовать вот такую простую конструкцию:

Сканер изображений из Lego Mindstorms NXT



В предыдущих статьях уже говорилось, как сенсор освещенности может определять цвет предмета. Следует также помнить, что начиная с NXT 2.0, в базовый комплект входит цветовой сенсор, для которого определение именно цвета, является основной задачей. Ну и не забудем, про цветовой сенсор от компании HiTechnic.

Распознаем цвета с помощью сенсора освещенности

Хотя сенсор из Lego Mindstorms NXT (v1.0) и называется сенсором освещенности, на самом деле с помощью него можно распознавать и цвета. О том какие показания он выдает в случае цветной поверхности уже было упомянуто в одной изпредыдущих статей.
В том случае, рассматриваемый пример был очень простой. На самом деле, во время работы с сенсором освещенности для распознавания цветов, наверняка, найдутся непонятные с первого раза нюансы.

Неочевидное использование сенсора освещенности

А как вам идея, что с помощью сенсора освещенности можно измерять расстояние, вычислять угол поворота и реагировать на касание?

1. Измеряем расстояние.
Нельзя гарантировать, что можно измерить любое расстояние, но если предмет находится достаточно близко, сенсор освещенности сможет определить расстояние с меньшей погрешностью, чем ультразвуковой сенсор. При этом необходимо учитывать, что фактура и цвет предмета, расстояние до которого необходимо выяснить, должны приниматься во внимание во время написания программы.
Например, следующий эксперимент показал, как изменяется освещенность (сенсор был заранее откалиброван) зеленого листа бумаги при разной удаленности от него сенсора освещенности:
66%51%41%4%

Алгоритмы: черно-белое движение

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

NXT-G: калибровка сенсоров освещенности и звука

Навеяно чтением книги "Lego Mindstorms NXT-G Programming Guide" 

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

Особенности работы с сенсором освещенности в View режиме

Одна из действительно полезных вещей на NXT блоке - режим View. Он позволяет вам видеть, то что робот видит. Вы можете видеть на сколько градусов робот должен повернуть свой мотор, видеть, что именно определяет сенсор освещеноости, или видеть расстояния, вычисляемое ультразвуковым сенсором. Это все позволяет вам избежать многих ошибок и существенно сократить количество итераций запуска робота в ходе его программирования.

Но при получении данных c сенсора освещенности в режиме View есть одна особенность.

Когда вы используете этот режим, чтобы видеть показания сенсора освещенности, чаще всего его показания будут в диапазоне 30-35 для черного цвета и 60-65 для белого. Это неоткалиброванные значения. Если вы калибруете сенсор (а вы должны это делать), эти значения не изменяются, поскольку режим View показывает только неоткалиброванные значения. Для того, чтобы видеть откалиброванные показания, вам нужно самим написать небольшую программу, отображающую значения светового сенсора. Или же воспользоваться уже чужой готовой.

На сайте nxtprograms.com можно найти хорошую программу для выполнения калибровки. Она позволит установить белое и черное значение в 0 и 100, соответственно. Архив с этой программой также содержит код, который позволит вам посмотреть показания сенсора после калибровки.