Pages

Thursday, September 9, 2010

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.

2 comments:

  1. Awesome! Thanks for the advice and suggestions. Really good to see the various iterations. I'm interested in building one now. Did yours account for centering the swivel-point aligned to the "nodal" point? Thanks again for teaching me your process.
    Evan, Port Townsend WA

    ReplyDelete
  2. There are many ideas to try! Feel free to email me with any questions. Yes, I try to align the nodal point, but so far only eyeball it.

    ReplyDelete