Data collection using video camera (Contour GPS Helmet Camera)
- 1 Video Mapping with the ContourGPS Helmet Camera
- 1.1 Video Mapping Motivation
- 1.2 ContourGPS
- 1.2.1 Hardware
- 1.2.2 Software
- 1.2.3 Practical Issues
- 1.3 Mapping with the ContourGPS
- 1.4 Conclusion
Video Mapping with the ContourGPS Helmet Camera
THIS IS WORK IN PROGRESS
This is a short review of the ContourGPS with an emphasis on its application to video mapping for OSM.
In summary, while I have a number of caveats about the camera itself and the mapping work flow is rather sub optimal in its current state, the camera does enable rapid recording of details that with other methods would be far more time consuming.
Video Mapping Motivation
Now days I do most of my mapping on either a race bike or a MTB and on both, halting and restarting to take notes is simply a pain. It would be nice to be able to gather data with minimal interruption of my pace.
Second, while I do live just near the boundary of useful bing aerial imagery here, there are still a number of communities where we can trace roads and simply need a rapid method of gathering street names and access information. A further consideration is the fact that we will have to remap various small (and uninteresting) locations as soon as we reach / or for phase 5 of the ODBL conversion.
Video mapping has the potential to allow us to gather detailed information in an efficient and rapid manner, addressing all the above points.
As far as I know the ContourGPS is the only helmet-mountable all-in-one solution (GPS plus video) that is currently available (at least at consumer grade pricing point). One of our local retailers was offering the camera with a substantial rebate, so I took the opportunity to purchase one, realizing that this is rather early days for mapping use.
In the Box
- 2GB microSD card
- two flat surface mounts
- USB cable
- "google mount"
- lens cap
- instruction booklet
- FULL HD - 1080p 1920 x 1080 pixels 30 FPS
- TALL HD - 960p 1280 x 960 pixels 30 FPS
- ACTION HD - 720p 1280 x 720 pixels 60 FPS
- ORIGINAL HD - 720p1280 x 720 pixels 30 FPS
- 5MP STILL 2592 x 1944 pixels 1 photo per 3, 5, 10, 30, 60 seconds
The camera supports PAL frame rates as well (25/50 FPS).
While it leads to somewhat jerky video, for mapping purposes there is no reason not to use the FULL HD mode.
Two profiles can be preset in the camera and are selected via a switch under the back cover. The profiles include the GPS recording rate.
Photographs taken in the 5MP still mode contain standad GPS information and can directly be imported in to JOSM.
The camera uses an u-blox 6 GPS module according to u-blox PR material.
The GPS module can be turned off, or set to 1, 2 and 4 measurements per second. Contour does not guarantee flawless operation at the 4 point/s setting and doesn't provide it as a settable option in the configuration software.
Operating the Camera
Once it has been turned on, not such an easy proposition, see below, recording can be activated by a big sliding switch at the top of the camera. The switch is easy to operate with one hand and the camera will beep once when recording commences and twice when you stop.
GPS fix indication is by a green LED at the front of the camera (transitions from blinking to solid when the camera has a fix). The camera acquires a fix quite fast, but note that you will have to wait till it has the fix before you put your helmet on otherwise you won't be able to see the LED.
The cameras microSDHC card is accessible as a mass storage device via USB on Microsoft operating systems, and while I haven't tested it, there is no reason to assume that this wouldn't work with other systems. The videos are stored as QuickTime format .MOV files, and have the GPS information embedded in the data.
Contour supply a downloadable application, StoryTeller. StoryTeller provides
- basic configuration of the camera
- upload to the Contour website (not tested)
- display the recorded video with a separate window displaying a moving marker on a map
- export of the embedded GPS information
- update of the AGPS data on the camera
The map data is provided by google, which naturally causes a couple of issues when using StoryTeller in an OSM environment. Overall StoryTeller seems to be very, very unfinshed,
for example you can display a map of all the locations you have recorded videos at, but you can't actually select and play a movie based on this information, in fact you can't even find out the file name.
UPDATE: the current version of StoryTeller does allow you to select videos via the map page, making it substantially more useable.
Additionaly it is not possible to select or sort recordings by anything but by date.
The configuration data is stored in a text file on the microSDHC card and can be changed by a text editor if you can't or don't want to use StoryTeller. Changing the GPS recording to 4 times per second is only possible this way (not tested).
VLC will play the files without problems, but (naturally) will not display the GPS information.
StoryTeller outputs GPX files with additional information, that, at least in principle, could enable third party software (for example JOSM) to play back videos with the georeferenced frames.
Storyteller has two serious issues
- will manage maximum roughly 2'000 clips
- does not support batch export of the imbedded GPS information
Sample GPX Track Extract from Storyteller Export
<trk> <name>Track exported from ContourGPS camera movie: FILE0007-2.mov</name> <trkseg> <trkpt lat="47.416067" lon="8.311856"> <ele>425.9</ele> <speed>8.8</speed> <course>332.36</course> <magvar>0.00</magvar> <fix>none</fix> <sat>8</sat> <hdop>1.15000</hdop> <vdop>0.00000</vdop> <pdop>0.00000</pdop> <geoidheight>47.30000</geoidheight> <extensions> <mediatime>00:00:00.25</mediatime> <qtmediatimescale>90000</qtmediatimescale> <qtmediatimevalue>22500</qtmediatimevalue> <valid>1</valid> </extensions> </trkpt> <trkpt lat="47.416104" lon="8.311827"> <ele>425.9</ele> <speed>8.9</speed> <course>334.01</course> <magvar>0.00</magvar> <fix>none</fix> <sat>8</sat> <hdop>1.15000</hdop> <vdop>0.00000</vdop> <pdop>0.00000</pdop> <geoidheight>47.30000</geoidheight> <extensions> <mediatime>00:00:00.75</mediatime> <qtmediatimescale>90000</qtmediatimescale> <qtmediatimevalue>67500</qtmediatimevalue> <valid>1</valid> </extensions> </trkpt> </trkseg> </trk>
(the value for "fix" is naturally wrong)
The camera supports bluetooth connections and an app for iPad/iPhone exists. Funny enough this requires an extra piece of hardware that you have to purchase separately. An Android app has been announced that should work without the extra HW, but this isn't available currently.
The camera is powered by a removable rechargeable Lithium-Ion battery. A full charge over the USB connection takes 4 hours, external chargers may be faster but haven't been tested.
In my experience (1080P, HQ, GPS on) battery life is nearly exactly 2 hours. This matches the manufacturers specification, but does seem short. The run time doesn't seem to be impacted by turning recording on or off, so it would seem that video processing and GPS tracking is always active as long as the device is powered up.
Contour supply a idle timer that shuts the camera down after a configurable time that could greatly extend the time you could be on the road with one battery charge,
however due to the power switch issue, this option is useless.
The only realistic extension possibility is to take replacement batteries with you. The camera will shut down with three beeps when power gets low, so you will be alerted to when an exchange is necessary.
Nokia BL-5C batteries are compatible with the camera and can be purchased for about CHF25.
The camera sports two led laser diodes that in principle allow you to align the camera with the object/line of sight that you want to record. Alas turning the LEDs on is triggered (for a short time during power up, for 10 seconds or so on the fly), you guess, by the power button, and is naturally useless for this reason.
I've mounted the camera with the "google mount" and a couple of zip ties on a normal bicycle helmet, not particularly elegant but works. Contour provides a "vented helmet mount" as an accessory, however at least here it costs more than it's weight in gold.
The camera weighs 150g, which does tend to lead to an imbalance when the camera is mounted on one side of the helmet and can become quite uncomfortable after a while.
Batch Export of GPS Data
While it is possible to select multiple video files to extract and export the embedded GPS data, you still have to click through every single file and, if your export destination is and file type are not the standard ones, set these options for every single file you are exporting. The default file type is a CSV format file, with other words very sub optimal for OSM usage.
There is an alternative, third party, freeware program  that has a batch mode. However it currently doesn't output the contour extensions in GPX output.
Mplayer users may use next simple command to extract original NMEA track from MOV file:
mplayer -sid 0 -dumpsub -dumpfile $nmeafilename $movfilename
Data Card Size
The supplied 2 GB microSD card is too small to use for anything than testing, the camera excepts microSDHC cards up to 32GB, which seems to more than enough for any mapping use. 32GB will give you over three hours of recording at the highest resolution.
While Contour claim that the camera has a "water resistant aluminium shell" and this is actually probably true, they do not state any specific protection class. Since the plastic back cover doesn't have seals of any kind and electronics are directly exposed underneath, it is very unlikely that the camera would survive more than a few drops of rain. Not that it makes an awful lot of sense to go video mapping in the rain.
Countour does sell a submersible housing as an accessory.
Mapping with the ContourGPS
Starting a mapping ride doesn't really entail more than switching the camera on, waiting for a GPS lock, donning the helmet and pedalling off.
I have found that I can get lost in all the detail the camera will record, as a rule I try to keep focused on the planned task (for example following a specific bike route) and ignoring incidentally captured information.
GPS Track Quality
- yellow contourGPS
- orange Garmin Edge 305
- blue qstarz GPS 818X
The contourGPS seems to give tracks of similar quality than other modern high sensitivity receivers: good to very good performance when reception is good, questionable when reception is impaired. The ability to produce track points at a higher rate does seem to help a bit at higher speeds, but naturally leads to a less smooth track at lower velocity.
It seems feasible to use the contourGPS as second track source when mapping without aerial images, replacing in my case the qstarz 818X. In my experience up to now, position accuracy is any case good enough to correctly locate where the video images have been recorded.
As mentioned above due to the low frame rates in the higher resolution, we cannot expect very smooth recordings. More important is if we can actually decipher road signs, street names etc. from which distance in individual video frames.
Some good quality examples (all are slightly cropped to fit in the wiki upload size limit):
The ability to select the best frame is somewhat impacted by StoryTeller allowing only one second increments in its viewing mode. VLC however has a frame by frame mode and allows you to create single frame snapshots for further processing. Naturally to support an efficient workflow you should get reasonably close to signs with smaller lettering, making it easy to decipher in the video.
Original Mapping Workflow with Storyteller
My current workflow for a single mapping session where I'm mainly interested in sign post and access
- only record interesting bits (try to start the recoring a couple of seconds early)
- export GPX files from all videos
- load all GPX files plus one complete track (for example from the Edge 305) into JOSM
- sequentially play the videos in StoryTeller and enter the information from the video
Obviously this could be considerably improved by directly playing the videos from JOSM, similar to audio files. This shouldn't be all to difficult to implement given that a Java interface to VLC exists and the necessary information is included in the GPX tracks.
More examples from a real session, note that the two windows were displayed side by side on a dual screen set-up
Alternative Mapping Workflow
Because of the limitations mentioned above the videos can't be managed with Storyteller long term. I use an alternative system that is Linux based (no reason that it shoudn't work on the rest of the usual suspects).
- copy the .MOV files from the camera to a directory of the target system
- run a script on each of the files that does the following
- extract the embedded NMEA information from the video file with mov2nmea.py (http://code.google.com/p/mov2nmea/)
- convert the NMEA data to GPX format with gpsbabel (http://www.gpsbabel.org/)
- extract the start date and time from the resulting file with xmlstarlet (http://xmlstar.sourceforge.net/)
- rename the video and gpx files to the start date and time
- import the gpx tracks to a phpmygpx server (http://phpmygpx.tuxfamily.org/). The code has a couple of trivial fixes to allow playing of the associated video in the screens that display GPX tracks.
From a mappers perspective the following things are really easy to map with the ContourGPS
- access restrictions
- max speed and similar signing
- following bicycle routes
- bicycle lanes
For street names, at least for the typical Swiss signs, it doesn't work quite so good, mainly because in some cases this requires slowing down and getting closer to the sign.
--- power switch
-- weather protection
-- price of accessories
-- missing bulk GPX export
-- mapping work flow
- battery life
++ ease of use (once turned on)
++ GPS reception
++ video quality
- integrate with JOSM