diff --git a/docs/source/release_notes.rst b/docs/source/release_notes.rst index d43b12d4..3bffb621 100644 --- a/docs/source/release_notes.rst +++ b/docs/source/release_notes.rst @@ -25,6 +25,7 @@ Development - |version| :class:`~bsk_rl.sim.dyn.DynModelABC`, instead of from :class:`~bsk_rl.sim.fsw.BasicFSWModel` or :class:`~bsk_rl.sim.dyn.BasicDynModel`. These are lighter-weight base classes that lack some functionality that was not always wanted. +* Update support data import paths to allow compatibility with Basilisk's new dataFetcher API. .. warning:: diff --git a/src/bsk_rl/sim/world.py b/src/bsk_rl/sim/world.py index 63437df6..2b63e2c9 100644 --- a/src/bsk_rl/sim/world.py +++ b/src/bsk_rl/sim/world.py @@ -44,9 +44,15 @@ if TYPE_CHECKING: # pragma: no cover from bsk_rl.sim import Simulator -logger = logging.getLogger(__name__) +try: + from Basilisk.utilities.supportDataTools.dataFetcher import DataFile, get_path + + _DATA_FETCHER_API = True +except ImportError: + bskPath = __path__[0] + _DATA_FETCHER_API = False -bsk_path = __path__[0] +logger = logging.getLogger(__name__) class WorldModelABC(ABC, Resetable): @@ -169,14 +175,19 @@ def setup_gravity_bodies( self.planet.isCentralBody = ( True # ensure this is the central gravitational body ) - self.planet.useSphericalHarmonicsGravityModel( - bsk_path + "/supportData/LocalGravData/GGM03S.txt", 10 - ) + if _DATA_FETCHER_API: + path_grav_data = str(get_path(DataFile.LocalGravData.GGM03S)) + path_ephem_data = str(get_path(DataFile.EphemerisData.de430).parent) + else: + path_grav_data = bsk_path + "/supportData/LocalGravData/GGM03S.txt" + path_ephem_data = bsk_path + "/supportData/EphemerisData/" + + self.planet.useSphericalHarmonicsGravityModel(path_grav_data, 10) # setup Spice interface for some solar system bodies timeInitString = utc_init self.gravFactory.createSpiceInterface( - bsk_path + "/supportData/EphemerisData/", timeInitString, epochInMsg=True + path_ephem_data, timeInitString, epochInMsg=True ) self.gravFactory.spiceObject.zeroBase = "earth" diff --git a/src/bsk_rl/utils/orbital.py b/src/bsk_rl/utils/orbital.py index 6806184f..3c879ded 100644 --- a/src/bsk_rl/utils/orbital.py +++ b/src/bsk_rl/utils/orbital.py @@ -15,7 +15,13 @@ from Basilisk.utilities.orbitalMotion import ClassicElements, elem2rv, rv2elem from scipy.interpolate import interp1d -bskPath = __path__[0] +try: + from Basilisk.utilities.supportDataTools.dataFetcher import DataFile, get_path + + _DATA_FETCHER_API = True +except ImportError: + bskPath = __path__[0] + _DATA_FETCHER_API = False logger = logging.getLogger(__name__) @@ -412,13 +418,15 @@ def _init_simulator(self) -> None: planet = self.gravFactory.createEarth() self.gravFactory.createSun() planet.isCentralBody = True - planet.useSphericalHarmonicsGravityModel( - bskPath + "/supportData/LocalGravData/GGM03S.txt", 10 - ) + if _DATA_FETCHER_API: + path_grav_data = str(get_path(DataFile.LocalGravData.GGM03S)) + path_ephem_data = str(get_path(DataFile.EphemerisData.de430).parent) + else: + path_grav_data = bskPath + "/supportData/LocalGravData/GGM03S.txt" + path_ephem_data = bskPath + "/supportData/EphemerisData/" + planet.useSphericalHarmonicsGravityModel(path_grav_data, 10) UTCInit = self.utc_init - self.gravFactory.createSpiceInterface( - bskPath + "/supportData/EphemerisData/", UTCInit - ) + self.gravFactory.createSpiceInterface(path_ephem_data, UTCInit) self.gravFactory.spiceObject.zeroBase = "earth" self.AddModelToTask(simTaskName, self.gravFactory.spiceObject) scObject.gravField.gravBodies = spacecraft.GravBodyVector(