cam#
Collision Avoidance Maneuver design for conjunction assessment.
Compute optimal impulsive burns to avoid satellite conjunctions. Given miss distance, covariance, and hard-body radius, evaluates proposed maneuvers, finds minimum delta-v for a target Pc, and screens multiple burn options. Uses the collision library for Pc computation.
Installation#
Install with opam:
$ opam install cam
If opam cannot find the package, it may not yet be released in the public
opam-repository. Add the overlay repository, then install it:
$ opam repo add samoht https://tangled.org/gazagnaire.org/opam-overlay.git
$ opam update
$ opam install cam
Usage#
(* Evaluate a tangential burn 6 hours before TCA *)
let maneuver : Cam.maneuver =
{ dt = 21600.; dv = 0.01; direction = `Tangential }
let () =
let result =
Cam.evaluate ~miss_r:50. ~miss_t:200. ~miss_n:0.
~sigma_r:30. ~sigma_t:100. ~hbr:10. maneuver
in
Printf.printf "Pc before: %e, after: %e\n"
result.pc_before result.pc_after
(* Simple API: compute avoidance burn directly from a CDM *)
let avoid_from_cdm cdm =
match Cam.avoid cdm ~dt:21600. with
| Some (result : Cam.result) ->
Printf.printf "Burn: %.4f m/s\n" result.delta_v
| None -> print_endline "Already safe or no solution"
(* Find minimum delta-v to achieve target Pc *)
let () =
match
Cam.min_dv ~miss_r:50. ~miss_t:200. ~miss_n:0.
~sigma_r:30. ~sigma_t:100. ~hbr:10. ~dt:21600. ~target_pc:1e-5 ()
with
| Some dv -> Printf.printf "Min dv: %.6f km/s\n" dv
| None -> print_endline "No solution"
API Overview#
type direction-- Burn direction:`Tangential,`Radial,`Normaltype maneuver-- Impulsive maneuver:dt,dv,directiontype result-- Evaluation output: miss distances, Pc before/after, delta-v costavoid-- Simple API: find minimum burn from a CDM (returnsresult option)evaluate-- Evaluate a proposed maneuver against conjunction geometrymin_dv-- Find minimum delta-v for a target Pc (returnsfloat option)screen-- Evaluate multiple delta-v options, sorted by post-maneuver Pc
Testing#
- GMAT interop: Tangential burn scenario from NASA GMAT R2026a — validates multi-segment OEM handling at burn boundary, velocity discontinuity (0.1 km/s delta-v, zero position change), and orbit raising effect. See
test/interop/gmat/.
License#
ISC