Tuesday, March 9, 2010

Reading NMEA data from the Garmin 76CSx

Knowing that the Garmin 76CSx is capable of outputting NMEA data, I needed to figure out how to obtain such data in a way that is easy for a microcontroller to process. The 76CSx has 2 ports on the back: a USB port, and a proprietary serial port. Without any modifications, ussing PuTTY to establish a connection via USB failed. The reason for this is USB is, although a serial connection, is not a true serial port. A workaround to this problem is to use a program from Garmin called Spanner. Spanner creates a virtual serial port from a USB port, and allows a terminal session to send/receive data over USB. Although Spanner is not officially supported by Garmin for use with the 76CSx, it worked perfectly and NMEA data instantly filled my terminal window. While this established that it was possible to read NMEA data from the unit, it does not meet my requirement of being able to read the data from a microcontroller as Spanner requires Windows to run. The obvious solution would be to try reading from Garmin's proprietary serial port, but the cable is $40! Before I spend any kind of money on a glorified (simplified actually, the Garmin connector is only 4 pins) RS232 cable, I wanted to make sure that I could get the data I needed from the serial port.

Using the diagram below, I attached the 76CSx to a logic analyzer.



The waveform I captured is below.

The way NMEA data is formatted dictates that each command should begin with a dollar sign followed by a name identifier that is specific to the type of device; thus, the first 3 characters of each message should have been "$GP" without the quotes. Translated form ASCII to binary, the expected result is "0010 0100 X 0100 0111 X 0101 0000 X" where "X" is a stop bit. If you take the time to analyze the output from the logic analyzer, it does not appear that I received the correct data at all. There may be something I don't know about this type of serial connection; for example, the data may be sent last bit first, or I my waveform may be from the middle of a command etc.

Since I was encouraged that SOME kind of data was being output, Matt and I decided to fashion a very crude Garmin -> RS232 cable (not anything close to a permanent solution, we literally held the wires with our fingers), and see what happened. The attempt was successful and once again, I saw a terminal window fill with, what appeared to be, valid NMEA data.
(Pictures soon to follow)

Knowing that we could now use the Garmin serial connection, I decided to make a more permanent Garmin -> RS232 cable. I found a website that will send you a custom made, injection molded, silicon connector for any Garmin model, as long as you promise to send them some form of compensation The average user sends a paypal payment of $10, but they will accept other amounts. (tangible goods are also accepted). I ordered 2 plugs and will document the construction of my cable when they arrive.

Thursday, February 25, 2010

Similar Project - SoundMap

http://www.theblackpalette.com/soundmap/?p=60#comment-374

Delaunay's TIN - Triangulated Irregular Network

I'm running into some problems with the mapping visualization software. I think we need to use a TIN algorithm. This page looks to be useful.


EDIT: The algorithm used on this page is O(N*N) and thus, for any reasonable amount of points (I'm trying to get 400 to work right now) the program takes a large amount of time to run.

UPDATE: I was generating my test data set with Z values randomly generated between 0-2^64 which is why it took so long. I reduced the Z range from 0-50 and the program generated a 3-D map of 400 points in under 5 seconds.



The code that I used.

Friday, February 19, 2010

NMEA 0183

NMEA 0183 (or NMEA for short) is a combined electrical and data specification for communication between marine electronic devices such as echo sounder, sonars, anemometer (wind speed and direction), gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined by, and is controlled by, the U.S.-based National Marine Electronics Association.


Link to the wikipedia article.
Arduino NMEA device driver library.

How to get VTK working in Eclipse

EDIT: These links seem to be down. This is bad.

Although I mentioned in this post that VTK was too complex and powerful for what we needed, I have decided that it might be a viable option after all. I was able to get it working in eclipse using the following process.

Thanks to the guys at http://dev.artenum.com/ for most of this information.

1. Download the latest Cassandra release from here.
2. Run the installer.
3. Open a project in eclipse
4. Add vtk.jar to your build path
  • right click on the root project
  • click 'properties'
  • click 'libraries'
  • click 'add external jar'
  • Add 'vtk.jar' which can be found in '\Cassandra\thirdpart\vtk5.0-32b\bin'
5. Edit your run configuration
  • click the drop-down arrow next to the green run button
  • click 'Run Configuration'
  • In the right hand pane, expand 'Java Application'
  • choose your project
  • click the 'environment' tab
  • click 'New' to create a new environment variable
  • name the variable 'PATH'
  • set its value to the absolute path (include drive letter etc...) of '\Cassandra\thirdpart\vtk5.0-32b\bin'
Everything should work now. Here is some sample code (also taken from http://dev.artenum.com)

Thanks again to http://dev.artenum.com. Original article.

Wednesday, February 17, 2010

Problem Statement - Final Draft

Problem Statement - The Santiago Project.docx
(Please download and open with Microsoft Word, Google Docs ruins the formatting.)

RESEARCH: Processing Libraries to Generate 3D Maps

  • SurfaceLib
    • Pros
      • Seems very powerful
      • Easy to apply textures to a 3D surface
    • Cons
      • Very complex
      • Spherical coordinates?
  • SuperPoint
    • Pros
      • Very easy to use, arguments consist of x,y,z,R,G,B,A
      • Renders very fast
    • Cons
      • Too simple
      • Cannot apply textures
  • Patchy
    • Pros
      • Powerful
      • Easy to apply textures
    • Cons
      • Somewhat of a learning curve

  • Briefly looked at VTK
    • Seemed EXTREMELY powerful (they boast that the program has over 1 million SLOC)
    • Seemed EXTREMELY complex
    • Little documentation