Module: stateEffector

Abstract class that is used to implement an effector attached to the dynamicObject that has a state that needs to be integrated. For example: reaction wheels, flexing solar panels, fuel slosh etc


struct BackSubMatrices

Public Members

Eigen::Matrix3d matrixA

Back-Substitution matrix A

Eigen::Matrix3d matrixB

Back-Substitution matrix B

Eigen::Matrix3d matrixC

Back-Substitution matrix C

Eigen::Matrix3d matrixD

Back-Substitution matrix D

Eigen::Vector3d vecTrans

Back-Substitution translation vector

Eigen::Vector3d vecRot

Back-Substitution rotation vector

struct EffectorMassProps
#include <stateEffector.h>

Abstract class that is used to implement an effector attached to the dynamicObject that has a state that needs to be integrated. For example: reaction wheels, flexing solar panels, fuel slosh etc.

Public Members

double mEff

[kg] Mass of the effector

double mEffDot

[kg/s] Time derivate of mEff

Eigen::Matrix3d IEffPntB_B

[kg m^2] Inertia of effector relative to point B in B frame components

Eigen::Vector3d rEff_CB_B

[m] Center of mass of effector with respect to point B in B frame comp

Eigen::Vector3d rEffPrime_CB_B

[m/s] Time derivative with respect to the body of rEff_CB_B

Eigen::Matrix3d IEffPrimePntB_B

[kg m^2/s] Time derivative with respect to the body of IEffPntB_B

class StateEffector

Public Functions

StateEffector()

Contructor

This is the constructor, just setting the variables to zero

~StateEffector()

Destructor

This is the destructor, nothing to report here

void updateEffectorMassProps(double integTime)

Method for stateEffector to give mass contributions

This method is for the state effector to provide its contributions of mass and mass rates to the dynamicObject. This allows for the dynamicObject to have access to the total mass, and inerita, mass and inertia rates

void updateContributions(double integTime, BackSubMatrices &backSubContr, Eigen::Vector3d sigma_BN, Eigen::Vector3d omega_BN_B, Eigen::Vector3d g_N)

Back-sub contributions

This method is strictly for the back-substituion method for computing the dynamics of the spacecraft. The back-sub method first computes rDDot_BN_N and omegaDot_BN_B for the spacecraft using these contributions from the state effectors. Then computeDerivatives is called to compute the stateEffectors derivatives using rDDot_BN_N omegaDot_BN_B

void updateEnergyMomContributions(double integTime, Eigen::Vector3d &rotAngMomPntCContr_B, double &rotEnergyContr, Eigen::Vector3d omega_BN_B)

Energy and momentum calculations

This method allows for an individual stateEffector to add its energy and momentum calculations to the dynamicObject. The analytical devlopement of these contributions can be seen in Basilisk/simulation/dynamics/_Documentation/Basilisk-EnergyAndMomentum-20161219.pdf

void modifyStates(double integTime)

Modify state values after integration

This method allows for an individual stateEffector to modify their states after integration

void calcForceTorqueOnBody(double integTime, Eigen::Vector3d omega_BN_B)

Force and torque on s/c due to stateEffector

This method allows for an individual stateEffector to find the force and torque that the stateEffector is placing on to the body

void writeOutputStateMessages(uint64_t integTimeNanos)

Write State Messages after integration

This method ensures that all dynamics states have their messages written after integation

void registerStates(DynParamManager &states) = 0

Method for stateEffectors to register states

void linkInStates(DynParamManager &states) = 0

Method for stateEffectors to get other states

void computeDerivatives(double integTime, Eigen::Vector3d rDDot_BN_N, Eigen::Vector3d omegaDot_BN_B, Eigen::Vector3d sigma_BN) = 0

Method for each stateEffector to calculate derivatives

void prependSpacecraftNameToStates()

This method ensures that stateEffectors can be implemented using the multi-spacecraft archticture

void receiveMotherSpacecraftData(Eigen::Vector3d rSC_BP_P, Eigen::Matrix3d dcmSC_BP)

Public Members

std::string nameOfSpacecraftAttachedTo
EffectorMassProps effProps

stateEffectors instantiation of effector mass props

Eigen::Vector3d forceOnBody_B

[N] Force that the state effector applies to the s/c

Eigen::Vector3d torqueOnBodyPntB_B

[N] Torque that the state effector applies to the body about point B

Eigen::Vector3d torqueOnBodyPntC_B

[N] Torque that the state effector applies to the body about point B

Eigen::Vector3d r_BP_P
Eigen::Matrix3d dcm_BP
BSKLogger bskLogger

BSK Logging