Vancouver <-> Calgary Timelapse Movie

(Project completed: 2010-10)

My first nontrivial digital camera was a Canon PowerShot A620, which I specifically chose because it's a highly hackable camera; it can be loaded with CHDK for portable customization, or controlled by a computer over USB by writing software using the Canon SDK.

It wasn't until a few years later that I finally got around to experimenting with it. I was planning a road trip from Vancouver to Calgary and back, and decided to try making a timelapse movie of the trip. I wasn't aware of CHDK at the time, so I applied for a license for the Canon SDK and wrote my own timelapse recording software based on this example. I extended it to also interface live with my GPS logger, which when connected via USB outputs a serial NMEA-182 text stream.

The idea was that while driving my laptop would be running this program and would automatically snap a frame on the camera every two seconds, and would also monitor the GPS stream in order to output a sidecar file for each image, with the GPS coordinates where that image was taken. I had plans to use the coordinates to overlay an animated map of the trip, but I ended up not doing that. The two seconds per frame was the maximum I could get the system to reliably dump to disk over the USB link, and it was also convenient because if I set the replay rate to 30FPS, the time scale would work out to an elegant 60:1, or one minute of video for one hour of realtime.

Here's what my setup looked like. I bought an old suitcase and added a wire shelf in it to which I strapped the laptop, to give it air circulation beneath. The rest of the suitcase had ample room left over for the power inverter and all the assorted cables. I put the suitcase on the passenger's seat and tied it down with a bungee cord, and used a GorillaPod to mount my camera on my rear view mirror post - the camera was hanging upside down, but that's easily corrected after the fact.

The camera and GPS logger as seen from outside my vehicle.

And as seen from inside. The camera is mounted on a quick-release shoe and is hanging upside-down from a GorillaPod wrapped around the center rear-view mirror post.

The laptop in its customized suitcase, on the passenger seat. With this setup I could just pull over and tweak the software as needed.

In practice there were a few problems with all this, but I learned a lot.

On the first day of the trip, I ran into some sort of file system limitation with Windows XP - my timelapse software would silently fail after writing about 2,000 files to the same directory. So I had to periodically pull over to stop the program and restart it with a new output directory. I was able to reduce the frequency of these stops by disabling my one-file-per-image GPS logging and instead just letting my logger accumulate a whole day's worth in one file internally. Unfortunately I didn't discover the problem until I had already missed over an hour's footage, and I didn't want to turn back and redo it. So there is a short gap in the first day's video.

Another problem that quickly became apparent was that my method of attaching the camera to my mirror post with a GorillaPod wasn't perfectly stable - sometimes when turning tightly or going over a bump, the camera would shift slightly. This meant that when producing the video I had to come up with a way of correcting for camera rotation by a different angle per frame rather than a constant angle for the whole video. That wasn't too hard, but it was extra work that I didn't anticipate.

After the trip, I spent quite a while producing the video. I had to select which frames to include (I didn't want viewers to be distracted by little side trips like gas station stops etc). I had to decide on the rotation angles for all the frames - I did this by inspection every few hundred frames or when I noticed a change. I had to go through and edit all the frames that showed a recognizable face or license plate, so as to protect peoples' privacy (perhaps not stricly necessary, but it felt like the right thing to do - and was also the most time-consuming).

And after it was done, I found out that 60:1 time scale is a bit too fast for a trip through the mountains; it gets really jerky in some places. Irritation at this is what led me to try CHDK for a later project.

Anyway, here are the videos as recompressed by YouTube. There is no sound; this was more an experiment than an attempt to produce something polished.

Vancouver to Calgary via the Trans-Canada and Coquihalla highways.

Calgary to Vancouver via the Crowsnest highway.

Although this project could have turned out a lot better, at least it did turn out and I learned a bunch from it. I have plans for a much more ambitious timelapse project in future.