.. _bskReleaseNotes:
Basilisk Release Notes
======================
.. Note::
We are very excited by the great capabilities that this software already has, and plan to be updating this software regularly. There is some documentation in terms of Doxygen generated HTML documentation, but also documentation within the code, and several Basilisk modules that are math heavy have LaTeX'd documentation folders as well. Best place to start is to run the integrated tutorial scripts inside the ``src/tests/scenarios`` folder. More documentation and tutorial scripts are in development.
In Progress Features
--------------------
- ability to integrate custom Basilisk modules that are kept outside of the core Basilisk folder
- GPU based methods to evaluate solar radiation pressure forces and torques
- atmospheric drag evaluation using multi-faceted spacecraft model
- Updates to the Vizard Unity-based Basilisk visualization tool
- create data tracking capabilities within BSK where devices can store or communicate data
- create modules to determine if a satellite can see a ground point such as a communication station
Version 1.3.2
-------------
- added the ability to include the unit test python files, along with their documentation, within the sphinx html documentation
- updated Vizard live streaming documentation
- updated unit test templates to have better formatting of the html validation report obtained with ``pytest --report``
- exclude some un-needed files from the html documenation
- general sphinx documentation related fixed and enhancements
Version 1.3.1
-------------
- small fixes to the new HTML documentation
- correct the path includes in Monte Carlo Integrated tests
- updated the ``MRP_Steering`` module documentation to include plots of all test cases
Version 1.3.0
-------------
- Update template illustrating how the validation accuracy can be recording in the ``pytest`` parameters.
- Created a new method in ``SimulationBaseClass`` called ``pullMultiMessageLogData`` This is much faster in pulling the data log from multiple messages at once.
- It is no longer necessary to call sim.TotalSim.terminateSimulation() at the beginning of Basilisk scripts. This call has been moved to the SimBaseClass constructor and removed from scripts in the repository.
- A new module in the environments directory, SolarFlux, provides the solar flux value at a spacecraft location including (optionally) eclipse effects
- New module in the navigation directory, PlanetHeading, provides the heading to a planet in the spacecraft body frame. There is a corresponding new message type BodyHeadingSimMsg.
- New Sphinx/Breathe based BSK documentation system! All documentation is still stored in the ``basilisk/docs`` folder. The new system provides much better directory structure to access the BSK modules, and has a cleaner way to list the tutorial examples.
Version 1.2.1
----------------------
- fixed an issued with the magnetometer module tests not passing on all platforms. The tolerances are now adjusted to pass everywhere.
- various improvements to the ``OpNav`` modules and ``vizInterface``
Version 1.2.0
----------------------
- Making the Python 3 compile flag be turned on by default. To compile with Python 2 the ``cmake`` flag ``-DUSE_PYTHON3`` can still be set to ``OFF``
- Revised the FSW template module to use the updated in-line module documentation style which adds the description to the module ``*.h`` doxygen description, and adds the validation discussion as a doc-string to the ``test_xxx.py`` test file.
- make sure ``mrpRotation`` is non-singular for any general referene rotation.
- Created a Three-Axis-Magnetometer (TAM) sensor simulation model
- Created a TAM FSW communication model
- Changed the BSK ``ReadMessage()`` method to automatically zero the message memory space before reading in the data
- Added a base classes for battery energy storage and power consumption/provider nodes
- Added a simple power node module
- Added a simpler battery module
- Added a simple solar panel power module
Version 1.1.0
----------------------
- The circle finding module using openCV has been cleaned up and the noise is now dynamically measured given the image
- A new dispersion was added for Monte Carlo analysis which allows for per-axis control on an initial MRP value
- Cleaned up opNav messages to be consistent with other messages, and simplified the limbFinding code. Only functionality change is Gaussian Blur.
- Add new OpNav module using a planet limb. Algorithm developed by J. Christian
- Added support for OpenCV v 4.1.1 and Eigen library 3.3.7
- fixed issue with Windows having trouble compiling due to use of ``uint``
- added instructions on how to use the new Xcode 11 on macOS. This requires installing 2 more tools. Updated the install and macOS FAW pages.
- added the ability to ``pytest`` to use the ``--report`` flag to generate a comprehensive html test and validation document. All future modules should use this method to discuss the module validation. Legacy modules will be converted over time.
- Corrected an issue with some some BSK modules in a low memory computer environment
Version 1.0.0 đžđžđžđžđž
------------------------
.. raw:: html
.. raw:: html
-
Added the ability to plot select BSK simulation data live as teh
simulation is running. See the new tutorials examples and the new FAQ
response page (under Support tab) on how to do this.
.. raw:: html
.. raw:: html
-
Lots of code clean up to remove compiler warnings about implicit
signedness conversions, print types, etc.
.. raw:: html
.. raw:: html
-
Updated ``scenarioMagneticFieldWMM.py`` scenario to store images into
the correct doxygen folder.
.. raw:: html
.. raw:: html
-
[Bugfix] NRLMSISE-00 now defaults to kg/m^3 output, to be consistent
with other atmospheric density models.
.. raw:: html
.. raw:: html
-
Added the ability to live stream the Basilisk simulation data to Vizard!
This functions now in addition to saving BSK data to file and playing it
back later on.
.. raw:: html
.. raw:: html
Version 0.9.1
-------------
.. raw:: html
.. raw:: html
-
Created a new attitude guidance module for OpNav: opNavPoint. Similar to
sunSafePoint, it matches a target heading with the OpNav heading for a
simple and robust solution.
.. raw:: html
- added new tutorial on calling Python Spice functions within a Monte Carlo BSK simulation
- Added Keplerian Orbit utility class which is swig'd. This first implementation takes in elliptical orbit elements and can produce a range of related outputs like position, velocity, orbital period, etc. This makes it easier to create Keplerian orbits within python.
- Added a LimbFinding module for OpNav: limbFinding. This module performs a Canny transform to find the end of the planet and saves away the non-zero pixels for pose-estimation.
- made BSK compatible with both swig version 3 and 4
.. raw:: html
Version 0.9.0
-------------
.. raw:: html
.. raw:: html
-
Updated the MD help file on how to compile from the command line
environment using a custom configuration of Python.
.. raw:: html
.. raw:: html
-
Created new optical navigation filter that estimates bias in the
measurements. This filter takes in pixel and line data directly.
.. raw:: html
.. raw:: html
-
Added the ability to specify Vizard settings from Basilisk
``vizInterface`` module settings. This way Basilisk simulations can set
the desired Vizard settings from within the simulation script.
.. raw:: html
.. raw:: html
-
Added a new MD help file to discuss the helper methods that setup Vizard
features
.. raw:: html
.. raw:: html
-
Added a python helper function to setup cameraConfigMsg message and
create a custom camera view.
.. raw:: html
.. raw:: html
-
Added the ability to script what starfield Vizard should use.
.. raw:: html
.. raw:: html
-
Made the Vizard helper check that correct keywords are being used.
.. raw:: html
.. raw:: html
-
The cmake file now turns ON by default the ``USE_PROTOBUFFERS`` and
``USE_ZMQ`` build flag options. This enables out of the box support for
saving BSK data to Vizard binary files.
.. raw:: html
.. raw:: html
Version 0.8.1
-------------
.. raw:: html
.. raw:: html
-
Added a new kind of dispersion for Monte Carlos which disperses the
orbit with classic orbital elements instead of cartesian postion and
velocity.
.. raw:: html
.. raw:: html
-
Added a new module that provides the Earth atmospheric neutral density
using the MSIS model.
.. raw:: html
.. raw:: html
-
Updated the Doxygen HTML documentation layout
.. raw:: html
.. raw:: html
Version 0.8.0
-------------
.. raw:: html
.. raw:: html
-
ADDED PYTHON 3 SUPPORT! This is a major step for Basilisk. Python 2
remains suppored, but is now treated as a depreciated capability. It is
possible to compile BSK for P3 into a ``dist3`` folder, and for P2 into
a ``dist`` folder at the same time.
.. raw:: html
.. raw:: html
-
Updated the BSK installation notes to reflect a default installation
using Python 3
.. raw:: html
.. raw:: html
-
Updated all unit test BSK scripts to work in both Python 2 and 3
.. raw:: html
.. raw:: html
-
Updated all tutorial scripts to work in both Python 3 and 2. Default
instructions are now for Python 3
.. raw:: html
.. raw:: html
-
Added a new support file with tips on migrating a Python 2 BSK script to
function in both Python 3 and 2. This is called Migrating BSK Scripts to
Python 3.
.. raw:: html
.. raw:: html
Version 0.7.2
-------------
.. raw:: html
.. raw:: html
-
Added a new Earth magnetic field model based on the World Magnetic Model
(WMM). The module has PDF documetnation, and extensive unit test within
the source code folder, as well as a tutorial script demonstrating how
to run this.
.. raw:: html
.. raw:: html
-
Updated the ``spice_interface`` module to be able to read in an epoch
message
.. raw:: html
.. raw:: html
-
Updated scenarios to use the epoch message
.. raw:: html
.. raw:: html
-
Created a new support macro to convert a general date and time string
into an epoch message
.. raw:: html
.. raw:: html
-
updated the ``VizInterface`` module to now provide the reaction wheel
and thruster states to Vizard
.. raw:: html
.. raw:: html
-
Cleaned up ``VizInterface`` to only subscribe to BSK messages that are
already created
.. raw:: html
.. raw:: html
-
Adjust ``simpleNav`` to only subscribe to the sun message it is already
created
.. raw:: html
.. raw:: html
-
Update all the tutorial scenario and bskSim simulations to use the
updated ``vizSupport.enableUnityVisualization`` method
.. raw:: html
.. raw:: html
-
Fixed and cleaned up bugs in heading and opnav UKFs, pixelLineConverter,
houghCircles, and vizInterface
.. raw:: html
.. raw:: html
-
Added validity falg to OpNav messages in order to exclude potential
measurements
.. raw:: html
.. raw:: html
-
Fixed camera orientation given the Unity camera frame definition
.. raw:: html
.. raw:: html
-
Updated BSK installation instructions to warn about not using swig v4
.. raw:: html
.. raw:: html
Version 0.7.1
-------------
.. raw:: html
.. raw:: html
-
Added a new plotting utility library to support interactive plotting
using datashaders with Python3.
.. raw:: html
.. raw:: html
-
Fixed a garbage collecting leak in the monte carlo controller to
minimize impact on computer memory.
.. raw:: html
.. raw:: html
Version 0.7.0
-------------
.. raw:: html
.. raw:: html
-
Added the enableViz method to the bskSim scnearios.
.. raw:: html
.. raw:: html
-
Added dvGuidance PDF module description
.. raw:: html
.. raw:: html
-
Added new orbital simulation tutorial on a transfer orbit from Earth to
Jupiter using a patched-conic Delta_v
.. raw:: html
.. raw:: html
-
Added the first image processing FSW module using OpenCVâs HoughCirlces.
.. raw:: html
.. raw:: html
-
Added the a module to convert pixel/line and apparent diameter data from
circle-finding algorithm to a OpNav message with relative position and
covariance.
.. raw:: html
.. raw:: html
-
New faceted model for atmospheric drag evaluation
.. raw:: html
.. raw:: html
-
Updated RW and Thruster Simulation factory classes to use ordered
dictionary lists. This ensures that the devices are used in the order
they are added.
.. raw:: html
.. raw:: html
-
Fixed issue where the Viz would show a custom camera window on startup
if playing back a data file from bskSim scenarios.
.. raw:: html
.. raw:: html
-
Added relative Orbit Determination filter (relativeODuKF) in
fswAlgorithms/opticalNavigation. This filter reads measurements treated
by the image processing block to estimate spacecraft position and
velocity
.. raw:: html
.. raw:: html
-
Changed the C++ message ID to consitently be of type int64_t, not
uint64_t
.. raw:: html
.. raw:: html
-
Rearchitected how data is retained in BSK monte carlo runs using Pandas.
The python pandas package is now required to run MC runs.
.. raw:: html
.. raw:: html
-
Updated the CMake to handle both Microsoft Visual Studio 2017 and 2019
.. raw:: html
.. raw:: html
-
Added a new attitude control scenario that uses a cluster of thrusters
to produce the required ADCS control torque.
.. raw:: html
.. raw:: html
Version 0.6.2
-------------
.. raw:: html
.. raw:: html
-
hot fix that adds back a missing method in sim_model.c/h that causes the
``enableViz`` support method to not work.
.. raw:: html
.. raw:: html
-
updated Viz_Interface module with opNavMode flag. This triggers logic to
link Basilisk and Vizard with a TCP connection. This is ground work for
closed loop visual navigation capabilities.
.. raw:: html
.. raw:: html
-
updated enableUnityViz python function in utilities/vizSupport. It now
takes in key word arguments to simplify the user interface. It also
reliably saves Vizard files for play back in the same directory as the
scenario that calls it.
.. raw:: html
.. raw:: html
Version 0.6.1
-------------
.. raw:: html
.. raw:: html
-
Created a user guide MD file that is included in the BSK Doxygen HTML
documentation.
.. raw:: html
.. raw:: html
-
Removed the BOOST library from Basilisk as it is no longer needed. This
makes the BSK repository much leaner. Note that this removes the
capability to communicate with the old Qt-based Visualization that is
now defunct and replaced with the new Vizard Visualization.
.. raw:: html
.. raw:: html
-
Updated switch unscented kalman filter for sunline estimation with code
cleanup and documentation updates.
.. raw:: html
.. raw:: html
-
updated ``pytest`` environment to have markers registered
.. raw:: html
.. raw:: html
-
added a PPTX support file that explains the core Basilisk architecture.
HTML documentation is updated to link to this.
.. raw:: html
.. raw:: html
-
Creates new simulation module called ``planetEphemeris`` which creates a
planet Spice ephemeris message given a set of classical orbit elements.
.. raw:: html
.. raw:: html
-
updated the ``thrMomentumDumping`` module to read in the
``thrMomentumManagement`` module output message to determine if a new
momentum dumping sequence is required.
.. raw:: html
.. raw:: html
-
updated the hillPoint and velocityPoint scenarios on how to connect a
planet ephemeris message.
.. raw:: html
.. raw:: html
-
updated ``hillPoint`` and ``velocityPoint`` to meet BSK coding
guidelines
.. raw:: html
.. raw:: html
-
updated BSK_PRINT macro to automatically now add a new line symbol at
the end of the message
.. raw:: html
.. raw:: html
Version 0.6.0
-------------
.. raw:: html
.. raw:: html
-
Added a new ``vizInterface`` module. This version is able to record a
BSK simulation which can then be played back in the BSK Vizard
visualization program. Vizard must be downloaded separately. To enable
this capabilty, see the scenario tutorial files.
``scenariosBasicOrbit.py`` discusses how to enable this. The python
support macro ``vizSupport.enableUnityVisualization()`` is commented out
by default. Further, to compile ``vizInterface`` the CMake flags
``USE_PROTOBUFFERS`` and ``USE_ZEROMQ`` must be turned on. A new MD FAQ
support file discusses the Cmake options.
.. raw:: html
.. raw:: html
-
Updated ``inertialUKF`` module documentation and unit tests.
.. raw:: html
.. raw:: html
-
Updated unit test and documentation of ``dvAccumulation``.
.. raw:: html
.. raw:: html
-
added a small include change to fix BSK compiling on Windows
.. raw:: html
.. raw:: html
-
updated unit test and documentation of ``sunlineEphem()``
.. raw:: html
.. raw:: html
-
updated cmake files to set the policy for CMP0086 required by Cmake
3.14.x and higher
.. raw:: html
.. raw:: html
-
updated ``thrForceMapping`` module after code review with new expansive
unit tests and updated PDF documentation
.. raw:: html
.. raw:: html
Version 0.5.1
-------------
.. raw:: html
.. raw:: html
-
updated the ``orbitalMotion.c/h`` support library to have more robust
``rv2elem()`` and ``elem2rv()`` functions. They now also handle
retrograde orbits. The manner in covering parabolic cases has changed
slightly.
.. raw:: html
.. raw:: html
-
This module implements and tests a Switch Unscented Kalman Filter in
order to estimate the sunline direction.
.. raw:: html
.. raw:: html
-
Added documentation to the ``dvAccumulation`` module and included proper
time info in the output message.
.. raw:: html
.. raw:: html
-
Providing new support functions to enable the upcoming Vizard Basilisk
Visualization.
.. raw:: html
.. raw:: html
-
updated the âoeStateEphem()â module to fit radius at periapses instead
of SMA, and have the option to fit true versus mean anomaly angles.
.. raw:: html
.. raw:: html
-
updated
âsunlineSuKF\ ``module which provides a switch Sunline UKF estimation filter. New documentation and unit tests.
- updated 'MRP_Steering' module documentation and unit tests
- updated orbital motion library functions``\ rv2elem()\ ``and elem2rv()``
.. raw:: html
.. raw:: html
-
updated ``rateServoFullNonlinear`` module documentation and unit tests.
.. raw:: html
.. raw:: html
Version 0.5.0
-------------
.. raw:: html
.. raw:: html
-
``attTrackingError`` has updated documentation and unit tests.
.. raw:: html
.. raw:: html
-
navAggregate module has new documentation and unit tests.
.. raw:: html
.. raw:: html
-
small FSW algorithm enhancements to ensure we never divide by zero
.. raw:: html
.. raw:: html
-
new unit test for RW-config data
.. raw:: html
.. raw:: html
-
included a new environment abstract class that creates a common
interface to space environment modules like atmospheric density, or
magnetic fields in the future. This currently implements the exponential
model, but will include other models in the future. NOTE: this change
breaks earlier simulation that used atmospheric drag. The old
``exponentialAtmosphere`` model usage must be updated. See the
integrated and unit tests for details, as well as the module
documentation.
.. raw:: html
.. raw:: html
-
added new documentation on using the new atmosphere module to simulate
the atmospheric density and temperature information for a series of
spacecraft locations about a planet.
.. raw:: html
-
updated documentation and unit tests of ``celestialTwoBodyPoint``
.. raw:: html
.. raw:: html
-
added a new planetary magnetic field module. Currently it provides
centered dipole models for Mercury, Earth, Jupiter, Saturn, Uranus and
Neptune. This will be expanded to provide convenient access to other
magnetic field models in the future.
.. raw:: html
.. raw:: html
-
updated ``eulerRotation()`` to remove optional output message and did
general code clean-up
.. raw:: html
.. raw:: html
-
updated ``mrpRotation()``, new PDF documentation, did code cleanup,
updated unit tests, removed optional module output that is not needed
.. raw:: html
.. raw:: html
-
updated ``MRP_Feedback()``, new PDF documentation, did code cleanup,
updated unit tests to cover all code branches.
.. raw:: html
.. raw:: html
-
Added a new tutorial on using the magnetic field model.
.. raw:: html
.. raw:: html
-
Updated ``mrpMotorTorque()`` with code cleanup, updated doxygen
comments, PDF documentation and comprehensive unit test.
.. raw:: html
.. raw:: html
-
Added documentation to ``thrFiringRemainder`` module
.. raw:: html
.. raw:: html
-
Added documentation to ``thrFiringSchmitt`` module
.. raw:: html
.. raw:: html
-
Updated documentation of ``thrMomentumManagement`` module
.. raw:: html
.. raw:: html
-
Updated documentation of ``thrMomentumDumping`` module
.. raw:: html
.. raw:: html
-
Added documentation of ``MRP_PD`` module
.. raw:: html
.. raw:: html
-
added a new tutorial on how to use the planetary magnetic field model.
.. raw:: html
.. raw:: html
Version 0.4.1
-------------
.. raw:: html
.. raw:: html
-
cssComm has updated documentation and unit tests.
.. raw:: html
.. raw:: html
-
updated Documentation on ``rwNullSpace`` FSW module
.. raw:: html
.. raw:: html
-
updated how the FSW and Simulation modules are displayed with the
DOxygen HTML documenation, as well as how the messages are shown. Now
the use can click on the âModulesâ tab in the web page to find a cleaner
listing of all BSK modules, messages, utilities and architecture
documentation.
.. raw:: html
.. raw:: html
-
modified the ``cmake`` file to allow the build type to be passed in from
the command line
.. raw:: html
.. raw:: html
-
updated Doxygen documentation on ``cssWlsEst()``
.. raw:: html
.. raw:: html
-
updated documentation and unit tests of ``cssComm()`` module
.. raw:: html
.. raw:: html
Version 0.4.0
-------------
.. raw:: html
.. raw:: html
-
Integrated the ``conan`` package management system. This requires conan
to be installed and configured. See the updated Basilisk installation
instructions. It is simple to add this to a current install. Further,
the CMake GUI application canât be used directly with this
implementation if the app is double-clicked. Either the GUI is launched
form a terminal (see macOS installation instructions), or ``cmake`` is
run from the command line (again see your platform specific installation
instructions). Using ``conan`` now enables BSK to be compiled with
specific support packages, and will allow us to integrate other packages
like OpenCV, Protobuffers, etc. into the near future in a flexible
manner.
.. raw:: html
.. raw:: html
-
updated install instructions to allow for pytest version 4.0.0 or newer
.. raw:: html
.. raw:: html
-
updated code to remove some depreciated python function call warnings
.. raw:: html
.. raw:: html
-
Added a new sun heading module computed exclusively from ephemeris data
and spacecraft attitude (sunlineEphem). Documentation and a unit test
are included.
.. raw:: html
.. raw:: html
-
Added a new scenario that shows how to simulate multiple spacecraft in
one simulation instance.
.. raw:: html
.. raw:: html
-
Added a spacecraftPointing module that allows a deputy spacecraft to
point at a chief spacecraft. Besides that, added a scenario that
demonstrates the use of this new module.
.. raw:: html
.. raw:: html
-
added the ability to the thrForceMapping FSW module to handle thruster
saturation better by scaling the resulting force solution set.
.. raw:: html
.. raw:: html
-
Added lots of new unit tests to BSK modules
.. raw:: html
.. raw:: html
-
rwNullSpace() module now sets ups module states in reset() instead of
crossInit(), and includes new documentation and unit tests
.. raw:: html
.. raw:: html
Version 0.3.3
-------------
.. raw:: html
.. raw:: html
-
Added a new message output with the CSS fit residuals. This is optional.
If the output message is not set, then this information is not computed.
.. raw:: html
.. raw:: html
-
Updated ``sunSafePoint()`` to allow for a nominal spin rate to be
commanded about the sun heading vector. The unit tests and module
documentation is updated accordingly.
.. raw:: html
.. raw:: html
-
Added a new scenario ``scenarioAttitudeFeedbackNoEarth.py`` which
illustrates how to do an attitude only simulation without any gravity
bodies present.
.. raw:: html
.. raw:: html
-
Updated the macOS Basilisk installation instructions to make them easier
to follow, and illustrate how to use the macOS provided Python along
with all the Python packages installed in the user Library directory.
This provides for a cleaner and easier to maintain Basilisk
installation.
.. raw:: html
.. raw:: html
-
Created new switched CSS sun heading estimation algorithms called
``Sunline_SuKF`` and ``Sunline_SEKF``. These switch between two body
frames to avoid singularities, but with direct body rate estimation.
Previous filters ``Sunline_UKF``, ``Sunline_EKF``, and ``OKeefe_EKF``
either subtract unobservability or difference sunheading estimate for a
rate approximation.
.. raw:: html
.. raw:: html
-
Updated the Windows specific install instructions to include explicit
steps for setting up and installing Basilisk on machine with a fresh
copy of Windows 10.
.. raw:: html
.. raw:: html
-
Added policy statements to the CMake files. This now silences the
warnings that were showing up in CMake 3.12 and 3.13
.. raw:: html
.. raw:: html
-
Modified CMake to silence the excessive warnings in XCode that
``register`` class is no depreciated in C++
.. raw:: html
.. raw:: html
Version 0.3.2
-------------
.. raw:: html
.. raw:: html
-
Fixed an issue with the eclipse unit test.
.. raw:: html
.. raw:: html
-
updated the installation instructions to warn about an incompatibility
between the latest version of ``pytest`` (version 3.7.1). Users should
use a version of ``pytest`` that is 3.6.1 or older for now until this
issue is resolved.
.. raw:: html
.. raw:: html
-
Updated the ``.gitignore`` file to exclude the ``.pytest_cache`` folder
that pytest generates with the newer versions of this program
.. raw:: html
.. raw:: html
Version 0.3.1
-------------
.. raw:: html
.. raw:: html
-
Tutorials added for BSK_Sim architecture. Added the ability to customize
the frequency for FSW and/or dynamics modules.
.. raw:: html
.. raw:: html
-
Updated the dynamics thruster factor classes. This streamlines how
thrusters can be added to the dynamics. Also, a new blank thruster
object is included in this factory class to allow the user to specify
all the desired values.
.. raw:: html
.. raw:: html
-
bskSim now adds 8 thrusters to the spacecraft. These are not used yet,
but will be in future bskSim scenarios.
.. raw:: html
.. raw:: html
-
Modified how bskSim now includes CSS sensors in the spacecraft dynamics
setup
.. raw:: html
.. raw:: html
-
Modified the FSW ``sunSafePoint()`` guidance module to read in the body
angular velocity information from standard ``NavAttIntMsg``. This will
break any earlier simulation that uses ``sunSafePoint()``.
.. raw:: html
.. raw:: html
-
FIX: update the ``sunSafePoint()`` input connection to use the current
message format.
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
-
Fixed an issue with energy not conserving if the fully coupled VSCMG
imbalance model is used. This imbalanced gimbal and wheel version now
conserves momentum and energy!
.. raw:: html
.. raw:: html
-
Added initial draft of VSCMG module documentation
.. raw:: html
.. raw:: html
-
Added documentation to all the bskSim scenarios inside
``src/test/bskSimScenarios``. The documentation now outlines how the
bskSim class can get setup and used to create complex spacecraft
behaviors with little code.
.. raw:: html
.. raw:: html
Version 0.3.0
-------------
.. raw:: html
.. raw:: html
-
Updated cssWlsEst() module to also compute a partial angular velocity
vector.
.. raw:: html
.. raw:: html
-
New FSW Guidance module ``mrpRotation()`` to perform a constant body
rate rotation. The initial attitude is specified through a MRP set.
.. raw:: html
.. raw:: html
-
Enhanced Linux installation instructions
.. raw:: html
.. raw:: html
-
Updated the simIncludeThruster to use the same factor class as the RW
factory class. This will break old scripts that use the old method of
setting up Thrusters with this helper function.
.. raw:: html
.. raw:: html
-
FIX: Update the script to use the new factory class. Examples are seen
in
``src/simulation/dynamics/Thrusters/_UnitTest/test_thruster_integrated.py``.
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
-
Updated bskSim to use the RW factory class to setup the simulation RW
devices, as well as to use fsw helper functions to setup the RW FSW
config messages
.. raw:: html
.. raw:: html
-
At supportData/EphermerisData, updated the leap second kernel version to
from 0011 to 0012.
.. raw:: html
.. raw:: html
-
Added a force and torque calculation method in the stateEffector
abstract class, and provided the necessary method calls in
spacecraftPlus. This allows for stateEffectors to calculate the force
and torque that they are imparting on the rigid body hub. The
hingedRigidBodyStateEffector and the linearSpringMassDamper classes
provide their implementation of these calculations.
.. raw:: html
.. raw:: html
-
Fixed an issue with ``extForceTorque`` effector where the flag about
having a good input message was not being initialized properly. This
caused a rare failure in the unit test.
.. raw:: html
.. raw:: html
-
Reaction wheel state effector has an updated friction model that allows
the user to implement coulomb, viscous, and static friction.
.. raw:: html
.. raw:: html
-
Reaction wheel state effector now has max torque saturation logic in
which the wheels can only implement a maximum wheel torque and max wheel
speed saturation logic in which if the wheel speed goes over the maximum
wheel speed, then the wheel torque is set to zero.
.. raw:: html
.. raw:: html
-
A new method called writeOutputStateMessages was added to the
stateEffector abstract class which allows for stateEffectors to write
their states as messages in the system and the states will always be
written out to the system after integration. This fixed an issue with
reaction wheels where the commanded torque information needs to be
tasked before the spacecraft but the reaction wheel state messages need
to be written out after integration.
.. raw:: html
.. raw:: html
-
A new dynamics class called ``spacecraftDynamics`` has been created.
This allow multiple complex spacecraft systems to be either rigidly
connected or free-flying. This allow for example a mother craft to house
a daughter craft which has its own RWs, etc, and then release the
daughter craft at a specified time.
.. raw:: html
.. raw:: html
-
Cleaned up the gravity effector class variable names, and streamlined
the evaluation logic. The gravity effector documentation has been
updated to include information on the the multi-body gravity
acceleration is evaluated.
.. raw:: html
.. raw:: html
-
Updated the FSW modules ``MRP_Feedback``,\ ``MRP_Steering``,
``dvAccumulation`` and ``oeStateEphem`` to zero out the output message
first in the ``Update()`` routine.
.. raw:: html
.. raw:: html
-
Fixed an issue with the RW factory class and the Stribeck friction model
not being turned off by default.
.. raw:: html
.. raw:: html
-
added a new bskSim based tutorial scenario that illustrates a
sun-pointing control while the spacecraft goes through a planets shadow.
.. raw:: html
.. raw:: html
Version 0.2.3 (June 12, 2018)
-----------------------------
.. raw:: html
.. raw:: html
-
Improved how the ``fuelSloshSpringMassDamper`` effector class works. It
is now renamed to ``LinearSpringMassDamper``. It can be used to simulate
both fuel sloshing, but also structural modes. If the
``LinearSpringMassDamper`` is connected to a fuel tank, then itâs mass
depends on the amount of fuel left. The associated unit test illustrated
how to setup this last capability. The module also contains
documentation on the associated math.
.. raw:: html
.. raw:: html
-
A new ``SphericalPendulum`` effector class has been added. For rotations
a spherical pendulum is a better approximation rotational fuel slosh.
This effector can model rotational fuel slosh if connected to a tank
(see unit test again), or it can model a torsional structural mode if
not connected to a tank. Associated math documentation is included with
the class.
.. raw:: html
.. raw:: html
-
The booleans useTranslation and useRotation have been removed from the
``HubEffector()`` class. The defaults in hubEffector for mass
properties: ``mHub = 1``, ``IHubPntBc_B = diag``\ (1), and
``r_BcB_B = zeros(3)``, enable us to evaluate the same code no matter if
the desire is only to have translational states, only rotational states,
or both. This allows for less logic in hubEffector and removes
possibility of fringe cases that result in unexpected results from a
developer standpoint. The fix for if your python script is not working
related to this change:
.. raw:: html
.. raw:: html
-
FIX: Remove any instances of useTranslation or useRotation defined in
the hubEffector class.
.. raw:: html
.. raw:: html
.. raw:: html
-
Changed name of the method ``computeBodyForceTorque`` to
``computeForceTorque`` in the ``dynamicEffector`` abstract class and any
inheriting classes. This avoids the confusion of thinking that only body
frame relative forces can be defined, but in reality this class gives
the ability to define both external forces defined in the body frame and
the inertial frame.
.. raw:: html
.. raw:: html
-
Fixed an issue in ``RadiationPressure`` where the cannonball model was
not computed in the proper frame. An integrated test has been added, and
the unit test is updated. Note that the ``RadiationPressure`` model
specification has changes slightly. The default model is still the
cannonball model. To specify another model, the python methods
``setUseCannonballModel()`` or ``setUseFacetedCPUModel()`` are used.
Note that these take no argument anymore.
.. raw:: html
.. raw:: html
-
FIX: remove the argument from ``setUseCannonballModel(true)`` and use
the methods ``setUseCannonballModel()`` or ``setUseFacetedCPUModel()``
without any arguments instead.
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
Version 0.2.2 (May 14, 2018)
----------------------------
.. raw:: html
.. raw:: html
-
Fixed a build issues on the Windows platform is Visual Studio 2017 or
later is used.
.. raw:: html
.. raw:: html
-
Unified the Coarse Sun Sensor (CSS) sun heading filtering modules to use
the same I/O messages. All used messages are now in the fswMessage
folder.
.. raw:: html
.. raw:: html
-
Made the CSS sun heading filter messages consistently use the CBias
value. This allows particular sensors to have an individual (known)
scaling correction factor. For example, if the return of one sensor is
10% stronger then that of the other sensors, then CBias is set to 1.10.
Default value is 1.0 assuming all CSS units have the same gain.
.. raw:: html
.. raw:: html
-
The ``src\tests\bskSimScenarios`` folder now functions properly with the
``bskSim`` spacecraft class.
.. raw:: html
.. raw:: html
-
The tutorial scripts in ``src\tests\scenarios`` are now simplified to
pull out the unit testing functionality. The unit testing is now down
with the ``test_XXX.py`` scripts inside the ``src\tests\testScripts``
folder.
.. raw:: html
.. raw:: html
-
The ``bskSim`` tutorial files are now tested through pytest as well. The
file ``testScripts\bskTestScript.py`` calls all the ``bskSim`` tutorial
fails and ensures they run without error.
.. raw:: html
.. raw:: html
Version 0.2.1
-------------
.. raw:: html
.. raw:: html
-
Added messages for current fuel tank mass, fuel tank mDot, and thruster
force and torque
.. raw:: html
.. raw:: html
-
Changed the linearAlgebra.c/h support library to avoid using any dynamic
memory allocation.
.. raw:: html
.. raw:: html
-
Added some new function to linearAlgebra.c/h while making the library
use the new BSK_PRINT() function.
.. raw:: html
.. raw:: html
-
Added ability to simulate noise to the RW devices.
.. raw:: html
.. raw:: html
-
Created a more complete spacecraft python simulation class called
BSKsim, and recreated some BSK tutorial scripts to use BSKsim instead of
the more manual spacecraft setup in the earlier scripts.
.. raw:: html
.. raw:: html
-
Developed general functions to add saturation, discretization and Gauss
Markov processes to signals.
.. raw:: html
.. raw:: html
-
Created a new BSK_PRINT() function. Here the coder can tag a message as
an ERROR, WARNING, DEBUG or INFORMATION status. The printout can be set
to selectively show these print statements.
.. raw:: html
.. raw:: html
Version 0.2.0 (First public beta)
---------------------------------
.. raw:: html
.. raw:: html
-
First open beta release of Basilisk
.. raw:: html
.. raw:: html
-
Moved to a new file architecture. This means older BSK python scripts
need to be updated as the method to import BSK has changed.
.. raw:: html
.. raw:: html
-
The source an now be forked from Bitbucket
.. raw:: html
.. raw:: html
-
Precompiled binaries are provided through a python pip install wheel
file.
.. raw:: html
.. raw:: html
-
The Doxygen documentation now pulls in the BSK module description PDF
file and makes it available via the class definition html page.
.. raw:: html
.. raw:: html
-
The tutorial python scripts are now moved to ``src/test/scenarios``
.. raw:: html
.. raw:: html
-
The ``pytest`` common should now be run within the ``src`` sub-directory
.. raw:: html
.. raw:: html
-
Updated fuel slosh model documentation
.. raw:: html
.. raw:: html
-
Updated fuel tank documentation
.. raw:: html
.. raw:: html
-
Adding noise and corruptions using a new utility to the BSK modules (in
progress)
.. raw:: html
.. raw:: html
-
New N-panel hinged rigid body module
.. raw:: html
.. raw:: html
-
New 2-panel hinged rigid body module
.. raw:: html
.. raw:: html
-
Added CSS sun-heading estimation tutorial script
.. raw:: html
.. raw:: html
-
Added OâKeefe CSS sun-heading estimation module
.. raw:: html
.. raw:: html
Version 0.1.7
-------------
.. raw:: html
.. raw:: html
-
New Monte-Carlo capability that uses multiple cores and hyperthreading
to accelerate the MC evaluations. Data is retained and stored for each
MC run for robustness. See ``test_scenarioMonteCarloAttRW.py`` for an
example.
.. raw:: html
.. raw:: html
-
Coarse Sun Sensor (CSS) modules can now scale the sensor output with the
distance from the sun.
.. raw:: html
.. raw:: html
-
CSS now have updated documentation that includes validation results.
.. raw:: html
.. raw:: html
-
CSS, IMU have updated means to apply sensor corruptions.
.. raw:: html
.. raw:: html
-
IMU, simple_nav and star tracker modules have been updated to use now
internally Eigen vectors rather than C-Arrays. NOTE: if you have
simulation scripts that use these modules you may have to update the
script to set sensor states as Eigen vectors from python.
.. raw:: html
.. raw:: html
-
All the dynamics, thruster and sensor simulation modules have expanded
documentation and valdiation unit and integrated tests. The validation
results are automatically included in the module TeX documentation.
.. raw:: html
.. raw:: html
Version 0.1.6
-------------
.. raw:: html
.. raw:: html
-
new unit tests to validate the multi-body gravity simulation code in
``SimCode/dynamics/gravityEffector/_UnitTest/test_gavityDynEffector.py``
.. raw:: html
.. raw:: html
-
new hinged rigid body tutorial script in
``SimScenarios/test_scenarioAttGuideHyperbolic.py``
.. raw:: html
.. raw:: html
-
new tutorial to do velicity frame pointing on a hyperbolic orbit in
``SimScenarios/test_scenarioHingedRigidBody.py``
.. raw:: html
.. raw:: html
-
fixed various unit test issues that came up on the non-macOS builds
.. raw:: html
.. raw:: html
-
added reaction wheel effector documentation
.. raw:: html
.. raw:: html
-
added ``orb_elem_convert`` documentation
.. raw:: html
.. raw:: html
-
added ``boreAngCalc`` documentation
.. raw:: html
.. raw:: html
Version 0.1.5
-------------
.. raw:: html
.. raw:: html
-
Lots of new module documentation which includes a discussion of what is
being modeled, the validation tests, as well as a user guide to the
module. The new documentation includes:
.. raw:: html
.. raw:: html
-
Thruster ``DynEffector`` module
.. raw:: html
.. raw:: html
-
ephemeris conversion module
.. raw:: html
.. raw:: html
-
Coarse Sun Sensor module
.. raw:: html
.. raw:: html
-
Updated BSK module template documentation
.. raw:: html
.. raw:: html
-
Updated documentation for IMU Sensor module
.. raw:: html
.. raw:: html
-
Gravity Effector module
.. raw:: html
.. raw:: html
-
SimpleNav Sensor module
.. raw:: html
.. raw:: html
-
Hinged Panel ``StateEffector`` module
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
-
New tutorial scripts on
.. raw:: html
.. raw:: html
-
using CSS modules
.. raw:: html
.. raw:: html
-
using fuel tank module and the fuel slosh particle ``StateEffector``
.. raw:: html
.. raw:: html
-
How to use ``MRP_Steering()`` along with the rate tracking sub-servo
module
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
-
The CSS modules now use the planetary shadow message information to
simulated being in a planetâs shadow
.. raw:: html
.. raw:: html
-
SRP DynEffector modules now simulates the impact of being in a planets
shadow
.. raw:: html
.. raw:: html
-
Included a method to validate all the AVS C-Function libraries like
``rigidBodyKinematics``, ``linearAlgebra`` and ``orbitalMotion`` when
the Basilisk ``pytest`` command is called. There is also some
documentation on using these libraries in
``/SimCode/utilitiesSelfCheck/_Documentation``
.. raw:: html
.. raw:: html
-
Updated the RW and gravitational body (i.e. adding Earth, sun, etc. to
the simulation) to use new factory classes. If you did use the older
``simIncludeRW.py`` or ``simIncludeGravity.py`` libraries, youâll need
to update your python code to work with the new factory classes.
.. raw:: html
.. raw:: html
Version 0.1.4
-------------
.. raw:: html
.. raw:: html
-
A planetary eclipse model has been added. This allows for the shadow of
one or multiple planets to be taken into account, including the penumbra
region. This module writes an output message indicating if the
spacecraft is in full sun light, partial shadow, or full shadow of the
sun.
.. raw:: html
.. raw:: html
-
The body-fixed spacecraft structure frame has now been removed from the
simulation and flight algorithm codes. All spacecraft vectors and
tensors are now set directly in the body frame B. If the spacecraft
parameters are given in terms of an alternate structure frame, these
vectors and tensor must be transformed into the body frame first before
being set in BSK.
.. raw:: html
.. raw:: html
-
The integrated tutorial test for using a Python based BSK module now has
some documentation.
.. raw:: html
.. raw:: html
-
Created a method to compute the orbital potential and angular momentum
energy. This allows for the kinetic energy and angular momentum checks
to flat-line even if the satellite is in orbit. The spherical harmonics
of the planet are taken into account as well.
.. raw:: html
.. raw:: html
-
Included a new Extended Kalman Filter module that determines the
body-relative sun heading using the CSS signals.
.. raw:: html
.. raw:: html
Version 0.1.3
-------------
.. raw:: html
.. raw:: html
-
There is a new capability to now write BSK modules in Python, and
integrated them directly with the C and C++ BSK modules. Documentation
is still in progress, but a sample is found in
SimScenarios/test_scenarioAttitudePythonPD.py.
.. raw:: html
.. raw:: html
-
A new Variable Speed Control Moment Gyroscope (VSCMG) state effector
module has been created. This module provides a torque-level VSCMG
simulation which also includes the gyro frame or wheel being imbalanced.
If the latter modes are engaged, the simulation does slow down
noticeably, but you get the full physics.
.. raw:: html
.. raw:: html
-
In the simulation the initial spacecraft position and velocity states
are now specified now using the spacecraft center of mass location C,
not the body fixed point B. This greatly simplifies the simulation
setup. Upon initialization, the sim determines what the true center of
mass of the spacecraft is using all time varying mass components, and
sets the proper B point position and velocity vectors.
.. raw:: html
.. raw:: html
-
Specifying the initial spacecraft position and velocity states can now
be done anywhere before the BSK initialization. The user sets init
versions of the position and velocity vectors. The setState() method on
the state engine thus doesnât have to be used.
.. raw:: html
.. raw:: html
-
There is a new initializeSimulationAndDiscover method to init the BSK
simulation that automatically checks if messages are shared across
multiple simulation threads. See the modified
SimScenarios/test_scenarioAttitudeFeedback2T.py file for how this
simplifies the dual-threaded setup.
.. raw:: html
.. raw:: html
-
The MRP_Steering and PRV_Steering FSW modules have been broken up into a
separate kinematic steering command (commanded desired angular velocity
vector) and an associated angular velocity servo module name
rateServoFullNonlinear. This will break any existing code that used
either of these two attitude steering modules. The Python simulation
code must be updated to to account for these new modules as done in the
MRP_Steering integrated test test_MRP_steeringInt.py.
.. raw:: html
.. raw:: html
Version 0.1.2
-------------
.. raw:: html
.. raw:: html
-
All unit and integrated tests now pass on Linux. The root issue was a
variable length string variable in an output message. These strings have
now been removed as they are no longer needed.
.. raw:: html
.. raw:: html
-
The position and velocity of the center of mass of the spacecraft was
added to the messaging system, so now the spacecraftâs translational
states can be logged by the center of mass of the spacecraft (r_CN_N and
v_CN_N) or the origin of the body frame which is fixed to the hub
(r_BN_N and v_BN_N). Additionally, the mass properties of the spacecraft
was organized into an updateSCMassProps method that incapsulates the
calculations of mass property calculations.
.. raw:: html
.. raw:: html
-
Updated UKF FSW module to be able to run on gryo only information when
the star tracker is not available.
.. raw:: html
.. raw:: html
Version 0.1.1
-------------
.. raw:: html
.. raw:: html
-
On Linux, simplified the processing running BSK modules that require
boost. This makes the Viz related communication modules working again.
.. raw:: html
.. raw:: html
.. raw:: html
-
Added boost libs built on Ubunutu against gcc 5.4.0 20160609.
.. raw:: html
.. raw:: html
-
Added RPATH settings to allow for build directory to be placed outside
source directory
.. raw:: html
.. raw:: html
.. raw:: html
-
Major addition with new depleatable mass dynamic modeling, including
some fuel tank dynamic models.
.. raw:: html
.. raw:: html
-
minor fix for Monte Carlo dispersions
.. raw:: html
.. raw:: html
Version 0.1.0
-------------
Simulation modules include:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. raw:: html
.. raw:: html
-
Flexible integration structure with fixed time step RK1, RK2 and RK4
included
.. raw:: html
::
- Rigid spacecraft simulated through
spacecratPlus()
module. The spacecraft object makes it simple to add external disturbances through dynEffectors
and state depended actuation through stateEffectors
.
- Dynamics Effectors (acuation methods which do not have their own states to integrate)
- External force or torque module
- Solar radiation pressure module
- Thruster module
- State Effectors (actuation methods which have states to integrate)
- Fuel Tank model with fuel slosh particles
- Hinged panel model to simulate flexing structures such as solar panels
- Reaction wheel module with 3 modes (perfectly balanced, simple jitter with the disturbance modeled as an external force and torque, fully coupled imbalanced RW model)
- RW voltage interface module that mapes an input voltage to a RW motor torque
- integrate Spice ephemeris information
- simple navigation module that produces the position and attitude measurement states
- IMU sensor
- Star Tracker module
- Coarse Sun Sensor (CSS) module
- Added the ability to simulate the gravity from multiple celestial objects, as well as include spherical harmonic expansion of a particular celestial body.
.. raw:: html
The AVS Lab Flight Algorithm folder contains:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. raw:: html
.. raw:: html
-
FSW template module
.. raw:: html
::
- CSS based sun heading estimation module
- UKF filter to determine inertial attitude
- UKF fitler to determine CSS based body-relative sun heading
- Attitude Guidance modules:
- Pointing towards two celestial objects
- Inertial Pointing
- Hill Frame Pointing
- Euler rotation sequence to add dynamics capabiliteis to the attitude reference generation
- Spinning about an inertially fixed axis
- A raster manager module that can change the guidance module states
- Velocity frame pointing
- attitude tracking error evaluation module
- Deadband module for attitude trackign error
- DV guidance module
- Effector Interfaces
- mapping of control torque onto RW motor torques
- Converting RW motor torques to voltages
- RW null motion module to equalize the wheel speeds continuously
- Thruster (THR) firing logic using a Schmitt trigger
- THR firign logic using a remainder calculation
- mappign of a command torque onto a set of THR devices
- module to evalute the net momentum to dump with thrusters
.. raw:: html