Оглавление:

HackerBox 0024: Vision Quest: 11 шагов
HackerBox 0024: Vision Quest: 11 шагов

Видео: HackerBox 0024: Vision Quest: 11 шагов

Видео: HackerBox 0024: Vision Quest: 11 шагов
Видео: HackerBox #0024: Vision Quest 2024, Июль
Anonim
HackerBox 0024: поиски видения
HackerBox 0024: поиски видения

Vision Quest - в этом месяце хакеры HackerBox экспериментируют с компьютерным зрением и отслеживанием движения сервопривода. Это руководство содержит информацию по работе с HackerBox # 0024, которую вы можете получить здесь, пока расходные материалы есть в наличии. Кроме того, если вы хотите получать такой HackerBox каждый месяц прямо в свой почтовый ящик, пожалуйста, подпишитесь на HackerBoxes.com и присоединяйтесь к революции!

Темы и цели обучения для HackerBox 0024:

  • Эксперименты с компьютерным зрением
  • Настройка OpenCV (компьютерное зрение)
  • Программирование Arduino Nano из Arduino IDE
  • Управление сервомоторами с помощью Arduino Nano
  • Сборка механического узла панорамирования и наклона
  • Управление панорамированием и наклоном с помощью микроконтроллера
  • Выполнение отслеживания лица с использованием OpenCV

HackerBoxes - это ежемесячный абонентский ящик для электроники и компьютерной техники своими руками. Мы любители, творцы и экспериментаторы. Мы мечтатели мечты. ВЗЛОМАЙТЕ ПЛАНЕТУ!

Шаг 1: HackerBox 0024: Содержимое коробки

HackerBox 0024: Содержимое коробки
HackerBox 0024: Содержимое коробки
  • Коллекционная справочная карточка HackerBoxes # 0024
  • Узел панорамирования и наклона с тремя кронштейнами
  • Два сервопривода MG996R с аксессуарами
  • Две алюминиевые круглые сервомуфты
  • Arduino Nano V3 - 5 В, 16 МГц, MicroUSB
  • Цифровая камера в сборе с USB-кабелем
  • Три линзы с универсальным зажимом
  • Свет ручки медицинского осмотра
  • Мужские / женские джемперы Dupont
  • Кабель MicroUSB
  • Эксклюзивная декаль OpenCV
  • Эксклюзивная декаль Dia de Muertos

Еще кое-что, что будет полезно:

  • Небольшой обрезок деревянной доски для основания камеры
  • Паяльник, припой и основные паяльные инструменты
  • Компьютер для запуска программных средств

Самое главное, вам понадобится чувство приключений, дух DIY и хакерское любопытство. Хардкорная электроника своими руками - нетривиальное занятие, и мы не пытаемся избавиться от него. Цель - прогресс, а не совершенство. Когда вы упорствуете и получаете удовольствие от приключений, большое удовлетворение можно получить, изучая новые технологии и, надеюсь, заставляя некоторые проекты работать. Мы рекомендуем делать каждый шаг медленно, внимательно относясь к деталям и не раздумывая просить о помощи.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ: мы хотели бы попросить всех участников HackerBox действительно большого одолжения. Пожалуйста, уделите несколько минут, чтобы просмотреть FAQ на сайте HackerBoxes, прежде чем обращаться в службу поддержки. Хотя мы, очевидно, хотим помочь всем участникам настолько, насколько это необходимо, большинство наших писем о поддержке содержат простые вопросы, которые очень четко рассматриваются в FAQ. Спасибо за понимание!

Шаг 2: компьютерное зрение

Компьютерное зрение
Компьютерное зрение

