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 swig access to standard vectors inside messages.

  • A new integrated example script scenarioSmallBodyLandmarks demonstrates the use of the pinhole camera module

  • Created a new example scenario scenarioSpinningBodiesTwoDOF that showcases the different capabilities of the 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_N field 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.xx version to provide support for macOS Sonoma

  • updated macOS cspice library to be compiled with Xcode 15. This addresses some errors that appeared when calling the prior pre-built cspice library. The new library is backwards compatible with prior versions of Xcode.

  • Fixed a bug in the conanfile where the stderr output from a subprocess.Popen call was being interpreted as an error. Rather, the process return code (0 for success, and anything else for failure) indicates the success.

  • The MAX_N_CSS_MEAS define is increased to 32 matching the maximum number of coarse sun sensors.

  • mixed bug in time to nano-seconds conversions in macros.py support file

  • Created 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 subclassing GravityModel. The utility method useSphericalHarmonicsGravityModel has been added to planetary body objects, which makes the body use spherical harmonics and loads them from a file with a single command. Similarly, the methods usePolyhedralGravityModel and usePointMassGravityModel have been added.

  • Fixed examples and tests to run even when Basilisk is built with --vizInterface False.

  • Added a new method setDataBuffer() to 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 line scObject.gravField.gravBodies = spacecraft.GravBodyVector(list(gravFactory.gravBodies.values())) can be replaced by gravFactory.addBodiesTo(scObject) (where scObject is a spacecraft.Spacecraft or spacecraftSystem.SpacecraftSystem, and gravFactory is a simIncludeGravBody.gravBodyFactory)

  • Added condition in C++ Module: thrustCMEstimation to avoid measurement updates when input attGuidInMsg has not been written.

  • Added scenarioSepMomentumManagement to show how to use a dual-gimbaled electric thruster to perform contunuous momentum management.

  • Clarified documentation of the input variable FirstStart of the method CreateNewTask().

  • Marked the method CreateNewTask() input variable InputDelay as depreciated. This variable was never implemented and did nothing.

  • Fixed terminal events to terminate at the time they are triggered instead of one timestep after.

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 DynamicObject class member at the same time. See Advanced: Using DynamicObject Basilisk Modules

  • updated ZMQ version to 4.5.0. For 2-way communication with opNav modules 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 ~/.conan folder if you run into conan issues.

  • 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() and PCPF2PCI methods in geodeticConversion to use the correct DCM

  • updated 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 accuracyNanos in 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 controllerStatus variable and deviceStatusInMsg message to the C Module: simpleInstrumentController to 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 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 controllerStatus variable and deviceStatusInMsg message to the C Module: simpleInstrumentController to 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 scenarioIntegratorsComparison