Skip to content

Various updates: least squares orbit solves, specular bug fix, packaging bug fix - #39

Open
ryanketzner wants to merge 7 commits into
mainfrom
spectest-dev
Open

Various updates: least squares orbit solves, specular bug fix, packaging bug fix#39
ryanketzner wants to merge 7 commits into
mainfrom
spectest-dev

Conversation

@ryanketzner

Copy link
Copy Markdown
Collaborator

Adds generalized least-squares differential correction for estimating spacecraft drag and initial state parameters using CYGNSS trajectory data. Orekit propagation now supports explicitly requested output epochs (needed for least squares solve) while retaining the existing propagation time based interface, project dependencies and packaging are corrected, and CoverageKinematics is updated with bug fix that was causing error in specular point code.

Added:

  • examples/cygnss_data/cygnss_spacecraft_trajectory_combined.csv: Three-day CYGNSS reference trajectory data.
  • examples/solve_drag_coefficient.py: An example that retrieves a CYGNSS initial orbit from spacetrack, estimates its drag coefficient against reference positions, and plots residuals and solver convergence. This solves for a negative drag coefficient, presumably due to velocity error in CYGNSS data.
    examples/solve_drag_coefficient_x0.py: An example that jointly estimates the drag coefficient and initial Cartesian state using the first half of the reference arc, then evaluates the solution across the full trajectory.
  • orbitpy/glsdc.py: A module for generalized nonlinear least-squares differential-correction supporting weighted residuals, parameter scaling, and analytical or central finite-difference Jacobians.

Modified:

  • environment.yml: Adds Orekit to the Conda environment dependencies (was previously missing when it should have been there).
  • extern/CoverageKinematics: Advances the submodule to add coverage-runtime comparison examples and fix a race condition in LOSEventSource by making its ray and intersection-query state local to each update.
  • orbitpy/orekitpropagator.py: Adds execute_2 for propagation at explicitly supplied epochs (needed for least squares solve). The existing execute method now constructs its regular time grid and delegates to the new method for backward compatibility.
  • pyproject.toml: Adds Orekit as a runtime dependency and corrects the wheel package path from src/orbitpy to orbitpy.

ryanketzner and others added 7 commits May 22, 2026 12:59
Modified:

	environment.yml: Bug fix: added orekit to dependencies.

	pyproject.toml: Bug fix: added orekit to dependencies.
…dule. Added example which also solves x0.

Deleted:
	examples/glsdc.py: Deleted to create new example which uses module for glsdc code rather than inline code.

Modified:
	examples/solve_drag_coefficient.py

New:
	orbitpy/glsdc.py: Code for glsdc. Also includes code for finite differencing jacobians.

	examples/solve_drag_coefficient_x0.py: Solves drag coefficient and initial state x0. Very slow due to finite difference.
Deleted:

	examples/specular_validation_prop.py: This was added in an intermediate state in an old commit but never finished. Removed.

	examples/orbit_estimation.py: Not sure what this file was for, but it isn’t finished.

	examples/propagator_validation.py: Compares error for two propagators.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant