Introduction: Camera Panorama Robot Head (panograph)

Ever wanted to take pictures of a panoramic scene at the press of a single button? This instructable will teach you how to build a robotic head to mount your camera on, which in turn mounts on a tripod. The robotic head will move in two axes to enable the camera to be panned left and right as well as up and down

There are a few pre-requisites:

I've used a Canon camera which is loaded with CHDK alternative firmware. *check comment on this later on. Visit http://chdk.wikia.com/wiki/CHDK to check your camera compatability.

A little soldering is involved as well as some practical mechanical skills

This is released under Creative CommonsAttribution-Share alike 3.0 license http://creativecommons.org/licenses/by-sa/3.0/

Step 1: Build Steps

Here I've added an index which I hope will make things easier for you.

1 Upper Rig assembly
2 Gear bearing assembly
3 Servo PCB wiring & fixing
3 Picaxe programming
4 Final assembly
5 Load CHDK on your camera
6 Calibration
7 Example panoramas shot in location in North Wales

Step 2: Shopping List

1x Brookes basic tilt frame for KAP http://www.kapshop.com/product_info.php?cPath=6_26_42&products_id=159 9 pounds 50p

1x Brookes better gear guide http://www.kapshop.com/product_info.php?cPath=6_26_42&products_id=75 8 pounds

camera bush screw http://www.kapshop.com/product_info.php?products_id=231 2 pond

2X servo motors http://www.mutr.co.uk/product_info.php?cPath=13_530&products_id=1009437 3 pounds each (You'll need an extra one if your not firing the shutter with CHDK)

1x picaxe servo board (AXE024) http://194.201.138.187/epages/Store.storefront/?ObjectPath=/Shops/Store.TechSupplies/Products/AXE024 7 pounds 50p

2x Gear sets http://194.201.138.187/epages/Store.storefront/?ObjectPath=/Shops/Store.TechSupplies/Products/GWC031 one pound each

22mm aluminium cylinder cut to 50mm length (can be much shorter depending on your tripod head clearence) http://cgi.ebay.co.uk/ALUMINIUM-ROUND-BAR-ROD-5-8-DIA-x-250mm-Long_W0QQitemZ270282531024QQcmdZViewItemQQptZUK_BOI_Metalworking_Milling_Welding_Metalworking_Supplies_ET?hash=item3eee1820d0&_trksid=p4634.c0.m14.l1262&_trkparms=|301:0|293:1|294:30

1 four cell AA battery holder + PP3 battery clip

various nuts, bots & split washers

tie clips

1x toggle switch

for noise supression

4x clip on ferrite noise supressors
4x 100nF ceramic capacitors

tools

dremmel type drill with attachments

1/4-20 tap for attaching rig to tripod
M4 tap for attaching rig to tripod mount cylinder

soldering iron

multimeter

Cable for programming the picaxe http://194.201.138.187/epages/Store.storefront/?ObjectPath=/Shops/Store.TechSupplies/Categories/SoftwareCables/CablesAdapters 3 pound (you will need a serial to usb adapter also if your pc does not have a serial port

vertical drill stand, or access to a workshop to drill holes in aluminium rod ready for tapping

Step 3: 1 Upper Rig Build Pt 1

Upper Rig build Pt 1 : Mount Stepper motor to the rig

Attach a stepper motor to the outside cradle of the rig using 2 4mm diam. nuts and bolts.

Step 4: 1 Upper Rig Build Pt 2

"Upper Rig build Pt 2: Drill holes where needed in the rig"

Drill a 5mm hole centrally as shown on the outside cradle base. The pivot screw will pass through this hole.

Drill a 5.8mm (just slightly bigger than 1/4 used for camera holder screw)" hole centrally along the longest length of the inside cradle of the rig but the depth position will depend on the camera you are using. Measure the base of your camera from the centre of the tripod bush hole to the back of your camera, add a couple of mm & you've got the measurement from the back of the inside cradle

Step 5: 1 Upper Rig Build Pt 3

"Assemble rig parts"

Attach a 4mm diam. threaded rod to the left hand side of the outer cradle as shown in the picture. ( I used a long nut & cut the head off)

Position the rod into the inner cradle using one of the pre-drilled holes so that the distance between the rod centre and the inner cradle base is about 20cm. Use one of self tapping screws that came with your servo accessory kit to screw the other arm of the inner cradle to the servo arm centre hole. Check before screwing that the iner cradle base runs parallel to the outer cradle base.

Step 6: 2 Gear Bearing Assembly

1 First assemble a 4.5mm diameter, 28mm thread length bolt and a 32mm gear. I added a little super glue to make sure these parts were locked together.

