Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

GNSS Doppler Factors

DopplerFactor and DopplerFactorArm incorporate GNSS range-rate measurements into a GTSAM factor graph. The base factor estimates receiver velocity and the change in receiver clock bias between adjacent epochs. The lever-arm variant additionally accounts for antenna motion caused by body rotation, and it can accept a local navigation-frame pose and velocity.

Open In Colab

DopplerFactor

The factor uses keys [velocity, clock_bias_previous, clock_bias_current]. Its residual is the predicted range rate minus the measured range rate (-wavelength * Doppler), including the satellite clock drift and the Earth-rotation (Sagnac) correction:

eT(vs−vr)+c(bk−bk−1Δt−b˙s)+Sagnac rate−(−λD).e^T(v_s-v_r) + c\left(\frac{b_k-b_{k-1}}{\Delta t} - \dot b_s\right) + \text{Sagnac rate} - (-\lambda D).

DopplerFactorArm

A rotating platform moves its antenna relative to the body origin. DopplerFactorArm models that motion as v_antenna = v_body + R_body (omega \times lever_arm), so the pose key contributes the attitude needed to rotate the lever-arm velocity. When omega is zero, the factor reduces to DopplerFactor at the same receiver velocity.

Local navigation-frame states

Pass ecef_T_nav to use a local navigation-frame pose and velocity while keeping the satellite geometry in ECEF. The angular velocity and lever arm remain expressed in the body frame.

Source