Camera Control Research Project

Designed software to identify, download, erase and organize the contents of the built-in USB flash drives in at least 18 camcorders used for multi-angle video capture.

Designed a controller based on the LANC protocol to control at least 18 cameras simultaneously to assist in synchronous multi-angle video capture for 3d model reconstruction.

Designed a programmable variable frequency strobe light in a mixture of AVR assembly and C++ code to synchronize multi-angle video capture.

Overview (USB Drive Control Portion)

This project was started to address the need to download many video files from various cameras used in a multi-angle capture. The task was very tedious to do originally as it involved plugging in each camera, finding the correct file, labeling or placing the file in a specific directory and finally deleting the file from the drive after it was safely copied. The solution was to automatically detect a multitude of cameras using registry calls in windows and simple file searching in unix. In windows the serial number of the USB drive was found and compared against a table to determine which camera was found and in cases where registry calls were restricted it simply looked for a file on the USB drive itself that had the label. The linux method was similar and also had an alternative method incase there were any restrictions. Once the drives were located the video files were simply copied off using system calls and organized automatically. The user could have 18 or more cameras plugged in at the same time and issue a command to download every video and organize them. This allowed the researchers to simple issue a command and work on something else while it completed.

Overview (Strobe Control Portion)

This project was to build and program a controller that sent signals to several LED arrays to create a strobe light. The design allowed for a wide range of frequencies to be specified. The physical device was an Arduino Duemilanove with a DMX XLR signal converter chip and a DMX XLR jack. The signal was generated by an output on the Arduino. The code on the Arduino was written partially in C++ but the majority of the time critical portion was written in AVR assembly to ensure accuracy. The strobe light allowed the camera video to be synced as the strobe would happen in each camera at the same position in time. The frequency was set using a command line program that communicated by the serial port (emulated by USB) to the Arduino.

Overview (Camera Control Portion)

This project was to create a device capable of controlling at least 18 cameras simultaneously to assist in multi-angle camera capture. The camera controlling was done using the LANC protocol, a system that was reverse engineered over time to control Sony cameras and a few other brands. The protocol was mainly used to record, pause, stop, zoom, take snapshot, autofocus, change focus, turn on and turn off the cameras as well as a few other functions. The device built for this project consisted of a small box with 36 stereo audio jacks on the top that were then plugged into the cameras. Each one of the 36 plugs was able to control one camera. The audio jacks were each wired into a separate digital input of the Arduino Mega. The Arduino Mega was the microcontroller used in this application, it was controlled through USB by a computer running Windows, Linux or Mac OS. A command line program was used to issue various commands to the cameras and the ability to specify several, all or just one camera was possible. The program needed to be able to communicate across the serial port (emulated by USB) to talk with the Arduino, this was accomplished using various system calls.

These three projects were completed in a 10 week summer position at UBC.


Automated USB detection and file management in Windows, Linux and Mac OS

Significantly decreased the amount of effort needed to perform a multi-angle camera capture

Programmed a variable frequency strobe light signal generator in AVR assembly

Ordered several electronic components and built a working device to generate the signal

Controlled at least 18 camcorders simultaneously using the LANC protocol

Interfaced to the device using serial communication in Windows, Linux and Mac OS

Created a command line application to assist in automation of the camera commands

Ordered and assembled components into a compact plastic case


University of British Columbia

  • Embedded Software
  • Camera Automation
  • USB Interfacing
  • UBC Computer Science Research
  • Electronics
  • Prototyping