Repository navigation
v7.0.0
PositionVelocityTime v7.0.0
7.0.0 (2026-10-16)
- feat(velocity)!: share the pseudorange-rate model as calc_pseudorange_rate and fit it in one step (f88accd)
- fix(velocity)!: model the range rate as the derivative of the Earth-rotation-corrected pseudorange (72524e9)
- refactor!: share the Earth-rotation correction, rank-check the velocity solve, spell pseudoranges (8fee0a4)
BREAKING CHANGES
calc_line_of_sightis no longer part of the documented API; usecalc_range_ratefor the range-rate model, or the negated position columns ofcalc_H/calc_H!for the line of sight. The undocumentedrotate_by_earth_rotationis removed.calc_user_velocity_and_clock_drift[!]returnNaNfor the state and every residual, instead of throwing, when the velocity design is not of full rank to within the tolerancecalc_DOPapplies.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
calc_user_velocity_and_clock_drift!takes a design-row scratch vector (Vector{SVector{4,Float64}}) and the solved user position in place of the position designH, and an optional start state,calc_user_velocity_and_clock_drift!(rate_residuals, design, measurements, user_pos, start = zero(SVector{4,Float64})).calc_user_velocity_and_clock_drift(measurements, user_pos, start = zero(SVector{4,Float64}))likewise takes the user position in place ofH. The design comes from the pseudorange-rate model,calc_pseudorange_rate, which the solve fits in one Gauss-Newton step.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
calc_user_velocity_and_clock_drift[!]take the solved user position (ECEF, m) as a last argument, afterH:calc_user_velocity_and_clock_drift!(rate_residuals, measurements, H, user_pos). The range-rate model needs it for the travel time, its rate and the Earth-rotation-corrected satellite.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Merged pull requests: