[time-nuts] over-determined clock solution

Poul-Henning Kamp phk at phk.freebsd.dk
Tue Jun 28 02:04:04 EDT 2016


--------
In message <BLU181-W50522FD3DA78BEA591BDF8CE210 at phx.gbl>, Mark Sims writes:

>All timing receivers (including Trimble) calculate an overdetermined
>clock solution if more than 4 sats are being tracked (and the signal
>meets their TRAIM quality level).   But, again, in Trimble-speak,
>"overdetermined clock mode" is what most manufacturers call "position
>hold" mode.  Position hold mode requires the receiver to have an
>accurate surveyed in position set in the receiver (and position
>hold mode/Trimble overdetermined clock mode cannot be used in mobile
>applications)

Weeeeeelllll...

"Overdetermined" just means that you have more equations than unknowns
so these days pretty much anything that comes out of your GNSS
receiver is "overdetermined":  A time+position calculated from
five or more sats is per definition overdetermined.

Position Hold just adds the constraint, "I'm not moving" to the
calculations, but if you are up to "funnier" math, less rigid
and often more useful constraints can also be used:

*  not moving faster than a pedestrian/bicyclist/boat/car

*  horizontal/vertical acceleration less than ...

*  horizontal/vertical jerk (= change of acceleration) less than ...

*  horizontal/vertical turning radius no less than ...

*  vertical speed less than ...

*  constrained to approximate surface of geoid (= boats)

*  constrained to surface of auxillary map

*  follows roads

*  acceleration constrained by data form accelerometer

*  etc.

Many receivers do one or more variants of these, some of them
autonomously guessing which one they should use.

But they usually call it, and implement it as, filtering, becausb
they don't think the hyperbolic math is "funnier" at all.

As a general rule of thumb: There are no exact solutions to hyperbolic
equations, you have to iterate your way to the answer.

Kalman filters are of course popular here, because of the widespread
misbelief that they dont need to be tuned.

But as an equally general rule of thump:  You get better results
by doing the hyperbolic equations than by slapping a filter on the
output.

Position Hold is one of the few constraints where the hyperbolic
math actually gets easier, because you only solve for a single
variable and everything else is constant.

But Position Hold is not the optimal algorithem, it's kind of a
hack, which is why the "hold position" to manys surprise only
needs to be precise to tens of meter.

What you _really_ want is to null out the average time resisuals
over long periods of time, with due attention to the anisotropic
propagation.

I tried a proof of concept, with some luck, by tweaking the position
hold coordinates to minimize the time residuals:

	http://phk.freebsd.dk/raga/sneak/

But if you _really_ want to get fancy, the position hold coordinates
needs to be modelled as a function of time (day, year) to handle the
solar-forced ionospheric variations.

If instead you took the raw measurements, did the hyperbolic
iterations with the goal of minimizing your _time_ residuals, and
then filtered the heck out of the result afterwards, that would
happen automatically.

Alas, this is one of those projects that keep falling out through
the hard 1000 item limit of my TODO list...

Johns WebSDR is probably a near perfect platform for playing with
this...

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.


More information about the time-nuts mailing list