Brookline Panoramas

It takes about 15 minutes to take a set of 100 to 125 shots for a panorama with my device–when it works. Lately, it hasn’t been. This is my second working panorama robot, but it has some kinks. First, I enlarged the tilt gear (14 teeth) so that I could more easily attach the servo hub. However, that meant the servo would turn less, requireing more torque, and at a low angle the servo would stutter, causing blurry photos when I was shooting indoors. So I changed it to 12 teeth (which was 4 more than my original) and that seems a good compromise. I also added a counter-weight for the camera.


I took a test panorma near the Dartmouth Green, but the tilt wheel came lose from the hub; I had only taped it on. Back to the garage where I wired it on. Then I had attached the tilt wheel backwards and when it went into its tilt motion, on the next panorama effort, a tooth broke off the tilt gear. Okay, I felt like crying.


With the gear fixed my next panorama was at Peet’s in Brookline. We are visiting my daughter Emma and my sister Alice. The tilt wheel came off the bearing. Deep breaths. Back to my sister’s to glue that on.


While walking the dog (never believe your wife and children who claim they will walk dog every day on day of dog purchase) I found a nice place for a panorama, the Devotion Elementary school. Here’s the device doing that there.

I then did one in the playground. I ran into a problem with auto exposure. It exposed for the sky when shooting my head, but exposed for my body when shooting that. The stitching software then could figure out that my head was attached to my body. So this pano worked pretty well, except I’m headless. Just as well, anyone looking at my panos must be sick of my face.

I programmed the device to pan, move the camera to a low point, then take 4 to 5  images going up.  That’s inefficient because it would be better to just pan the camera from whever it took its last image; that is, the captures should be taken in a serpentine fashion.  But I didn’t do that and now I can’t use the “structured panorama” mode in ICE.  I’m going to work on my camera movement algorithim for next time.

Also, I’ve concluded that you really need to fix your exposure.  When the camera does an autoexposure the stitching software can get confused and stitch the phontos in a somewhat irregular way.  I now decide the exposure on what I feel is the best subject of the panorama.

Again, you can view my latest panoramas as Max panoramas at photosynth.net

Video of Robotic Panohead and How To Make a Widescreen Marketing Photo with ICE

Here is a video of the robot taking a panorama of downtown Hanover.  The audio is faint, sorry.

Robotic Panorama Maker from Max Rottersman on Vimeo.

I’m noticing that lights throw off the auto-focus of the camera.  If I have enough light I’m going to have to close the aperature down as much as possible and set the camera to manual focus. 

All the panoramas I’ve taken so far are tests.  I’m looking forward to taking a panorama where I can focus on the artistic stuff.

I’ve noticed on photosynth that many people don’t understand what image composition software needs to stitch photos together well.  It needs a common parallax.  When you take your pictures, try to take each one where the center of your lens is shooting from the same point in space.  Whenever you move your camera up or down, left or right, try to rotate it around an imaginary hinge in the middle of your lens.  If you do that you will get great results.

A panorama head works by keeping the middle of the lens rotating around a single point in space, like spinning a basketball on your finger.  If you do this, you will get really nice results from Microsoft ICE. 

I used this technique to assemble 3 photos for a marketing picture of Quechee Gore Village.  Here is what one picture from my Canon G10 can show.

I took three photos, left, middle, and right, all hand-held.  I did my best to turn the camera left and right around a point in the middle of the lens.  The image ICE has assembled is too large to upload.  Here is a section I cut out, which I’ll use

This is a photo I couldn’t take by itself.  I had to artificially create it through image stitching software. (I believe they’ll use something like the following for a background to pictures of all the fun things people can do at Quechee Gorge Village.)  You can do lots of neat things with images using Paint.NET (and it’s free)!

Excuse me for putting two different subjects in this one post.  My time is limited and I probably won’t get to this stuff again until next weekend.  I read other blogs for nuggets of information.  I figure what I lose in coherence here I may gain in helping you with some needed trick.

DIY Robotic Panorama Head

The most well-known robotic panorama head is the GigaPan.  At the time I started building my own, they were selling for under $300.  For what they do, that was (is) very cheap.  But I didn’t like the fact that I couldn’t modify the Gigapan or control it from my PC.  I also didn’t want a panohead that had weight limitations.  So I set out to build a robotic panorama head that could be controlled by a PC (for maximum flexibility) and could hold any size camera.

