Aerial camera platform and servo smoothing

I’ve been doing aerial photography for a couple of years using a camera rig suspended from a kite line. Strange though it might seem, aside from balloon aerial photography it’s the oldest form of aerial photography on record, and works quite well. The bulk of the aerial photography I’ve done has been under radio control. But there are times and places where radio transmitters are either not allowed (right next to radio telescopes) or simply not handy (hiking or mountain climbing). There are automatic rig controllers out there, but I wanted to make my own.

At the moment it’s running on a Baby-Orangutan SV-168, but I’m going to move the code over to an Orangutan in the near future because I’m getting to the point where I need more of a user interface for setup. The only hardware hurdle with the Baby-O was to make a header board that brought each of the I/O pins out to three-pin headers, similar to the layout of the larger Orangutan controllers. Only instead of sockets, it’s equipped with pins so standard hobby servos could be plugged in:

This is a better shot, showing its location on the camera rig:

The idea is to pan and tilt the camera through a fixed pattern similar to how a Gigapan platform works. The only difference is that the whole thing is suspended in the air, so the view is a little different. With the right wind and the proper choice of kite, the camera’s position can be quite stable with very little wind-induced shake to the rig. It’s like having a tripod in the sky.

With one big exception: It’s not rigid. So camera and rig-induced shake can happen. Compact digital cameras don’t use a flip-mirror, so the camera-induced shake common with DSLRs and medium format cameras isn’t a problem. But rig shake is. Using stock servo code, the motion of the pan and tilt servos caused severe rig shake that lasted for over a second. I wrote a new set of servo routines that use a trapezoidal velocity profile to move the servos. This made for much smoother motion, and almost no rig shake at the end of each move. The difference is demonstrated in a video here:

Since making that video I’ve stripped out most of the delays I’d put into the code to let the rig settle at the end of each move. It shaved a second and a half off of each shot time, making for a much faster pattern. Unfortunately I still haven’t had a chance to test this controller in the air. We’ve been under a weather system for more than a week, and my kites have been grounded. Such is the nature of aerial photography, or really any form of photography. Ah well.

I’ll keep posting photos on Flickr as they come up. Here’s the set for this controller:

Right now the new servo code has some glitches, mostly dealing with my own sloppy attention to variable types and casting during math operations. Once I’ve been through it with a fine toothed comb, I’ll be more than happy to post it here or (gasp) update the O-Lib code. In any case it’ll be free for anyone to use.

And in case anyone wondered where I’ve been, I’ve been out flying kites and taking pictures.



That looks great. Why didn’t you include some pictures you took with the system? I looked at some of your Pololu Valley shots, but I can’t tell if they were taken with the current system

- Jan

So far this board hasn’t made it off the ground. We’ve been socked in with some torrential tradewinds, and there’s no sign of a break in the weather. Trust me, as soon as there’s even a one hour window of good wind, I’ll have it airborne.

The Pololu Valley shots were mostly done with another automatic rig controller, the AuRiCo. It’s a solid controller, and is one of the reasons this project took so long to get off the ground: why make another one when the AuRiCo does such a good job? But it was the allure of the smoothed motion code that finally prodded me into action. Well, that and being stuck in the house with bad weather outside…

But I can post some pictures I’ve taken with the aerial rig, just to give an idea of what’s possible:

Pololu Valley looking down the beach toward the Hamakua Coast:
This is a stitch of three images taken in a vertical sequence. Despite all the care and attention paid to make panorama platforms where the camera rotates around the nodal point of the lens, for aerials it’s really not much of an issue because the subject is so far away from the camera. The resulting parallax shift is minimal.

Pololu Valley looking in the opposite direction, toward the trail:
Another three-image stitch, again in a vertical sequence.

Waipi`o Valley, with the camera positioned about a hundred feet above the river:
(Just so not ALL the pictures are of Pololu Valley…) This illustrates why shooting aerials from a kite, or from some other small aerial platform isn’t simply an inexpensive substitute for using an airplane or helicopter. In the United States, the FAA restricts air traffic to altitudes above a thousand feet in populated areas, and above five hundred feet in sparsely populated areas. The FAA further says that kites cannot exceed five hundred feet, period. Which means they really operate in two different regimes. From the top of the ladder to the belly of the helicopter is perfect territory for a platform like this.

Canada-France-Hawaii Telescope at the summit of Mauna Kea:
Another advantage to a setup like this is that it’s portable, and can fly at a range of altitudes above sea level by changing which kite is used. This image is composed from two shots done in a horizontal pattern with the camera roughly 100’ above the ground, but almost 14,000’ above sea level. This is also a perfect illustration why a radio-only rig is not always the best route to go: The summit of Mauna Kea has several optical and infrared observatories, but also a number of submillimeter and radio observatories, so radio transmitters are heavily restricted. Using an RC transmitter is strictly forbidden. So an automatic rig controller is the only choice available.

But what I really REALLY want to be able to post is pictures taken with the Baby-Orangutan rig controller. As soon as I get some decent flying weather, I’ll post pictures.


One more update on this that might be of more general interest:

The camera I’m using on this is a Canon Powershot A650IS. Most of the Canon Powershots can run CHDK, which is a hacking toolkit that runs on top of the Canon firmware. The A650IS is on the list, and CHDK works great on it. Another hacking toolkit that runs on the A650IS is one tailored more specifically for doing stereo photography with two synchronized cameras, or for doing aerial photography: SDM. This is where to find them:


SDM (Stereo Data Maker):

Now to the point of more general interest: Among other things, CHDK and SDM both let you look at the state of the +5V line on the camera’s USB port. You can either get it to act like a button, in which case it traps just like any of the other buttons on the camera, or you can have CHDK or SDM report the duration of a pulse on the +5V line.

Which means you can wire an Orangutan up to a Canon Powershot camera using a GPIO line off the Orangutan. At that point you can toggle the pin on the Orangutan to make the camera take a picture, or with a little more work you can set up a more involved protocol for controlling other functions on the camera like exposure time, zoom, focus, etc. If you’re willing to write AVR or Arduino code as well as CHDK code, your Orangutan can tell the camera to do whatever you want.

For this I’m only using it to trigger the shutter. But there are lots of possibilities out there. One I tried out today, but haven’t really done anything with is CHDK’s ability to control the LEDs on the back of the camera. It’s entirely possible to have the camera listen for timed pulses on its USB port, and to send pulses out one of its LEDs, which could be picked back up by the Orangutan through the use of a photodiode. So two-way communication is possible, even if it is a little kludgey.

Just thought I’d toss this out in case anyone else is doing any camera projects.


Between the vog and a constant stream of storms out of the west, the weather here has been pretty lousy. But I finally got some good conditions at Manini Owali beach at Kua Bay. The Baby-O performed super well. No, it worked GREAT. The motion smoothing on the servos meant I could strip out all the delays I had in there to let the camera rig settle at the end of each move. In the end it made for a frame rate of about one shot every three seconds, on average. The fast frame rate meant that from a given set of pictures, most of the adjacent shots were done from about the same spot in the sky, and could be stitched into composite images. The only unexpected down-side to this is that given the camera I was using, it was basically taking up 2.5GB every 30 minutes. I need a larger memory card.

These were some of the composites I put together from the images taken by the Baby-O:

I’m pleased as can be.


I have a digital camera on my Easy Star. A simple little 2 mp one but the shots are not bad.

I am a nature photographer

i was thinking of rigging my nikon to an aerial vehical !

your stuff is brilliant!