Module: nHingedRigidBodyStateEffector¶
This class is an instantiation of the stateEffector class and is a N-hinged rigid body effector. This effector is a rigid body attached to the hub through a torsional spring and damper that approximates a flexible appendage. See Allard, Schaub, and Piggott paper: General Hinged Solar Panel Dynamics Approximating First-Order Spacecraft Flexing for a detailed description of this model. A hinged rigid body has 2 states: theta and thetaDot
The module
PDF Description
contains further information on this module’s function,
how to run it, as well as testing.
- 
struct HingedPanel¶
- #include <nHingedRigidBodyStateEffector.h>Struct containing all the panel variables. All members are public by default so they can be changed by methods of the N_hingedRigidBodyStateEffector class. Public Members - 
double mass= 1.0¶
- [kg] mass of hinged panel 
 - 
double d= 1.0¶
- [m] distance from hinge point to hinged rigid body center of mass 
 - 
double k= 1.0¶
- [N-m/rad] torsional spring constant of hinge 
 - 
double c= 0.0¶
- [N-m-s/rad] rotational damping coefficient of hinge 
 - 
double thetaInit= 0.0¶
- [rad] Initial hinged rigid body angle 
 - 
double thetaDotInit= 0.0¶
- [rad/s] Initial hinged rigid body angle rate 
 - 
Eigen::Matrix3d IPntS_S¶
- [kg-m^2] Inertia of hinged rigid body about point S in S frame components 
 - 
double theta= 0.0¶
- [rad] hinged rigid body angle 
 - 
double theta_0= 0.0¶
- [rad] hinged rigid body rest angle 
 - 
double thetaDot= 0.0¶
- [rad/s] hinged rigid body angle rate 
 - 
Eigen::Matrix3d dcm_SS_prev¶
- DCM from previous S frame to current S frame 
 - 
Eigen::Matrix3d dcm_SB¶
- DCM from body to S frame 
 - 
Eigen::Vector3d omega_BN_S¶
- [rad/s] omega_BN in S frame components 
 - 
Eigen::Vector3d omega_SB_B¶
- [rad/s] omega_SB in B frame components 
 - 
Eigen::Vector3d sHat1_B¶
- unit direction vector for the first axis of the S frame 
 - 
Eigen::Vector3d sHat2_B¶
- unit direction vector for the second axis of the S frame 
 - 
Eigen::Vector3d sHat3_B¶
- unit direction vector for the third axis of the S frame 
 - 
Eigen::Vector3d r_SB_B¶
- Vector pointing from B to CoM of hinged rigid body in B frame components 
 - 
Eigen::Matrix3d rTilde_SB_B¶
- Tilde matrix of rSB_B 
 - 
Eigen::Vector3d rPrime_SB_B¶
- [m/s] Body time derivative of rSB_B 
 - 
Eigen::Matrix3d rPrimeTilde_SB_B¶
- Tilde matrix of rPrime_SB_B 
 - 
Eigen::Matrix3d ISPrimePntS_B¶
- [kg-m^2/s] time body derivative IPntS in body frame components 
 
- 
double 
- 
class NHingedRigidBodyStateEffector: public StateEffector, public SysModel¶
- #include <nHingedRigidBodyStateEffector.h>NHingedRigidBodyStateEffector class. Public Functions - 
void addHingedPanel(HingedPanel NewPanel)¶
- class method 
 - 
NHingedRigidBodyStateEffector()¶
- Contructor - This is the constructor, setting variables to default values 
 - 
~NHingedRigidBodyStateEffector()¶
- Destructor - This is the destructor, nothing to report here 
 - 
double HeaviFunc(double cond)¶
- Heaviside function used for matrix contributions - Method for defining the Heaviside function for the EOMs */ 
 
 - 
void SelfInit()¶
- This method initializes the object. It creates the module’s output messages. - Return
- void 
 
 - 
void CrossInit()¶
- This method subscribes to messages the HRB needs. - Return
- void 
 
 - 