2 Washers were added for spacing so that the shaft gear aligns with the servo gear. Now thread the bolt along with gear & washers through the gear assembly piece.

3 next add the 60mm bearing

4 add a washer and small split ring who's diameter is smaller than the outside rim of the bearing assembly

5 Loosely hand tighten a nut

6 Add a split washer

Drill a hole in the centre of one end of the aluminium cylinder . Tap this hole with a 1/4" 20 tap (drill size matches the tap). Marry the reverse end of the cylinder to the gear assembly piece as shown in the picture. Locate two predrilled holes in the assembly & mark through to the cylinder end. Drill and tap these two holes (I used an M4 tap). Next locate the screws and tighten.


Finally Mount the round servo attachment onto the servo shaft. Attach a servo motor to the gear assist assembly . Screw the gear shown in orange here onto the round servo attachment using small self tapping screws.

Step 7: 3 Servo PCB Wiring & Fixing Pt 1

"Prepare the Servo motor picaxe controller PCB"

Noise generated by the servo's has been identified as a problem that affects picaxe timing. This can be minimised by adding suppression capacitors across the power lines of the pcb. So, solder 100nF capacitors across the power supply to the picaxe (on the reverse, solder side of the pcb)

Also, solder the other capacitors across the power lines of the servos. Refer to the attached pic & be careful not to create any short circuits here.

Step 8: 3 Servo PCB Wiring & Fixing Pt 2

"Solder the USB cable to the servo controller pcb"

If your using CHDK to trigger the shutter on your camera automatically, you'll need to cut a standard USB to mini USB cable to approx 25 cm in length (from the mini usb connector which is the end you'll use). Strip a small length of the outer sleeve, exposing the inner wires. Trim all but the red and black wires & strip the ends of these to copper

The red & black wires need to be soldered to two pins of the servo connectors as shown in the picture.

IT IS VERY IMPORTANT TO GET THE POLARITY RIGHT AS THERE IS A POTENTIAL TO BREAK YOUR CAMERA IF YOU GET THEM THE WRONG WAY ROUND. DO THIS AT YOUR OWN RISK.

Another important thing to check is the voltage for your particular canon camera used for remote triggering. I'm using a Canon G9 which seems fine on the 5V that the servo board provides. Check http://chdk.wikia.com/wiki/CameraFeatures for the trigger voltage for your camera model. Also I urge you to check this voltage and polarity before connecting your camera with a multimeter.

nb As an alternative to remote shuttering using the camera's mini usb connector, you can mount a servo on the shutter post provided with the rig. I've not tested this method but should work fine.

Step 9: 4 Final Assembly Steps

Attach assembled gear bearing & upper rig

The gear assembly and upper rig are attached by the shaft screw. This is located in the hole you drilled in the centre of the base of the outer cradle of the rig. Screw a nut to secure. The next step will take a little trial & error and is easier in practise than to describe.

You'll need two spanners for this. Tighten the two nuts to fix to the outer cradle firmly. Adjust the position of the lower of the two nuts so that not too much force is applied to the bearing (servo then cannot move). Conversely, if too slack the camera assembly will wobble.

Attach two pcb mounting posts on the outside cradle of the upper rig & mount the servo controller pcb, holes are already pre drilled for you.

Attach the 6V battery holder comlete with AA rechargable cells using tie clips as shown.

Step 10: 5 Programming the Picaxe

A overview of picaxe can be found at http://www.rev-ed.co.uk/picaxe/

Basically download the programming editor found at this link and connect up the serial cable (if no serial socket on your pc use a serial to usb convertor)

Copy & paste the code below to programme your picaxe:

nb the latest code is version 0.2, take the appropriate code for your canon firmware sdm or chk

'*** Panograph by Waldy 0.2 for sdm
'*** Program constants
symbol top = 175
symbol bottom =250
symbol left = 180
symbol right = 100
symbol vstep = 25
symbol hstep = 20
symbol servo_delay = 1000
symbol camera_steady_delay = 2000
symbol camera_ready_delay = 2000
main:
GOSUB Init
for b2 = top to bottom step vstep
for b1 = right to left step hstep
servo 1,b1
pause servo_delay
GOSUB take_picture
pause camera_ready_delay
next b1
servo 2,b2
pause servo_delay
next b2
end

take_picture:
high 4
pause 30
low 4
return

Init:
servo 2,top
pause servo_delay
SERVO 1,right
pause servo_delay
low 4
return

