Releases: AVSLab/basilisk
Basilisk v2.8.0
-
Marked the use of python 3.8 as deprecated
-
Support for
opNavModeflag within vizSupport was removed, as its deprecation period ended -
Demo video was added to
scenarioQuadMapsdocumentation -
Pinned python dependencies to avoid issues with new package versions.
-
Updated
vscmgStateEffectordocumentation. -
Added a new
vscmgGimbalRateServomodule that computes the VSCMG wheel motor torque and gimbal motor torque. -
Added a new
vscmgVelocitySteeringmodule that computes the desired VSCMG wheel accelerations and gimbal rates. -
Added a new github workflow job
canaryto 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_solarthreshold toSpacecraftLocation. -
Fixed an issue where DynamicObject classes computed time steps by differencing double values rather
thanuint64_tvalues 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
usinguint64_ttime values and then converted to a double. -
Enhance how
uint64_tvalues 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
SpacecraftLocationto more accurately determine illumination. -
Fixed an issue where the
spaceToGroundTransmitterwould 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
spaceToGroundTransmitterfrom downlinking data from thesimpleStorageUnitorpartitionedStorageUnit. -
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
usingpython 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
simpleNavduring simulation -
Redirected MuJoCo errors and warnings to
bskLogginginstead of printing to file. -
Update
vizSupportfor thesaveFileargument to take an explicit
file path and file name and not auto-generate the_VizFilessub-folder. This provides the
user more direct control where and how the simulation data is saved. -
Support calling
unsubscribeon input messages. -
Fixed an issue where the
forceTorqueThrForceMappingmodule's Reset() function did not zero all thruster settings correctly. -
Updated
canaryworkflow to run on all pull requests to the develop branch, providing feedback on compatibility with latest dependencies. -
Added links to published paper in
oneAxisSolarArrayPointdocumentation. -
Converted RW data structures in
reactionWheelStateEffectorto shared pointers instead of raw pointers. -
The
BSKLoggernow raises aBasiliskError(Basilisk.architecture.bskLogging.BasiliskError)
if something is logged atBSK_ERRORlevel. Certain errors are reduced toBSK_WARNINGto 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
addJointSingleActuatortoMJScene. 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
setSolrefandsetSolimptoMJEqualityto enable control of the solver parameters
that control how the equalities are enforced in MuJoCo. -
Add PID controller models for
MJScene. Currently implementedJointPIDController, 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
- Updated Linux and Windows CI builds to use
swig4.2.1 - Updated CI scripts to run on latest macOS and no longer use Ubuntu 20.04
- Updated
makeDraftModuleto 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
SpacecraftLocationmodule 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
scenarioRerunMonteCarlothat prevented rerunning example Monte Carlo simulation scenarios. - Fixed bug in
thrusterPlatformReferencewhere a DCM had an incorrect transpose operation. - Memory Leak for
reactionWheelStateEffectorfixed 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. SeebskKnownIssuesfor 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
avsEigenSupportincluding 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
inrequirements_dev.txt. Aconandependency requires Basilisk to usecmake<4.0for now. - Add support for python 3.13 by removing the use of
eval()and mostexec()methods,
rewrotemethodizeEvent()inSimulationBaseClass.py. If you use python 3.13+ the
scope of theeval()method has changed (see https://peps.python.org/pep-0667/). - Added
lla2fixedframe()function invizSupportwhich provides ability to define Locations on a parent body by providing latitude/longitude/altitude relative to reference ellipsoid. - Fixed a bug in
radiationPressurewhereparseAndLoadXML()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 settingrefcheck=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
scenarioDeployingSolarArraysto use the newP-frame designation for the prescribed motion body - Deleted deprecated
prescribedRot1DOFandprescribedTransmodules. They have been replaced a while ago
withprescribedRotation1DOFandprescribedLinearTranslation. - :beta:
Mujoco Support: Added a newDynamicObjectfor multi-body dynamics that uses theMuJoCo <https://mujoco.org>_ library.
Information about using mujoco is found inmujocoDynObject. 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
QuadMapquadrilateral surface meshes in Vizard, with scenarioscenarioQuadMapsdetailing usage. Allows users to draw quads on celestial bodies and spacecraft. - Added
fixedframe2lla()function invizSupportwhich 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
THRSimConfigto 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 thethrusterDynamicsEffectorandthrusterStateEffectormodules. - :beta:
Mujoco Support: AddedStatefulSysModelfor models in the dynamics task ofMJScenethat need to declare
continuous-time states. ModifiedscenarioDeployPanelsto illustrate the use ofStatefulSysModel.
Basilisk v2.6.0
- Build
ubuntu-latestwheels 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
scenarioBasicOrbitStreamto add the ability to pause and resume the live BSK stream - Added documenation on installing with
pipvia source code inpipInstall - Updated
scenarioOrbitManeuverto include a SPICE module that rotates the Earth - Changed the way polyhedron gravity is computed to be more computationally efficient
- Updated
vizInterfaceto flush the output buffer when saving binary files to avoid truncation - Updated
examplesto better include folders of scenario tutorial scripts - Updated documentation build to use latest version of
sphinxandsphinx_rtd_theme.
Updated the install documenation and optional package requirements. - Updated
MonteCarloExamplesdirectory with a bokeh plotting feature robust to large Monte Carlo datasets - Updated
scenarioVisualizeMonteCarloto autogenerate live bokeh plots in Sphinx documentation - Updated
scenarioMonteCarloAttRWto include the newuseBokehfeature in therun()method - Updated
scenarioMonteCarloAttRWto use more pythonic OOP for Monte Carlo data retention - Updated
scenarioMonteCarloSpiceto 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
bskLargeDatato executebskLargeData.
The purpose is to install the large Basilisk data files into the local Basilisk
python package. - The wheel installs the local command tool
bskExamplesto executebskExamples. This
tool downloads the Basilisk repoexamplesfolder into the local folder - Removed the now deprecated
datashader_utilities.pyin favor of the new bokeh plotting features inAnalysisBaseClass.py - Upgraded protoc compiler to v3.20.0, added
protobufto optional package install list - Created unit tests for protobuffer packing and saving in
vizInterface - Added YouTube video links of Vizard illustrating the
scenarioFlexiblePaneland
scenarioRoboticArmscenarios. - Fixed issue in which reading
RWModelfrom RW message payloads whenvizInterfacewas also
imported would return a Swig Object instead of an enumerated integer. - Refactored the
GaussMarkovclass 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
magnetometerandcoarsesunsensorwhen setting 'senNoiseStd' - Updated
starTrackerunit tests to properly convert EP's to rotation vector now that random walk exists - Added
scenarioGaussMarkovRandomWalkto showcaseGaussMarkovclass functionality - Added unit test coverage for
GaussMarkovimplementation intempMeasurement,
simpleNavandplanetNav. - 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
facetSRPDynamicEffectormodule. A transpose was required to be added to a dcm
in order to correctly express rotated facet normals in the spacecraft body frame. - The
facetSRPDynamicEffectormodule was refactored and setters and getters were added for the module
variablesnumFacetsandnumArticulatedFacets. 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.pymodule was not being imported correctly in Python due to lack ofswig_eigen.i
include file inMtbEffector.i. - Added the capability to simulate a fault in the
simpleBatterymodule 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
pipinstalling build
required packages throughrequirements_dev.txt. - Update the build process to use
conanversion 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
StateDataand 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 fordynamicEffectorandstateEffector.
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
opNavto 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. simIncludeGravBodyset the moon equatorial radius in km, not meters.- fixed
subMRP()routine inRigidBodyKinematics - Updated
solarArrayReferenceto 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.hinstead ofsys_model.i - Updated
groundMappingto correct behavior ifmaximumRange == -1 - Updated scripts to work with
matplotlibversion 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, andsimpleVoltEstimatormodules. - Added setter and getter methods for the propagation matrices in the
simpleVoltEstimator
andstarTrackermodules as theirAmatrixattributes were private. - Name change warning added to module documentation for the
imuSensorwalkBoundsattribute toerrorBounds
and a note on specifying sensor properties inscenarioGaussMarkovRandomWalk. - Update
makingModules-2on how to make messages available to Basilisk modules - Support for Vizard release 2.2.1, including rotating frame settings and documentation for support of
.glbshape files vizProtobufferupgraded to use latest C++ compiler,protobufPython/C++ library upgraded- Updated
installLinuxto 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
cspiceusingconaninstead of providing custom libraries. This ensures all platforms are using
the same version ofcspice. - Ensured that the ability to designate an external BSK folder still works with
conan2
Basilisk v2.5.0
- Added swirl torque information to
THRConfigMsgPayload,thrustCMEstimation, andthrusterPlatformState - Updated required version of
setuptoolsto avoid installation error ("invalid commandbdist_wheel") on
some environments. - Made the initial Basilisk build more robust in case
de430.bspdownload was interrupted - Enhanced
thrusterDynamicEffectorto allow automatic scaling down of thrust and Isp as fuel mass depletes. - Fixed issue with
vizInterfacenot being able to save to file - Fixed issue with
vizInterfacenot saving off Vizard protobuffer message on first time step - Created an input device status message to toggle the
constraintDynamicEffectordynamics module on/off. - Created an output message to record constraint forces and torques acting on separate spacecraft connected using a
constraintDynamicEffectordynamics module. - Added in a low-pass filter to filter the output forces and torques of the
constraintDynamicEffectordynamics 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
celestialTwoBodyPointPDF documentation - Expanded the GitHub CI tests to run scenario script tests
- Untangled
ClassicElementsMsgPayloadwhich was used both as a message payload definition
and as a data structure inside modules. The use ofclassicElements()is now depreciated
for the use ofClassicElements()defined inorbitalMotionutilities. - Added
packaging>=22dependency for installing Basilisk to solve an incompatibility issue withsetuptools. - 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
scenarioOrbitManeuverTHto do Hohmann transfer using thrusters - Made sure that
astroFunctionsandsimIncludeGravBodynow all pull from the same set of
astronautical data inastroConstants. These tools now all use a consisten set of planet data
referenced from NASA sources. - Updated
simIncludeRWto allow values offCoulomb,fStaticandcViscousto be
specified even if a prebuilt RW data set is used. - If
messagingwas not imported then the msgrecorder()modules couldn't be setup. Now
messagingis imported as part of the Basilisk package so therecorder()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 moduleslambertSolverto solve Lambert's problem,lambertPlannerto
set up and define the Lambert problem,lambertValidatorto check if the solution from thelambertSolver
module violates any constraints before a Delta-V is commanded,lambertSurfaceRelativeVelocityto compute the
inertial velocity required to match the surface velocity of the central body, andlambertSecondDVto compute
the DV maneuver required to match the surface velocity. - Added
scenarioLambertSolverscenario to illustrate the Lambert's problem FSW module package - Added
scenario_LambertGuidanceBSK-Sim scenario to illustrate the Lambert modules in different flight modes - Added new scenario
scenarioSweepingSpacecraftto perform sweeping maneuvers. - Added a new :math:
N-axis translating effectorlinearTranslationNDOFStateEffectorand a corresponding scenario
scenarioExtendingBoom.
Basilisk v2.4.0
-
Added a new example scenario
scenarioConstrainedDynamicsdemonstrating post-docked spacecraft dynamics -
Created a
constraintDynamicEffectordynamics module to couple separate spacecraft motion using holonomic
constraints -
Removed the depreciated manner of creating python modules
-
Created a new example scenario
scenarioTempMeasurementAttitudedemonstrating the use of tempMeasurement module and generating random noise in the measurement. -
Uncaught exceptions raised in Python modules are now printed to
stderrbefore the program is terminated. -
Updated Basilisk and Vizard logos and provided download links
-
Updated
News and Discussionsmenu tab to beExternal Linksto Basilisk related web sites -
Added a new N-axis spinning effector
spinningBodyNDOFStateEffector. This is an expansion ofspinningBodyOneDOFStateEffector
andspinningBodyTwoDOFStateEffectorto 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
floatin 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
dynamicEffectorandstateEffectorclasses 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
sphinxandsphinx_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
spinningBodyNDOFStateEffectormodule.scenarioRoboticArmsimulates
a robotic arm that changes orientation through the use of theprescribedRotation1DOFprofiler module.
scenarioFlexiblePanelsimulates 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
protectAllClassesmethod inBasilisk.architecture.swig_common_modelso 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-6to discuss how to log private C++ module variables that have a getter method -
Updated
cppModuleTemplateto make user configurable variables private, accessed via setter and getter methods -
Updated
makeDraftModuleto make C++ modules with private module variables using setter/getter methods -
Updated
cppModules-1to 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
magneticFieldWMMmodel. -
Added ability to run the GitHub
pull_request.ymlaction on a select branch -
Fixed mass depletion rate bug in
thrusterStateEffectorpreviously fixed at 100% -
Enhanced
solarArrayReferencewith 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
usingpython conanfile.pyinstallation for now.
- NOTE: This is primarily intended to support pre-compiled releases in the future. All users are recommended to continue
-
The
cmakecommand 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
- Added optional facet articulation to the
facetSRPDynamicEffectormodule. - 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
scenarioHaloOrbitdemonstrating 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 theMAJOR.MINOR.0releases - updated plotting of
opNavexample scenarios to work again with latest version ofmatplotlib - fixed a slew of compiler warnings when compiling with Xcode 15
- Refactored the
PrescribedTransMsgPayloadmessage by renaming the message to
LinearTranslationRigidBodyMsgPayloadand renaming the message variables fromscalarPosandscalarVelto
rhoandrhoDot - Deprecated the
prescribedMotionMsgPayloadmessage and replaced with two separate
prescribedTranslationMsgPayloadandprescribedRotationMsgPayloadmessages. - added support for the new
swig4.2 version - updated the Windows build to compile properly with
opNavflag set to true. A
opencvrelated flag had to be updated. - added supoport for Vizard 2.1.6
- Created a
prescribedLinearTranslationdynamics module to profile prescribed linear translation for a
secondary rigid body connected to the spacecraft hub. This new module deprecates theprescribedTransmodule.
To simulate the translation, this module must be connected to theprescribedMotionStateEffector
dynamics module. - Created a
prescribedRotation1DOFdynamics module to profile a prescribed 1 DOF rotation for a secondary
rigid body connected to the spacecraft hub. This new module deprecates theprescribedRot1DOFfsw module.
To simulate the rotation, this module must be connected to theprescribedMotionStateEffectordynamics module. - Created a new example scenario
scenarioDeployingSolarArraysdemonstrating how to simulate hub-relative
multi-body prescribed motion. - Added support for Vizard 2.1.6.1
- Updated
MtbEffectorto 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 variablecoastOptionRampDurationhas been renamed to
coastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change as
setCoastOptionBangDuration()andgetCoastOptionBangDuration(), 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 variablecoastOptionRampDurationhas been renamed to
coastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change as
setCoastOptionBangDuration()andgetCoastOptionBangDuration(), respectively. See the module documentation
for the current usage of this parameter and these associated methods.
Basilisk version 2.2.1
- Created a new example scenario
scenarioSatelliteConstellationdemonstrating setup of a Walker-Delta constellation - Created a new
pinholeCameramodule to support generation of landmarks-based measurements around a
small body. - Corrected a memory leak in the
swigaccess to standard vectors inside messages. - A new integrated example script
scenarioSmallBodyLandmarksdemonstrates the use of the pinhole camera module - Created a new example scenario
scenarioSpinningBodiesTwoDOFthat showcases the different capabilities of the
spinningBodyTwoDOFStateEffectormodule. - Corrected an error with
thrusterStateEffectorwhere 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
magnetometerwhere 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, seebskPrinciples-2for the simple new
syntaxt to add C-modules. - Modified
mrpFeedbackto 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_Nfield inSCStatesMsgPayloadthat saves the total accumulated velocity of the
spacecraft's center of mass in the inertial frame. - Added prescribed angle and angle rates to
spinningBodyOneDOFStateEffectorandspinningBodyTwoDOFStateEffector
modules. - Created a
scanningInstrumentController, similar tosimpleInstrumentController, but which constantly checks if the attitude error
and angular rate (optional) are within the requirement limits and sends an imaging command to asimpleInstrument. - Added a new scenario
scenarioHohmannthat 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.xxversion to provide support for macOS Sonoma - updated macOS
cspicelibrary to be compiled with Xcode 15. This addresses some errors that appeared
when calling the prior pre-builtcspicelibrary. The new library is backwards compatible with
prior versions of Xcode. - Fixed a bug in the conanfile where the
stderroutput from asubprocess.Popencall 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_MEASdefine is increased to 32 matching the maximum number of coarse sun sensors. - mixed bug in time to nano-seconds conversions in
macros.pysupport file - Created
thrusterPlatformStateto map the thruster configuration information to body frame given the time-varying platform states. - Updated
thrusterPlatformReferenceto 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
thrustCMEstimationto perform online estimation of the CM using gimbaled thruster torque measurements. - Refactored
GravityEffector. Adding custom gravity models can now be done by subclassingGravityModel. The
utility methoduseSphericalHarmonicsGravityModelhas 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 methodsusePolyhedralGravityModel
andusePointMassGravityModelhave been added. - Fixed examples and tests to run even when Basilisk is built with
--vizInterface False. - Added a new method
setDataBuffer()tosimpleStorageUnitandpartitionedStorageUnitto 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 bygravFactory.addBodiesTo(scObject)(wherescObjectis aspacecraft.Spacecraft
orspacecraftSystem.SpacecraftSystem, andgravFactoryis asimIncludeGravBody.gravBodyFactory) - Added condition in
thrustCMEstimationto avoid measurement updates when inputattGuidInMsghas not been written. - Added
scenarioSepMomentumManagementto show how to use a dual-gimbaled electric thruster to perform continuous
momentum management. - Clarified documentation of the input variable
FirstStartof the methodCreateNewTask(). - Marked the method
CreateNewTask()input variableInputDelayas 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.
Basilisk version 2.2.0
- Created new way to define Python modules by inheriting from
Basilisk.architecture.sysModel.SysModel.
See :ref:pyModulesfor details. - Added the ability to integrate the ODE's of two or more Basilisk modules that are
DynamicObjectclass
member at the same time. See :ref:bskPrinciples-9 - updated ZMQ version to 4.5.0. For 2-way communication with
opNavmodules talking to Vizard
then Vizard 2.1.5 or newer should be used. This also removes the need for the legacy bincrafters code repo.
Delete~/.conanfolder if you run intoconanissues. - The Basilisk project C++ version is advanced from C++11 to C++17
- Disabled the following build options in the conan included OpenCV dependency; with_ffmpeg video frame encoding lib,
with_ade graph manipulations framework, with_tiff generate image in TIFF format, with_openexr generate image in EXR
format, with_quirc QR code lib. Users that have Basilisk control the build of these modules through the External
Modules CMake integration will need to manual toggle these OpenCV build options. - Updated :ref:
SmallBodyNavEKFwith several bug fixes. Removed spacecraft attitude estimation component. - Bug fix made to :ref:
eclipse: Saturn, Jupiter, Uranus, and Neptune radii were incorrectly being assigned the
radius of Mars. - Added custom planet name to :ref:
eclipsein case the user wants to use a body not contained within the module. - Removed all instances of using
unitTestSupport.np2EigenVectorXd(), as this function is now unneeded. - Created a :ref:
facetSRPDynamicEffectordynamics module to calculate the B frame SRP force and torque acting on a
static spacecraft. - fixed
PCI2PCPF()andPCPF2PCImethods in :ref:geodeticConversionto use the correct DCM - updated :ref:
geodeticConversionto be able to account for planet ellipsoidal shape if polar radius is provided - Google Test C/C++ testing framework added
- Created a :ref:
prescribedRot2DOFfsw module to profile a prescribed 2 DOF rotational maneuver for a secondary rigid
body connected to the spacecraft hub. To simulate the maneuver, this module must be connected to the
:ref:prescribedMotionStateEffectordynamics module. - Corrected default value of
accuracyNanosin :ref:simSynchto be 0.01 seconds. - Added a deprecation system for Basilisk. For developers, see :ref:
deprecatingCode. - Changed the units of plasma flux in :ref:
dentonFluxModeland :ref:PlasmaFluxMsgPayloadfrom
[cm^-2 s^-1 sr^-2 eV^-1] to [m^-2 s^-1 sr^-2 eV^-1], because m^-2 is used more frequently in computations - Fixed a bug in eclipse that caused potentially occluding bodies to be skipped if a prior body was closer to the sun
than the spacecraft - fixed the time evaluation in :ref:
msisAtmosphere - Added an optional
controllerStatusvariable anddeviceStatusInMsgmessage to the
:ref:simpleInstrumentControllerto match the functionality of the corresponding data and power modules - Corrected tasks priorities in several scenarios and added checks in two modules to ensure that C MSG read errors are
not thrown - Fixed bug where message struct members of bool python types are returned as empty dicts instead of array of boolsgit
- Refactored the :ref:
prescribedMotionStateEffectordynamics module to vary the prescribed states across the dynamics
integration time step. - The encryption build option for the project's conan zmq dependency is disabled because it is uneeded.
- Added an optional
controllerStatusvariable anddeviceStatusInMsgmessage to the :ref:simpleInstrumentControllerto
match the functionality of the corresponding data and power modules - Corrected tasks priorities in several scenarios and added checks in two modules to ensure that C MSG read errors are not thrown
- Reworked how integrators are implemented. New Runge-Kutta integrators may
now be added simply by specifying the relevant coefficients. - Added a scenario that showcases differences between integrators. See :ref:
scenarioIntegratorsComparison
BSK v2.1.7
- Fixed
CMake/conancase sensitivty issue when compiling Basilisk withopNavflag set toTrueon Linux platforms - Created fsw :ref:
hingedRigidBodyPIDMotorto compute the commanded torque to :ref:spinningBodyOneDOFStateEffectorusing a proportional-integral-derivative controller. - Added :ref:
torqueSchedulerto combine two :ref:ArrayMotorTorqueMsgPayloadinto one and implement effector locking logic. - Refactored how
Custom.cmakefiles are included and how they are to be constructed.Custom.cmakefiles
should no longer include an include guard (e.g.if(BUILD_OPNAV) ... endif(BUILD_OPNAV)). Rather, to add
optionally compile a module, its directory name should be added to a list in
src/cmake/bskTargetExcludeBuildOptions.cmake. Most importantly, the build target is now accessible within the
aCustom.cmakefile as${TARGET_NAME}. This enables appropriate modularization of build target specific
includes, dependencies, and compiler flags. For an example of the implications of this refactor review the before
and after of thesrc/cmake/usingOpenCV.cmakefile. - updated :ref:
unitTestSupportto create the file path in a platform agnostic manner - Created a :ref:
sensorThermalmodule to model the temperature of a sensor using radiative heat transfer - Created a :ref:
tempMeasurementmodule to add sensor noise/bias and fault capabilities to temperature readings - Added a
terminalflag to the event handlers that cause the simulation to terminate when triggered; demonstrated
use of flag in update to :ref:scenarioDragDeorbit. - Created a :ref:
prescribedMotionStateEffectordynamics module for appending rigid bodies with prescribed motion
to the spacecraft hub. - Added :ref:
solarArrayReferenceto compute the reference angle and angle rate for a rotating solar array. - Update python dependency documentation and check to not use
conanversion 2.0.0 for now - Changed the
SpinningBodyStateEffectormodule name to :ref:spinningBodyOneDOFStateEffector. - Added the ability to lock the axis on the :ref:
spinningBodyOneDOFStateEffectormodule. - Added two new unit tests to :ref:
spinningBodyOneDOFStateEffector. - Updated :ref:
magneticFieldWMMto use the latest WMM coefficient file and evaluation software - Added a :ref:
spinningBodyTwoDOFStateEffectormodule that simulates a two-axis rotating rigid component. - Created :ref:
oneAxisSolarArrayPointto generate the reference attitude for a spacecraft that needs to point a body-fixed
axis along an inertial direction while ensuring maximum power generation on the solar arrays - Added a maximum power parameter
maxPowerto :ref:reactionWheelStateEffectorfor limiting supplied
power, independent of the modules in simulation/power. - Added :ref:
thrusterPlatformReferenceto align the dual-gimballed thruster with the system's center of mass, or at an offset thereof to perform momentum dumping. - Improved reliability of opNav scenario communication between :ref:
vizInterfaceand Vizard - provide support or Vizard 2.1.4 features
Basilisk v2.1.6
- Refactored :ref:
keplerianOrbitto not depend on thegravityEffectorclass - Updated Basilisk install documentation to discuss accessing source code from GitHub.com
- Fixed an issue where attaching a thruster to a body different than the hub when using
zeroBasewould yield very large offsets. - Added documentation in :ref:
bskPrinciples-4on how to read the current message values - Highlighted the challege of setting up a
recorderon a re-directed message in :ref:bskPrinciples-7 - added the ability to add a
recorder()to a C-wrapped module input message - Fix an issue in in :ref:
magneticFieldWMMwhere a fixed width array holding a file path would result in a cutoff
path when basilisk is located in a directory path of greater than 100 characters. - Updated the build system to use newer versions of
eigen,protobuf,cppzmq
andopencv. This corrects some build issues with new compilers. - The
linearAlgebra,rigidBodyKinematics,orbitalMotionwere mistakenly exposed as part of the
:ref:sim_modelmodule's API. They have been removed and the functions they provided are still found in
Basilisk.utilities.orbitalMotion,Basilisk.architecture.linearAlgebra, and
Basilisk.architecture.rigidBodyKinematics. - Fixed an issued recording the
timeWritteninformation of a C-wrapped message
with arecorder()module. - Updated :ref:
pullCloneBSKto ask the user to first installlfsbefore pulling a copy
of the Basilisk repo due to some large files being stored in the GitHub large file storage
system. - Updated :ref:
scenarioGroundLocationImagingto properly save off the ground location
information for Vizard - Added a new helper function to convert C arrays to
Eigen::MRPdand vice-versa insideavsEigenSupport. - Updated :ref:
spinningBodyStateEffectorto use the :ref:HingedRigidBodyMsgPayloadoutput message type for compatibility with other modules - Added the ability to set an inertial heading in the :ref:
boreAngCalcmodule. Changed the internal module logic to useEigenlibrary variables and functions instead of C-style arrays and methods. - Added support for Vizard v2.1.3
- Updated :ref:
simpleInstrumentControllerto provide the option to consider the angular velocity tracking error norm
when considering to take an image.