Getting Started with the Orbit Determination Toolbox: Tutorials & Examples

Getting Started with the Orbit Determination Toolbox: Tutorials & Examples

Introduction

The Orbit Determination Toolbox (ODTBX) is a MATLAB-based suite designed to support orbit determination, estimation, and analysis for spacecraft missions. This guide walks you through installing ODTBX, basic concepts, a step-by-step tutorial for a simple orbit determination problem, and practical examples to help you build confidence using the toolbox.

Prerequisites

  • MATLAB (R2018a or later recommended).
  • Basic familiarity with orbital mechanics (Keplerian elements, state vectors).
  • Optional: Git for cloning repositories and a code editor for editing scripts.

Installation

  1. Download the ODTBX source from the official repository or archive.
  2. Unzip the package into a working directory.
  3. In MATLAB, add the ODTBX directories to your path:

matlab

addpath(genpath(‘path_to_odtbx’)); savepath;
  1. Run any provided setup script (e.g., setupodtbx.m) if included.

Key Concepts

  • States: Cartesian state vectors [x y z vx vy vz] or Keplerian elements.
  • Measurements: Ranges, range-rates, angles, angles-only (optical), and GPS-like pseudo-ranges.
  • Dynamics models: Two-body, J2 perturbation, atmospheric drag, third-body gravity.
  • Estimators: Batch least squares, Extended Kalman Filter (EKF), Unscented Kalman Filter (UKF).
  • Measurement models and noise: Each sensor model requires characterization of noise covariance.

Simple Tutorial: Batch Least Squares Orbit Determination

Goal: Estimate a LEO satellite’s initial state from simulated range and range-rate observations.

  1. Create truth trajectory:

matlab

mu = 398600.4418; % Earth gravitational parameter km^3/s^2 r0 = [7000; 0; 0]; v0 = [0; 7.5; 1]; x0 = [r0; v0]; tspan = 0:10:3600; % seconds % Propagate using two-body x_truth = zeros(6,length(tspan)); x = x0; for k=1:length(tspan) xtruth(:,k) = x; % simple two-body propagation (example) x = twoBodyPropagate(x,10,mu); % replace with ODTBX propagator end
  1. Simulate measurements from a ground station:

matlab

gs = [6378; 0; 0]; % ground station position (example) range = vecnorm(bsxfun(@minus,x_truth(1:3,:),gs),1); range_rate = diff(range)./10; range = range(1:end-1); t_meas = tspan(1:end-1); % Add noise rng(0); range = range + randn(size(range))0.01; % 10 m noise range_rate = range_rate + randn(size(range_rate))0.001; % 1 mm/s
  1. Set up the batch estimator (ODTBX-style):
  • Define measurement operator that computes predicted ranges and range-rates from a candidate initial state by propagating to measurement epochs.
  • Build the design matrix H by finite differencing or analytic partials (if available).
  • Form residuals vector y = z_meas – z_pred.
  • Solve normal equations: dx = (H’ R^-1 H)^-1 H’ R^-1 y and update the state: x_est = x_est + dx.
  • Iterate until convergence.
  1. Validation:
  • Compare estimated initial state to truth; compute position and velocity errors