Construction itself isn't too complex either ― a camera cradle with a motorized shutter pusher, a tilting mechanism underneath, resting on a powered turntable. Everything sits on a suspension. Since the functioning is rather self-explanatory, I won't bore you with that. Let's focus rather on a several points of interest that might be useful if you consider doing something similar. (Some are already mentioned in the video.)
To minimize the strain on motors and parts while tilting and turning, it's a good idea to position the axes directly below the camera's (or, camera's and cradle's together) center of gravity. Try to keep it more or less in the center of the structure, to make it as stable as possible. Also, it's a good idea to use the NXT smart brick for additional stability by attaching it somewhere near the bottom.
Even with well-balanced setup, it will require considerable force to tilt and turn the superstructure, so try not to do that with the axle that carries the axis (like a tyre on a car, for example), but offset, with the arms, pushrods, rack gears, or something similar. Gearboxes won't help much because the axles themselves will twist horribly under the strain of the camera weight, and plenty of gears will increase the slack between the gears, that in turn reduces precision.
After constructing the fifth consecutive unsuccessful "universal" SLR-type cradle, I gave up and set to build one adapted to my camera (Fujifilm S100fs). There are simply too many variations to cover enough camera models, especially with the motorized shutter, so build it for your camera and spare yourself some trouble. Don't forget building it so that the camera controls remain accessible as much as possible!
Building the motorized shutter is tricky. Many cameras will take a shot only if the button is pushed at certain angle. Force needs to be considered too, as too strong will deform or bend the cradle and throw the camera off target, and too weak will not be registered consistently. To avoid any breakages or similar troubles, I've resorted to springs: two of them, pushed about halfway, will produce just the required force. Of course, depending on your model, you will need to adjust the leverage, number of springs, angles, etc.
Although vice versa should work too, I decided to build the tilting mechanism on the turntable. Turntables can comfortably carry more weight, and they at least don't have to lift anything.
I'll be the first to admit that this component is probably unnecessary in 95% of cases and can easily be ignored. However, I've experienced that the rapid starts and stops of NXT motors, due to the amount of mass and torque on the structures, tend to displace the whole rig slightly if resting on a very slippery surface (such as the glass table). The offsets are initially negligible, but over a span of dozens of photos, they accumulate enough to throw the photos noticeably off target. Therefore, everything floats on a structure of eight springs. Not too elegant, but efficient. I guess it could be built as a detachable component as well.
In its essence, the software is primitive: turn horizontally, shoot, and repeat until finished with the row. Then tilt a bit and repeat everything until finished with all the rows. However, depending on the camera zoom, the angular width and height will vary considerably. You can simplify things by making a program specifically for a certain zoom and target size, or in a more advanced setting, enter the viewport and target size into the NXT and calculate the necessary X/Y increments accordingly. An even more advanced version could measure the zoom by some kind of a sensor (perhaps measuring the lens' length) and calculate the rest itself, but I didn't get that far, because I was kidnapped by the 8053 Mobile Crane.
All in all ― does the rig do the job? Yes, partially. It doesn't make the process any faster (anyone could manually do the same in half the time), but it spares you from the effort moving and memorizing what areas of the grid you've photographed and what are your horizon reference points. (Blah, blah...)