void WriteOutputMessages(uint64_t CurrentClock)¶
- This method takes the computed theta states and outputs them to the messaging system. - Return
- void 
- Parameters
- CurrentClock: The current simulation time (used for time stamping)
 
 
 - 
void UpdateState(uint64_t CurrentSimNanos)¶
- This method is used so that the simulation will ask HRB to update messages. - Return
- void 
- Parameters
- CurrentSimNanos: The current simulation time in nanoseconds
 
 
 - 
void registerStates(DynParamManager &statesIn)¶
- Method for registering the HRB states - This method allows the HRB state effector to register its states: theta and thetaDot with the dyn param manager 
 - 
void linkInStates(DynParamManager &states)¶
- Method for getting access to other states - This method allows the HRB state effector to have access to the hub states and gravity 
 - 
void updateEffectorMassProps(double integTime)¶
- Method for stateEffector to give mass contributions - This method allows the HRB state effector to provide its contributions to the mass props and mass prop rates of the spacecraft 
 - 
void updateContributions(double integTime, BackSubMatrices &backSubContr, Eigen::Vector3d sigma_BN, Eigen::Vector3d omega_BN_B, Eigen::Vector3d g_N)¶
- Back-sub contributions - This method allows the HRB state effector to give its contributions to the matrices needed for the back-sub method 
 - 
void updateEnergyMomContributions(double integTime, Eigen::Vector3d &rotAngMomPntCContr_B, double &rotEnergyContr, Eigen::Vector3d omega_BN_B)¶
- Energy and momentum calculations - This method is for calculating the contributions of the HRB state effector to the energy and momentum of the s/c 
 - 
void computeDerivatives(double integTime, Eigen::Vector3d rDDot_BN_N, Eigen::Vector3d omegaDot_BN_B, Eigen::Vector3d sigma_BN)¶
- Method for each stateEffector to calculate derivatives - This method is used to find the derivatives for the HRB stateEffector: thetaDDot and the kinematic derivative 
 - 
void readInputMessages()¶
- method to read input messages - This method reads necessary input messages - Return
- void 
 
 Public Members - 
std::string NHingedRigidBodyOutMsgName¶
- state output message name 
 - 
Eigen::MatrixXd *g_N¶
- [m/s^2] Gravitational acceleration in N frame components 
 - 
std::string nameOfThetaState¶
- Identifier for the theta state data container 
 - 
std::string nameOfThetaDotState¶
- Identifier for the thetaDot state data container 
 - 
Eigen::Vector3d r_HB_B¶
- [m] vector pointing from body frame origin to the first Hinge location 
 - 
Eigen::Matrix3d rTilde_HB_B¶
- Tilde matrix of rHB_B 
 - 
Eigen::Matrix3d dcm_HB¶
- DCM from body frame to hinge frame 
 - 
BSKLogger bskLogger¶
- BSK Logging 
 Private Members - 
double totalMass¶
- [kg] Total mass of effector 
 - 
std::vector<HingedPanel> PanelVec¶
- vector containing all the info on the different panels 
 - 
Eigen::MatrixXd matrixADHRB¶
- [-] term needed for back substitution 
 - 
Eigen::MatrixXd matrixEDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::MatrixXd matrixFDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::MatrixXd matrixGDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::MatrixXd matrixHDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::MatrixXd matrixKDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::MatrixXd matrixLDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::MatrixXd matrixMDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::VectorXd vectorVDHRB¶
- [-] term needed for back substitution 
 - 
Eigen::Vector3d aTheta¶
- term needed for back substitution 
 - 
Eigen::Vector3d bTheta¶
- term needed for back substitution 
 - 
Eigen::Vector3d omegaLoc_BN_B¶
- [rad/s] local copy of omegaBN 
 - 
Eigen::Matrix3d omegaTildeLoc_BN_B¶
- tilde matrix of omegaBN 
 
- 
void