Add to Google Reader or Homepage |
~ pjvenda / blog
$home . blog . photography

25 September 2007

My new toy: Globalsat DG-100 GPS Data Logger


Being a geek, I need my geek toys. My latest is a GPS Data Logger, that I bought to assist me in geotagging my photographs.

A GPS Data Logger is a portable device that periodically records geographical coordinates of its location, from a received GPS signal. The list of logged data points is meant to be dumped later to a computer.

These devices are used to track hiking or cycling paths, to help with wardriving, to track touristic walks or to help with geotagging photographies. The latter is my main purpose for the data logger I bought.

Globalsat DG-100:

The Globalsat DG-100 is a very nice small and affordable (low end) GPS data logger. According to the reviews and comparisons from GpsPassion, PocketGPSworld and from Richard Ackerman's blog, I chose this logger among others because of the following key features:

  • Time-based or distance-based periodic logging or GPS locations. The basic function of a GPS data logger;
  • On-demand recording of current location. In addition to periodic logging;
  • SiRFStar III chipset: sensitive enough to give me decent GPS signals in non-ideal conditions (cloudy weather, in-house, etc). This is a fundamental feature because without GPS signal, a data logger is no different from paper weight... but that's obvious;
  • Long battery life - reportedly up to 36 hours or continous usage;
  • USB interface;
  • Interface software allows extraction of the logged data into a number of file formats. This is another fundamental feature because although "Globalsat Data Logger PC Utility" is a windows-only tool, I intend to use the logged data on some other non-windows programs (like open source ones). This is actually irrelevant because I already found an open source and portable program that interfaces with the device and is able to extract data from it. Whoohoo!!;
Added value features:
  • Plug for an external GPS antenna;
  • 2 rechargeable AA batteries included. The USB connector charges them. It would be a shame if it did not...;
Workflow:
  1. Make sure that my camera's clock is correctly set;
  2. Walk around with my data logger while on photographic raids. Try to log the specific spots where I shoot pictures;
  3. Dump data into a GPX file;
  4. Dump my pictures into some folder;
  5. Use digikam with the gpssync plugin to match photos with GPS locations. Matching is made from timing information. The picture IMG_NNNN.JPG, shot at the time "hh:mm:ss" has the location obtained from the GPX log at the time equal or closest to "hh:mm:ss";
Linux Support:

By looking at the supplied software, it becomes apparent that the device communicates through a serial to USB line (Prolific PL-2303X USB-serial adapter). There is a driver in the Linux kernel tree for that USB-serial adapter called pl2303, so no problems expected regarding chatting with the device. The final piece of the puzzle is some program that knows the protocol to communicate with the DG-100.

After a quick research, I found that Linux offers quick and easy support for a large number of GPS devices and that there are many tools that easily interface with them to provide different functionalities, obviously related to GPS positioning.

gpsd does not work

The clever way to achieve this is by using a consistent TCP to GPS interface called gpsd. One one end, gpsd contains a number of drivers and parsers for the many different GPS devices it supports. On the other end, it serves requests to client applications from a TCP socket, using the help of an interface independent of the GPS device in use.

Clever, but does not support the DG-100 yet... The list of GPS devices supported by gpsd is big but as all such tools, not complete. Being an open source tool, gpsd is developed by contributors that give their own free time to improve it further. Hopefully support for the DG-100 will be included by a friendly contributor.

bug gpsbabel does... or will, soon:

gpsbabel aims to be a multi-platform universal translator between many GPS data formats. It is a different tool than gpsd, but incidentally, it also contains drivers and/or parsers for a number of devices. gpsbabel is used by several other tools to perform GPS data translations.
The current version of gpsbabel is 1.3.4, which does not include support for the DG-100 as well. But good news is that Robert Lipe commited code with initial support for Globalsat DG-100 on 1st September 2007. The code is copyrighted to Mirko Parthey and Robert Lipe and released under the GPL license. The driver is now in its revision 1.17 (2007-09-13) and is likely to be included in one of the next gpsbabel releases.

So, to use gpsbabel with support for my DG-100, I checked out the HEAD code and compiled it on my host. It compiled fine and I was able to pull the data records from the device into a file. Woohoo!

Just a quick guide. I already had the module pl2303 so as soon as I plugged in and turned on the device, the kernel reported its presence:

usb 6-1: new full speed USB device using ohci_hcd and address 2
usb 6-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 6-1:1.0: pl2303 converter detected
usb 6-1: pl2303 converter now attached to ttyUSB0
usbcore: registered new interface driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver


Udev politely created /dev/ttyUSB0 (serial port device file) automatically for me. Then all I need to do is:
  • gpsbabel -i dg-100,erase=0 -f /dev/ttyUSB0 -o gpx -F latest-dump.gpx
Pulls all the records from the data logger (reads from USB-serial device: -f /dev/ttyUSB0 in dg-100 format: -i dg-100) to a file called latest-dump.gpx, in GPX format.

Prefer KML instead of GPX? Fine:
  • gpsbabel -i dg-100,erase=0 -f /dev/ttyUSB0 -o kml -F latest-dump.kml
