October
2000, Issue 123
Navigating
With GPS
WAYPOINT
NAVIGATION
Waypoint
navigation is based on great circle navigation. Great
circle navigation is general and good for planes, boats,
and cars. Waypoint navigation systems navigate via latitude
and longitude pairs. The navigation computer accesses
a list of latitude/longitude pairs and calculates the
distance and bearing from one point to another. Information
presented is usually the current distance and bearing
from your present position to the next waypoint. Often,
a dynamic directional pointer is displayed, which you
follow to the next waypoint.
Before
navigating, the data from the GPS receiver must be converted
to a form acceptable to the great circle navigation
algorithms (i.e., the distance and bearing formulae).
First and foremost, all of the data must be in radians.
This seems straightforward, but theres a complication.
The latitude and longitude data emitted by most receivers
is in a form that cannot be directly converted to radians.
So, an intermediate latitude and longitude conversion
sequence must take place.
All
NMEA data is emitted as ASCII data. Latitude and longitude
data received from a GPS receiver in NMEA-0183 format
is in units ddmm.mmmm, where dd equals degrees, mm
equals minutes, and .mmmm is decimal minutes.
These units are not appropriate for the distance and
course calculations; they must be converted to degrees
and decimal degrees, then to radians.
The
first step is converting the latitude and longitude
data from the form ddmm.mmmm to dd.dddd. This is a straightforward
algorithm, but it still takes a substantial amount of
code. To determine the algorithm, first separate and
save dd from the incoming latitude and longitude string.
Then, divide mm.mmmm by 60, resulting in an exponent
of zero and a new mantissa, 0.dddd. Third, add the saved
dd to the result, yielding dd.dddd.
After
you finish converting both latitude and longitude, radian
conversion is possible. The formula to convert from
dd.mmmm to radians is:

After
performing the distance and bearing calculations, the
data needs to be converted back to dd.mm.mmmm. This
is done by following the formula degrees = radians ×
57.2957795. To convert back to the form ddmm.mmmm, save
dd, multiply .dddd by 60, and add the exponent to the
result, yielding mm.mmmm. Then concatenate the saved
dd, resulting in ddmm.mmmm.
That
takes care of the latitude and longitude conversions.
Now, you can tackle the knots and nautical miles (NM)
conversions. All speed and distance data contained in
NMEA messages is in terms of knots and nautical miles.
One NM corresponds to the traversal of 1 s of arc. One
knot is 1 NMph. So, if youre traveling at
five knots (5 NMph), youll traverse 5 s of arc
in 1 h.
Now,
convert knots to miles per hour and nautical miles to
statute (land) miles (see Table 2). Remember that the
output of the navigation calculations is in radians.
The conversion to nautical miles is NM = radians × 3437.7387.
Next, you can convert nautical miles to land miles (MI)
using MI = NM × 1.150779. Converting from land miles
to feet (FT), the formula is FT = MI × 5280.
| Ddmm.mmmm to dd.dddd |
Separate and save dd from the incoming
latitude and longitude
Divide mm.mmmm by 60, yielding 0.dddd
Add the saved dd to 0.dddd, yielding dd.dddd |
| dd.dddd to radians |
Radians = dd.dddd/57.2957795 |
| Radians to dd.dddd (degrees) |
Degrees = radians × 57.2957795 |
| Radians to nautical miles (NM) |
NM = radians × 3437.7387 |
| NM to statute (land) miles (MI) |
MI = NM × 1.150779 |
| MI to feet (FT) |
FT = MI × 5280 |