'*** Panograph 0.2 by Waldy for chdk
'*** Program constants
symbol top = 175
symbol bottom =250
symbol left = 180
symbol right = 100
symbol vstep = 25
symbol hstep = 20
symbol servo_delay = 2000
symbol camera_steady_delay = 4000
symbol camera_ready_delay = 2000
main:
GOSUB Init
for b2 = top to bottom step vstep
for b1 = right to left step hstep
servo 1,b1
pause servo_delay
GOSUB take_picture
pause camera_ready_delay
next b1
servo 2,b2
pause servo_delay
next b2
end

take_picture:
low 4
pause 30
high 4
pause 1000
low 4
pause 1000
high 4
return

Init:
servo 2,top
pause servo_delay
SERVO 1,right
pause servo_delay
high 4
'GOSUB take_picture 'dummy pic
return

*****Panograph controller v0.1 for sdm
** Program constants
' Delay to slow down servo motion (30ms default)
symbol servo_delay = 60 'recommended delay between servo movements
symbol top = 160 'max y position
symbol bottom =220 'min y position
symbol left = 180 'min x position
symbol right = 100 'max x position
symbol vstep = 20 'vertical increments
symbol hstep = 20 'horizontal increments
symbol pic_delay = 100
symbol camera_steady_delay = 4000 'delay to steady camera after movement

main:
GOSUB Init
for b2 = top to bottom step vstep
for b1 = right to left step hstep
servo 1,b1
pause servo_delay
GOSUB take_picture
pause camera_steady_delay
next b1
servo 2,b2
pause servo_delay
next b2
end

take_picture:
high 4
pause 30
low 4
return

Init:
servo 2,top
low 4
return

Step 11: 5 Load CHDK on Your Camera

Check http://chdk.wikia.com/wiki/CHDK_in_Brief for a summary of CHDK.

Currently only a variant of CHDK called SDM works with the rig. This can be downloaded from
http://stereo.jpn.org/eng/sdm/index.htm

"notes"

Copy SDM to your camera's SD card.
You'll need to make your SD card bootable.
Enable remote shooting from SDM menu

Step 12: 6 Calibration

Although I haven't done this accurately, the results are quite favourable. Servo rotation is limited to about 180 deg rotation. This is important in terms of horizontal rotation as the servo wire will physically limit the rig servo rotation if not carefully positioned. With the rig assembled, check the horizontal extreme position of the the rig by manually rotating the upper rig. If the servo cable snags, manually adjust the rig position with respect to the bearing assembly so the cable doesn't snag at full travel.

With 4 vertical moves, I adjusted the other servo/ rig arm position by trial and error so that the camera line of sight is symmetrical wrt the horizon

Step 13: Results and Further Development

"Results"

I've posted a handful of panorama's created by this rig on a very recent holiday in north wales. I was more in the business of enjoying my holiday than experimenting with the rig. However, hope you enjoy the results http://www.wizfamily.co.uk/album/panorama

nb you'll need a HDView addon to view these images. If using firefox, download the addon, close firefox, run the downloaded file before restarting firefox.

Here the rig was set to take 5 pictures in the horizontal & 4 in the vertical. If the rig code was set to step much finer & the camera is set to a greater zoom setting, the result will be much finer (more detailed)

"Further Development"

Probably the most pressing is to do more work to eliminate the electrical noise generated by the servo motors as previously mentioned. I tried to introduce a 'camera steady' pause after each move step, which did not work out.

I've suggested on CHDK forum for the SDM firmware directly interact with the rig eg set panorama extreme positions. (At the moment this is fixed in code) Keep your eyes peeled.

Improve/ replace gear bearing mechanism.

Comments

author
jporter27 made it! (author)2013-10-29

If I wanted to mod this so the frame could hold a DSLR, would I need a larger frame or would the one in the description do?

Also, as the weight of a dslr/lens is greater than the camera in the example, would the server motors need to be stronger?

author
nix78 made it! (author)2010-03-16

 That's not a stepper motor, that's a servo, I believe. 

author
VadimS made it! (author)VadimS2011-03-31

You would be correct.

author
shmootz made it! (author)2011-01-17

Thanks for the instructable. Just wondering, does this need to be done with a Canon? I have a Nikon d40x which I would like to use with this... Thanks.

author
waldy made it! (author)waldy2011-01-18

Hi smootz, you can use a Nikon, however you'll need an extra servo with an arm to trigger the shutter manually at each position. I have used the canon firmware alternative called CHDK which allows electronic shutter release via the usb port
regards Waldy

author
nix78 made it! (author)2010-03-16

