Skip to content

Releases: AVSLab/basilisk

Basilisk v2.5.0

30 Sep 14:07
Compare
Choose a tag to compare
  • Added swirl torque information to THRConfigMsgPayload, thrustCMEstimation, and thrusterPlatformState
  • Updated required version of setuptools to avoid installation error ("invalid command bdist_wheel") on
    some environments.
  • Made the initial Basilisk build more robust in case de430.bsp download was interrupted
  • Enhanced thrusterDynamicEffector to allow automatic scaling down of thrust and Isp as fuel mass depletes.
  • Fixed issue with vizInterface not being able to save to file
  • Fixed issue with vizInterface not saving off Vizard protobuffer message on first time step
  • Created an input device status message to toggle the constraintDynamicEffector dynamics module on/off.
  • Created an output message to record constraint forces and torques acting on separate spacecraft connected using a constraintDynamicEffector dynamics module.
  • Added in a low-pass filter to filter the output forces and torques of the constraintDynamicEffector dynamics 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 celestialTwoBodyPoint PDF documentation
  • Expanded the GitHub CI tests to run scenario script tests
  • Untangled ClassicElementsMsgPayload which was used both as a message payload definition
    and as a data structure inside modules. The use of classicElements() is now depreciated
    for the use of ClassicElements() defined in orbitalMotionutilities.
  • Added packaging>=22 dependency for installing Basilisk to solve an incompatibility issue with setuptools.
  • 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 scenarioOrbitManeuverTH to do Hohmann transfer using thrusters
  • Made sure that astroFunctions and simIncludeGravBody now all pull from the same set of
    astronautical data in astroConstants. These tools now all use a consisten set of planet data
    referenced from NASA sources.
  • Updated simIncludeRW to allow values of fCoulomb, fStatic and cViscous to be
    specified even if a prebuilt RW data set is used.
  • If messaging was not imported then the msg recorder() modules couldn't be setup. Now
    messaging is imported as part of the Basilisk package so the recorder() 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 modules lambertSolver to solve Lambert's problem, lambertPlanner to
    set up and define the Lambert problem, lambertValidator to check if the solution from the lambertSolver
    module violates any constraints before a Delta-V is commanded, lambertSurfaceRelativeVelocity to compute the
    inertial velocity required to match the surface velocity of the central body, and lambertSecondDV to compute
    the DV maneuver required to match the surface velocity.
  • Added scenarioLambertSolver scenario to illustrate the Lambert's problem FSW module package
  • Added scenario_LambertGuidance BSK-Sim scenario to illustrate the Lambert modules in different flight modes
  • Added new scenario scenarioSweepingSpacecraft to perform sweeping maneuvers.
  • Added a new :math:N-axis translating effector linearTranslationNDOFStateEffector and a corresponding scenario
    scenarioExtendingBoom.

Basilisk v2.4.0

23 Aug 14:39
fd1f287
Compare
Choose a tag to compare
  • Added a new example scenario scenarioConstrainedDynamics demonstrating post-docked spacecraft dynamics

  • Created a constraintDynamicEffector dynamics module to couple separate spacecraft motion using holonomic
    constraints

  • Removed the depreciated manner of creating python modules

  • Created a new example scenario scenarioTempMeasurementAttitude demonstrating the use of tempMeasurement module and generating random noise in the measurement.

  • Uncaught exceptions raised in Python modules are now printed to stderr before the program is terminated.

  • Updated Basilisk and Vizard logos and provided download links

  • Updated News and Discussions menu tab to be External Links to Basilisk related web sites

  • Added a new N-axis spinning effector spinningBodyNDOFStateEffector. This is an expansion of spinningBodyOneDOFStateEffector
    and spinningBodyTwoDOFStateEffector to 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 float in 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 dynamicEffector and stateEffector classes 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 sphinx and sphinx_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 spinningBodyNDOFStateEffector module. scenarioRoboticArm simulates
    a robotic arm that changes orientation through the use of the prescribedRotation1DOF profiler module.
    scenarioFlexiblePanel simulates 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 protectAllClasses method in Basilisk.architecture.swig_common_model so 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-6 to discuss how to log private C++ module variables that have a getter method

  • Updated cppModuleTemplate to make user configurable variables private, accessed via setter and getter methods

  • Updated makeDraftModule to make C++ modules with private module variables using setter/getter methods

  • Updated cppModules-1 to 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 magneticFieldWMM model.

  • Added ability to run the GitHub pull_request.yml action on a select branch

  • Fixed mass depletion rate bug in thrusterStateEffector previously fixed at 100%

  • Enhanced solarArrayReference with 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
      using python conanfile.py installation for now.
  • The cmake command 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

06 Apr 01:02
dfd8522
Compare
Choose a tag to compare
  • Added optional facet articulation to the facetSRPDynamicEffector module.
  • 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 scenarioHaloOrbit demonstrating 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 the MAJOR.MINOR.0 releases
  • updated plotting of opNav example scenarios to work again with latest version of matplotlib
  • fixed a slew of compiler warnings when compiling with Xcode 15
  • Refactored the PrescribedTransMsgPayload message by renaming the message to
    LinearTranslationRigidBodyMsgPayload and renaming the message variables from scalarPos and scalarVel to
    rho and rhoDot
  • Deprecated the prescribedMotionMsgPayload message and replaced with two separate
    prescribedTranslationMsgPayload and prescribedRotationMsgPayload messages.
  • added support for the new swig 4.2 version
  • updated the Windows build to compile properly with opNav flag set to true. A
    opencv related flag had to be updated.
  • added supoport for Vizard 2.1.6
  • Created a prescribedLinearTranslation dynamics module to profile prescribed linear translation for a
    secondary rigid body connected to the spacecraft hub. This new module deprecates the prescribedTrans module.
    To simulate the translation, this module must be connected to the prescribedMotionStateEffector
    dynamics module.
  • Created a prescribedRotation1DOF dynamics module to profile a prescribed 1 DOF rotation for a secondary
    rigid body connected to the spacecraft hub. This new module deprecates the prescribedRot1DOF fsw module.
    To simulate the rotation, this module must be connected to the prescribedMotionStateEffector dynamics module.
  • Created a new example scenario scenarioDeployingSolarArrays demonstrating how to simulate hub-relative
    multi-body prescribed motion.
  • Added support for Vizard 2.1.6.1
  • Updated MtbEffector to 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 variable coastOptionRampDuration has been renamed to
    coastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change as
    setCoastOptionBangDuration() and getCoastOptionBangDuration(), 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 variable coastOptionRampDuration has been renamed to
    coastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change as
    setCoastOptionBangDuration() and getCoastOptionBangDuration(), respectively. See the module documentation
    for the current usage of this parameter and these associated methods.

Basilisk version 2.2.1

22 Dec 16:51
28c71be
Compare
Choose a tag to compare
  • Created a new example scenario scenarioSatelliteConstellation demonstrating setup of a Walker-Delta constellation
  • Created a new 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
    spinningBodyTwoDOFStateEffector module.
  • Corrected an error with 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 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 bskPrinciples-2 for the simple new
    syntaxt to add C-modules.
  • Modified 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 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_N field in SCStatesMsgPayload that saves the total accumulated velocity of the
    spacecraft's center of mass in the inertial frame.
  • Added prescribed angle and angle rates to spinningBodyOneDOFStateEffector and spinningBodyTwoDOFStateEffector
    modules.
  • Created a scanningInstrumentController, similar to 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 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 thrusterPlatformState to map the thruster configuration information to body frame given the time-varying platform states.
  • Updated 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 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 simpleStorageUnit and 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 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 continuous
    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.

Basilisk version 2.2.0

29 Jun 02:03
628a39d
Compare
Choose a tag to compare
  • Created new way to define Python modules by inheriting from Basilisk.architecture.sysModel.SysModel.
    See :ref:pyModules 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 :ref:bskPrinciples-9
  • 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 :ref:SmallBodyNavEKF with 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: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 :ref:facetSRPDynamicEffector dynamics module to calculate the B frame SRP force and torque acting on a
    static spacecraft.
  • fixed PCI2PCPF() and PCPF2PCI methods in :ref:geodeticConversion to use the correct DCM
  • updated :ref:geodeticConversion to be able to account for planet ellipsoidal shape if polar radius is provided
  • Google Test C/C++ testing framework added
  • Created a :ref: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
    :ref:prescribedMotionStateEffector dynamics module.
  • Corrected default value of accuracyNanos in :ref:simSynch to be 0.01 seconds.
  • Added a deprecation system for Basilisk. For developers, see :ref:deprecatingCode.
  • Changed the units of plasma flux in :ref:dentonFluxModel and :ref: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 :ref:msisAtmosphere
  • Added an optional controllerStatus variable and deviceStatusInMsg message to the
    :ref: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 :ref: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 :ref: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 :ref:scenarioIntegratorsComparison

