Version 2.9 Release Notes
Version 2.9.0 (Jan. 28, 2026)
Deploy both release docs at https://avslab.github.io/basilisk and developer beta docs at https://avslab.github.io/basilisk/developer.
Added BSK Release Guide on releasing a new version of Basilisk.
Updated merge workflow to deploy develop branch documentation to https://avslab.github.io/basilisk/develop and master branch documentation to https://avslab.github.io/basilisk.
Migrated supportData handling to a Pooch-based fetch system. .. warning:
This is a breaking change, minor changes were made to how the Denton flux model API is used. See list of known issues for details.
Removed supportData files from wheels and source distributions to reduce package size.
Added automatic MD5 registry generation via
makeRegistry.pyfor versioned supportData.Updated documentation to include workflow for adding new supportData files and regenerating the registry.
Removed automated version bumping on merges to develop. Version bumps will be handled manually moving forward.
Added SWIG as a python package dependency in
requirements_dev.txtand updated installation instructions.Updated CI to no longer automatically publish git tags and publish wheels to PyPI. This process will be handled manually.
Added cp313 wheel builds for Python 3.13 and newer to support updated SWIG and ABI changes.
Added Advanced: Effector Module Branching capability. Now enabled for C++ Module: extForceTorque, C++ Module: constraintDynamicEffector, and C++ Module: thrusterDynamicEffector attachable to C++ Module: spinningBodyOneDOFStateEffector, C++ Module: spinningBodyTwoDOFStateEffector, and C++ Module: spinningBodyNDOFStateEffector.
Added support for C++ Module: linearTranslationOneDOFStateEffector to attach dependent effectors.
Improved documentation structure by separating build-from-source instructions from
pipinstallation instructions.Added custom reaction wheel: “NanoAvionics RW0” to
src/utilities/simIncludeRW.pyAdded TLE handling utilities in tleHandling to parse TLE files and convert to orbital elements
Removed deprecated use of astro constants from
src/utilities/astroFunction.py. Users should be astrodynamics constants fromBasilisk.architecture.astroConstants.Made statistical unit tests more robust
Fix typo in how C++ Module: gravityEffector compute the planets gravity potential contributions
Added fault modeling capability to C++ Module: magnetometer module.
Added new module C++ Module: MJSystemCoM to extract the system center of mass position and velocity from a MuJoCo simulation.
Added new module C++ Module: MJSystemMassMatrix to extract the system mass matrix from a MuJoCo simulation.
Added new module C++ Module: MJJointReactionForces to extract the reaction forces and torques acting on the joints from a MuJoCo simulation.
Added new module C++ Module: hingedJointArrayMotor to determine the motor torques for an array of hinged joints.
Added new module C++ Module: jointMotionCompensator to determine the hub torques required to negate the effect of hinged joint motor torques on the spacecraft hub motion.
Updated C Module: locationPointing module to save
omega_RN_Bto theattGuidOutMsg. This may effect the performance of other modules that use this output message.Refactored the CI build system scripts
Removed deprecated use of
Basilisk.simulation.planetEphemeris.ClassicElementsMsgPayload. Users need to useClassicalElements()defined inorbitalMotion.Added documentation to C++ Module: constraintDynamicEffector explaining the required execution order
Fixed bug with recording message payload entries that are 2D arrays. This bug was introduced with the faster recording strategy added in version 2.8.0.
Add a desired relative attitude between spacecraft in C++ Module: constraintDynamicEffector.
Added new example scenarios demonstrating extended use of C++ Module: constraintDynamicEffector: scenarioConstrainedDynamicsManeuverAnalysis, scenarioConstrainedDynamicsComponentAnalysis, and scenarioConstrainedDynamicsFrequencyAnalysis.
Added a new stepper motor simulation module C++ Module: stepperMotor. This kinematic profiler module is useful to simulate the actuation of motor-driven prescribed spacecraft components.
Made individual structures for each degree of freedom in C++ Module: spinningBodyNDOFStateEffector and C++ Module: linearTranslationNDOFStateEffector.
Capitalized all structures in C++ Module: linearTranslationOneDOFStateEffector and C++ Module: linearTranslationNDOFStateEffector.
The way body-fixed locations are added to Vizard data is changed. Now Vizard retains a copy of the list of locations and only incremental changes have to be sent using the
vizSupport.changeLocation()method. This drastically reduces the Vizard data size.The support file vizSupport is updated to only have
enableUnityVisualization()check if C++ Module: vizInterface has been built or not. Example scripts check ifvizSupport.vizFoundis true to executevizInterfacerelated code.In vizSupport, in the method
setInstrumentGuiSetting(), corrected the spelling ofshowTransceiverFrustrumto beshowTransceiverFrustum. The prior argument name has been deprecated.For C++ Module: vizInterface.settings, changed the name of
viewCameraConeHUDtoviewCameraFrustrumHUDAdded support for Vizard 2.3.1 features
Refactor and optimize Event checking in
SimulationBaseClass. Time-based events can be specified by a more efficientconditionTimeinstead of aconditionFunction. This is especially useful for large numbers of events.Added option for
exactRateMatch=Falsewhen creating events which causes events to be checked whenever theeventRatehas elapsed since the last check (as opposed to only when the current time is an exact multiple of theeventRate).ConfigureStopTimenow supports specifying the stop condition as<=(default, prior behavior) or>=(new). The new option is useful when the user wants to ensure that the simulation runs for at least the specified time, instead of at most the specified time.Fixed documentation quote typos that caused documentation build errors with doxygen version 1.15 and newer.
Configured the C++ Module: prescribedMotionStateEffector module for attachment of other state effectors to it rather than the spacecraft hub.
Configured the C++ Module: spinningBodyOneDOFStateEffector, C++ Module: spinningBodyTwoDOFStateEffector, and C++ Module: linearTranslationOneDOFStateEffector modules for optional attachment to the prescribed motion state effector.
Added two example branching scenarios to illustrate the prescribed motion branching capability. See scenarioPrescribedMotionWithTranslationBranching and scenarioPrescribedMotionWithRotationBranching.
Fixed a bug where C++ Module: spinningBodyOneDOFStateEffector and C++ Module: spinningBodyNDOFStateEffector both registered their states under the same name, resulting in overwriting and a
BSK_ERROR.Added support for C++ Module: hingedRigidBodyStateEffector to be the parent for Dynamic Effectors.
Added SWIG Eigen typemaps for passing Eigen products or returning Eigen products to/from director methods.
Added a required time duration that must be satisfied for the imaging to be considered successful in C Module: simpleInstrumentController module.
Added a new scenario that simulates a debris strike on a flexible solar array scenarioImpact.
Updated C++ Module: imuSensor to remove deprecated direct setting of
walkBoundsGyroandwalkBoundsAccel. The module now outputs a zero’d output message on the first run.Updated Basilisk python dependencies to include the latest range of allowable packages
Improved documentation of orbitalMotion
Avoid reloading and re-unloading SPICE kernels when multiple simulations run in the same process. This fixes the problem with Spice becoming very slow when multiple simulation are run in parallel, addresses the Spice kernel load limit of 5000 kernels, and prevents a rare bug where kernels are corrupted when loaded from multiple simulations at the same time.
Added support for Vizard version 2.3.2
Added optional prescribed 1-DOF helical screw motion to the C++ Module: prescribedRotation1DOF kinematic profiler module.
Added a new prescribed helical screw motion example scenario. See scenarioPrescribedScrewMotion.
Added
SysModelMixin, a utility class inpy_sys_model.ithat can be used for subclasses ofSysModel(sys_model) that have virtual methods to be implemented in Python. The class will automatically add better error logging for all methods implemented in Python and will add a sanity check that the C++ class constructor is called (otherwise, hard-to-parse errors will be raised). RefactoredpyStatefulSysModel.ito use this mixin.Added support for setting the position and velocity of MJBody with pure translational motion.
Added
getAxisandisHingeto MJJoint.Migrated
supportDatahandling to a Pooch-based fetch system.Warning
This is a breaking change, minor changes were made to how the Denton flux model API is used. See list of known issues for details.
Removed
supportDatafiles from wheels and source distributions to reduce package size.Made C++ Module: facetSRPDynamicEffector variables
numFacetsandnumArticulatedFacetsprivate variables. Their use as public variables has been deprecated since December 2024.Adds support for updating noise parameters in C++ Module: magnetometer during simulation
Deprecated use of
shadowFactorin favor ofilluminationFactorAdded scenarioAttitudeFeedbackRWMuJoCo, similar to scenarioAttitudeFeedbackRW but using MuJoCo dynamics.
Added the modules C++ Module: simpleAntenna and C++ Module: antennaPower.