Компьютерное зрение - это междисциплинарная область, которая занимается тем, как компьютеры получают высокоуровневое понимание цифровых изображений или видео. С точки зрения инженерии, компьютерное зрение направлено на автоматизацию задач, которые может выполнять зрительная система человека. Как научная дисциплина компьютерное зрение связано с теорией, лежащей в основе искусственных систем, извлекающих информацию из изображений. Данные изображения могут принимать различные формы, такие как видеопоследовательности, виды с нескольких камер или многомерные данные с медицинского сканера. Как технологическая дисциплина компьютерное зрение стремится применить свои теории и модели для построения систем компьютерного зрения. Поддомены компьютерного зрения включают реконструкцию сцены, обнаружение событий, отслеживание видео, распознавание объектов, оценку трехмерной позы, обучение, индексацию, оценку движения и восстановление изображения.

Интересно отметить, что компьютерное зрение можно рассматривать как инверсию компьютерной графики.

Шаг 3: Обработка и OpenCV

Обработка и OpenCV
Обработка и OpenCV

Processing - это гибкий программный блокнот и язык для обучения программированию в контексте изобразительного искусства. Обработка способствовала развитию компьютерной грамотности в изобразительном искусстве и визуальной грамотности в сфере технологий. Десятки тысяч студентов, художников, дизайнеров, исследователей и любителей используют Обработку для обучения и создания прототипов.

OpenCV (Open Source Computer Vision Library) - это библиотека программного обеспечения для компьютерного зрения и машинного обучения с открытым исходным кодом. OpenCV был создан для обеспечения общей инфраструктуры для приложений компьютерного зрения и для ускорения использования машинного восприятия в коммерческих продуктах. Библиотека OpenCV содержит более 2500 оптимизированных алгоритмов, которые включают полный набор как классических, так и современных алгоритмов компьютерного зрения и машинного обучения. Эти алгоритмы могут использоваться для обнаружения и распознавания лиц, идентификации объектов, классификации действий человека в видео, отслеживания движений камеры, отслеживания движущихся объектов и т. Д.

Установите OpenCV в разделе «Обработка» из меню «Файл»> «Примеры», выбрав «Добавить примеры», а затем на вкладке «Библиотеки» установите библиотеки видео и OpenCV. Откройте пример LiveCamTest для базового отслеживания лица. Ознакомьтесь с некоторыми другими примерами OpenCV для обработки здесь.

Дополнительные ресурсы:

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

Programming Computer Vision with Python - это книга О'Рейли о PCV, модуле Python с открытым исходным кодом для компьютерного зрения.

Изучение OpenCV

Компьютерное зрение: алгоритмы и приложения

Освоение OpenCV

Стэнфордский курс CS231n Сверточные нейронные сети для визуального распознавания (16 видео)

Крис Урмсон TED Talk Как беспилотный автомобиль видит дорогу

Шаг 4: Платформа микроконтроллеров Arduino Nano

Платформа микроконтроллеров Arduino Nano
Платформа микроконтроллеров Arduino Nano

Мы можем использовать любую обычную платформу микронтроллера для управления сервоприводами в нашем держателе камеры панорамирования и наклона. Arduino Nano - это миниатюрная плата Arduino для поверхностного монтажа, удобная для макетирования, со встроенным USB. Это потрясающе полнофункциональная программа, которую легко взломать.

Функции:

  • Микроконтроллер: Atmel ATmega328P
  • Напряжение: 5 В
  • Цифровые контакты ввода / вывода: 14 (6 ШИМ)
  • Аналоговые входные контакты: 8
  • Постоянный ток на контакт ввода / вывода: 40 мА
  • Флэш-память: 32 КБ (2 КБ для загрузчика)
  • SRAM: 2 КБ
  • EEPROM: 1 КБ
  • Тактовая частота: 16 МГц
  • Размеры: 17 мм x 43 мм

Этот конкретный вариант Arduino Nano - это черный дизайн Robotdyn. Интерфейс представляет собой встроенный порт MicroUSB, совместимый с теми же кабелями MicroUSB, которые используются во многих мобильных телефонах и планшетах.

Arduino Nanos имеет встроенный чип USB / последовательного моста. В этом конкретном варианте микросхемой моста является CH340G. Обратите внимание, что существуют различные другие типы микросхем USB / последовательного моста, используемые на различных типах плат Arduino. Эти микросхемы позволяют USB-порту компьютера взаимодействовать с последовательным интерфейсом процессора Arduino.

