NX 0.5 now comes with "CelNav", a little program that aims to make celestial navigation on a small sailboat quick and painless. Specifically, it provides an easy way for sight reduction and fix calculation for multiple star/planet sights, taken in relatively quick succession. CelNav can be found under the "Navigation" category in the Manta Menu. CelNav is written in Python and the source code can be found under /opt/celnav. It uses PyEphem and Steve Moshier's AA to caluclate ephemeris data.
What follow is a bit of background and how-to. I'd welcome any comments, complaints, suggestions, ideas, ...
Traditional lore has it that to get a good fix from celestial sights you should have "Lines of Position" (LOPs) from at least 3, better 4 or more different stars and/or planets. While the crossing of 2 LOPs would already provide a fix, the argument for taking more sights has been that you can't be too sure of the accuracy of your measured sextant altitudes and therefore more is better (resulting in the infamous "cocked hat"). That never made much sense to me for two reasons:
(1) If the accuracy of my altitude measurement is questionable (as is certainly the case for me) then what does it help to just add "more garbage" to the pile? The traditional arguments goes on to say that you can identify outliers from plotting sights taken from many different stars. However, in many "cocked hat" examples correctly identifying the outlier sight(s) is far from obvious and picking your most likely position inside (and in some cases outside) the cocked hat ends up being mere guess work. (Disclaimer: This is obviously different if you're an expert navigator with a few thousand sights under your belt - however in this case the accuracy of each if your individual sights is probably pretty high, even under adverse conditions).
(2) On a smallish sailboat like ours (35ft) I'm hard pressed to find more than two (three if I'm lucky) of the 57 navigational stars plus planets that are simultaneously (a) visible at twilight, (b) not obscured by clouds, sails, rigging, radar post, wind vane self steering and all that other stuff that accumulates on cruising boats, and (c) provide decent crossing angles of their LOPs (i.e. something between say 45° and 135°).
The approach that CelNav takes to tackle these issues is to take sights of only two bodies but to be smart about making the LOPs derived from each body's observation as accurate as possible. The method is simply to take an uneven number of sights of each of the two bodies (5 each works very well), have CelNav calculate the intercepts for all of the sights at the press of a button, and then pick the sight with the *median* intercept out of each sight series as a basis for the fix calculation as a simple way to eliminate outliers.
Five sights each for two bodies may sound like a lot but is actually quite easy and quick. Since you stick with the same star for each sight series you don't have to reset the sextant and bring the body down to the horizon every time. Nor do you have to change your position and/or orientation. And since the software does the number crunching it's all a question of minimizing data entry.
What does it look like in CelNav? When you launch CelNav the "2-LOP Fix" tab will have one LOP and one Sight for that LOP. LOPs and Sights can be added via “+” buttons. A fully populated fix may look like this:
Attachment:
CelNav_Fix_full_numbered.png [ 81.64 KiB | Viewed 29916 times ]
Some notes:
[1] Fix parameter: SOG and COG are used to correct for motion of observer (MOO) between sight UTs and fix UT (see below under 7).
[2] Pressing “Update Fix” will reduce all sights, calculate 2-LOP fix and update the lat/lon display with the fix position. Fix calculation is plane trig for two LOPs only. More or fewer LOPs will trigger an error message when trying to calculate a fix.
[3] LOP box; body selection combo box allows selection of a specific star in the right box only if “star” is selected in the left box.
[4] “AP” is assumed position for sight reduction/intercept calculation. If you add an LOP via the “+” button it will be initialized with the previous LOP’s AP.
[5] Sight parameters are assumed to be the same for all sights under an LOP.
[6] You can add multiple sights to an LOP, reduce all of them and then pick the best one (e.g. median intercept) for inclusion in the fix calculation via the radio button on the right (8).
[7] Pressing “Reduce Sights” will reduce all sights under that LOP and update the values for intercept and azimuth. “MOO corr. IC” includes a correction for the motion of the observer between the sight time and the fix time (SOG, COG under “Fix”). The MOO corrected value will be used for the fox calculation. Ths MOO correction is equivalent to table 1 in HO249 Vol. 1. It assumes that the body's azimuth doesn't appreciably change between sight UT and fix UT and is therefore not suitable for a "real" running fix with a few hours between sight and fix UTs. It does help however if there are are say 20min between my first sight/LOP and the chosen time for the fix (say next even half hour). At 5kn and without this correction that would introduce an error of about 1.5nm if the body for that LOP is significantly ahead or abaft the beam.
[8] Radio button allows selection of sight to be used for that LOP in the fix calculation.
[9] “Hide Sights” will collapse all sights and only display intercepts and azimuth for the selected sight[/list]
Everytime the program calculates a fix it writes all data for the underlying sights and the fix to a csv file in ~/.celnav/celnav.log (where "~" is your home directory - in my case /home/markus).
This approach of taking the median intercepts out of two sight series has reliably worked well for me in over a hundred fixes by now. I'm by no means an expert navigator but I get 80% of my fixes within 4nm of my GPS position and 97% within 10nm (12.3nm was the worst performer). And it works well even in 3+ meter seas (the spread in intercepts per series increases with higher sea states, but the median remains surprisingly robust).
In addition the procedure provides valuable insights for improving ones technique of taking sights. Since I get near-immediate feedback about the quality of each sight I can actually see what works best. With a bit more data analysis it becomes quite easy to see whether my sights tend to be "high" or "low" rather than randomly scattered around the "right" value. If there is no other error source (index error, corrections, ...) it must be me and I can start to correct for that systematic error. Remember - you have all your sight and fix data in the log file - ready to be mangled by some spreadsheet...
A few comments:
- You can of course calculate LOPs for more than two bodies with CelNav. However, the automated lat/lon calculation for the fix will only work with two LOPs.
- You can also have CelNav reduce your LOPs for running fixes (as in a "real" running fix - not the MOO correction mentioned above). However, it does not automatically advance or retard position lines. Nor does it automatically calculate the lat/lon from a running fix. You would get two intercepts and azimuths for two LOPs and will have to manually plot them for the fix. While an automatic lat/lon calculation for the running fix would actually be quite straight forward, I'm a firm believer that a running fix should always be plotted in order to reflect best available DR information. That's another issue where the RYA's textbook method doesn't make too much sense - a topic for another post...