High Resolution Panoramic Photography Rig

by DIY Hacks and How Tos

In this project, I am going to show you how to make an automatic camera rig that will allow you to shoot high resolution panoramas using a cheap point and shoot camera. The camera rig is made from three metal frames and three servo motors. The servo motors control the pan, tilt and shutter of the camera. The metal frames hold all the parts together and allow you to mount everything onto a camera tripod.

An Arduino microcontroller is set up to automatically adjust the position of the camera and takes pictures at set intervals. When the process is complete, you will have a grid or pictures that cover a wide area. These pictures are them stitched together to create a single high resolution panoramic image.


Here are the materials and tools that you will need to complete this project.


Step 1: Mark and Cut the Camera Mounting Plate

The first plate that you need to cut out is the camera mounting plate of the rig. This plate will be used to mount the camera and the shutter servo motor. It also attaches to the rotor of the tilt servo. Start by positioning the camera where it will be mounted. Then mark the location where the mounting hole will be. Next figure out where the shutter servo needs to be so that it can activate the shutter button. I was fortunate in that my shutter button was right next to the power button. So I was able to use one servo to activate both the power button and the shutter button on my camera. Mark the locations of the mounting holes for the servo and the section of metal that needs to be cut to make room for the body of the servo. Also mark where the metal needs to be cut so that you can bend the bottom and left sides up. It may also help to mark the bend lines. Then using a small drill bit, drill a hole in each of the hole locations. When drilling sheet metal by hand, I prefer to start with small holes and gradually widen them by redrilling the holes with larger and larger bits until the hole is the right size. If you have trouble getting the holes started, it can help if you first dent the metal with a nail. Then take a pair of tin snips and cut out each section of metal that needs to be removed. The section cutout for the body of the shutter servo can either bent over so that it is out of the way, or you can repeatedly bend the flap back and forth until it breaks off. Finally bend the bottom and left sides up to make the final shape of the bracket.

Step 2: Mark and Cut the Middle Mounting Plate

Next we need to mark and cut the second mounting plate. The bottom of this plate connects to the rotor of the panning servo motor and the left side of the plate will connect to the body of the tilt servo motor. The bottom and left sides of the plate will be folded up so that they are perpendicular to the back of the plate and to each other. Again, start by drilling small holes in each hole location. Then redrill each hole with gradually larger bits until it is the right size. Then use tin snips to cut out each section of metal that needs to be removed. Bend the bottom section and the left section up. This is easiest to do with a bench vice. It may also help to brace the metal with pieces of wood as you bend it.

Step 3: Mark and Cut the Base Plate

Lastly we need to mark and cut the third mounting plate. This plate will be used to attach the rig to the screw of the tripod mounting plate. The body of the panning motor will also be mounting onto this plate. For simplicity, this will just be a flat plate with mounting holes on both sides. First use a pencil to trace the outlines of each hole that will be drilled and sections of metal that will be cut. Drill all the holes as before. Then use tin snips to cut the metal along the designated lines. To make this plate a little sturdier I bent the two sides down. This will help to keep it from bending under the weight of the camera.

Step 4: Assemble the Rig

Now you are ready to assemble all the parts of the rig. Start with the base plate and attach the body of the panning servo motor with four small machine screws and nuts. Then use a set of four smaller machine screws to attach the middle mounting plate to the rotor of the panning motor. Then attach the body of the tilt servo motor to the side of the middle mounting plate. Next attach the camera mounting plate to the rotor of the tilt servo motor. Attach the body of the shutter servo motor to the camera mounting plate. The last thing to do is to attach the camera to the camera mounting plate with a 1/4-20 bolt and washers. Once all the parts are loosely attached, carefully align everything and tighten the fasteners.

Step 5: Connect the Servo Motors to Your Microcontroller

