LEGO NXT  spherical panorama robot

So after my panoramas has started showing up on the net. i have been getting
quite a few emails requesting information on how i make them..
so i have decided to make a short writeup about it.. 

But Since this is a Lego Kit. and your camera is likely different than the one i used
i wont go into too much details.  as experimentation will be required.
but i suppose its a good starting point

my panorama system consists of several seperate parts.
The mechanical  LEGO robot (Stock LEGO Mindstorms kit)
Lego NXT brick running my Panorama Software
Canon IXUS SD1100is  running  CHDK Firmware
Custom NXT - CHDK USB  Remote cable


the robot hardware is made using only the legos included in the lego Mindstorms robotics kit.
and its a pretty straight forward build..
i put great efford into developing the construction and camera mount. so as to rotate the camera
about the nodal point. only to find out that "straight through the center of the camera" works fine
very little detectable parallax error.  so a much simpler mount was developed.

NXT - CHDK interface
i use the standard lego "light brick" to trigger the camera.
when the LED is "on"  the NXT ports pin 5 "DIGI0"  is set high (3.3v TTL level)

that may be enough to trigger a canon camera running CHDK, but not in case of the SD1100is
so the interface is a simple  3.3v to about 4.3v from the NXT brick TTL Level shifter.

the circuit Described here       microhack-lego-nxt-chdk-cable

as mentioned the NXT software use the standard lego "light brick" to trigger the camera in a "on / off" sequence that triggers the CHDK firmwares "remote" feature
after a fair bit of trail an error i came up with a sequence that works.  leaving enough delays to ensure that
the NXT and camera stay in sync.

The CHDK firmware is set up to accept REMOTE on the USB port. and ofcourse

make sure to force the ND filter in or out, and use manual shutter overrides
for consistent pictures.

NXT Software.

First version was based on the idea of shooting the whole 360 degrees at each elevation
but this makes for hard stiching of couds etc.   so version 2 is based on the idea of shooting
every elevation for each azimuth.  doing only one horisontal rotation.
this greatly speeds up the process. and makes stiching much easier.
Also a "pause" function could be added so its possible to wait for unwanted people to leave the scene

on startup there the software waits until the camera is attached. and the start button is pushed

before asking for the direction of rotation

software description

the NXT software manages the azimuth and elevation servos. and
triggers the CHDK Firmware when ready for a picture

 Quick wrap up.
#1 Take the PCMCIA card apart
#2 Trim the metal parts so they meet PCMCIA specs
#3 Cut the PCB as short as possible. (making enough room for the usb connectors)
#4 Desolder the USB and power connectors
#5 Cut, Saw, File and Sand  the connectors down so they fit in the thickness of the pcmcia card..
#6 Using Hotglue (Lots)  Make the whole thing fit together
#7 Solder the USB signal lines to the PCB  (Scrape the laquor off with a blade)
#8 As there is only 3.3v in PCCARD mode.  you have to solder the power lines to the power connector 
#9 Sit back, and enjoy your handy work.  Wondering why nobody sells 100% internal PCMCIA USB2 cards
    WITH! 5v in the plugs! 


To those with questions about the components, left on the PCB I cut off.. 
I think they where for a 3.3 to 5v boost converter  which was mostly unpopulated.

Anyway it took me about an hour or so, and it works like a charm. 
Although I still need to use the usb "powercord"  which sucks.
Next version / Or upgrade will include a 3.3 to 5v boost converter.. 
and i will use black instead of white USB Connectors