Recent Releases of https://github.com/avslab/basilisk
https://github.com/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
than
uint64_tvalues in nanoseconds. This could cause micro drifts in the integration process. SeeIssue 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
using ``python 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.
- C
Published by schaubh 9 months ago
https://github.com/avslab/basilisk - 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. See
bskKnownIssuesfor 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.
- C
Published by schaubh about 1 year ago
https://github.com/avslab/basilisk - 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
scenarioFlexiblePanelandscenarioRoboticArmscenarios. - 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.iinclude 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 opNav to 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.
- simIncludeGravBody set the moon equatorial radius in km, not meters.
- fixed subMRP() routine in RigidBodyKinematics
- Updated solarArrayReference to 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.h instead of sys_model.i
- Updated groundMapping to correct behavior if maximumRange == -1
- Updated scripts to work with matplotlib version 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, and simpleVoltEstimator modules.
- Added setter and getter methods for the propagation matrices in the simpleVoltEstimator
and starTracker modules as their Amatrix attributes were private.
- Name change warning added to module documentation for the imuSensor walkBounds attribute to errorBounds
and a note on specifying sensor properties in scenarioGaussMarkovRandomWalk.
- Update makingModules-2 on how to make messages available to Basilisk modules
- Support for Vizard release 2.2.1, including rotating frame settings and documentation for support of .glb shape files
- vizProtobuffer upgraded to use latest C++ compiler, protobuf Python/C++ library upgraded
- Updated installLinux to 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 cspice using conan instead of providing custom libraries. This ensures all platforms are using
the same version of cspice.
- Ensured that the ability to designate an external BSK folder still works with conan2
- C
Published by schaubh over 1 year ago
https://github.com/avslab/basilisk - 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. Nowmessagingis 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 modules
lambertSolverto solve Lambert's problem,lambertPlannerto set up and define the Lambert problem,lambertValidatorto check if the solution from thelambertSolvermodule 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 scenarioscenarioExtendingBoom.
- C
Published by schaubh over 1 year ago
https://github.com/avslab/basilisk - 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 ofspinningBodyOneDOFStateEffectorandspinningBodyTwoDOFStateEffectorto 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
using
python conanfile.pyinstallation for now.
- NOTE: This is primarily intended to support pre-compiled releases in the future. All users are recommended to continue
using
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.
- C
Published by schaubh almost 2 years ago
https://github.com/avslab/basilisk - 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 formatMAJOR.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 toLinearTranslationRigidBodyMsgPayloadand renaming the message variables fromscalarPosandscalarVeltorhoandrhoDot - Deprecated the
prescribedMotionMsgPayloadmessage and replaced with two separateprescribedTranslationMsgPayloadandprescribedRotationMsgPayloadmessages. - added support for the new
swig4.2 version - updated the Windows build to compile properly with
opNavflag set to true. Aopencvrelated 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 theprescribedMotionStateEffectordynamics 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
prescribedLinearTranslationsimulation module. Note that the optional module variablecoastOptionRampDurationhas been renamed tocoastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change assetCoastOptionBangDuration()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
prescribedRotation1DOFsimulation module. Note that the optional module variablecoastOptionRampDurationhas been renamed tocoastOptionBangDuration. The setter and getter methods for this variable are renamed to reflect this change assetCoastOptionBangDuration()andgetCoastOptionBangDuration(), respectively. See the module documentation for the current usage of this parameter and these associated methods.
- C
Published by schaubh about 2 years ago
https://github.com/avslab/basilisk - 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 thespinningBodyTwoDOFStateEffectormodule. - 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, see
bskPrinciples-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
spinningBodyOneDOFStateEffectorandspinningBodyTwoDOFStateEffectormodules. - 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 methodsusePolyhedralGravityModelandusePointMassGravityModelhave 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 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
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.
- C
Published by schaubh over 2 years ago
https://github.com/avslab/basilisk - 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; withffmpeg video frame encoding lib, withade graph manipulations framework, withtiff generate image in TIFF format, withopenexr 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
- C
Published by schaubh almost 3 years ago
https://github.com/avslab/basilisk - 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 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 :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
- C
Published by schaubh about 3 years ago
https://github.com/avslab/basilisk - 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,cppzmqandopencv. 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 inBasilisk.utilities.orbitalMotion,Basilisk.architecture.linearAlgebra, andBasilisk.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.
- C
Published by schaubh over 3 years ago