Or alternatively convert the file between GPX and KML:
  • gpsbabel -i gpx -f latest-dump.gpx -o kml -F latest-dump.kml
Dead simple!
(the used gpsbabel binary was, of course, result of a CVS HEAD checkout compilation done in 2007-09-22, because as I referred, the dg-100 driver has not yet been included in an official release)

Final words:

Although I have not tried any other data logger, I would seriously recommend the Globalsat DG-100 unit for everyone that would make use of a GPS data logger. It is in fact small, battery efficient, it has good signal levels even inside supermarkets, I can use it on Linux and it fits my purpose perfectly.

As one of my work mates usually says: "Brilliant stuff!"
Cheers, PJ.

9 comments:

rui covelo said...

If I understand correctly (as I don't know squat about GPS devices), that device only records current location and cannot be used to find paths, right? Can it be used to get back to a previously recorded coordinates?

Do you find it easy to carry around and log whenever you take a shot?

Also, I'm not sure I understand how you relate the picture with the coordinates recorded?

pjvenda said...

Hey!

The data logger records location coordinates only. Just look at its interface: 1 pressure button, 3 LEDs and one 3 position switch. It is not possible to find known coordinates with it in real-time.

Alternatively, with its interface software, you can plug it into a laptop and make it act like a real time navigator.
Although I am not sure how well it will behave. This is just an add-on feature - not what the device was made for.

It is small and easy to carry. Comes with a belt clip but works as well inside a pocket. If you want to log specific locations, just press the button (there is only one - it's hard to miss).

The geotagging mechanism is really very simple.
- Every logged set of coordinates comes with timing and speed information.
- Each picture shot also has timing information.
- By matching the time stored in the picture's metadata with the times of the logged locations dumped from the data logger, it becomes simple to figure where you were when you shot the picture.
Exact time matches will surely not be common, but it should be pretty easy to either find the closest coordinates at that time or interpolate a location according to the directly previous and next.

Cheers, thanks for the comment!

rick said...

FYI, this device is really worth its money, especially wrt/ accuracy and battery lifetime. The windows software however sucks. Several reviews point out a significant limitation at 95 way points per data set. I got so annoyed with this limitation that I wrote my own little tool to merge the data sets, see http://traveldump.googlepages.com/toolreviews-dg100datalogger.
Having solved that I really can recommend the DG-100.

pjvenda said...

Thanks for the comment rick!
Naturally, I still use the data logger and it keeps being a great piece of hardware.

As for the software that came with it... I don't even remember how it looked like. gpsbabel sorts things for me.

Cheers, PJ.

Riccardo said...

Hallo,
I'm trying to download the GPS track from my dg100 using GPSBabel on Ubuntu but it doesn't work (maybe because I'm new in Linux world). When I write commands you suggested, or also the one suggested in GPSBabel website, the list of all the options appear on the screen and I can't scroll up to the beginning just to see if an error was reported. Do you have any suggestion to me? I tried also on my eeepc with original os with the same result.

pjvenda said...

Hi Riccardo,

To page the help output you can use more or less. Like this:
"gpsbabel -h | less"
or
"gpsbabel -h 2>&1 | less"

The first thing you should check is the version of gpsbabel you're using. If it is 1.3.4, then it won't work.

The latest stable version of gpsbabel doesn't yet support the dg-100. That's why you need to use the 1.3.5 beta or checkout a copy of the code from their CVS repository and build it yourself (which may not even compile).

v1.3.5 beta can be found here: http://www.gpsbabel.org/downloads.html

Instructions to fetch a copy of the current source code in the repository are here: http://sourceforge.net/cvs/?group_id=58972

Having that sorted, you need to make sure your computer can talk to the device. Check that a serial device comes up in /dev (use dmesg before and after plugging it). If it doesn't, you need a serial to usb driver (pl2303 in this case).

Now use your beta or cvs copy of gpsbabel and try again. use -D 1 to increase verbosity of the output.

I keep using mine. On Mac OS X now, but still gpsbabel.

Cheers, PJ.

Riccardo said...

Thanks so much, I really didn't understand that the stable version don't support the dg100, with the beta version everything goes right.

Anonymous said...

Thanks for the useful info! I consider getting one but I am curious of a few things:
*can you adjust the sampling rate of the log?
*are speed and course logged?
*what is the discretisation? (e.g how many decimals on position do you get)
/paul

pjvenda said...

Hi there Paul,
- You can configure three different sampling rates - AFAIK you must use the supplied software (windows only). Then you've got a switch with 3 positions (A, B and C) which allows you to choose between the three rates.
- I am not sure right now if speed and course are logged, but those are easily interpolated by looking at datapoints and timestamps. I believe speed is, but I'm not so sure about course.
- I can check how many decimals you get, but I don't think that's an issue. It comes down to the sensibility of the GPS device. If it pin points your location with a Xm average error, than the coordinates' precision must reflect that. I assume someone thought of that. But I need to check.

On a final comment, I dumped this unit for a newer, more sensible, wireless, lighter and smaller Holux M-241. I was planning on doing another review post about it, but I haven't had the time to do that yet.

Thanks for the comment.
Cheers, PJ.