From my experience building a thermal imaging time lapse robot, I knew how to program an Arduino and work with servo motors.  My first goal was to see if I could move a heavy camera around with 5-volt motors (servos).  Naturally, most robotic panorama heads don’t even try because they attach the camera to motors directly.

In most panoheads, a motor sits at the bottom (usually a stepper motor) and pans the camera back and forth.  A second motor is attached to a bracket that moves the camera up and down.  Using this approach you can achieve great levels of precision (due to the nature of a stepper motor), but you may need lots of power because the camera weight puts pressure on (torques) the motor shaft.

Although I’d end up with a larger mechanism, I knew that if I put the camera on bearings (perhaps with counter-weights) I’d take weight out of the equation.  Assuming good bearings, I would be able to push it with only a few volts.

My first successful attempt used LPs and servo motors with a DSLR.  I discovered that I could indeed move a heavy camera around with a servo using only the phantom 6-volt power from my laptop’s USB jack.  The trick is to make sure the full weight of the camera is friction-free. Here is that experiment

To pan the camera, I used a continuous rotation servo with a rubber wheel.  In the above contraption I used cheap key-chain ball-strings for bearings between the platters.  I now use very small skateboard-type bearings attached to a ring between each platter.  By the way, I would have kept using LPs as parts for my panohead but cutting them created too much smelly plastic.  I switched to wood.

I built some more advanced versions of the device above but two problems wouldn’t go away.  The first was the wheel-method of moving the camera.  It either slipped, or I had to apply enough pressure that it raised the panning platter.

You can see that problem here

I knew I’d have to use some sort of gearing mechanism which would eliminate most downward force.  I couldn’t find any cheap gear mechanism (that would be light and inexpensive) so I tried a pulley idea.

Like the wheel, it either pulled too hard, or it slipped.  Another problem is the motor got in the way of the pictures.  However, I did find that by using nylon strapping (which you’ll find in sewing), and nailing tacks into the wood wheel for grip, you can create a reasonable low-cost, light-weight pulley mechanism.  You pull the nylon ribbon round both wheels and safety-pin clip it together. 

There were many obstacles with building a device using gears, the first being that every time I tried to learn about gears my brain ground to a halt.  I didn’t want to get custom made parts.  So how to make my own gears?  I moped around the house for a few days stuck on that one.  Fortunately, I found WoodGears, a site run by Matthias Wandel.  THANK YOU Matthias!  He created software exactly for what I needed.  There’s a free version on-line, but I found I needed the $26 downloadable software.  Worth every penny!  (If you’re into robotics either buy that software now or write “Woodgears.ca” on your forehead so you don’t forget).

I put the size of my platter into the software and printed a diagram of my gears.  I then pasted that to my wood and cut out the gears using my scroll saw with a 360-degree blade.  It cuts through balsa wood easily and I found it not as time-consuming as I thought it would be.  (A good source of this wood is National Balsa) My first version used thumb-tacks as my servo wheel (I put in 4mm as the pin size).  That works very well.  A nice trick to know for fast prototyping.

I also found that the same gear size for the panning platter could be used for the tilting arm.  They are both 7 inch gears moved by 8-teeth wheels powered by servos.  The panning motor uses a Parallax (Futaba) continuous rotation servo; the tilt gear is run by a GTS 360-degree servo.

Here is the latest panohead (I have built and torn apart more than a dozen at this point).  The PC sends commands through PowerShell to the Arduino board.  It in turn sends commands to the pan and tilt servos.

You can view the panorama here: Orozco Room panorama

These are the points I think you need to build your own robotic panohead

  • Keep your camera movements friction-free
  • Use bearings in your design (see USA Bearings and Belts)
  • Mount the platters through a round tube to snake your wires to the camera and servos.  You can run the wires on the outside but your risk for tangling are greater.
  • Use an Arduino or other microcontroller.  Another option I plan to try later is a direct from PC servo controller.  See (Pololu USB Servo Controller)
  • Use Microsoft’s free ICE software to assemble your panoramas (ICE: Image Compositing Editor)
  • Try Microsoft’s free Photosynth.net
  • Use washers between the inner and outer-ring of a bearing for your tilt arm.

If you would like this device in kit form, I can be reached at max at htgrp . com.