BSK v2.1.7

24 Mar 19:40
aacc9ea
Compare
Choose a tag to compare
  • Fixed CMake/conan case sensitivty issue when compiling Basilisk with opNav flag set to True on Linux platforms
  • Created fsw :ref:hingedRigidBodyPIDMotor to compute the commanded torque to :ref:spinningBodyOneDOFStateEffector using a proportional-integral-derivative controller.
  • Added :ref:torqueScheduler to combine two :ref:ArrayMotorTorqueMsgPayload into one and implement effector locking logic.
  • Refactored how Custom.cmake files are included and how they are to be constructed. Custom.cmake files
    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
    a Custom.cmake file 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 the src/cmake/usingOpenCV.cmake file.
  • updated :ref:unitTestSupport to create the file path in a platform agnostic manner
  • Created a :ref:sensorThermal module to model the temperature of a sensor using radiative heat transfer
  • Created a :ref:tempMeasurement module to add sensor noise/bias and fault capabilities to temperature readings
  • Added a terminal flag to the event handlers that cause the simulation to terminate when triggered; demonstrated
    use of flag in update to :ref:scenarioDragDeorbit.
  • Created a :ref:prescribedMotionStateEffector dynamics module for appending rigid bodies with prescribed motion
    to the spacecraft hub.
  • Added :ref:solarArrayReference to compute the reference angle and angle rate for a rotating solar array.
  • Update python dependency documentation and check to not use conan version 2.0.0 for now
  • Changed the SpinningBodyStateEffector module name to :ref:spinningBodyOneDOFStateEffector.
  • Added the ability to lock the axis on the :ref:spinningBodyOneDOFStateEffector module.
  • Added two new unit tests to :ref:spinningBodyOneDOFStateEffector.
  • Updated :ref:magneticFieldWMM to use the latest WMM coefficient file and evaluation software
  • Added a :ref:spinningBodyTwoDOFStateEffector module that simulates a two-axis rotating rigid component.
  • Created :ref: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 maxPower to :ref:reactionWheelStateEffector for limiting supplied
    power, independent of the modules in simulation/power.
  • Added :ref: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 :ref:vizInterface and Vizard
  • provide support or Vizard 2.1.4 features

Basilisk v2.1.6

23 Jan 20:00
a830104
Compare
Choose a tag to compare
  • Refactored :ref:keplerianOrbit to not depend on the gravityEffector class
  • 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 zeroBase would yield very large offsets.
  • Added documentation in :ref:bskPrinciples-4 on how to read the current message values
  • Highlighted the challege of setting up a recorder on 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: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, cppzmq
    and opencv. This corrects some build issues with new compilers.
  • The linearAlgebra, rigidBodyKinematics, orbitalMotion were mistakenly exposed as part of the
    :ref:sim_model module'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 timeWritten information of a C-wrapped message
    with a recorder() module.
  • Updated :ref:pullCloneBSK to ask the user to first install lfs before pulling a copy
    of the Basilisk repo due to some large files being stored in the GitHub large file storage
    system.
  • Updated :ref:scenarioGroundLocationImaging to properly save off the ground location
    information for Vizard
  • Added a new helper function to convert C arrays to Eigen::MRPd and vice-versa inside avsEigenSupport.
  • Updated :ref:spinningBodyStateEffector to use the :ref:HingedRigidBodyMsgPayload output message type for compatibility with other modules
  • Added the ability to set an inertial heading in the :ref:boreAngCalc module. Changed the internal module logic to use Eigen library variables and functions instead of C-style arrays and methods.
  • Added support for Vizard v2.1.3
  • Updated :ref:simpleInstrumentController to provide the option to consider the angular velocity tracking error norm
    when considering to take an image.