LEGO-EV3-сканер изображений
Сканер изображений, созданный с использованием набора LEGO Mindstorms EV3 Education и дополнительного колеса. Включает исходный код из программного обеспечения Mindstorms EV3 и инструкции по сборке. Сканирует бумагу шириной 8,5 дюймов, но может быть адаптирован для страниц аналогичного размера.
Входы
- Кнопки блоков — для управления меню конфигурации.
- Ультразвук – определяет, когда вставлена бумага
- Сенсорный датчик – сброс положения датчика цвета при столкновении
- Датчик освещенности — сканируйте пиксели для создания изображения.
Выход
- Изображение размером 44 на 32 пикселя, 8-битное изображение в оттенках серого
- CSV-файл, представляющий значения 8-битных растровых данных в оттенках серого.
- Размытое изображение на экране
Части
Для этой сборки требуются детали из одного набора LEGO MINDSTORMS EV3 и дополнительное большое колесо, которое можно получить из другого того же набора или автомобильного набора.
Детали сборки и сенсора
- В этом роботе реализованы две конфигурации силовых механизмов: одна для перемещения датчика освещенности по горизонтальной оси по монорельсу, вторая для обеспечения механизма намотки бумаги, содержащей изображение, которое необходимо сканировать.
- И в намоточном механизме, и в монорельсе используется большой двигатель.
- Противовес используется для выравнивания колеса монорельса по нормальной силе, действующей на поверхность монорельса.
- Рядом с катушкой находится инфракрасный датчик, позволяющий определить, когда вставлена бумага.
- Два сенсорных датчика расположены в каждом углу сканера. Они используются для определения момента достижения монорельсом угла. В настоящее время используется только датчик с правой стороны.
Примечания к программному обеспечению
Программа состоит из четырех этапов: Пользовательский интерфейс, Сканирование, Печать изображения, Сохранить изображение. Пользовательский интерфейс построен с учетом парадигмы MVC для последовательного программирования. Он позволяет использовать n экранов конфигурации, по одному значению для каждого экрана. Переменные, используемые позже в программе, соответствуют настройкам каждая.
Экраны конфигурации
- uiPrintScreen : bool – Если установлено значение true, на экране EV3 будет напечатано размытое 1-битное изображение, напоминающее изображение в оттенках серого в оперативной памяти.
- uiSaveState : bool — если true, CSV-файл будет создан на основе данных в оперативной памяти. Этот файл напоминает файл растрового изображения и может быть преобразован в растровое изображение с помощью внешней программы, такой как A-VEKT Image CSV Converter.
- XStartPos: числовое — указывает начальную позицию в дюймах по оси X.
- YStartPos: числовое — указывает начальную позицию в дюймах по оси Y.
- width: numeric – указывает ширину изображения в дюймах.
- height: числовое — указывает высоту изображения в дюймах.
Фаза сканирования
- Перед сканированием пользователю предлагается вставить сканируемую бумагу, а положение датчика освещенности сбрасывается в исходное положение.
- Сканирование заключается в перемещении датчика изображения по монорельсу и бумаги по катушке для создания матрицы независимо сканируемых точек.
- При сканировании одна строка сканируется справа налево, а следующая — слева направо. Это сокращает время сканирования.
- После завершения сканирования оставшаяся бумага выводится из задней части сканера.
Этап печати
- Этот этап является необязательным и включен по умолчанию. Он заключается в печати изображения на экране.
- Отсканированное изображение содержит данные в оттенках серого, но экран EV3 — 1-битный черно-белый. Чтобы компенсировать это, каждый сканированный пиксель превращается в шаблон размером 4 на 4 пикселя с использованием упорядоченного (байеровского) сглаживания, который затем печатается на экране.
Фаза сохранения
- Этот этап является необязательным.
- Поскольку файловый блок EV3 ограничен сохранением только печатных символов, растровое изображение невозможно сгенерировать программно. Вместо этого используется файл CSV.
- CSV можно преобразовать в растровое изображение с помощью «A-VEKT Image CSV Converter» с настройкой 8-битного альфа-канала.
- При создании CSV строки, отсканированные в обратном порядке, переупорядочиваются во втором массиве.
Улучшения
- Точность сканера можно улучшить с помощью второго набора, который можно использовать для создания двухрельсовой оси X вместо монорельса.
- Из-за сил, действующих на тросы, монорельс иногда неустойчив, что приводит к изменению фокуса при захвате некоторых пикселей.
- Программное обеспечение можно улучшить. Я выпускаю его таким, каким он был, когда я прекратил над ним работать.
- У меня нет планов продолжать разработку этого проекта до тех пор, пока LEGO не выпустит версию LEGO MINDSTORMS EV3 для операционных систем Linux или пока я не найду другую вескую причину купить собственный набор Mindstorms EV3.
Лицензирование и авторские права
- Исходные файлы распространяются по лицензии GNU General Public License 2.0.
- Изображения инструкций и дополнительное содержимое доступны в соответствии с лицензией Creative Commons License Attribution 4.0 International.
- Авторские права разделены между Университетом Пуэрто-Рико в Аресибо и мной.
Отказ от ответственности
- Я разработал это ради развлечения в рамках курса «Введение в робототехнику» в Университете Пуэрто-Рико в Аресибо.
- Этот сканер во многом основан на принтере из «Неофициального руководства для изобретателей LEGO MINDSTORMS NXT 2.0».
- LEGO, MINDSTORMS, MINDSTORMS EV3, MINDSTORMS NXT являются товарными знаками и/или авторскими правами LEGO Group. Их использование не подразумевает какой-либо принадлежности или одобрения с их стороны.