It is also worth noting that on should adjust the position of the camera in the "upper rig" (or tilt frame) so that the nodal point of the camera is as near as possible to the intersection of the horizontal and vertical rotational axises. This way, one could minimize the parallax error.
The gear ratios could be simply 1:1 for the horizontal axis and 2:1 for the vertical, because most servos can do +-90 degrees rotation, and the torque should be enough to hold a compact digital cam (not DSLRs, of course).

(Pardon my English, it's only my second language, and I'm also a bit excited, because I just won an auction for a camera for a similar project of mine. :) )

author
waldy made it! (author)waldy2010-03-16

 Cool,  let us know how you get on with your project

author
boobathi2008 made it! (author)2009-09-19

i need some information about robotic method of work this information help for impliment in human body ok

author
waldy made it! (author)waldy2009-09-19

Hi, what info do you need that hasn't been provided? regards W.

author
Maggy160 made it! (author)2009-08-21

Waldy has had a discusion on http://www.picaxeforum.co.uk/showthread.php?t=12754 about material and software improvements. Waldy, it would be very much appreciated by those who want to build this panobot if you could give us an update about the code you're using now as well as pehaps other choice of servo's?

author
waldy made it! (author)waldy2009-08-30

Hi Maggy, apologies for the delayed reply. One key thing I learned from the picaxe forum ws that once the servo command is issued, the code moves on immediately without waiting for the servo to finish moving. This obviously caused timing problems in my original code. I've posted the new code in step 10. with appropriate delays inserted which I hope I've named sensibly. As for the quality of the servo's, the listed servo works well for horizontal movement as this is close to the center of gravity of the camera. The vertical movement servo is not however, and depending on the weight of the camera may cause the servo to twitch whilst not activated. I expect a higher quality servo should solve that, or even , as suggested in the picaxe forum, a light spring to take some tension Do let us know how you all get on with this, perhaps post some pics best regards Waldy

author
jaredarm made it! (author)2009-06-24

That is too weird! I recently got into panoramas and the whole 300 degree stereographics and little planets. And then i was also recently introduced to Max/Msp/Jitter and I thought, hey wouldn't it be cool to build an automatic panorama shooter.... HAHA! I really wanna build this now!

author
pitty made it! (author)2009-06-15

Great Instructable, I think I am going to build one with a few modifications for my camera. Would you be able to provide a longer description of what each of the symbol commands in the program represent in relation to the position of the rig, and the what the 2 delays are for. Thanks

author
thepelton made it! (author)thepelton2009-06-22

Delays would make it possible for a person to set up the panorama camera, and then sit down in the picture area. Here I am at the Grand Canyon!

author
lucastro made it! (author)2009-06-22

I've just recently discovered the wonders possible with CHDK.. I was making a timelapse the other night and thought it would be awesome to have a device just like this, only to achieve a pseudo 'handheld' camera effect. was thinking maybe film a short piece, motion track it somehow, slow it down accordingly during the time lapse. Nice Instructable.. could you control the mount via the camera usb.. ie write the control parameters into the script? oo the motion tracking possibilities! Sorry you've got me all excited.

author
waldy made it! (author)waldy2009-06-22

Hi, I'm in early discussions with a chap on the chdk forum about just the very same thing, communication between the camera & the rig & vice-versa. it will involve using the camera blue led & the usb port. You're right, once the comms is in place, scripting to your equirements becomes possible. watch this space for developments

author
shadowman2 made it! (author)2009-06-22

The G9 rulez (i have it)

author
joejoerowley made it! (author)2009-06-19

Very Cool!

author
waldy made it! (author)2009-06-16

Thanks, I've added comments to the code to describe each variable (symbol).(Do ask if this needs clarification) As for the two delays, the first one is just a recommended delay between servo movements. For the second delay, I had hoped to introduce a delay between moving the camera and taking a shot. What I didn't bank on was the servo's introducing noise in the picaxe circuitry, so camera movement & delay was unpredictable in testing. The only way to stabilise this was to add the camera steady delay after the picture was taken. I'll work on his & post on the picaxe forum to hopefully improve upon this. regards Waldy

author
pitty made it! (author)pitty2009-06-18

Thanks Waldy I have started ordering my bits to make one of these. I will have to adapt it a bit as I am using an SLR, but I know I can make it work.

author
jj37 made it! (author)2009-06-16

I always wanted on of these and by the way nice pics. 4.5 stars and a big THANKS

About This Instructable

54,042views

113favorites

License:

More by waldy:IOT Homebrew Bubble Catcher Part 2Homebrew Bubble Catcher Part 1 of 3Camera Panorama robot head (panograph)
Add instructable to: