Version 2.2 Release Notes
Version 2.2.1 (Dec. 22, 2023)
Created a new example scenario scenarioSatelliteConstellation demonstrating setup of a Walker-Delta constellation
Created a new C++ Module: pinholeCamera module 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 scenarioSmallBodyLandmarks demonstrates the use of the pinhole camera module
Created a new example scenario scenarioSpinningBodiesTwoDOF that showcases the different capabilities of the C++ Module: spinningBodyTwoDOFStateEffector module.
Corrected an error with C++ Module: thrusterStateEffector where if there are multiple instances of the thruster state effector then the last effector will over-write all the state of the earlier thrusters.
Corrected an error with C++ Module: magnetometer where the RNG seed was passed to the Gauss-Markov noise model within the constructor and could therefore not be modified after creating the object. Furthermore, the noise model is now only used if all three components of the standard deviation parameter are initialized to a positive value.
Removed fswAuto and associated documentation, as the tool was outdated.
Changed how C modules are wrapped as C++ classes. This makes handling C modules the same as C++ modules, removing the need for “Config” and “Wrap” objects. Updated all scenarios and test files for this new syntax. To convert prior script to use the new syntax, see Adding Basilisk Modules for the simple new syntaxt to add C-modules.
Modified C Module: mrpFeedback to enable the use of a modified control law, and added the integral control torque feedback output message.
Resolved a crash, induced by uninitialized memory, in the Camera module. The crash was first seen on Ubuntu 22 with gcc 9.5
Implemented new syntax for variable logging. See Setting and Recording Module Variables.
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 in SCStatesMsgPayload that saves the total accumulated velocity of the spacecraft’s center of mass in the inertial frame.
Warning
SWIG files (.i) for modules should include %include "sys_model.i" instead of %include "sys_model.h"
to take advantage of the new module variable logging feature.
Added prescribed angle and angle rates to C++ Module: spinningBodyOneDOFStateEffector and C++ Module: spinningBodyTwoDOFStateEffector modules.
Created a C Module: scanningInstrumentController, similar to C Module: simpleInstrumentController, but which constantly checks if the attitude error and angular rate (optional) are within the requirement limits and sends an imaging command to a C++ Module: simpleInstrument.
Added a new scenario scenarioHohmann that performs a Hohmann transfer with attitude mode changes. The basic attitude flight modes are implemented using the Basilisk event system.
updated conan support to latest
1.xxversion to provide support for macOS Sonomaupdated 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 fileCreated C Module: thrusterPlatformState to map the thruster configuration information to body frame given the time-varying platform states.
Updated C Module: thrusterPlatformReference to add an input and output thruster config msg, and integral feedback term which dumps steady-state momentum in case of uncertainties on the CM location.
Created C++ Module: thrustCMEstimation to 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 methodsusePolyhedralGravityModelandusePointMassGravityModelhave been added.Fixed examples and tests to run even when Basilisk is built with
--vizInterface False.Added a new method
setDataBuffer()to C++ Module: simpleStorageUnit and C++ Module: partitionedStorageUnit to add or remove data from specified partitions.Refactored
simIncludeGravBody. The most notable change for users is that the commonly used linescObject.gravField.gravBodies = spacecraft.GravBodyVector(list(gravFactory.gravBodies.values()))can be replaced bygravFactory.addBodiesTo(scObject)(wherescObjectis aspacecraft.SpacecraftorspacecraftSystem.SpacecraftSystem, andgravFactoryis asimIncludeGravBody.gravBodyFactory)Added condition in C++ Module: thrustCMEstimation to avoid measurement updates when input
attGuidInMsghas not been written.Added scenarioSepMomentumManagement to show how to use a dual-gimbaled electric thruster to perform contunuous 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.
Version 2.2.0 (June 28, 2023)
Created new way to define Python modules by inheriting from
Basilisk.architecture.sysModel.SysModel. See Making Python Modules for details.Added the ability to integrate the ODE’s of two or more Basilisk modules that are
DynamicObjectclass member at the same time. See Advanced: Using DynamicObject Basilisk Modulesupdated 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 C++ Module: smallBodyNavEKF with several bug fixes. Removed spacecraft attitude estimation component.
Bug fix made to C++ Module: eclipse: Saturn, Jupiter, Uranus, and Neptune radii were incorrectly being assigned the radius of Mars.
Added custom planet name to C++ Module: eclipse in 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 C++ Module: facetSRPDynamicEffector dynamics module to calculate the B frame SRP force and torque acting on a static spacecraft.
fixed
PCI2PCPF()andPCPF2PCImethods in geodeticConversion to use the correct DCMupdated geodeticConversion to be able to account for planet ellipsoidal shape if polar radius is provided
Google Test C/C++ testing framework added
Created a C Module: prescribedRot2DOF fsw 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 C++ Module: prescribedMotionStateEffector dynamics module.
Corrected default value of
accuracyNanosin C++ Module: simSynch to be 0.01 seconds.Added a deprecation system for Basilisk. For developers, see Deprecating code in Basilisk.
Changed the units of plasma flux in C++ Module: dentonFluxModel and PlasmaFluxMsgPayload from [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 C++ Module: msisAtmosphere
Added an optional
controllerStatusvariable anddeviceStatusInMsgmessage to the C Module: simpleInstrumentController to match the functionality of the corresponding data and power modulesCorrected 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 C++ Module: prescribedMotionStateEffector dynamics 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 C Module: simpleInstrumentController to match the functionality of the corresponding data and power modulesCorrected 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 scenarioIntegratorsComparison