From c4b11f1dfbbd56c0d271b890d89a420f24f7c5bf Mon Sep 17 00:00:00 2001 From: Mark Stephenson Date: Wed, 1 Oct 2025 22:52:14 -0600 Subject: [PATCH] [MINOR] Make deorbit radius configurable --- src/bsk_rl/sim/dyn/base.py | 10 ++++++++-- tests/unittest/sim/test_dynamics.py | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bsk_rl/sim/dyn/base.py b/src/bsk_rl/sim/dyn/base.py index 362b7b14..5dd81b9f 100644 --- a/src/bsk_rl/sim/dyn/base.py +++ b/src/bsk_rl/sim/dyn/base.py @@ -317,6 +317,7 @@ def _setup_dynamics_objects(self, **kwargs) -> None: vN=None, oe=random_orbit, mu=orbitalMotion.MU_EARTH * 1e9, + min_orbital_radius=(orbitalMotion.REQ_EARTH + 200) * 1e3, ) def setup_spacecraft_hub( self, @@ -330,6 +331,7 @@ def setup_spacecraft_hub( rN: Optional[Iterable[float]], vN: Optional[Iterable[float]], mu: float, + min_orbital_radius: float, priority: int = 2000, **kwargs, ) -> None: @@ -352,6 +354,7 @@ def setup_spacecraft_hub( mu: Gravitational parameter (used only with ``oe``). rN: [m] Initial inertial position. vN: [m/s] Initial inertial velocity. + min_orbital_radius: [m] Minimum allowable orbital radius. priority: Model priority. kwargs: Passed to other setup functions. """ @@ -384,6 +387,8 @@ def setup_spacecraft_hub( self.task_name, self.scObject, ModelPriority=priority ) + self.min_orbital_radius = min_orbital_radius + self.setup_gravity_bodies() self.setup_disturbance_torque(**kwargs) self.setup_density_model() @@ -502,9 +507,10 @@ def setup_simple_nav_object(self, priority: int = 1400, **kwargs) -> None: def altitude_valid(self) -> bool: """Check that satellite has not deorbited. - Checks if altitude is greater than 200km above Earth's surface. + Checks if altitude is greater than the configurable minimum orbital radius + (`min_orbital_radius`). The default value corresponds to 200km above Earth's surface. """ - return np.linalg.norm(self.r_BN_N) > (orbitalMotion.REQ_EARTH + 200) * 1e3 + return np.linalg.norm(self.r_BN_N) > self.min_orbital_radius @default_args( wheelSpeeds=lambda: np.random.uniform(-1500, 1500, 3), diff --git a/tests/unittest/sim/test_dynamics.py b/tests/unittest/sim/test_dynamics.py index 65a30ad4..a4d2c806 100644 --- a/tests/unittest/sim/test_dynamics.py +++ b/tests/unittest/sim/test_dynamics.py @@ -153,6 +153,7 @@ def test_wheel_properties(self): ) def test_altitude_valid(self, vec, valid): dyn = BasicDynamicsModel(MagicMock(simulator=MagicMock()), 1.0) + dyn.min_orbital_radius = 1e6 dyn.simulator.world = MagicMock() dyn.scObject = MagicMock() message = dyn.scObject.scStateOutMsg.read.return_value