Ардуино слежение за объектом

В данном проекте я совместил детектор распознавания лиц (face detection) и следящую (tracking system) систему.

Вкратце суть проекта: вебкамера, установленная на поворотном механизме подключена к компьютеру под управлением операционной системы Windows и с установленным программным обеспечением OpenCV. Если программа обнаруживает в поле зрения вебкамеры лицо, то вычисляется центр лица. Координаты X и Y передаются в контроллер Arduino, который подключен к компьютеру по USB. В свою очередь, контроллер Arduino по принятым командам управляет двумя сервомоторами: по координате X и по координате Y, т.о. обеспечивается следящая система.

Библиотеку OpenCV (Open Source Computer Vision Library) можно скачать здесь. Библиотека мультиплатформенная, в настоящее время существует под следующие ОС: Windows, Linux, Android, Mac OS и даже iOS. Библиотека обеспечивает обработку изображений в режиме реального времени. Написана на С/С++.

Т.о. данный проект представляет собой смесь soft и hard решений. Обработка изображения ведется на компьютере, а управление серво осуществляется при помощи контроллера.

Итак, что я использовал для проекта:

Железо:
компьютер с ОС Windows 7 SP1
Arduino Uno или совместимый + БП
2 сервопривода
USB вебкамера

Шаг 1. Установка программного обеспечения

1) Если у вас ОС Windows, то скачайте файл OpenCV-2.3.1-win-superpack.exe (или более позднюю версию) и установите библиотеку.

2) Скачайте и установите Microsoft Visual C++ 2010 Express. Если у вас 64-битная версия Windows, то также необходимо будет скачать Windows SDK (но для 64 версии могут быть проблемы, я так и не смог заставить работать OpenCV под Windows 7 x64).

Процесс настройку OpenCV для Visual C++ читайте на официальном сайте.

Шаг 2. Крепление камеры и сервомоторов

Я не стал делать конструкцию "долговечной", потому как после достижения конечной цели я все разбираю для следующего проекта.
Вебкамеру я прикрепил к сервомотору оси Х, а его, в свою очередь закрепил на сервомоторе оси Y. И всю эту конструкцию закрепил в струбцине от "третьих рук".

Читайте также:  Scythe glidestream 120 pwm

Шаг 3. Подключение

Подключение сервомоторов:
Желтый вывод от серво оси Х подключается к выводу 9 контроллера Arduino
Желтый вывод от серво оси Y подключается к выводу 10 контроллера Arduino
Красный вывод Vcc от серво подключается к выводу 5V
Черный вывод GND от серво подключается к выводу GND контроллера Arduino

Подключение вебкамеры:
Вебкамера подключается к компьютеру по USB интерфейсу. Программа C++ идентифицирует вебкамеру по номеру USB-порта. Возможно, потребуется указать порт в программе.

Подключение контроллера Arduino UNO:
Контроллер также подключается к компьютеру через USB-интерфейс. В системе появляется виртуальный COM-порт, который необходимо внести в код программы на C++.

Подвижный дальномер на сервомоторе часто используется в разных ардуино проектах. У меня возникла идея заставить ардуино следить за объектом двух плоскостях. Если объект будет смещаться — задача не терять его из поля зрения. Проект выполнен на ультразвуковом датчике HC-SR04 и паре сервомашинок.

Для изготовления потребуется:

  • Любая ардуино плата
  • Ультразвуковой датчик расстояния HC-SR04
  • Одна-две сервомашинки SG-90
  • Провода и руки

Схема подключения ультразвукового датчика слежения за объектом:

В первом скетче выполняется вращение от 30 до 150 градусов. Угол обзора можно задать для SG90 от 0 до 180 градусов. Это три положения: 30, 90 и 150 градусов. В коде программы задаем значение переменной distance которая определяет на каком расстоянии производить захват объекта в фокус. Как только будет зафиксировано приближение объекта ближе чем distance — сервомотор остановится и загорится светодиод.

Библиотека для ультразвукового датчика HC-RS04 Ultrasonic.h, для сервомотора — включена в состав программы Arduino IDE.

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

Читайте также:  Aquarius pro p30 s45

Вот скетч, где добавлен второй сервомотор для поиска границ объекта по вертикали:

Подвижный дальномер на сервомоторе часто используется в разных ардуино проектах. У меня возникла идея заставить ардуино следить за объектом двух плоскостях. Если объект будет смещаться — задача не терять его из поля зрения. Проект выполнен на ультразвуковом датчике HC-SR04 и паре сервомашинок.

Для изготовления потребуется:

  • Любая ардуино плата
  • Ультразвуковой датчик расстояния HC-SR04
  • Одна-две сервомашинки SG-90
  • Провода и руки

Схема подключения ультразвукового датчика слежения за объектом:

В первом скетче выполняется вращение от 30 до 150 градусов. Угол обзора можно задать для SG90 от 0 до 180 градусов. Это три положения: 30, 90 и 150 градусов. В коде программы задаем значение переменной distance которая определяет на каком расстоянии производить захват объекта в фокус. Как только будет зафиксировано приближение объекта ближе чем distance — сервомотор остановится и загорится светодиод.

Библиотека для ультразвукового датчика HC-RS04 Ultrasonic.h, для сервомотора — включена в состав программы Arduino IDE.

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

Вот скетч, где добавлен второй сервомотор для поиска границ объекта по вертикали:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *