.. Copyright (c) 2026, Autonomous Vehicle Systems Lab, University of Colorado at Boulder Version 2.0 Release Notes ========================= .. _bsk-release-2-0-7: Version 2.0.7 ------------- - new :ref:`forceTorqueThrForceMapping` to map commanded forces and torques to a set of thrusters - updated Vizard documentation on the setting flags ``orbitLinesOn`` and ``trueTrajectoryLinesOn`` - added power and fuel tank modules to the :ref:`BSK_MultiSatDynamics` class. - improved the DV calculation of the spacecraft state output message by integrating the gravitational acceleration using the current integration scheme rather than using a first order approximation. - updated install script to be able to have ``conan`` install ``opencv`` again. Something changed with the ``conan`` repo that broke this. - updated BSK install instructions on the M1 Apple Silicon platform as Basiliks can now run natively .. _bsk-release-2-0-6: Version 2.0.6 ------------- - updated :ref:`vizInterface` to support Vizard 1.9.1 and the ability to visualize generic sensor types and antenna communication status - updated :ref:`ephemerisConverter` to also convert the planet orientation states, not just the translational states - added a :ref:`planetNav` module that adds noisy to planet ephemeris, similar to simpleNav. - created a new device command status message :ref:`DeviceCmdMsgPayload` and updated :ref:`simpleInstrumentController`, :ref:`simpleInstrument` and :ref:`spaceToGroundTransmitter` to make use of it. - added :ref:`attRefCorrection` to adjust the reference attitude by a fixed rotation - added :ref:`scenarioAttitudePrescribed` to illustrate how to prescribe the spacecraft orientation - added new modules :ref:`mtbFeedforward`, :ref:`mtbMomentumManagementSimple`, :ref:`dipoleMapping` and :ref:`torque2Dipole` which are using in combination to achieve MTB based RW momentum dumping. - added a new magnetic RW momentum dumping example in :ref:`scenarioMtbMomentumManagementSimple` which illustrates using the above new MTB related modules to change the momentum, as well as drive the nominal momentum to a desired value using :ref:`rwNullSpace`. - created a new architecture based on ``BskSim`` called ``MultiSatBskSim``. It exploits the new messaging system to create a simulation with any number of spacecraft in a highly modular way. It allows for the addition of homogeneous or heterogeneous satellites without having to hard code their properties into a single dynamics or FSW script. It will be a foundation to test the upcoming multithreading capabilities of Basilisk. - added three example scenarios that showcase this new architecture. See :ref:`scenario_BasicOrbitMultiSat`, :ref:`scenario_AttGuidMultiSat` and :ref:`scenario_StationKeepingMultiSat`. - added a new FSW module :ref:`formationBarycenter`. It computes the barycenter's position and velocity of a swarm of satellites. This barycenter can be either computed with cartesian coordinates (usual mass-weighted average), or using orbital elements weighted average. Will be useful for spacecraft formations defined around the barycenter of the swarm and not a chief spacecraft. - enhanced :ref:`locationPointing` to support the target input msg being either a location message or an ephemeris message - updated install notes to ensure Linux python3 developer libraries are installed, and to ensure that ``wheel`` package is installed along with ``conan`` - created :ref:`smallBodyNavEKF` to simulate autonomous navigation in proximity of a small body - added a :ref:`AttRefMsgPayload` output message to the :ref:`locationPointing` module. - added :ref:`cppModules-5` to the section on learning how to create BSK modules - updated :ref:`locationPointing` to support 3D rate damping as an option .. _bsk-release-2-0-5: Version 2.0.5 ------------- - fixed issue in :ref:`waypointReference` to interpolate between waypoint ``n`` and shadow set of waypoint ``n+1`` when these are described by opposite MRP sets. Updated documentation and corrected typos in :ref:`scenarioAttitudeConstraintViolation`. - Added :ref:`hillStateConverter` and :ref:`hillToAttRef` modules for formation flight navigation and attitude-driven differential drag - Added representative scenario :ref:`scenarioDragRendezvous` demonstrating attitude-driven differential drag formation flight - Added new scenario :ref:`scenarioDragSensitivity` showing how to do a differential drag spacecraft control sensitivity analysis - updated :ref:`celestialTwoBodyPoint` to account for a case where the celestial objects are in opposite directions - replaced ``acos()`` and ``asin()`` with ``safeAcos()`` and ``safeAsin()`` which ensure that arguments are clipped to be within and including -1 and 1 - updated :ref:`dataFileToViz` to allow the ``Reset()`` method to be called multiple times. If a data file was already opened, then it is closed before the next data file is opened. - updated :ref:`groundLocation` to also output SEZ coordinates, as well as range, azimuth, elevation, south, east and zenith coordinate rates. These coordinates are always computed regardless if a spacecraft is visible to the target. Check the ``hasAccess`` message variable to see if the spacecraft is visible. - updated the OpNav examples script to set a black sky background in the Vizard camera images - added a new Python method ``isSubscribedTo()`` to query if the input and output messages between two modules are connected - updated :ref:`gravityEffector` documentation to properly pull in the RST documentation and link to the PDF describing the gravity models - updated ``setAllButCurrentEventActivity`` method in :ref:`SimulationBaseClass` to work with multiple satellites. We can now add an index at the end of each event name that guarantees only events with the same index are affected. The ``useIndex`` flag must be set to ``True``. - added new magnetic torque bar effector in :ref:`MtbEffector` - added new FSW module to control the RW momentum using MTBs in :ref:`mtbMomentumManagement` - new tutorial example script :ref:`scenarioMtbMomentumManagement` - updated :ref:`rwNullSpace` to have an optional input message of desired RW speeds. These desired values default to zero so the module retains the earlier behavior if this optional input message is not connected. - added two lines in :ref:`waypointReference` to normalize the attitude quaternion that is read from file. .. _bsk-release-2-0-4: Version 2.0.4 ------------- - updated :ref:`spacecraft` ``Reset()`` method to write all spacecraft and effector state output messages with their initial values. This way these output messages are correct as already as calling the ``InitializeSimulation()`` method. - fixed an issue that could prevent ``.subscribeTo`` from a C++ to C wrapped message object to not function properly. - new :ref:`simpleInstrumentController` that sends an imaging command to a :ref:`simpleInstrument` if the attitude error and access to a :ref:`groundLocation` module are within requirements. - new :ref:`scenarioGroundLocationImaging` example script that demonstrates the aforementioned module integrated into a full on-board data system. - new :ref:`etSphericalControl` module that controls the relative motion of the Electrostatic Tug - new :ref:`scenarioDebrisReorbitET` example script that demonstrates using the Electrostatic Tug and the Multi-Sphere Method - updated :ref:`groundLocation` to always compute the elevation, range and azimuth information, even if the satellite does not have access. The output message variable ``hasAccess`` provides access information. - added scripting support for Vizard 1.8.4 - updated :ref:`scenarioGroundLocationImaging` to demonstrate the use of the new ``vizSupport.createTargetLine()`` method .. _bsk-release-2-0-3: Version 2.0.3 ------------- - new integrated scenario in :ref:`scenarioAttitudeConstraintViolation`. Shows how to use the :ref:`boreAngCalc` to display keep-in and keep-out constraint violations while performing slew maneuvers. - new :ref:`locationPointing` module to do 2-axis attitude control which aligns a body-fixed vector to a desired inertial location - new :ref:`scenarioAttLocPoint` example script how to point a spacecraft body axis towards Boulder - new integrated scenario in :ref:`scenarioAttitudeConstraintViolation`. Shows how to use the :ref:`boreAngCalc` to display keep-in and keep-out constraint violations while performing slew maneuvers. - updated :ref:`inertial3DSpin` to make the attitude input message optional, updated documentation to be RST only and more descriptive of the associated math, and changed the module variable ``omega_spin`` to ``omega_RR0_R0`` - enables the message ``recorder()`` module to function if the message structure contains structures itself. - make the build system compatible with Python 3.8 and higher on Windows - fixed custom RW support method in ``simIncludeRW.py`` - fixed new C++20 related compiler warnings .. _bsk-release-2-0-2: Version 2.0.2 ------------- - new waypoint reference module in :ref:`waypointReference`. It can be used to read an attitude maneuver from a set of waypoints on a text file, likely generated outside Basilisk. - updated :ref:`gravityEffector` to allow the planet message module (``spiceInterface`` or ``planetEphemeris``) to be called either before or after the ``spacecraft`` module update is called - Fix a range of long-standing HTML Documentation build warnings and issues - Renamed the messages ``CirclesOpNavMsgPayload`` to ``OpNavCirclesMsgPayload`` and ``OpNavLimbMsgPayload`` to ``OpNavLimbMsgPayload`` to avoid sphinx naming conflicts - unified the identical ``ukfUtilities.c/h`` files in ``attDetermination`` and ``opticalNavigation`` folders into ``architecture/utilities`` - added a new RW encoder simulation module :ref:`encoder` - Fixed a bug in the onboardDataHandling module that allowed for data that did not exist to be downlinked - changed default behavior of ``python3 conanfile.py`` to automatically compile the Basilisk project. This was a common stumbling point for new users. The build flag ``--buildProject`` can be used to enable automatic compiling or not. For developers making new code this should likely be set to ``False`` when configuring the project. - Fixed a bug in :ref:`SimulationBaseClass` that prevented creating an event with multiple conditions - added ``ShowExecutionOrder()`` method to :ref:`SimulationBaseClass` to print to the terminal the order that the process, tasks and modules are executed. - added ``ShowExecutionFigure()`` method to :ref:`SimulationBaseClass` to create a figure illustration the execution order. - added a new :ref:`bskPrinciples-2b` web page on how to visualize the BSK process, task and module execution - added new ``bskSim`` example scenario showing how to alternate between flight modes in :ref:`scenario_AttModes` - provide scripting support for Vizard 1.8.2 release .. _bsk-release-2-0-1: Version 2.0.1 ------------- - Added the ability to clear the data of a message recorder using ``.clear()`` - Fixed a rare issue where RW data didn't stick - Fixed an issue subscribing to a C++ wrapped message object from python - Cleaned up documentation on using datashaders and bokeh to interactively plot large simulation data sets. The script ``scenarioAnalyzeMonteCarlo`` is updated to discuss the particular challenges in running this datashader example of plotting data. - enable Monte Carlo ``pytest`` test scripts to run on macOS if Python 3.9 or higher is used - enable opNav scenario ``pytest`` test scripts to be tested by ``pytest`` if the build flag ``--opNav`` is set to true and the path to :ref:`Vizard ` application is set in :ref:`BSK_OpNav`. - fixed an issue that prevented subscribing to a C++ msg from python - moved :ref:`cModuleTemplate` and :ref:`cppModuleTemplate` to a common folder ``src/moduleTemplates``. The associated HTML documentation now appears inside the ``Documentation`` tab under ``moduleTemplates``. - added the ``src/utilities/makeDraftModule.py`` script that is able to create a draft module template given - module name - module description - module location - list of module input or output messages containing - message variable name - message payload definition - message description - message type (ie. ``C`` or ``C++``) The script then generates either a C or C++ module folder that contains the elemental ``*.c/cpp``, ``*.h``, ``*.i`` code which compiles into a functioning prototype module. Also included are the module ``*.rst`` file which provides the basic description and message table (including hyperlinks to message payload type and message description), as well as a functioning python unit test that loads the module, connects zero'd input messages and sets up output message recorders. The coder can then take this draft module code and modify to achieve the desired functionality. The page :ref:`Folder_moduleTemplates` discusses how to use it and provides to 2 sample auto-generated modules that get created inside ``src/moduleTemplates`` with ``python conanfile.py``. - new thermal motor module in :ref:`motorThermal`. It it be used to simulate the temperature of a RW motor. .. _bsk-release-2-0-0: Version 2.0.0 ------------- - New message system with strong type checking. You now get a much simpler method to create message objects, how to connect them within python, create stand-alone messages in python, etc. If you engage with a message of the wrong type you get immediate compiler warnings. - New C++ based message recording system that is much faster than the older python based message logging - New messaging recording now stores the message data separately from the time a message was recorded and the time the message was written - Removed the arbitrary distinction between ``FSW``, ``SIM`` and ``INT`` messages. All messages are now available to all modules - Both C and C++ based message interfaces are now auto-generated when running ``python3 conanfile.py`` command - New ability to create zero'd message structures in the modules - Seamless message subscribing in Python across all modules types (C, C++ or Python) - New generic RW device type in :ref:`simIncludeRW` and updated the support library to work with BSK2 - Updated :ref:`simIncludeGravBody` to work with BSK2. If needed the :ref:`spiceInterface` and :ref:`EpochMsgPayload` message is created within the gravity factory class. - Updated :ref:`simIncludeThruster` to work with BSK2 - Updated :ref:`fswSetupRW` to work with BSK2 - Updated :ref:`fswSetupThrusters` to work with BSK2 - Update Basilisk module documentation that shows all input and output message variables, their type and explanation - Cleaned up the Basilisk `src` folder layout by moving all Basilisk architecture support files to `src/architecture`. This impacts some include statements - Made the C/C++ ``#include`` statements all relative to `src` to make it easier to find the associated files in the source code - Updated message names to now all comply with the Basilisk message naming convention. - Updated :ref:`vizSupport` to work with BSK2. It is now much easier to include RW, thruster and CSS devices. Further, the simulation gravity bodies don't have to be explicitly provided to the ``vizSupport.enableUnityVisualization()`` method. Rather, these are pulled from the spacecraft object directly. - :ref:`reactionWheelStateEffector` is updated where the list of RW configuration parameters are now linked from python, not copied. As a result it is now possible to stop the simulation and change RW parameters on the fly, emulating a failure with a physical change in the RW mechanics. - changed the output message type of :ref:`magnetometer` to be compatible with :ref:`tamComm` - Created several instructional pages in the Quick-Start documentation folder. The examples folder has moved to the Quick-Start guide as well. The new quick start guide now discusses - how to write Basilisk python simulation scripts - how to write C++, C and Python modules - Added installation instructions to run Basilisk on a computer with the Apple M1 processor - added :ref:`spacecraftLocation` module to allow checking for satellite to satellite line-of-sight access - made ``maximumRange`` an optional variable in :ref:`groundLocation` - renamed ``spacecraftDynamics`` to :ref:`spacecraftSystem`, and renamed the associated ``spacecraft`` to ``spacecraftUnit()``. - renamed ``spacecraftPlus()`` to be now simply :ref:`spacecraft` - renamed the `spacecraftPlus` associated messages to :ref:`SCStatesMsgPayload` and :ref:`SCMassPropsMsgPayload` - renamed ``fswModuleTemplate()`` to be :ref:`cModuleTemplate`. This makes this naming consistent with the new :ref:`cppModuleTemplate`. - renamed `rwMotorVoltageInterface` to :ref:`motorVoltageInterface`. This motor model can be used for both RW and hinged panel devices. - added support to creating custom gravity bodies to :ref:`simIncludeGravBody`. Including support to have custom gravity bodies shown in :ref:`Vizard ` as well. The example script :ref:`scenarioCustomGravBody` provides an illustration of this functionality.