Version 2.1 Release Notes
Version 2.1.7 (March 24, 2023)
Fixed
CMake/conancase sensitivty issue when compiling Basilisk withopNavflag set toTrueon Linux platformsCreated fsw C Module: hingedRigidBodyPIDMotor to compute the commanded torque to C++ Module: spinningBodyOneDOFStateEffector using a proportional-integral-derivative controller.
Added C Module: torqueScheduler to combine two ArrayMotorTorqueMsgPayload into 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 insrc/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 unitTestSupport to create the file path in a platform agnostic manner
Created a C++ Module: sensorThermal module to model the temperature of a sensor using radiative heat transfer
Created a C++ Module: tempMeasurement module 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 scenarioDragDeorbit.Created a C++ Module: prescribedMotionStateEffector dynamics module for appending rigid bodies with prescribed motion to the spacecraft hub.
Created a
prescribedRot1DOFfsw module to profile a prescribed 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.Created a
prescribedTransfsw module to profile a prescribed translational 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.Added C Module: solarArrayReference to 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 nowChanged the
SpinningBodyStateEffectormodule name to C++ Module: spinningBodyOneDOFStateEffector.Added the ability to lock the axis on the C++ Module: spinningBodyOneDOFStateEffector module.
Added two new unit tests to C++ Module: spinningBodyOneDOFStateEffector.
Updated C++ Module: magneticFieldWMM to use the latest WMM coefficient file and evaluation software
Added a C++ Module: spinningBodyTwoDOFStateEffector module that simulates a two-axis rotating rigid component.
Created C Module: oneAxisSolarArrayPoint to 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 C++ Module: reactionWheelStateEffector for limiting supplied power, independent of the modules in simulation/power.Added C Module: thrusterPlatformReference to 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 C++ Module: vizInterface and Vizard
provide support or Vizard 2.1.4 features
Version 2.1.6 (Jan. 21, 2023)
Refactored keplerianOrbit to not depend on the
gravityEffectorclassUpdated 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 Recording Messages on how to read the current message values
Highlighted the challege of setting up a
recorderon a re-directed message in Advanced: Redirecting Module Output to Stand-Alone Messageadded the ability to add a
recorder()to a C-wrapped module input messageFix an issue in in C++ Module: magneticFieldWMM where 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,cppzmqandopencv. This corrects some build issues with new compilers.The
linearAlgebra,rigidBodyKinematics,orbitalMotionwere mistakenly exposed as part of the sim_model module’s API. They have been removed and the functions they provided are still found inBasilisk.utilities.orbitalMotion,Basilisk.architecture.linearAlgebra, andBasilisk.architecture.rigidBodyKinematics.Fixed an issued recording the
timeWritteninformation of a C-wrapped message with arecorder()module.Updated Download Source Code to ask the user to first install
lfsbefore pulling a copy of the Basilisk repo due to some large files being stored in the GitHub large file storage system.Updated scenarioGroundLocationImaging to 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
SpinningBodyStateEffectorto use the HingedRigidBodyMsgPayload output message type for compatibility with other modulesAdded the ability to set an inertial heading in the C++ Module: boreAngCalc module. Changed the internal module logic to use
Eigenlibrary variables and functions instead of C-style arrays and methods.Added support for Vizard v2.1.3
Updated C Module: simpleInstrumentController to provide the option to consider the angular velocity tracking error norm when considering to take an image.
Version 2.1.5 (Dec. 13, 2022)
Made the external module custom message definitions work again with the latest build system.
Fixed the custom RW in simIncludeRW to store the information regarding
u_minin the RW class.provide support for the swig 4.1 software
Added the ability in both C++ Module: thrusterDynamicEffector and C++ Module: thrusterStateEffector to connect a thruster to a moving body different than the hub.
The thrusters now have an additional variable called
MaxSwirlTorque. Useful for ion thrusters, it adds a torque about the thrust axis proportional to the current thrust factor.Added a torsional spring and damper to the
SpinningBodyStateEffectormodule.Added support for having multiple Vizard instrument cameras setup in C++ Module: vizInterface
Warning
The support for having multiple Vizard instrument cameras requires a change in C++ Module: vizInterface,
and thus breaks existing code that using direct Vizard communication. The
image output message is now a vector of output messages, and the cameraConfigBuffer class variable
can no longer be set directly. Rather, the camera configuration message should be added
using the viz.addCamMsgToModule(), or the message can be created and added using the convenience method
vizSupport.createCameraConfigMsg().
Updated C++ Module: hingedRigidBodyStateEffector and C++ Module: dualHingedRigidBodyStateEffector such that the effector inertial states are relative to the inertial frame of the simulation, not the central body frame.
Added
colorkeyword support to thevizSupport.createCustomModel()methodUpdated Swig Interface File to explain how now the swig interface to vectors of input/output messages are now auto-generated when making Basilisk project
added documentation about creating and importing custom Unity addressable assets in Custom Unity Models.
fixed scenarioAttLocPoint to display the Earth location and the associated cone again in Vizard. Updated BSK Scripting Settings description of
addLocation()method.Added experimental support to build Basilisk on Linux with a computer using an ARM processor.
Updated CameraConfigMsgPayload to support the Vizard flag
updateCameraParameterswhich allows the camera parameters to be updated live.Updated documentation to discuss downloading Basilisk from GitHub
Version 2.1.4 (Oct. 1, 2022)
revised how the build system swig’s all the message objects. This leads to compile time improvements across all platforms. In Linux in particular we are seeing a 2x reduction in compile time. These changes also reduce the memory requirements when compiling. Note: The
basilisk.architecture.cMsgCInterfacePycontent is now included inbasilisk.architecture.messagingpackage. Prior scripts usingcMsgCInterfacePystill run as a link has been created. However, the use ofcMsgCInterfacePyis depreciated and code should be updated to usingmessaginginstead.added new C++ Module: hingedRigidBodyMotorSensor for adding noise, bias, and discretization to panel state message
added new C++ Module: simpleVoltEstimator to provide simulated voltage measurements of a neighboring space object
added the ability to have a RW motor torque break slow down the wheel speed if saturated. The motor torque is set to zero if it is trying to increase the wheel speed in saturation conditions.
updated Windows install instructions about setting path variables
enhanced Windows install instructions to highlight adding
cmakebinary to the command line pathadded new training videos to scenario_BasicOrbit, scenario_FeedbackRW to discuss how to create class based Basilisk simulations
added new C++ Module: groundMapping for mapping points on the surface of a spherical body.
added new C++ Module: mappingInstrument to pass along access from a vector of map points to a storage unit.
updated C Module: locationPointing to allow for spacecraft targeting as well
added new scenarioGroundMapping scenario to demonstrate the new mapping capabilities.
added new scenarioRendezVous scenario illustrating a servicer approaching a debris object and engage several flight modes.
added new scenario scenarioDragDeorbit
added new scenario scenarioLagrangePointOrbit
added Vizard 2.1.1 support for spacecraft ellipsoid shapes, Unity camera parameters
added support for the polynomial gravity model to C++ Module: gravityEffector
updated the
conanFile.pyto fix configuration and building issues with the latest version of pythonfixed issue computing latitude angle in
PCPF2LLA()in geodeticConversion. This was used in the helper methodspecifyLocationPCPF()method inside C++ Module: groundLocation, as well as C++ Module: msisAtmosphere and C++ Module: albedo.fixed an issue in the RKF45 variable time step integrator where one of the constants had the wrong sign.
added new scenarioMomentumDumping to illustrate how to perform momentum dumping using thrusters.
updated C++ Module: hingedRigidBodyStateEffector to allow for an optional panel reference state input message
added new scenarioDeployingPanel to demonstrate panel deployment using panel reference message
added new C++ Module: thrusterStateEffector which is compatible with a variable time step integrator. Here the thrust on-off command is passed through a first order low-pass filter to provide smooth on- and off-ramping.
added new attitude pointing scenario scenarioAttitudeFeedback2T_stateEffTH that uses the new C++ Module: thrusterStateEffector
added ability to simulate faults within C++ Module: coarseSunSensor module
created a 1-DoF rotating rigid body class
SpinningBodyStateEffector. It is built in a general way to simulate any effector with a single spinning axis.
Version 2.1.3 (May 25, 2022)
corrected how C++ Module: planetEphemeris computes the celestial body orientation
corrected issue in Monte Carlo controller class where if a single run is called that fails, this was not reported
updated Basilisk documentation CSS to work with the latest version of
sphinxandbreatheadded new C++ Module: tabularAtmosphere to calculate atmospheric density using atmosphere tables
created new C++ Module: smallBodyNavUKF to make an UKF filter for small body navigation
created new example script scenarioSmallBodyNavUKF to demonstrate the use of C++ Module: smallBodyNavUKF
added a function titled
SpherePlot()that allows for plotting of charged spheres based on the MSM model C++ Module: msmForceTorquecreated new C++ Module: smallBodyWaypointFeedback module for waypoint-to-waypoint control about a small body
created new example script scenarioSmallBodyFeedbackControl to demonstrate the new module
added scenario_AddRWFault to show how to use event handlers to add faults
added C++ Module: constrainedAttitudeManeuver with MRP-cartesian-distance- and effort-based A* graph search algorithms
added scenarioAttitudeConstrainedManeuver to illustrate how to use C++ Module: constrainedAttitudeManeuver
added
specifyLocationPCPF()method to C++ Module: groundLocation for specifying ground locations in planet-centered, planet-fixed coordinatesupdated C++ Module: spacecraftLocation to handle cases where the closed approach point to the planet is outside the spacecraft-spacecraft interval
added new scenarioAerocapture which simulates an aerocapture scenario
added new C++ Module: hingedBodyLinearProfiler to provide a panel deployment angular profile
added new C++ Module: hingedRigidBodyMotor to provide panel motor torque control
added new training videos to Building the Software Framework, installOptionalPackages, scenarioBasicOrbit, scenarioOrbitManeuver, scenarioOrbitMultiBody, scenarioCustomGravBody
added support for Vizard 2.1 scripting
Version 2.1.2 (March 12, 2022)
enhanced C++ Module: spiceInterface to allow Spice spacecraft names to be setup to pull their trajectory and attitude states from a spice kernel
added scenarioSpiceSpacecraft to illustrate using Spice to specify the trajectory of a spacecraft while leaving the attitude dynamics unprescribed.
fixed a bug where using the generator flag to build on windows would skip a line in the conanfile.py that is crucial for building opNav.
added C++ Module: dentonFluxModel to compute electron and ion fluxes for the GEO regime.
fixed build issue with
conanversion 1.44 or newerfixed an issue doing a clean build of
opNavmode where conan failed to installopencv/4.1.1with thejasperdependency.enhanced ability to set the planet Spice frame in the gravity factory class
new ability to set the Vizard celestial body name to be different from the Spice planet body name
added support for
pytestversion 7.0.0 and higherupdated how
pytestis run to generate a resulting HTML reportmodified C++ Module: msmForceTorque to create an output message with the MSM charge values for each spacecraft
added new scenarioInertialSpiral example scenario
improved robustness of Basilisk installation script
provide support for Vizard 2.0.4 feature scripting
added a new heliocentric mission simulation example using custom Spice spacecraft trajectory file scenarioHelioTransSpice
added a new planetary fly-by mission example using a custom Spice translational file and attitude pointing modes scenarioFlybySpice
added a new asteroid arrival mission example with attitude pointing modes scenarioAsteroidArrival
added a new scenario scenarioTwoChargedSC illustrating how to apply the MSM spacecraft charging model to a relative motion simulation
Version 2.1.1 (Dec. 15, 2021)
Updated
OpNavmode dependencygettextto version 0.21 to allow BSK to be build on Windows withOpNavsupport.created two new messages that contain the information regarding scheduled burns for orbit reconfiguration in formation flying scenarios. See ReconfigBurnInfoMsgPayload and ReconfigBurnArrayInfoMsgPayload.
the module C Module: spacecraftReconfig now outputs a message of type ReconfigBurnArrayInfoMsgPayload. All internal calculation are also done using a buffer of this message type.
Added the time standard library to include statements in atmosphereBase.h to fix a build issue found on windows.
updated C++ Module: spacecraft to include an optional translational reference message to specify the trajectory
Added a swig array-type
ARRAYINTASLISTthat fixes a double to int conversion error when building theFSWdeviceAvailabilitymessage on windows.Updated dispersions.py to support functionality that was deprecated in python3.10. This change supports python versions >=3.3.
Updated the Windows build process to fix a static runtime library issue with
vizInterfacefound in older versions of visual studio.Added scripting support for Vizard 2.0.3
Version 2.1.0 (Nov. 13, 2021)
added BSpline function to
utilitiesand related UnitTest.added kinematic relations between angular accelerations and second derivative of MRP set to rigidBodyKinematics library
updated the installation script to function with the latest
conanprogram and the recentconanrepo changes. Note, you will have to delete the.conanfolder in your home directory to create a fresh copy of the software dependencies.added a Developer support page Accessing the Debugger for C/C++ Basilisk Modules
fixed a memory leak with the Swig layer where an object was not released properly. Thanks go to Stephen Ritter and Toney for tracking down this issue.
added a new orbit maneuver example scenarioJupiterArrival
made SWIG interface to the MRP derivative variable
added two new variable time step integrators. See svIntegratorRKF45 and svIntegratorRKF78.
updated the state effector base class to also provide the current integration time step in addition to the current time
added new scenario scenarioVariableTimeStepIntegrators
updated scenarioIntegrators to include the
rkf45andrkf78optionschanged the way C Module: spacecraftReconfig gets the deputy’s mass properties. It now receives that information through a message of the type
VehicleConfigMsgPayloadinstead of an internal variable. Relevant example scripts have been updated.new tutorial example scenario script scenarioTAMcomparison
new mass sensor that converts a
simulationmass properties message to aFSWvehicle configuration message C++ Module: simpleMassPropsadded scripting support for Vizard 2.0.1 and 2.0.2
This release provides a new ability to run a single Basilisk simulation in a multi-threaded manner. The BSK processes can be spread across multiple threads. See scenario_BasicOrbitMultiSat_MT for an example of how to use this.
Warning
The BSK v2.1 multi-threading assumes all processes assigned to a thread can run independently from processes in another thread. Further, cross thread message communication is not yet thread safe!