Collision Avoidance Maneuver design for conjunction assessment
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

OCaml 29.7%
Standard ML 7.3%
Shell 0.8%
Dune 0.7%
Other 61.5%
36 1 0

Clone this repository

https://tangled.org/gazagnaire.org/ocaml-cam https://tangled.org/did:plc:jhift2vwcxhou52p3sewcrpx/ocaml-cam
git@git.recoil.org:gazagnaire.org/ocaml-cam git@git.recoil.org:did:plc:jhift2vwcxhou52p3sewcrpx/ocaml-cam

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

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, `Normal
  • type maneuver -- Impulsive maneuver: dt, dv, direction
  • type result -- Evaluation output: miss distances, Pc before/after, delta-v cost
  • avoid -- Simple API: find minimum burn from a CDM (returns result option)
  • evaluate -- Evaluate a proposed maneuver against conjunction geometry
  • min_dv -- Find minimum delta-v for a target Pc (returns float 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