(Лего)Фоторобот

Lego-фоторобот

В цифровую камеру встроен компьютер. А так как камера — продукт массовый, то и интерфейсные возможности ее компьютера ограничены исключительно потребительскими функциями. Иногда ограничения удается частично снять, и умелый пользователь получает доступ к скрытым возможностям, позволяющим решать более интересные и сложные задачи, чем описаны в руководстве камеры. Как пример — CHDK для камер Canon (подробнее в статьях: «CHDK и Canon PowerShot G9», «Canon PowerShot A650IS», «CHDK RAW Developer — проявитель файлов CHDK-RAW»). Расширить функциональные возможности камеры можно и с помощью «внешнего» компьютера, роль которого могут исполнить настольные компьютеры, нетбуки, смартфоны, планшеты и разнообразные «конструкторы» (Arduino, Lego Mindstorms).

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

Тему роботизации фотосъемки начнем с «готового к работе из коробки» Lego Mindstorms NXT. Заодно покажем, как одно решение можно приспособить для выполнения разных задач. К плюсам Lego Mindstorms NXT можно отнести возможность сборки механической части из деталей комплекта и универсальность компьютерной части с аналоговыми и цифровыми каналами. К минусам — следствие плюсов: стенды из «универсальных кубиков» механически не очень надежны. Но для прототипирования «кубики» просто идеальны.

Сделаем из Lego Mindstorms NXT стенды для панорамной и цейтраферной (с проводкой) съемки.

В стандартный комплект Lego Mindstorms NXT (элементы можно приобретать и по отдельности) входит набор «кубиков» Lego, системный блок с дисплеем, кнопочным управлением, USB-интерфейсом, портами для сервомашинок (3 порта) и сенсоров (4 порта), сервомашинки (3 штуки) и сенсоры (датчики касания, уровня освещения, звука, ультразвуковой дальномерный датчик), программное обеспечение. Так как конструктор предназначен для детей, то он прост и хорошо защищен.

Системный блок Lego Mindstorms NXT может работать автономно или как посредник между компьютером и электронно-механической частью приводов и сенсоров. Встроенная память позволяет хранить несколько пользовательских программ, а кроме того содержит простейшие скомпилированные программы для управления игрушками и опроса сенсоров.

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

Построим механический стенд с приводом — сервомашинкой. Из шестеренок Lego можно собрать редукторы с коэффициентом передачи 1:1—1:4. Мне удалось сделать вполне надежную конструкцию, способную вращать камеру, с шестеренками, обеспечивающими понижение скорости втрое. На самом деле, скорость значения не имеет, просто для цейтраферной съемки с панорамированием требуется очень малый угол поворота на цикл, а сервомашинка надежно отрабатывает лишь углы примерно от 2 градусов и более. Детали стенда стоит дополнительно зафиксировать резинками:

Lego-фоторобот

Для управления стендом с помощью системного блока Lego Mindstorms NXT достаточно одного канала на сервомашинку. Для управления съемкой я также выбрал канал сервомашинки. Дело в том, что на ее электродвигатель подается постоянное напряжение, и этот сигнал можно использовать для нажатия на спуск камеры.

Особенность используемой мною камеры Canon PS G9 — в отсутствии штатной возможности дистанционного управления, так что задача несколько усложняется. В статье, посвященной CHDK для Canon PS G9, описано, как можно управлять съемкой, подавая напряжение 5 В на USB-порт камеры. Чтобы подключить камеру к Lego Mindstorms NXT, нужно сделать переходник на USB, соединив провода питания USB с черным и белым проводами Lego Mindstorms NXT (рецепт отсюда). Так как USB не очень универсальный разъем, стоит добавить между USB и Lego Mindstorms NXT разъем типа «моно-мини-джек», что может пригодиться в будущем для управления другими устройствами (лампочками, двигателями и т. д.).

Чтобы не резать провод Lego Mindstorms NXT с «фирменным» разъемом, можно подключить его к «моно-мини-джеку» через модифицированный разъем RJ25. Разъем под шестижильный Lego Mindstorms NXT отличается от RJ25 только размещением замка, и RJ25 легко доработать напильником до требуемой конфигурации, просто пропилив дырку под фирменный замок (вместо замка-защелки придется пользоваться канцелярской резинкой):

Lego-фоторобот

Lego-фоторобот

Следующий шаг — написание программы для управления стендом и съемкой. Для этого будем использовать программу Lego Mindstorms NXT из комплекта. Это среда визуального программирования методом перемещения управляющих, сигнальных и логических блоков на направляющую последовательности выполнения команд:

Mindstorms NXT

Программа для панорамной съемки состоит из команд задержки в 2 секунды, сигнала на съемку (подача напряжения на USB дистанционного управления камерой в течение 0,5 секунд, что достаточно для режима ручной фокусировки; для автофокусной системы придется дублировать подачу напряжения через небольшой промежуток времени), задержки в 3 секунды и поворота на требуемый угол. Команды выполняются циклически, пока на системный блок пульта управления не будет подана команда выхода из программы (см. видеоролики о работе стенда в конце статьи).

При программировании нужно учесть, что сигнал на первую сервомашинку (я выбрал «А»), роль которой у нас выполняет USB-пульт управления камерой, используется лишь частично, и системный блок не получает ответный сигнал от сервомашинки. Поэтом ее управление нужно программировать именно на длительность подачи сигнала соответствующей полярности, а не на количество оборотов или угол поворота (иначе программа просто зависнет, ожидая ответ от потенциометра сервомашинки).

Мотор «B», который и вращает стенд с камерой, нужно запрограммировать на требуемый угол поворота и фиксацию (есть еще режим «поворот и вращение по инерции»). Если стенд будет подключен к компьютеру в процессе съемки, то угол поворота можно произвольно менять. Если стенд будет использоваться автономно, то можно сделать несколько программ с разными углами поворота и разным направлением.

На практике я определял угол поворота под фокусное расстояние оптики камеры следующим образом. Устанавливал камеру на стенд, аккуратно зумировал объектив, считая число шагов зума. Далее, вращая маленькую шестеренку редуктора на стенде по обратной связи сервопривода с программой, определял угол требуемого для панорамирования поворота (отмечено 1) и заносил его в окно управления двигателем (2). При съемке в моем системной блоке были программы на 0, 3, 5, 7 шагов зума. Значение параметра мощности и полярности управляющих двигателей подбирается из соображений устойчивого срабатывания камеры по сигналу на USB и сравнительно «мягкого» поворота стенда с камерой (при полной мощности возможно проскальзывание шестерен, а тяжелая камера получает сильный вращательный момент и нужно дольше ждать перед нажатием на спуск, пока погасятся ее движения).

Lego-фоторобот

Программа для проводки при цейтраферной съемке подобна описанной выше. Угол поворота сервопривода — минимальный более-менее устойчивый для конструкции — 2 градуса, да и то при полной мощности. Задержка между снимками — 8 секунд.

Lego-фоторобот

Для желающих программировать Lego Mindstorms NXT (и других роботов) менее визуально, могу рекомендовать программу Bricx Command Center. С ее помощью можно программировать работу не только со штатными датчиками и приводами, но и с прочими, в том числе сделанными самостоятельно.

Bricx

Так выглядит стенд в полевых условиях:

Lego-фоторобот

Lego-фоторобот


Эти два видеоролика можно также посмотреть автономно:

  • о съемке панорамы — 23 МБ, mov
  • о съемке цейтраферного фильма — 38 МБ, mov

Видео, собранное из фотографий, сделанных через интервал в 8 секунд с поворотом примерно на 2/3 градуса за цикл (5 МБ, avi).


Продукция Lego предоставлена компанией re:Store Retail Group



19 мая 2011 Г.

()

()

Lego-

. — , . , , , . — CHDK Canon ( : «CHDK Canon PowerShot G9», «Canon PowerShot A650IS», «CHDK RAW Developer — CHDK-RAW»). «» , , , , «» (Arduino, Lego Mindstorms).

, . , , , ( ), , - . , . () .

« » Lego Mindstorms NXT. , . Lego Mindstorms NXT . — : « » . «» .

Lego Mindstorms NXT ( ) .

Lego Mindstorms NXT ( ) «» Lego, , , USB-, (3 ) (4 ), (3 ) ( , , , ), . , .

Lego Mindstorms NXT - . , .

-. , . — , .

— . Lego 1:1—1:4. , , , . , , , 2 . :

Lego-

Lego Mindstorms NXT . . , , .

Canon PS G9 — , . , CHDK Canon PS G9, , , 5 USB- . Lego Mindstorms NXT, USB, USB Lego Mindstorms NXT ( ). USB , USB Lego Mindstorms NXT «--», (, . .).

Lego Mindstorms NXT «» , «--» RJ25. Lego Mindstorms NXT RJ25 , RJ25 , ( - ):

Lego-

Lego-

— . Lego Mindstorms NXT . , :

Mindstorms NXT

2 , ( USB 0,5 , ; ), 3 . , (. ).

, ( «»), USB- , , . , ( , ).

«B», , ( « »). , . , .

. , , . , , ( 1) (2). 0, 3, 5, 7 . USB «» ( , , ).

Lego-

. — - — 2 , . — 8 .

Lego-

Lego Mindstorms NXT ( ) , Bricx Command Center. , , .

Bricx

:

Lego-

Lego-


:


, , 8 2/3 (5 , avi).