Операционная система компьютера требует наличия драйвера устройства для связи с микросхемой USB / последовательного интерфейса. Драйвер позволяет IDE взаимодействовать с платой Arduino. Необходимый конкретный драйвер устройства зависит как от версии ОС, так и от типа USB / последовательного чипа. Для микросхем CH340 USB / Serial доступны драйверы для многих операционных систем (UNIX, Mac OS X или Windows). Эти драйверы поставляет производитель CH340.

Когда вы впервые подключаете Arduino Nano к USB-порту компьютера, должен загореться зеленый индикатор питания, а вскоре после этого синий индикатор должен начать медленно мигать. Это происходит потому, что в Nano предварительно загружена программа BLINK, которая работает на новом Arduino Nano.

Шаг 5: интегрированная среда разработки Arduino (IDE)

Интегрированная среда разработки Arduino (IDE)
Интегрированная среда разработки Arduino (IDE)

Если у вас еще не установлена Arduino IDE, вы можете загрузить ее с Arduino.cc

Если вам нужна дополнительная вводная информация для работы в экосистеме Arduino, мы предлагаем ознакомиться с инструкциями для HackerBoxes Starter Workshop.

Подключите Nano к кабелю MicroUSB, а другой конец кабеля к USB-порту на компьютере, запустите программное обеспечение Arduino IDE, выберите соответствующий USB-порт в среде IDE в разделе инструменты> порт (вероятно, имя с «wchusb» в нем.). Также выберите «Arduino Nano» в среде IDE в разделе «Инструменты»> «Плата».

Наконец, загрузите фрагмент кода примера:

Файл-> Примеры-> Основы-> Blink

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

Присмотревшись, вы можете увидеть, что программа включает светодиод, ждет 1000 миллисекунд (одну секунду), выключает светодиод, ждет еще секунду, а затем делает все это снова - навсегда.

Измените код, изменив оба оператора «delay (1000)» на «delay (100)». Эта модификация заставит светодиод мигать в десять раз быстрее, не так ли?

Давайте загрузим измененный код в Nano, нажав кнопку ЗАГРУЗИТЬ (значок стрелки) прямо над измененным кодом. Посмотрите ниже код для информации о статусе: «компиляция», а затем «загрузка». В конце концов, в среде IDE должно появиться сообщение «Загрузка завершена», а светодиодный индикатор должен мигать быстрее.

Если да, то поздравляю! Вы только что взломали свой первый фрагмент встроенного кода.

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

Шаг 6: серводвигатели

Сервомоторы
Сервомоторы

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

Небольшие сервоприводы для хобби, такие как MG996R, подключаются через стандартное трехпроводное соединение: два провода для источника питания постоянного тока и один провод для передачи управляющих импульсов. Сервоприводы MG996R имеют диапазон рабочего напряжения 4,8-7,2 В постоянного тока.

Шаг 7: Сборка механизма поворота и наклона

