Skip to content

Releases: AVSLab/basilisk

Basilisk v2.10.0

03 Apr 00:54

Choose a tag to compare

  • Stochastic Integration: Added support for stochastic dynamics (dynamics driven by Stochastic Differential Equations).
  • Stochastic Integration: Added stochastic dynamics support in core dynamics infrastructure (DynamicObject, StateData,
    and DynParamManager), including diffusion propagation APIs and support for shared noise sources.
  • Stochastic Integration: Added diffusion dynamics task support to MJScene via AddModelToDiffusionDynamicsTask() for
    MuJoCo systems with stochastic state dynamics.
  • Stochastic Integration: Added stochastic integrator base classes StateVecStochasticIntegrator.
  • Stochastic Integration: Added svIntegratorWeakStochasticRungeKutta to support stochastic integrator implementations.
  • Stochastic Integration: Added svStochasticIntegratorMayurama (Euler-Mayurama), a 1-weak/1-strong stochastic integrator.
  • Stochastic Integration: Added two stochastic integrators: svStochasticIntegratorW2Ito1 and svStochasticIntegratorW2Ito2.
    These are 2-weak-order stochastic integrators.
  • Stochastic Integration: Added MuJoCo models (meanRevertingNoise, stochasticAtmDensity, and
    stochasticDragCoeff) to model mean-reverting stochastic processes in dynamics-task modules.
  • Stochastic Integration: Added meanRevertingNoiseStateEffector, a generic spacecraft state effector that propagates a scalar
    Ornstein-Uhlenbeck mean-reverting stochastic state.
  • Stochastic Integration: Added scenarioStochasticDrag and scenarioStochasticDragSpacecraft, which illustrate how to
    use a state driven by stochastic dynamics to model randomly evolving atmospheric density (and thus drag force).
    The former scenario uses MuJoCo dynamics and the latter spacecraft dynamics.
  • Stochastic Integration: Added optional density correction support to dragDynamicEffector through
    densityCorrectionStateName, allowing drag density to be computed as
    (1 + correction) * neutralDensity using a user-selected scalar state.
  • Updated tleHandling to map TLE mean elements in TEME to Basilisk osculating elements in J2000/ICRS and to generate TLEs using an SGP4-consistent mean-element iteration.
  • Fixed how the gravity spherical harmonic coefficient are loaded in loadGravFromFile(). They were hard coded to 2nd order.
  • Added a new scenario, scenario_FaultList, that demonstrates the use of the fault modeling capabilities by selecting faults from BSK_Faults.
  • Added a Dockerfile to build Basilisk container images.
  • Prebuilt multi-architecture (linux/amd64, linux/arm64) container images are now published to GHCR on each release tag.
  • Updated vizInterface to bind to all network interfaces (0.0.0.0) by default, enabling Vizard connectivity when Basilisk is running inside a container.
  • Added hillFrameRelativeControl, a Hill-frame PD controller that computes an inertial force command to track deputy relative position and velocity with respect to a chief spacecraft.
  • Added thrOnTimeToForce module to convert thruster on-times to thruster forces for use in MuJoCo scenes.
  • Fixed reactionWheelStateEffector mixed-model wheel logging so theta outputs are indexed correctly when balanced and jitter wheel models are used together.
  • Added a new facetedSpacecraftModel module to convert spacecraft facet geometry from the local facet frames to the spacecraft hub body frame. The module supports both fixed facets and single-axis articulating facets.
  • Added a new facetedSpacecraftProjectedArea module to compute the per-facet and total projected area of a faceted spacecraft model using a provided heading direction vector. The module supports three heading configuration options: direct general heading, Sun direction heading, and spacecraft inertial velocity heading.
  • Fixed thrJointCompensation hinged joint control sign convention so that the computed compensation torque is applied in the correct direction.
  • Added scenarioThrArmControl, a MuJoCo example scenario for spacecraft control using thruster arms.
  • Added Python 3.14 support across packaging and CI.
  • Updated platform install guides to document Basilisk support for Python 3.14.
  • Updated tleHandling TLE parsing to fail explicitly on unsupported catalog-ID encodings.
  • Added tests in test_readTLE.py to validate rejection of unsupported catalog-ID encoding.
  • Added sccache compiler caching to CI builds to speed up incremental C++ compilation.
  • Removed deprecated vizInterface.MultiSphereVector support; use vizInterface.MultiShapeVector.
  • Removed deprecated vizInterface.MultiSphere and vizInterface.MultiSphereInfo aliases; use vizInterface.MultiShape and vizInterface.MultiShapeInfo.
  • dragDynamicEffector, facetDragDynamicEffector, and cannonballDrag now accept an optional windVelInMsg to compute atmosphere-relative drag velocity; supersedes the former useAtmosphereRelativeVelocity/planetOmega_N flags.
  • Updated scenarios to illustrate optional use of wind velocity input.
  • Added windBase abstract base class and zeroWindModel concrete implementation.
  • Removed Python 3.8 support from the build and CI configuration, and marked Python 3.9 support as deprecated for removal after March 2027.
  • Added stripLocation to support the strip imaging mode.
  • Updated locationPointing to include the new strip imaging mode.
  • Added new tests in test_locationPointing.py to verify the new strip imaging mode.
  • Created new message StripStateMsgPayload to interface locationPointing with stripLocation.
  • Added the scenario scenarioStripImaging showing how to perform strip imaging tasks.
  • Updated Python packaging metadata to use the PEP 639 license fields.
  • Added optional sunEclipseInMsg input to facetSRPDynamicEffector so that eclipse shadow conditions scale the SRP force and torque by the illumination factor.
  • Added documentation for the bsk-sdk plugin system, covering how to install, write, and distribute out-of-tree Basilisk plugins as standard Python wheels.
  • Added BSK_SUPPORT_DATA_CACHE environment variable to dataFetcher.py to allow overriding the default Pooch cache directory for support data files.
  • Added missing docstring to gravBodyFactory.createSpiceInterface() that prevented it from being built.
  • Added a detailed note for spicePlanetFrames describing default IAU_* behavior and supported alternatives.
  • Added an examples optional dependency set for installing example-only Python packages.
  • Added a matching python conanfile.py --examples True build option for source checkouts.
  • Improved gravityEffector gravity-coefficient loading to enforce consistent truncation.
  • Updated spherical-harmonic coefficient parsing to handle missing entries and reject malformed rows.
  • Added linkBudget, a communication module that computes link Carrier-to-Noise Ratio (CNR) between two antennas.
  • Fixed PythonVariableLogger to resume logging correctly after Reset() and handle edge cases.
  • Added spacecraftChargingEquilibrium module to solve coupled servicer/target equilibrium potentials.
  • Updated developer workflow for release notes to use snippet files.
  • Removed the default --clean flag from setup.py to allow incremental pip wheel builds.
  • TLE parsing fixed to be robust to file ending issues between LF and CRLF.
  • Updated conanfile.py to pass compiler.cstd=gnu17 during Conan builds.
  • Updated the World Magnetic Model (WMM) coefficients file to the 2025 version.
  • Local data fetches fall back to using the pooch fetch if local files are not found.
  • No longer prefetch ephemeris data kernels on initial local builds.
  • Warnings for not connected messages in simpleAntenna for ground-based antennas are no longer raised.
  • Updated documentation on how to use bskExamples to download tutorial examples.
  • Added thrJointCompensation module for joint torque compensation during thruster firing.
  • Added bskPrinciples-6a documentation entry on importing Basilisk data.
  • Added inertialCartFeedback module for inertial-frame relative motion control.
  • Added DragGeometryMsgPayload for drag computation geometry.
  • Added cannonballDrag model for MuJoCo aerodynamic drag.
  • Added linearTimeInvariantSystem module for state-space modeling in dynamics tasks.
  • Added singleActuatorLTI and forceAtSiteLTI subclasses.
  • Fixed grammatical typos in documentation and improved figure consistency.
  • Avoided memory leak when saving figures in CI unit tests.
  • Deprecated the pytest optional flag show_plots.
  • Added orbElemOffset for orbital element offsets.
  • Added cmdForceInertialToForceAtSite module for force frame transformation.
  • Added orbitalElementControl module for orbital feedback control.
  • Added scenarioFormationFlyingWithDrag example scenario.

Basilisk v2.9.1

21 Feb 03:37

Choose a tag to compare

  • Removed the default --clean flag from setup.py to allow for incremental pip wheel builds.
  • TLE parsing fixed to be robust to file ending issues between LF and CRLF.
  • Updated conanfile.py to pass compiler.cstd=gnu17 during Conan build step to avoid cspice/0067
    build failures on newer GCC 15 based Linux toolchains.
  • Local data fetches fall back to using the pooch fetch if local files are not found.
  • No longer prefetch ephemeris data kernels on initial local builds. The data fetcher will handle it.
  • Updated documentation on how to use bskExamples to download a copy of the tutorial examples
  • Added bskPrinciples-6a to explain how to import Basilisk provided data
  • Fixed range of grammatical typos in the Basilisk documentation
  • Ensure the HTML documentation figures from the example scenario look more consistent
  • Avoid a memory leak when saving off figures in the CI Unit tests to build the online documentation
  • Updated the World Magnetic Model (WMM) Coefficients file to the 2025 version.

Full Changelog: v2.9.0...v2.9.1

Basilisk v2.9.0

30 Jan 00:38
e969f0c

Choose a tag to compare

  • Deploy both release docs at https://avslab.github.io/basilisk and developer beta
    docs at https://avslab.github.io/basilisk/developer.
  • Added releaseGuide 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.
  • Removed supportData files from wheels and source distributions to reduce package size.
  • Added automatic MD5 registry generation via makeRegistry.py for 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.txt and 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 bskPrinciples-11 capability. Now enabled for extForceTorque, constraintDynamicEffector,
    and thrusterDynamicEffector attachable to spinningBodyOneDOFStateEffector,
    spinningBodyTwoDOFStateEffector, and spinningBodyNDOFStateEffector.
  • Added support for linearTranslationOneDOFStateEffector to attach dependent effectors.
  • Improved documentation structure by separating build-from-source instructions from pip installation instructions.
  • Added custom reaction wheel: "NanoAvionics RW0" to src/utilities/simIncludeRW.py
  • Added 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 from Basilisk.architecture.astroConstants.
  • Made statistical unit tests more robust
  • Fix typo in how gravityEffector compute the planets gravity potential contributions
  • Added fault modeling capability to magnetometer module.
  • Added new module MJSystemCoM to extract the system center of mass position and velocity from a MuJoCo simulation.
  • Added new module MJSystemMassMatrix to extract the system mass matrix from a MuJoCo simulation.
  • Added new module MJJointReactionForces to extract the reaction forces and torques acting on the joints from a MuJoCo simulation.
  • Added new module hingedJointArrayMotor to determine the motor torques for an array of hinged joints.
  • Added new module jointMotionCompensator to determine the hub torques required to negate the effect of hinged joint motor torques on the spacecraft hub motion.
  • Updated locationPointing module to save omega_RN_B to the attGuidOutMsg. 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 use ClassicalElements() defined in orbitalMotion.
  • Added documentation to 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 constraintDynamicEffector.
  • Added new example scenarios demonstrating extended use of constraintDynamicEffector:
    scenarioConstrainedDynamicsManeuverAnalysis, scenarioConstrainedDynamicsComponentAnalysis,
    and scenarioConstrainedDynamicsFrequencyAnalysis.
  • Added a new stepper motor simulation 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 spinningBodyNDOFStateEffector and
    linearTranslationNDOFStateEffector.
  • Capitalized all structures in linearTranslationOneDOFStateEffector and 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 vizInterface has been built or not. Example scripts check if vizSupport.vizFound is true
    to execute vizInterface related code.
  • In vizSupport, in the method setInstrumentGuiSetting(), corrected the spelling of
    showTransceiverFrustrum to be showTransceiverFrustum. The prior argument name has
    been deprecated.
  • For vizInterface.settings, changed the name of viewCameraConeHUD to viewCameraFrustrumHUD
  • Added support for Vizard 2.3.1 features
  • Refactor and optimize Event checking in SimulationBaseClass. Time-based events can be specified by a more efficient
    conditionTime instead of a conditionFunction. This is especially useful for large numbers of events.
  • Added option for exactRateMatch=False when creating events which causes events to be checked whenever the
    eventRate has elapsed since the last check (as opposed to only when the current time is an exact multiple of the
    eventRate).
  • ConfigureStopTime now 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 prescribedMotionStateEffector module for attachment of other state effectors to it
    rather than the spacecraft hub.
  • Configured the spinningBodyOneDOFStateEffector, spinningBodyTwoDOFStateEffector, and
    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 spinningBodyOneDOFStateEffector and spinningBodyNDOFStateEffector
    both registered their states under the same name, resulting in overwriting and a BSK_ERROR.
  • Added support for 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 simpleInstrumentController module.
  • Added a new scenario that simulates a debris strike on a flexible solar array scenarioImpact.
  • Updated imuSensor to remove deprecated direct setting of walkBoundsGyro and walkBoundsAccel.
    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 prescribedRotation1DOF kinematic profiler module.
  • Added a new prescribed helical screw motion example scenario. See scenarioPrescribedScrewMotion.
  • Added SysModelMixin, a utility class in py_sys_model.i that can be used for subclasses
    of SysModel (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). Refactored
    pyStatefulSysModel.i to use this mixin.
  • Added support for setting the position and velocity of MJBody with pure translational motion.
  • Added getAxis and isHinge to MJJoint.
  • Migrated supportData handling to a Pooch-based fetch system.
  • Removed supportData files from wheels and source distributions to reduce package size.
  • Made FacetSRPDynamicEffector variables numFacets and numArticulatedFacets private
    variables. Their use as public variables has been deprecated since December 2024.
  • Adds support for updating noise parameters in magnetometer during simulation
  • Deprecated use of shadowFactor in favor of illuminationFactor
  • Added scenarioAttitudeFeedbackRWMuJoCo, similar to scenarioAttitudeFeedbackRW but using
    MuJoCo dynamics.
  • Added the modules simpleAntenna and antennaPower.

Basilisk v2.8.0

30 Aug 15:57
68ec110

Choose a tag to compare

  • Marked the use of python 3.8 as deprecated

  • Support for opNavMode flag within vizSupport was removed, as its deprecation period ended

  • Demo video was added to scenarioQuadMaps documentation

  • Pinned python dependencies to avoid issues with new package versions.

  • Updated vscmgStateEffector documentation.

  • Added a new vscmgGimbalRateServo module that computes the VSCMG wheel motor torque and gimbal motor torque.

  • Added a new vscmgVelocitySteering module that computes the desired VSCMG wheel accelerations and gimbal rates.

  • Added a new github workflow job canary to routinely check the compatibility of latest python dependencies with python 3.13 on the latest mac-os.

  • Deprecated SpacecraftSystem. It was never completed and we have other ways to connect spacecraft components

  • Allow event conditions and effects to be defined by functions. This is preferred over the old string-based method, as it
    enables the use of arbitrary packages and objects in events and allows for event code to be parsed by IDE tools.

  • Add a sun message input and theta_solar threshold to SpacecraftLocation.

  • Fixed an issue where DynamicObject classes computed time steps by differencing double values rather
    than uint64_t values in nanoseconds. This could cause micro drifts in the integration process. See
    Issue 993 <https://github.com/AVSLab/basilisk/issues/993>_ for more info on this issue. Now the time step is computed
    using uint64_t time values and then converted to a double.

  • Enhance how uint64_t values are converted to doubles. BSK now warns if the time value is large enough such
    that the conversion method has a loss of precision in this process.

  • Support including an eclipse message in SpacecraftLocation to more accurately determine illumination.

  • Fixed an issue where the spaceToGroundTransmitter would check for the amount of data remaining in a different partition than the one being downlinked.

  • Fixed an issue where a high baud rate prevented the spaceToGroundTransmitter from downlinking data from the simpleStorageUnit or partitionedStorageUnit.

  • Updated default Windows compiler to be Visual Studio 17 2022. The CI test build now occurs on Windows 11.

    .. warning::

    If you still want to use Visual Studio 16, then be sure to set the generator
    using python conanfile.py --generator "Visual Studio 16 2019

  • Improve reading speed of recorded messages by about 75%.

  • Added support for Vizard 2.3.0

  • Adds support for updating noise parameters in simpleNav during simulation

  • Redirected MuJoCo errors and warnings to bskLogging instead of printing to file.

  • Update vizSupport for the saveFile argument to take an explicit
    file path and file name and not auto-generate the _VizFiles sub-folder. This provides the
    user more direct control where and how the simulation data is saved.

  • Support calling unsubscribe on input messages.

  • Fixed an issue where the forceTorqueThrForceMapping module's Reset() function did not zero all thruster settings correctly.

  • Updated canary workflow to run on all pull requests to the develop branch, providing feedback on compatibility with latest dependencies.

  • Added links to published paper in oneAxisSolarArrayPoint documentation.

  • Converted RW data structures in reactionWheelStateEffector to shared pointers instead of raw pointers.

  • The BSKLogger now raises a BasiliskError (Basilisk.architecture.bskLogging.BasiliskError)
    if something is logged at BSK_ERROR level. Certain errors are reduced to BSK_WARNING to reflect
    the new behavior.

  • Improve reading speed of recorded messages by 1-4 orders of magnitude.

    .. warning::

    This is a breaking change, see list of known issues for details. Please report any issues
    (at buildtime or runtime) with recorders for custom payloads.

  • Support initialization of fields in the constructor of message payloads (in Python).

  • Improve string representation of message payloads (in Python).

  • Add support for pretty-printing message payloads (in Python).

  • Updated documentation and all scenarios to use new payload constructor format.

  • Add scenarioBranchingPanels, which showcases a branching solar array configuration, staged deployment,
    and joint locking when panels are stowed or fully deployed.

  • Bugfix: joint velocity not being reported correctly in MJScalarJoint.

  • Add addJointSingleActuator to MJScene. This can be used to add actuators acting on joints
    to a MuJoCo-based simulation (e.g. motors that produce torque).

  • Add method to scalar joints class to get to the equality constraint object that can be used to constrain
    the joint to a specific value (MJScalarJoint::getConstrainedEquality).

  • Add methods setSolref and setSolimp to MJEquality to enable control of the solver parameters
    that control how the equalities are enforced in MuJoCo.

  • Add PID controller models for MJScene. Currently implemented JointPIDController, which can read the state
    of a joint and output a torque to act on said joint to achieve a desired angle and angular velocity.

Basilisk v2.7.0

20 Apr 14:29
632da36

Choose a tag to compare

  • Updated Linux and Windows CI builds to use swig 4.2.1
  • Updated CI scripts to run on latest macOS and no longer use Ubuntu 20.04
  • Updated makeDraftModule to remove redundant comments and implementation of the destructor,
    using only a header-defaulted destructor with = default; syntax.
  • Fixed issue where reaction wheels with unlimited torque (useMaxTorque=False) would end simulation prematurely
  • Added safety mechanism to limit excessive wheel acceleration and provide warning messages
  • Fixed a bug in the SpacecraftLocation module that prevented proper eclipse calculation in some cases.
  • Added support for Vizard release 2.2.2, including transition from MultiSphere to MultiShape, and SWIG structure deprecation through aliasing.
  • Fixed scenario name mismatch in scenarioRerunMonteCarlo that prevented rerunning example Monte Carlo simulation scenarios.
  • Fixed bug in thrusterPlatformReference where a DCM had an incorrect transpose operation.
  • Memory Leak for reactionWheelStateEffector fixed via destructor update, swig update,
    and removing .disown() in RW factory classes.
  • Removed the use of .disown() in all BSK scripts. Python code is modified to ensure
    required message of class instance are retained in memory if needed. This removes
    a memory leak issue when running lots of instances of BSK in Monte Carlo runs.
  • C++ wrapped sensor objects (CSS, thrusters, reaction wheels) must now be stored
    on the simulation object to prevent premature garbage collection. This change affects all scenarios
    using these components. See bskKnownIssues for detailed explanation and examples. Users
    upgrading from previous versions must update their scripts to store these objects on their
    simulation instance to prevent segmentation faults. Once again, this change replaces the previous use of
    .disown() with a more robust memory management approach.
  • Added comprehensive unit tests for avsEigenSupport including tests for vector and matrix operations
    and conversions.
  • Updated install requirements to not manually install cmake, but have it installed with pip by including it
    in requirements_dev.txt. A conan dependency requires Basilisk to use cmake<4.0 for now.
  • Add support for python 3.13 by removing the use of eval() and most exec() methods,
    rewrote methodizeEvent() in SimulationBaseClass.py. If you use python 3.13+ the
    scope of the eval() method has changed (see https://peps.python.org/pep-0667/).
  • Added lla2fixedframe() function in vizSupport which provides ability to define Locations on a parent body by providing latitude/longitude/altitude relative to reference ellipsoid.
  • Fixed a bug in radiationPressure where parseAndLoadXML() would raise a ValueError when using VS Code's debugger.
    The error occurred in Python 3.10.12 because numpy arrays that reference other arrays cannot be resized
    without setting refcheck=False. This fix allows debugging scenarios that use the radiation pressure module.
  • Enhanced FSW effector interface modules to zero output messages in their reset methods, ensuring safe management
    of effector states when algorithms are disabled. This prevents potential runaway operations by clearing stale
    control values.
  • Updated scenarioDeployingSolarArrays to use the new P-frame designation for the prescribed motion body
  • Deleted deprecated prescribedRot1DOF and prescribedTrans modules. They have been replaced a while ago
    with prescribedRotation1DOF and prescribedLinearTranslation.
  • :beta:Mujoco Support: Added a new DynamicObject for multi-body dynamics that uses the MuJoCo <https://mujoco.org>_ library.
    Information about using mujoco is found in mujocoDynObject. This is a work in progress, and is not
    yet ready for general use. This system will be expanded to include more features and capabilities in future releases.
  • Added support for showing QuadMap quadrilateral surface meshes in Vizard, with scenario scenarioQuadMaps detailing usage. Allows users to draw quads on celestial bodies and spacecraft.
  • Added fixedframe2lla() function in vizSupport which is useful for computing QuadMap mesh interpolations
  • Added QuadMap mesh support functions (quadMapSupport) for displaying camera FOV boxes as projected on the surface of a reference ellipsoid, and drawing rectangular latitude/longitude defined regions.
  • Updated THRSimConfig to use a shared pointer to avoid duplication of configuration data across the simulation and to enable access and updates to the parameters during simulation. This change has been implemented in both the thrusterDynamicsEffector and thrusterStateEffector modules.
  • :beta:Mujoco Support: Added StatefulSysModel for models in the dynamics task of MJScene that need to declare
    continuous-time states. Modified scenarioDeployPanels to illustrate the use of StatefulSysModel.

Basilisk v2.6.0

21 Feb 22:40
9b7d0da

Choose a tag to compare

  • Build ubuntu-latest wheels for Python 3.9, 3.10, and 3.11 on GitHub CI, allowing for
    other CI systems to use these wheels for testing with Basilisk as a dependency.
  • updated README file. Links now point to local documentation instead of to the pages
    on the AVS lab web page that used to host the documentation.
  • Updated scenarioBasicOrbitStream to add the ability to pause and resume the live BSK stream
  • Added documenation on installing with pip via source code in pipInstall
  • Updated scenarioOrbitManeuver to include a SPICE module that rotates the Earth
  • Changed the way polyhedron gravity is computed to be more computationally efficient
  • Updated vizInterface to flush the output buffer when saving binary files to avoid truncation
  • Updated examples to better include folders of scenario tutorial scripts
  • Updated documentation build to use latest version of sphinx and sphinx_rtd_theme.
    Updated the install documenation and optional package requirements.
  • Updated MonteCarloExamples directory with a bokeh plotting feature robust to large Monte Carlo datasets
  • Updated scenarioVisualizeMonteCarlo to autogenerate live bokeh plots in Sphinx documentation
  • Updated scenarioMonteCarloAttRW to include the new useBokeh feature in the run() method
  • Updated scenarioMonteCarloAttRW to use more pythonic OOP for Monte Carlo data retention
  • Updated scenarioMonteCarloSpice to use more pythonic OOP for Monte Carlo data retention
  • Decreased the Basilisk wheel size by keeping large data files out of the wheel.
  • The wheel installs the local command tool bskLargeData to execute bskLargeData.
    The purpose is to install the large Basilisk data files into the local Basilisk
    python package.
  • The wheel installs the local command tool bskExamples to execute bskExamples. This
    tool downloads the Basilisk repo examples folder into the local folder
  • Removed the now deprecated datashader_utilities.py in favor of the new bokeh plotting features in AnalysisBaseClass.py
  • Upgraded protoc compiler to v3.20.0, added protobuf to optional package install list
  • Created unit tests for protobuffer packing and saving in vizInterface
  • Added YouTube video links of Vizard illustrating the scenarioFlexiblePanel and
    scenarioRoboticArm scenarios.
  • Fixed issue in which reading RWModel from RW message payloads when vizInterface was also
    imported would return a Swig Object instead of an enumerated integer.
  • Refactored the GaussMarkov class to enforce walk bounds and remove the need for the 1.5x noise multiplier.
    Note: Existing code that used this multiplier will need to be updated to maintain the same behavior.
  • Removed the deprecated 1.5x multiplier in magnetometer and coarsesunsensor when setting 'senNoiseStd'
  • Updated starTracker unit tests to properly convert EP's to rotation vector now that random walk exists
  • Added scenarioGaussMarkovRandomWalk to showcase GaussMarkov class functionality
  • Added unit test coverage for GaussMarkov implementation in tempMeasurement,
    simpleNav and planetNav.
  • Fixed SWIG array handling for message payloads on macOS, particularly addressing issues with uint8_t arrays and other
    array types in message payloads. This resolves compatibility issues between SWIG's array typemaps and builds.
  • A bug was fixed in the facetSRPDynamicEffector module. A transpose was required to be added to a dcm
    in order to correctly express rotated facet normals in the spacecraft body frame.
  • The facetSRPDynamicEffector module was refactored and setters and getters were added for the module
    variables numFacets and numArticulatedFacets. A deprecation warning is added to the module documentation
    stating that these variables will be moved to private module variables in Dec 2025. To access these variables
    the added setters and getters must be used.
  • Fixed a bug in which the MtbEffector.py module was not being imported correctly in Python due to lack of swig_eigen.i
    include file in MtbEffector.i.
  • Added the capability to simulate a fault in the simpleBattery module that reduces the actual storage capacity without directly altering the stated capacity.
  • Cleaned up what python packages are required to build BSK (requirements_dev.txt),
    to run BSK (requirements.txt) and to build BSK documentation (requirements_doc.txt).
  • The BSK install instructions are updated to ask users to install by first pip installing build
    required packages through requirements_dev.txt.
  • Update the build process to use conan version 2.x

Warning: You have to upgrade your python conan package to be able to build Basilisk. Use python install --upgrade conan.

  • Added support for subclassing StateData and overloading certain methods. This enables support for custom state
    behavior, such as quaternions, which have size 4 but their derivative is size 3. This is done in preparation of
    a future MuJoCo integration. Note the warning below regarding SWIG files for dynamicEffector and stateEffector.

Warning: SWIG files for subclasses of dynamicEffector and stateEffector must now
%include "simulation/dynamics/_GeneralModuleFiles/dynParamManager.i" instead of
%include "simulation/dynamics/_GeneralModuleFiles/dynParamManager.h". See
src/simulation/dynamics/dragEffector/dragDynamicEffector.i for an example.

  • Update CI Linux build with opNav to use Ubuntu 22.04, not latest (i.e. 24.02). The latter does not
    support directly Python 3.11, and Basilisk does not support Python 3.13 yet.
  • simIncludeGravBody set the moon equatorial radius in km, not meters.
  • fixed subMRP() routine in RigidBodyKinematics
  • Updated solarArrayReference to correct the wrong assumption of reflective solar arrays for momentum management pointing mode.
  • Updated the CI build that includes the documentation to fail if a doxygen warning happens
  • Removed deprecated swig code that allowed still importing sys_model.h instead of sys_model.i
  • Updated groundMapping to correct behavior if maximumRange == -1
  • Updated scripts to work with matplotlib version 3.10.x without errors or warnings
  • Add support for Python 3.12
  • Resolved inconstencies in sensor noise handling for the imuSensor, coarseSunsensor,
    magnetometer, starTracker, and simpleVoltEstimator modules.
  • Added setter and getter methods for the propagation matrices in the simpleVoltEstimator
    and starTracker modules as their Amatrix attributes were private.
  • Name change warning added to module documentation for the imuSensor walkBounds attribute to errorBounds
    and a note on specifying sensor properties in scenarioGaussMarkovRandomWalk.
  • Update makingModules-2 on how to make messages available to Basilisk modules
  • Support for Vizard release 2.2.1, including rotating frame settings and documentation for support of .glb shape files
  • vizProtobuffer upgraded to use latest C++ compiler, protobuf Python/C++ library upgraded
  • Updated installLinux to discuss installing BSK on Fedora Linux systems.
  • Updated CI scripts to catch cases where tests are skipped that should be. Windows now builds properly with conan2.
  • Download cspice using conan instead of providing custom libraries. This ensures all platforms are using
    the same version of cspice.
  • Ensured that the ability to designate an external BSK folder still works with conan2

Basilisk v2.5.0

30 Sep 14:07

Choose a tag to compare

  • Added swirl torque information to THRConfigMsgPayload, thrustCMEstimation, and thrusterPlatformState
  • Updated required version of setuptools to avoid installation error ("invalid command bdist_wheel") on
    some environments.
  • Made the initial Basilisk build more robust in case de430.bsp download was interrupted
  • Enhanced thrusterDynamicEffector to allow automatic scaling down of thrust and Isp as fuel mass depletes.
  • Fixed issue with vizInterface not being able to save to file
  • Fixed issue with vizInterface not saving off Vizard protobuffer message on first time step
  • Created an input device status message to toggle the constraintDynamicEffector dynamics module on/off.
  • Created an output message to record constraint forces and torques acting on separate spacecraft connected using a constraintDynamicEffector dynamics module.
  • Added in a low-pass filter to filter the output forces and torques of the constraintDynamicEffector dynamics module.
  • Removed deprecated way to log Basilisk module variables
  • Removed deprecated way to create C-wrapped Basilisk modules
  • Corrected Equations (11) and (12) in the celestialTwoBodyPoint PDF documentation
  • Expanded the GitHub CI tests to run scenario script tests
  • Untangled ClassicElementsMsgPayload which was used both as a message payload definition
    and as a data structure inside modules. The use of classicElements() is now depreciated
    for the use of ClassicElements() defined in orbitalMotionutilities.
  • Added packaging>=22 dependency for installing Basilisk to solve an incompatibility issue with setuptools.
  • Added support for macOS to the CI test builds, including opNav for all three platforms
  • Added CI support to test Linux on latest Ubuntu with opNav
  • Added CI support to build and test Basilisk documentation on the GitHub macOS platform
  • Added new scenario scenarioOrbitManeuverTH to do Hohmann transfer using thrusters
  • Made sure that astroFunctions and simIncludeGravBody now all pull from the same set of
    astronautical data in astroConstants. These tools now all use a consisten set of planet data
    referenced from NASA sources.
  • Updated simIncludeRW to allow values of fCoulomb, fStatic and cViscous to be
    specified even if a prebuilt RW data set is used.
  • If messaging was not imported then the msg recorder() modules couldn't be setup. Now
    messaging is imported as part of the Basilisk package so the recorder() modules always work.
  • Added the ability for GitHub to rebuild the BSK documentation each time a branch is merged back into develop.
    This way the online documentation for develop is up to date for each contribution, not just for the hand-built
    documentation we did with major tagged releases. The new Basilisk online documentation list is now
    <https://avslab.github.io/basilisk>__.
  • Small updates to the Cmake build process to remove unneeded policies and python 3 swig overwriting scripts
  • Added a Lambert's problem based FSW package to compute the DV maneuver required to get to a desired location at a
    desired time. At that location, another maneuver may be performed to match the surface velocity of a celestial body.
    This FSW package consists of the modules lambertSolver to solve Lambert's problem, lambertPlanner to
    set up and define the Lambert problem, lambertValidator to check if the solution from the lambertSolver
    module violates any constraints before a Delta-V is commanded, lambertSurfaceRelativeVelocity to compute the
    inertial velocity required to match the surface velocity of the central body, and lambertSecondDV to compute
    the DV maneuver required to match the surface velocity.
  • Added scenarioLambertSolver scenario to illustrate the Lambert's problem FSW module package
  • Added scenario_LambertGuidance BSK-Sim scenario to illustrate the Lambert modules in different flight modes
  • Added new scenario scenarioSweepingSpacecraft to perform sweeping maneuvers.
  • Added a new :math:N-axis translating effector linearTranslationNDOFStateEffector and a corresponding scenario
    scenarioExtendingBoom.

Basilisk v2.4.0

23 Aug 14:39
fd1f287

Choose a tag to compare

  • Added a new example scenario scenarioConstrainedDynamics demonstrating post-docked spacecraft dynamics

  • Created a constraintDynamicEffector dynamics module to couple separate spacecraft motion using holonomic
    constraints

  • Removed the depreciated manner of creating python modules

  • Created a new example scenario scenarioTempMeasurementAttitude demonstrating the use of tempMeasurement module and generating random noise in the measurement.

  • Uncaught exceptions raised in Python modules are now printed to stderr before the program is terminated.

  • Updated Basilisk and Vizard logos and provided download links

  • Updated News and Discussions menu tab to be External Links to Basilisk related web sites

  • Added a new N-axis spinning effector spinningBodyNDOFStateEffector. This is an expansion of spinningBodyOneDOFStateEffector
    and spinningBodyTwoDOFStateEffector to any number of degrees of freedom.

  • Update the Windows build to automatically include the Math library defines. This avoids having
    to include them in BSK source code files individually.

  • Added support for arrays and 2D arrays of 16 and 64 bit integers in message definitions

  • Fixed bug where 2D arrays of 32 bit integers would have elements of type float in python.

  • Fixed the Identity() method in avsEigenMRP library.

  • Fixed the SpiceInterface::initTimeData() method to write epoch strings with microsecond precision instead of 0.1 second precision
    to prevent SPICE errors when epochs ending with seconds higher than 59.95 seconds got rounded up to 60.0 seconds

  • Update dynamicEffector and stateEffector classes to be able to pull the state engine names of the
    spacecraft hub object

  • The fuel tank module is refactored to remove the limitation of a only being able to have a single instance of a
    specific tank model type.

  • Update Basilisk documentation build system to use latest version of sphinx and sphinx_rtd_theme

  • Added time tag to CSSArraySensorMsgPayload

  • updated Eigen library to 3.4.0

  • updated OpenCV library to 4.5.5

  • Added support for Vizard 2.2.0

  • Added documentation on using pre-commit formatters and clang formating

  • Added two new scenarios that use the spinningBodyNDOFStateEffector module. scenarioRoboticArm simulates
    a robotic arm that changes orientation through the use of the prescribedRotation1DOF profiler module.
    scenarioFlexiblePanel simulates a flexible panel that has torsional and bending modes, which are approximated
    though a lumped-mass approach and discretized to as many subpanels as needed.

  • Fixed protectAllClasses method in Basilisk.architecture.swig_common_model so that it actually protects the classes
    in the given module (prevents code from setting unknown attributes). This might impact user code that depended on adding
    additional attributes to python classes generated by SWIG.

  • Updated install instructions to specify python version 3.8 to 3.11 are required. Python 3.12 does yet work.

  • Updated bskPrinciples-6 to discuss how to log private C++ module variables that have a getter method

  • Updated cppModuleTemplate to make user configurable variables private, accessed via setter and getter methods

  • Updated makeDraftModule to make C++ modules with private module variables using setter/getter methods

  • Updated cppModules-1 to discuss the new expectation that C++ modules are all private. This enables
    graceful module variable depreciation if needed.

  • Added support for numpy 2.0.

  • Fixed use of spherical coordinate system in magneticFieldWMM model.

  • Added ability to run the GitHub pull_request.yml action on a select branch

  • Fixed mass depletion rate bug in thrusterStateEffector previously fixed at 100%

  • Enhanced solarArrayReference with a mode that can compute the reference for the solar arrays that maximizes SRP torque opposed to current RW net momentum.

  • (Beta) Added PEP-517-compliant project specification, providing initial support for installation via pip install ..

    • NOTE: This is primarily intended to support pre-compiled releases in the future. All users are recommended to continue
      using python conanfile.py installation for now.
  • The cmake command now downloads large Spice data files automatically from the JPL server.

  • Updated Conan/CMake build system to avoid unnecessary recompilations and greatly speed up rebuilds.

Basilisk v2.3.0

06 Apr 01:02
dfd8522

Choose a tag to compare

  • Added optional facet articulation to the facetSRPDynamicEffector module.
  • Fixed a bug where the legacy variable logging API would either, not log at all or log at a rate different to the
    requested rate.
  • Fixed a python version checking bug that prevented Basilisk from compiling on Windows
  • Created a new example scenario scenarioHaloOrbit demonstrating a near-Halo orbit simulation
  • Updated versioning to better follow the semantic versioning <https://semver.org>_ standard, in the format
    MAJOR.MINOR.PATCH. Releases will increment the minor version number, while pull requests into develop will
    automatically increment the patch number. This allows users to reference/require specific versions of Basilisk
    outside of the release cycle.
    Online documentation is only built for the MAJOR.MINOR.0 releases
  • updated plotting of opNav example scenarios to work again with latest version of matplotlib
  • fixed a slew of compiler warnings when compiling with Xcode 15
  • Refactored the PrescribedTransMsgPayload message by renaming the message to
    LinearTranslationRigidBodyMsgPayload and renaming the message variables from scalarPos and scalarVel to
    rho and rhoDot
  • Deprecated the prescribedMotionMsgPayload message and replaced with two separate
    prescribedTranslationMsgPayload and prescribedRotationMsgPayload messages.
  • added support for the new swig 4.2 version
  • updated the Windows build to compile properly with opNav flag set to true. A
    opencv related flag had to be updated.
  • added supoport for Vizard 2.1.6
  • Created a prescribedLinearTranslation dynamics module to profile prescribed linear translation for a
    secondary rigid body connected to the spacecraft hub. This new module deprecates the prescribedTrans module.
    To simulate the translation, this module must be connected to the prescribedMotionStateEffector
    dynamics module.
  • Created a prescribedRotation1DOF dynamics module to profile a prescribed 1 DOF rotation for a secondary
    rigid body connected to the spacecraft hub. This new module deprecates the prescribedRot1DOF fsw module.
    To simulate the rotation, this module must be connected to the prescribedMotionStateEffector dynamics module.
  • Created a new example scenario scenarioDeployingSolarArrays demonstrating how to simulate hub-relative
    multi-body prescribed motion.
  • Added support for Vizard 2.1.6.1
  • Updated MtbEffector to include missing swig interface file for a message definition and corrected
    message table in the module documentation.
  • Added smoothed bang-bang and smoothed bang-coast-bang profiler options to the prescribedLinearTranslation
    simulation module. Note that the optional module variable coastOptionRampDuration has been renamed to
    coastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change as
    setCoastOptionBangDuration() and getCoastOptionBangDuration(), respectively. See the module documentation
    for the current usage of this parameter and these associated methods.
  • Added a new commanded linear force array LinearTranslationRigidBodyMsgPayload.
  • Added a new single-axis translating effector linearTranslationOneDOFStateEffector.
  • Added smoothed bang-bang and smoothed bang-coast-bang profiler options to the prescribedRotation1DOF
    simulation module. Note that the optional module variable coastOptionRampDuration has been renamed to
    coastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change as
    setCoastOptionBangDuration() and getCoastOptionBangDuration(), respectively. See the module documentation
    for the current usage of this parameter and these associated methods.

Basilisk version 2.2.1

22 Dec 16:51
28c71be

Choose a tag to compare

  • Created a new example scenario scenarioSatelliteConstellation demonstrating setup of a Walker-Delta constellation
  • Created a new pinholeCamera module to support generation of landmarks-based measurements around a
    small body.
  • Corrected a memory leak in the swig access to standard vectors inside messages.
  • A new integrated example script scenarioSmallBodyLandmarks demonstrates the use of the pinhole camera module
  • Created a new example scenario scenarioSpinningBodiesTwoDOF that showcases the different capabilities of the
    spinningBodyTwoDOFStateEffector module.
  • Corrected an error with thrusterStateEffector where if there are multiple instances of the
    thruster state effector then the last effector will over-write all the state of the earlier thrusters.
  • Corrected an error with magnetometer where the RNG seed was passed to the Gauss-Markov noise model within the
    constructor and could therefore not be modified after creating the object. Furthermore, the noise model is now only
    used if all three components of the standard deviation parameter are initialized to a positive value.
  • Removed fswAuto and associated documentation, as the tool was outdated.
  • Changed how C modules are wrapped as C++ classes. This makes handling C modules the same as C++ modules,
    removing the need for "Config" and "Wrap" objects. Updated all scenarios and test files for this new syntax.
    To convert prior script to use the new syntax, see bskPrinciples-2 for the simple new
    syntaxt to add C-modules.
  • Modified mrpFeedback to enable the use of a modified control law, and added the integral control torque
    feedback output message.
  • Resolved a crash, induced by uninitialized memory, in the Camera module. The crash was first seen on Ubuntu 22 with
    gcc 9.5
  • Implemented new syntax for variable logging. See bskPrinciples-6.
  • Basilisk minimum Python version is now formally 3.8.x (checked by build files). Previously, it was indicated to be
    3.7.x yet in practice it was 3.8.x.
  • Added a TotalAccumDV_CN_N field in SCStatesMsgPayload that saves the total accumulated velocity of the
    spacecraft's center of mass in the inertial frame.
  • Added prescribed angle and angle rates to spinningBodyOneDOFStateEffector and spinningBodyTwoDOFStateEffector
    modules.
  • Created a scanningInstrumentController, similar to simpleInstrumentController, but which constantly checks if the attitude error
    and angular rate (optional) are within the requirement limits and sends an imaging command to a simpleInstrument.
  • Added a new scenario scenarioHohmann that performs a Hohmann transfer with attitude mode changes.
    The basic attitude flight modes are implemented using the Basilisk event system.
  • updated conan support to latest 1.xx version to provide support for macOS Sonoma
  • updated macOS cspice library to be compiled with Xcode 15. This addresses some errors that appeared
    when calling the prior pre-built cspice library. The new library is backwards compatible with
    prior versions of Xcode.
  • Fixed a bug in the conanfile where the stderr output from a subprocess.Popen call was being interpreted as an
    error. Rather, the process return code (0 for success, and anything else for failure) indicates the success.
  • The MAX_N_CSS_MEAS define is increased to 32 matching the maximum number of coarse sun sensors.
  • mixed bug in time to nano-seconds conversions in macros.py support file
  • Created thrusterPlatformState to map the thruster configuration information to body frame given the time-varying platform states.
  • Updated thrusterPlatformReference to add an input and output thruster config msg, and integral feedback term
    which dumps steady-state momentum in case of uncertainties on the CM location.
  • Created thrustCMEstimation to perform online estimation of the CM using gimbaled thruster torque measurements.
  • Refactored GravityEffector. Adding custom gravity models can now be done by subclassing GravityModel. The
    utility method useSphericalHarmonicsGravityModel has been added to planetary body objects, which makes the body
    use spherical harmonics and loads them from a file with a single command. Similarly, the methods usePolyhedralGravityModel
    and usePointMassGravityModel have been added.
  • Fixed examples and tests to run even when Basilisk is built with --vizInterface False.
  • Added a new method setDataBuffer() to simpleStorageUnit and partitionedStorageUnit to add or remove data from specified partitions.
  • Refactored simIncludeGravBody. The most notable change for users is that the commonly used line
    scObject.gravField.gravBodies = spacecraft.GravBodyVector(list(gravFactory.gravBodies.values()))
    can be replaced by gravFactory.addBodiesTo(scObject) (where scObject is a spacecraft.Spacecraft
    or spacecraftSystem.SpacecraftSystem, and gravFactory is a simIncludeGravBody.gravBodyFactory)
  • Added condition in thrustCMEstimation to avoid measurement updates when input attGuidInMsg has not been written.
  • Added scenarioSepMomentumManagement to show how to use a dual-gimbaled electric thruster to perform continuous
    momentum management.
  • Clarified documentation of the input variable FirstStart of the method CreateNewTask().
  • Marked the method CreateNewTask() input variable InputDelay as depreciated. This variable
    was never implemented and did nothing.
  • Fixed terminal events to terminate at the time they are triggered instead of one timestep after.