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 
 - 
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 
 
- 
double 
- 
class NHingedRigidBodyStateEffector: public StateEffector, public SysModel¶
- Public Functions - 
void addHingedPanel(HingedPanel NewPanel)¶
 - 
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 
 - 
std::string nameOfThetaState¶
- Identifier for the theta state data container 
 - 
std::string nameOfThetaDotState¶
- Identifier for the thetaDot state data container 
 - Private Members - 
double totalMass¶
- [kg] Total mass of effector 
 - 
std::vector<HingedPanel> PanelVec¶
- vector containing all the info on the different panels 
 
- 
void