Сборка механизма поворота и наклона
Сборка механизма поворота и наклона
  1. Вытащите оба сервопривода MG996R из их сумок и отложите пока прилагаемые аксессуары.
  2. Прикрепите алюминиевый круглый сервопривод к каждому сервоприводу. Обратите внимание, что соединители поставляются в отдельных мешках от сервоприводов. Муфта очень плотная. Начните с прижатия муфты к концу выхода сервопривода, а затем ввинтите винт в центральное отверстие. Затяните резьбу, чтобы натянуть муфту на выход сервопривода.
  3. Обратите внимание, что для узла панорамирования и наклона используются три кронштейна - два кронштейна коробки и один U-образный кронштейн.
  4. Установите один из кронштейнов коробки на алюминиевый круг для одного из сервоприводов. Мы будем называть этот сервопривод сервоприводом панорамирования. Сориентируйте кронштейн коробки центральной стенкой относительно алюминиевого круга так, чтобы две другие стенки кронштейна коробки были обращены в сторону от сервопривода панорамирования. Используйте центральные отверстия в средней стене кронштейна коробки. Такое расположение должно позволить сервоприводу панорамирования вращать прикрепленный коробчатый кронштейн после того, как он приводится в действие.
  5. Поместите другой сервопривод (сервопривод наклона) в коробчатый кронштейн, прикрепленный к алюминиевому кругу сервопривода панорамирования. Используйте как минимум две гайки и болты для крепления сервопривода наклона - по одному с каждой стороны.
  6. Удерживая U-образную скобу, вставьте латунный «подшипник» изнутри U через одно из больших монтажных отверстий шарнира.
  7. Поместите U-образный кронштейн с подшипником на сервопривод наклона, который находится внутри кронштейна коробки, так, чтобы другое большое монтажное отверстие шарнира (то, что без подшипника) совместилось с алюминиевым кругом на сервоприводе наклона.
  8. Используйте винты, чтобы прикрепить U-образный кронштейн к алюминиевому кругу на одной стороне U-образного кронштейна.
  9. На другой стороне U-образного кронштейна затяните один винт через подшипник и в небольшое отверстие в коробчатом кронштейне внутри. Это должно позволить U-образному кронштейну вращаться вокруг кронштейна коробки позже, когда срабатывает сервопривод наклона.

Шаг 8: Установка узла панорамирования и наклона

Монтаж узла панорамирования и наклона
Монтаж узла панорамирования и наклона
Монтаж узла панорамирования и наклона
Монтаж узла панорамирования и наклона

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

Шаг 9: Подключите и проверьте узел панорамирования и наклона

Подключение и проверка узла панорамирования и наклона
Подключение и проверка узла панорамирования и наклона

Чтобы подключить сервоприводы в соответствии со схемой, проще всего просто отрезать оригинальные розетки от сервоприводов, а затем использовать несколько женских перемычек DuPont, чтобы подключить сигнальные линии и линии заземления к контактам Nano.

У Nano недостаточно тока на источнике питания 5 В для питания сервоприводов от USB, поэтому рекомендуется дополнительный источник питания. Это может быть что угодно в диапазоне 4,8-7,2 В. Например, четыре батареи AA (последовательно) будут работать нормально. Подставка для скамейки или настенная бородавка - тоже хороший выбор.

Простой пример кода Arduino, прикрепленный сюда как PanTiltTest.ino, можно использовать для проверки управления двумя сервоприводами с последовательного монитора в Arduino IDE. Установите скорость передачи данных монитора, чтобы она соответствовала 9600 бит / с, установленной в примере кода. Ввод значений угла от 0 до 180 градусов соответственно позиционирует сервоприводы.

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

Шаг 10: отслеживание лица с помощью OpenCV

Image
Image
Взломать планету
Взломать планету

Система отслеживания лица машинного зрения может быть реализована путем объединения подсистем, как показано на блок-схеме. Эскиз SerialServoControl для Arduino можно найти в следующем руководстве по Sparkfun вместе с соответствующей демонстрацией использования OpenCV, Processing, Arduino, USB-камеры и сборки панорамирования / наклона для отслеживания человеческого лица. В демонстрации используются два сервопривода для изменения положения камеры, чтобы лицо оставалось в центре кадра видео, даже когда пользователь перемещается по комнате. Например, код на C #, проверьте репозиторий GitHub для видео CamBot.

Шаг 11: взломайте планету

Если вам понравился этот Instrucable, и вы хотите, чтобы ящик с электронными и компьютерными проектами, подобными этому, доставлялся прямо на ваш почтовый ящик каждый месяц, пожалуйста, присоединяйтесь к нам, ПОДПИСавшись ЗДЕСЬ.

Сообщите о своем успехе в комментариях ниже или на странице HackerBoxes в Facebook. Обязательно дайте нам знать, если у вас возникнут какие-либо вопросы или вам понадобится помощь. Спасибо за то, что вы являетесь частью HackerBoxes. Пожалуйста, продолжайте присылать ваши предложения и отзывы. HackerBoxes - это ВАШИ коробки. Сделаем что-нибудь отличное!

Рекомендуемые: