Introduction

Features/sources

CelestNav is a full-featured celestial navigation solution for the PalmOS® family of handheld computers. It includes a perpetual nautical almanac for the Sun, navigational planets, and navigational stars, as well as an electronic version of H.O. 229.

CelestNav guides you through the steps of computing a celestial fix. It records your sextant observations with sight times; applies the appropriate corrections for height of eye, atmospheric refraction, backsights, and sextant errors; combines multiple sights into a celestial fix; computes your position automatically; and maintains a dead-reckoning position from your last known fix.

CelestNav had its start on a 3500 mile tall ship voyage. In 1998 I sailed on Søren Larsen from Vanuatu to New Caledonia, then to Sydney, and on to Auckland. I spent much of the trip practicing with my sextant, and found that the most frustrating part was the long delay between shooting my sight and finding out what the answer should have been--calculating by hand on paper just took too long. CelestNav is intended to take the drudgery out of celestial navigation and to encourage sailors everywhere to stay current in this important skill.

Requirements

CelestNav runs on any PalmOS handheld with version 3.0 or higher of the operating system. This includes the entire Palm III/V/VII families, Visors, and Symbol, TRG, and IBM units.

Learning celestial navigation

CelestNav is not designed to teach you how to navigate. We suggest you take a class from a qualified instructor in your area.

Reference books, nautical almanacs, sight tables, and tutorials for celestial navigation are available for purchase at the Mobile Geographics web store, http://www.mobilegeographics.com/navbooks.html. The prudent mariner will not rely on electronic devices. Have the books on board, and know how to use them.

Installation

Installation is easy. Two files are required. The first is CelestNav.prc, the actual program. The second is MathLib.prc, a library written by Rick Huebner. MathLib.prc is used by many PalmOS add-on applications; you might already have installed it. If MathLib.prc is already installed, there is no need to install it again.

Drag CelestNav.prc, and (if necessary) MathLib.prc into the "Install Handheld Files" or "Install Files" window of your Palm Desktop Software. Then perform a HotSync operation to transfer the files from your desktop computer to your handheld.

After the HotSync, you're ready to go. Tap the CelestNav icon on your handheld to start the program.

A guided tour of CelestNav

Now we'll go through the different parts of CelestNav, and see it compute a fix. We'll use example 5-3 taken from Leonard Gray's excellent book One Hundred Problems in Celestial Navigation, available for purchase from the Mobile Geographics web store, http://www.mobilegeographics.com/navbooks.html.

Setup

The first time you run CelestNav, you'll see the Status Page.

At the beginning of a voyage, and periodically through the voyage, you should recheck two configuration settings.

Time zone

Celestial navigation depends on knowing the time quite exactly. You need to tell CelestNav exactly what time it is. Tap the "time" button in the Status Page to switch to the Handheld Clock page, or choose "Time" from the "Setup"menu.

Device time, at the top of the page, is the time shown on your handheld's internal clock. You can change that with the Prefs program included on your handheld. CelestNav does not modify your handheld's internal clock. CelestNav assumes that your handheld's clock is set to approximate ship's time or local time.

All clocks gain or lose time, and your handheld's clock is no exception. If your handheld has drifted a few seconds fast or slow, enter that as a "watch error". Tap the "Fast" or "Slow" pushbutton, and enter the watch error in seconds. You will see your "Local time" updated immediately.

Finally, you need to tell CelestNav what time zone you are in, relative to UTC (sometimes called by its old name GMT). Enter the difference between your local time and UTC, expressed in minutes. Tap the "-" pushbutton if you are east of Greenwich, or the "+" if you are west of Greenwich. For the east coast of the USA, during the winter (not observing daylight savings time), enter "300" minutes and tap the "+" pushbutton. CelestNav will display the computed UTC time, as well as the longitude that corresponds to the UTC offset that you entered.

Height of eye

When you make a sextant observation, you must know how far above sea level you were. A difference of a few feet can make a large difference in your computed location.

CelestNav lets you store multiple observing locations. You can edit these by choosing "Observer height of eye" from the "Setup" menu. You might just need one location. But if you sometimes shoot from the bridge wing, sometimes from the signal bridge, and sometimes from the flight deck, or if you sail on more than one boat, it can be handy to have multiple locations defined.

To create a new location, tap the "New" button. Enter a short text description, and then the height of eye. Tap "Use this location" to tell CelestNav that this is where you are now; CelestNav will use that height of eye for future sextant sights, but will not change existing sights.

To delete the currently-visible observation location, use the Delete entry from the Observer menu. If there are sextant sights in the sight database that were made from this location, you will not be able to delete it.

For practice, create a new entry. Enter "Leonard Gray chap 5" for the description, and 2.44 meters (8 feet) as the height of eye. Tap "Use this location". Now tap the "Status" button to return to the Status Page.

Shooting a star

Now we're ready to enter some sextant observations. Tap the "New sight" button on the status page.

Index error

Index error is the error in your sextant reading. You can determine your own sextant's index error by observing the horizon. When the horizon is lined up with itself, your sextant should read 0.0. The actual reading of your sextant is the index error.

For this example we will use an index error of 1.0'. Tap the selector box next to "Index error:", and you'll bring up CelestNav's angle entry form.

You can use the angle entry form to enter angles as decimal degrees (36.2341°), degrees and decimal minutes (36° 14.043'), or degrees, minutes, and seconds (36° 14' 3"). Tap the "DDD", "DMM", or "DMS" pushbutton to change modes.

Use either the numeric buttons or Graffiti to enter the numeric values in the proper fields. Use the "° ' "" button to cycle through the degrees, minutes, and seconds fields. The backspace button (left arrow) deletes one character at a time. The "000" button truncates the current field and sets all fields to the right equal to zero1; it's handy for quickly turning 36° 14' 3" into exactly 36°. The Revert button restores the value that you had when you started, but leaves you in the form. "Cancel" restores the original value and exits. "Done" saves your changes and exits.

You will always see a pair of pushbuttons to change the sign of the angle. They will be "-" and "+" for angles and bearings, "W" and "E" for longitudes, or "N" and "S" for latitudes.

Enter 0° 1.0' for the index error, and then tap "Done".

Once you enter an index error, it will persist and be used for all future sights until you enter a new index error. Check your index error each time you use your sextant.

Entering observations

We will go, step-by-step, through one entry. We observed the star Regulus on December 18, 1993 at 17:20:35 UTC, azimuth 007°, sextant reading 37°34.3'.

Timing the sight

When you use CelestNav at sea, you'll want to let your handheld be your stopwatch. Suppose you're working alone, and that it takes you 3 seconds to put down your sextant and pick up your handheld after making an observation. Tap the "delay" popup trigger (just to the left of the "Now" button. Choose "3 second delay". You'll make your observation, say to yourself "now", and count "thousand-one, thousand-two, thousand-three". As you say "three", tap the "Now" button. When you tap the "Now" button, CelestNav will record a time that was 3 seconds in the past.

If you have an assistant, choose "No delay" and have your assistant tap "Now" when you say (out loud!) "now!".

When you use CelestNav to practice, you will be entering times manually. For this example, the sight was made at 17:20:35 UTC on December 18, 1993. Tap the time selector (just above the "delay" trigger) and you'll bring up the Date and Time Entry screen.

Tap the "Date" selector trigger to bring up the usual PalmOS date selector. Use it to enter the date of your observation (December 18, 1993).

Tap each part of the time in turn to set hours, minutes, and seconds. Tap the up and down arrows to adjust the values. The "00..." button zeros the minutes and seconds; the "00" button zeros only the seconds. "Now" sets the date and time to the current date and time. "Revert", "Cancel", and "Done" work as they did in the Angle Entry Screen. Enter 17:20:35 for the time, and tap "Done".

Where in the sky?

Tap the "Sextant" selector trigger to bring up another angle entry form, this one for the sextant reading. Enter 37°34.3' for the sextant reading.

You may, if you wish, enter an observed azimuth value. This information is not used currently, but a future release of CelestNav will allow you to match azimuth and height of an unknown body with the nautical almanac values so that you can identify the body. To enter an azimuth, tap the "Azimuth" checkbox and then enter a value into the selector trigger that appears. For this body, use 007°for the azimuth.

Which body?

There are two popup lists that you will use to enter the name of a celestial body. The first one is always visible, just below the "Azimuth" checkbox. Tap it, and choose "Selected star:", since Regulus is a star. You would use just this popup if you had taken a sight of a planet or the sun.

When you choose "Selected star:" from the upper popup, the lower one appears. It contains only the names of stars. Tap it, and choose "Regulus".

Sextant sight variations

Tap the "Extras" button to see the special cases that CelestNav can handle.

When practicing with problems from a book, you might have occasion to enter samples that already have all sextant corrections made, or that have already corrected for dip/height of eye. Check those items on the form if they apply.

A backsight is a sextant observation made to the opposite horizon. Turn your back on the body, and shoot it over your shoulder (this is useful if you can't see the horizon below the body itself). Check "backsight" if you made your observation this way.

CelestNav assumes standard atmospheric conditions of 10° Celsius, 1010 millibars. If you have observed other conditions, enter those here for a more accurate correction.

A "noon/meridian passage" sight is made when a celestial body (usually the Sun) reaches its highest point in the sky. This sight gives you a latitude value only, but does not require accurate timekeeping. At present CelestNav allows you to record that a sight was made at local apparent noon, but still treats the sight as a timed sight.

Adding it all up

From the "Sights" menu, choose "Show corrections". You'll see an overview of all of the steps CelestNav takes to adjust your sextant reading to a corrected height above horizon.

Knowing where to look

Tap the "Find" button to switch to the "Almanac data" page. In the upper left corner, enter your dead-reckoning position using the angle entry screen. In this example your DR is 40°17' South, 158°06.0' East. CelestNav shows you the predicted azimuth and elevation of Regulus, as well as the sidereal hour angle, declination, local hour angle, and Greenwich hour angle of Regulus and of Aries.

Tap the "Sight edit" button to enter the rest of the example.

The rest of the round

Tap "New" on the "Sextant sight" page to create a new sight entry. This one is for the star Spica, observed December 18, 1993 at 17:22:04 UTC, with a sextant reading of 34°25.8'.

Here are the sextant observations you made (including the first two, which we have already entered). Create new entries for the rest of them.

December 18, 1993 Celestial Observations
Body GMT Hs (sextant reading)
Regulus 17:20:35 37°34.3'
Spica 17:22:04 34°25.8'
Procyon 17:23:44 35°31.2'
Canops 17:25:16 53°09.9'
Jupiter 17:26:50 25°42.5'
Sirius 17:29:01 42°46.9'

Note that Jupiter's entry is a bit different, since it is a planet and not a star.

Now tap the "Sights" button to see all of your sextant sights.

This page lists date and time of observation, sextant reading in degrees and tenths, and the name of the body. The most recent fix you entered (Sirius, at 17:29:01) should be highlighted. If not, tap its entry once to highlight it. Then tap the "Build fix" button.

Building a fix

AP, course/speed

In this example, the last fix we had was at 0950 on December 18, 1993, at 40°17' South, 158°06' East. Since then we have been on course 090° true, at a speed of 7.5 knots.

Enter the last known position as "AP/DR", using the two Angle Entry Forms that will pop up when you tap the selector triggers. Enter the time of that fix as "time of DR", using a Date and Time Entry form. Enter the speed to the left of "knots" as a normal PalmOS field; use Graffiti for this entry. Enter the course in the lower right using an Angle Entry Form.

Time of fix

Most of the time you'll want the time of the fix to be the time of the last celestial observation. Check the "(auto) time" box for this. Uncheck it if you want to set the time of fix manually; use the selector trigger next to "(auto) time"to do so.

Adding sights

The last sextant sight you entered has its box checked. Check the boxes next to each of the other 5 new celestial observations. As you do this, you'll see a pause as CelestNav computes the nautical almanac information for the sight. Your updated fix is displayed at the top of the screen. An "A" to the left of a sight means that the almanac information has been computed and saved.

The final answer

When all 6 celestial observations have been added to the fix, CelestNav computes your position at 17:29, December 18, 1993 as S 40°17.4' E 159°16.5'.

Starting a DR

At sea, you can use the fix you just computed as the basis for a continuously updated DR position. Choose "Start DR"from the Fixes menu. Your DR position is displayed on the Status Page, as long as the time of your DR is fairly recent. To test this feature using our example, you'll have to set your handheld's clock back to December 1993.

Tap "Celestial fixes" from the Status Page, and you'll see your newly-created fix in the database.

Sight reduction/HO 229

CelestNav includes a page which performs the same calculations that are tabulated in Publication H.O. 229. From the "Almanac data" page, tap the "Sight reduc" button, or from anywhere choose "Sight reduction table" from the "Nav" menu.

An Example

Switch to the "Almanac data" page.

At 20:45:47 UTC, June 21 2000, your dead reckoning position is N 31°56.1', W 14°56.8'. Enter those values in the two DR fields.

You want to observe the star Antares. CelestNav's perpetual nautical almanac tells you that the uncorrected height should be 20°01.0'. Tap the "Sight reduc" button to switch to the HO229 page.

After making your observation and correcting for index error, dip, and atmospheric conditions, you calculate a height Ho of 20°19.4'. Enter that value for Ho.

Check the "Calc from GHA?" box to enter your GHA and have CelestNav compute your LHA. Antares's GHA and declination have been pre-entered for you from the Nautical Almanac page. Since your DR latitude is north and the star's declination is south, CelestNav displays "contrary". Your LHA, as computed by CelestNav, is 319°00.0'.

Check the "Round AP" box This will display an AP (assumed position) of W 15°26.1', N 32°00.0'. AP is rounded to give a whole integer latitude and a whole integer LHA.

CelestNav displays a value of 19°42.5' for Hc, and azimuth of 141°, with an intercept of 36.9 nautical miles "toward".

To plot this LOP on your paper chart, begin from the displayed AP position. Draw a line from your AP on bearing 141. At a point on that line 36.9 nm from the AP, place a dot, the intercept point. Draw a perpendicular to your first line (the azimuth line), through the intercept point. Your position was somewhere along that line.

Now turn to volume 3 of HO 229, page 85 (the page that lists LHA of 319, contrary latitude/declination names). Look under the column for latitude 32°. Interpolation between the values for declination 26 and 27 gives an Hc of 19°42.1', and both Z and azimuth of 141.4°.

How to register your demo version

CelestNav uses a registration code based on your HotSync name. You can find the HotSync name in the upper right corner of the screen in your Palm HotSync application, or in the upper left corner of CelestNav's "Register" page. Go to the "Register" page by choosing "Register" from the Setup menu.

Purchase CelestNav through PalmGearHQ or Handango. When you buy it, you will need to provide your HotSync name. You may also provide the RegCode, which appears in the middle of the screen. The RegCode is helpful if your name uses international characters; it is simply a different way of recording your HotSync name.

When you buy CelestNav, you will receive a temporary unlock key immediately, and a permanent key in 1 or 2 business days. The temporary key will work for 60 days. The permanent key will not expire.

Feel free to beam CelestNav to your friends. CelestNav will function as a demonstration version for 30 days, just as if they had downloaded CelestNav from a PalmOS software vendor.

Inner workings

CelestNav would not have been possible without the previous work of many people.

The algorithms for the nautical almanac calculations for the Sun and planets are taken from Jean Meeus's book Astronomical Algorithms. The star positions are given by a modified version of the NOVAS vector astrometry package, from the U.S. Naval Observatory.

The algorithms for sight reduction and fix computation come from the 2000 edition of the Nautical Almanac.

The project would have been a lost cause without Rick Huebner's MathLib.

CelestNav was developed on MacOS using the Metrowerks CodeWarrior development environment for PalmOS. It is written entirely in C.

Finally, a heartfelt thanks to everybody I sailed with on the Søren Larsen.


Mobile Geographics LLC <hal@mobilegeographics.com>
Last modified: Wed Aug 2 14:24:17 PDT 2000