Heads up: Astro-satpass modifications

The Astro-satpass distribution contains classes to compute satellite position and visibility. If you are using it, please read on.

Recently Jaap Meijers wrote to me about some inconsistencies between the satellite visibility predictions provided by the Astro-satpass package and the predictions of the Heavens Above web site (http://www.heavens-above.com/). This led to the correction of a number of bugs relating to the reporting (or not) of marginal passes by the Astro::Coord::ECI::TLE pass() method. These changes are currently available as release 0.039_04 of the Astro-satpass package.

This is the first time this specific method has been touched in quite a while, and I know that there are people doing real work with this code. So what I would like to do is to detail the changes and how they were tested, and give people an evaluation and feedback period -- a couple weeks, unless I get feedback that more time is needed. If additional problems are found, I will put out another development release, and repeat as needed. I can be reached by electronic mail at 'wyant at cpan dot org'.

The specific problems fixed are:

* Passes in progress at the beginning of the prediction period were not being reported, or being reported with an incorrect rise time.

* Visible passes which began during daylight were not being reported, or were being reported with an incorrect rise time.

* Passes which spent less than a minute above the horizon, or visible passes which spent less than a minute visible, were being sporadically detected.

* Passes which spent less than two minutes above the horizon, or visible passes which spent less than two minutes visible, were having their maximum elevation times incorrectly computed.

Initial testing was done on the passes which Mr. Meijers reported to be in error, and these have been incorporated into the formal test suite. This testing includes predicting appulses with the Moon, since I know the appulse functionality has real-world uses. Unfortunately I do not have permission to distribute TLE data needed for these tests, but the required OIDs and epochs are documented in t/tle_pass.t, and those with Space Track accounts can download the data.

In addition, I downloaded Dr. T. S. Kelso's "100 (or so) Brightest" (which at the time of download consisted of 152 objects), predicted both visible passes and all passes over the world's 40 most populous cities, and accounted for the differences between version 0.039 and 0.039_04.

No, I did not hand-validate the thousands of differences -- instead I used a Perl script to identify the differences and check the data produced by the pass() method for the circumstances that triggered the various bugs. According to this script all differences between 0.039 and 0.039_04 can be traced to bugs that have been fixed. Yes, I found (and fixed) two regressions during the testing; one involving the appulse functionality of the pass() method, and one involving missed passes which occurred near the end of the prediction period.