Керована веб-камера або ж web-cam-бот

Коротко розповім про створення такої камери.

Як видно на фотографії, я зібрав поворотну основу для камери з найпростіших і дешевих маленьких серв - SG-90.
Камера кріпиться прямо до качалці верхньої серви, що прикріплюється до Г-образної закарлюці, виліпленої з ПКЛ (полікапролактон - чудовий пластик для моделювання та прототипування!). Ця ж закарлюка іншим кінцем кріпиться до качалці другий серви.

Основу я недовго думаючи вирізав з пластикової пляшки :) Хоча можна було б виліпити з того ж пластику ПКЛ;)

Ось і вся механіка. Дуже просто і швидко. Використовувати ПКЛ для таких виробів суцільне задоволення. Але якщо у вас немає під рукою паяльної станції з феном, то потрібно тримати напоготові чайник з окропом;)
Так само зверніть увагу, що масивні деталі з пластика будуть размегчают довше, ніж дрібні. Це можна спостерігати за кольором. Нагріваючись пластик стає прозорим, а в глибині у нього може залишатися білий стрижень більш холодного і твердого пластика.

Далі обидві сервомашинки безпосередньо підключаються до 7 і 8 портів контролера Arduino / CraftDuino:

Керована веб-камера або ж web-cam-бот

В даному випадку Arduino / CraftDuino грає роль шлюзу, тобто кути повороту сервомашинок передаються контролеру по послідовному порту від керуючої програми на ПК, а Arduino просто отримує значення кута повороту і повертає потрібну серв на заданий кут.

Для роботи з сервомашинками скористаємося бібліотекою Servo. а для спілкування з контролером через послідовний порт використовуємо бібліотеку Firmata. яка так само як і бібліотека Servo вже входить в стандартний набір бібліотек Arduino IDE.

Ось яка програма для Arduino у нас вийде (фактично - це трохи модифікований приклад, що поставляється з бібліотекою Firmata)

Ось і все - механіка і електроніка готові і залишається тільки написати програму для управління цим міні-роботом!

Так як подальші плани навчити цього міні-web-cam-бота самостійно виявляти об'єкти і стежити за ними, то для роботи з камерою я скористаюся бібліотекою OpenCV.

Керуюча програма досить проста.
Підключаємося до web-камері і показуючи її картинку. Так само виведемо в віконце з картинкою пару повзунків. за допомогою яких будемо управляти положенням сервомашинок.

Так як в моїй конструкції робота web-камеру довелося закріпити на боці, то в програмі доводиться це виправляти (повертати картинку на 90 градусів проти годинникової стрілки).
Ця процедура реалізується функцією rotate (), яка є обгорткою навколо функції OpenCV: cvWarpAffine (), яка і виконує поворот зображення (Афінний перетворення).

От і все!
Головне - бажання і хороша ідея! ;)