I used an Arduino Microcontroller to control the servo motors on my camera rig. To hook up the servo to the Arduino, you want to connect the red wire to the 5V pin and the black wire (in most cases) to the GND pin on the Arduino. The third wire is the signal wire and is connected to a digital pin. The colors may vary depending on model. You need to make these connections with each servo motor. The easiest way to connect multiple servos to an Arduino is with a servo motor shield. I built one of these in a previous project. You can see how to make one here (http://www.instructables.com/id/How-to-Make-Custom-Shields-for-Your-Microcontrolle/) In most cases, you will need to include an external battery pack that is connected to the Vin pin on the board.

Step 6: Upload Code To Your Microcontroller

Next you need to upload some code to your Arduino. Here is some very simple example code that can get you started. You will need to modify the code to calibrate it for your motors and the dimensions of your rig.

  Servo shutterServo;
  // create servo object to control the shutter servo Servo panServo;
  // create servo object to control the pan servo Servo tiltServo;
  // create servo object to control the tilt servo
  int shutterNeutralPosition = 95;
  int shutterFocus = 100;
  int shutterCapture = 105;
  int panNeutralPosition = 90;
  int panMin = 45;
  int panMax = 135;
  int panIncrement = 5;
  int panCurrent;
  int tiltNeutralPosition = 90;
  int tiltIncrement = 5;
  int tiltMin = 60;
  int tiltMax = 120;
  int tiltCurrent;
  void setup() {
  // attaches the servo on pin 9 to the servo object panServo.attach(10);
  // attaches the servo on pin 10 to the servo object tiltServo.attach(11);
  // attaches the servo on pin 11 to the servo object
  void loop() {
panServo.write(panNeutralPosition); tiltServo.write(tiltNeutralPosition); delay(10000); panCurrent = panMin; tiltCurrent = tiltMin; for(int y=0; y <= 12; y++) { tiltServo.write(tiltCurrent); delay(2000); for(int x=0; x <= 18; x++) { panServo.write(panCurrent); delay(1000); shutterServo.write(shutterFocus); delay(2000); shutterServo.write(shutterCapture); delay(1000); shutterServo.write(shutterNeutralPosition); panCurrent = panCurrent + panIncrement; } tiltCurrent = tiltCurrent + tiltIncrement; } }

Step 7: Mount the Rig onto Your Tripod and Test It

To mount the camera rig onto a tripod just attach the bottom plate to the camera mounting screw on the tripod. Then secure it in place with a 1/4-20 nut. Now you are ready to test the system.

Connect the battery pack and the system should automatically begin to execute the program. The rig should move to the starting position. Then it will take a picture and turn slightly to the side. Once the camera has completed a full horizontal pan, the tilt servo will raise the camera slightly and the system will again take pictures panning across the area.

Step 8: Use Your Camera Rig to Photograph a Large Area

Now at last it is time to try out your automatic panoramic camera rig. I took my camera rig down to the horticultural gardens at my local university. As a quick test I set my camera to take 1280 × 720 pictures. I zoomed in my camera as much as I could. Then I set the rig to take pictures across most of the garden. It took about 40 close up pictures of the area.

Step 9: Stitch the Pictures Together into a Panorama

The last step is to stitch the individual pictures together to make a large panorama. There are a lot of programs that you can use to do this. I used Adobe Photoshop Elements 13. Using this program you go to the "Enhance" menu, select "Photomerge" and then choose "Panorama." You then select the pictures to stitch together. The program will then automatically merge the individual pictures together into a large panoramic image.

Keep in mind that this process may take a long time and will require a lot of RAM. Here are a few tips that might help if have problems getting this process to work.

  1. The smaller the individual images are the easier it is to combine them.
  2. If you arrange the individual images in sequential order, the process will run faster.
  3. If your computer is unable to stitch all the images together at one time, you can stitch together smaller groups of pictures at a time. Then stitch these intermediate images together.

When I was done stitching the individual images together, I have a large 33 Megapixel panoramic image. This is over 30 times higher resolution than the original pictures.

Content by Jason Poel Smith (DIY Hacks and How Tos). Used under Creative Commons 2.5 BY-NC-SA Licence. Changes were made to the original content.