Collision probability computation for conjunction assessment
0
fork

Configure Feed

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

Format: ocamlformat fixups for collision and cam APIs

+23 -16
+6 -2
lib/collision.ml
··· 505 505 let dv = vec3_sub cdm.obj2.state.vel cdm.obj1.state.vel in 506 506 vec3_norm dv 507 507 in 508 - { pc = pc_foster enc; pc_max = pc_max enc; miss_distance = miss; 509 - relative_velocity = vrel } 508 + { 509 + pc = pc_foster enc; 510 + pc_max = pc_max enc; 511 + miss_distance = miss; 512 + relative_velocity = vrel; 513 + } 510 514 511 515 type risk = Critical | High | Watch | Low 512 516
+17 -14
lib/collision.mli
··· 5 5 {[ 6 6 (* Assess a CDM in one line *) 7 7 let a = Collision.assess cdm in 8 - Printf.printf "Pc = %e, miss = %.0f m, risk = %s\n" 9 - a.pc a.miss_distance (Collision.risk_level a) 8 + Printf.printf "Pc = %e, miss = %.0f m, risk = %s\n" a.pc a.miss_distance 9 + (Collision.risk_level a) 10 10 ]} 11 11 12 12 {b References}: ··· 32 32 [hbr] is the combined hard-body radius in km (default: 0.015 km = 15 m, 33 33 typical for two LEO spacecraft). *) 34 34 35 - type risk = Critical | High | Watch | Low 36 - (** Risk level based on Pc thresholds (NASA CARA standard): 37 - - [Critical]: Pc > 1e-4 — maneuver required 38 - - [High]: Pc > 1e-5 — active monitoring, maneuver likely 39 - - [Watch]: Pc > 1e-7 — monitor conjunction evolution 40 - - [Low]: Pc <= 1e-7 — no action needed *) 35 + type risk = 36 + | Critical 37 + | High 38 + | Watch 39 + | Low 40 + (** Risk level based on Pc thresholds (NASA CARA standard): 41 + - [Critical]: Pc > 1e-4 — maneuver required 42 + - [High]: Pc > 1e-5 — active monitoring, maneuver likely 43 + - [Watch]: Pc > 1e-7 — monitor conjunction evolution 44 + - [Low]: Pc <= 1e-7 — no action needed *) 41 45 42 46 val risk_level : assessment -> risk 43 47 (** [risk_level a] classifies the conjunction risk. *) ··· 66 70 vel1:vec3 array -> 67 71 vel2:vec3 array -> 68 72 tca option 69 - (** [find_tca ~times ~pos1 ~pos2 ~vel1 ~vel2] finds the time of closest 70 - approach between two objects using quadratic refinement. Arrays must be the 71 - same length (synchronized time steps). Returns [None] if fewer than 3 72 - points. *) 73 + (** [find_tca ~times ~pos1 ~pos2 ~vel1 ~vel2] finds the time of closest approach 74 + between two objects using quadratic refinement. Arrays must be the same 75 + length (synchronized time steps). Returns [None] if fewer than 3 points. *) 73 76 74 77 (** {1 Encounter geometry} *) 75 78 ··· 80 83 sigma_y : float; (** 1-sigma uncertainty along y-axis (km). *) 81 84 hbr : float; (** Combined hard-body radius (km). *) 82 85 } 83 - (** Conjunction geometry projected onto the conjunction plane. Most users 84 - should use {!assess} instead of constructing this directly. *) 86 + (** Conjunction geometry projected onto the conjunction plane. Most users should 87 + use {!assess} instead of constructing this directly. *) 85 88 86 89 val encounter_of_cdm : hbr:float -> Cdm.t -> encounter 87 90 (** Project a CDM onto the conjunction plane. *)