Table of Contents

Class ReactionWheel

Namespace
NominalSystems.Classes
Assembly
NominalSystems.Classes.dll

[Nominal] This component models a singular reaction wheel. These reaction wheels can be added as children of Reaction Wheel Arrays.


[UniverseParent(typeof(ReactionWheelArray))]
public class ReactionWheel : PhysicalObject
Inheritance
ReactionWheel

Constructors

ReactionWheel()

Default reaction wheel constructor.

protected ReactionWheel()

Fields

ArrayIndex

The index of this Reaction Wheel within the Reaction Wheel Array.

[Unit(UnitType.NONE)]
[ReadOnly]
public int ArrayIndex

Field Value

int

DCM_BL

DCM matrix of the wheel to body frame

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true)]
public Matrix3 DCM_BL

Field Value

Matrix3

Inertia_C

Reaction Wheel Moment of inertia in the Wheel frame

[Unit(UnitType.KILOGRAM_SQUARE_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true)]
public Matrix3 Inertia_C

Field Value

Matrix3

Out_RWConfigMsg

The output message that defines this Reaction Wheel's configuration data.

public RWConfigMessage? Out_RWConfigMsg

Field Value

RWConfigMessage

Out_RWTorqueMsg

The output message representing motor torque commands.

public RWTorqueMessage? Out_RWTorqueMsg

Field Value

RWTorqueMessage

Properties

AOmega

Parameter used in coupled jitter back substitution.

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 AOmega { get; set; }

Property Value

Vector3

BOmega

Parameter used in coupled jitter back substitution.

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 BOmega { get; set; }

Property Value

Vector3

BetaStatic

Stribeck friction coefficient. For stribeck friction to be activated, user must change this variable to a positive non-zero number.

[Unit(UnitType.NONE)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double BetaStatic { get; set; }

Property Value

double

COmega

Parameter used in coupled jitter back substitution.

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double COmega { get; set; }

Property Value

double

CurrentTorque

Current motor torque.

[Unit(UnitType.NEWTON_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double CurrentTorque { get; set; }

Property Value

double

D

Wheel center of mass offset from wheel frame origin.

[Unit(UnitType.METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double D { get; set; }

Property Value

double

DynamicImbalance

Dynamic imbalance.

[Unit(UnitType.KILOGRAM_SQUARE_METRE)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double DynamicImbalance { get; set; }

Property Value

double

FrictionCoulomb

Coulomb friction torque magnitude.

[Unit(UnitType.NEWTON_METRE)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double FrictionCoulomb { get; set; }

Property Value

double

FrictionStatic

Static friction torque magnitude.

[Unit(UnitType.NEWTON_METRE)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double FrictionStatic { get; set; }

Property Value

double

FrictionStribeck

Boolean to determine if Stribeck friction model is used or not, 0 is non-Stribeck, 1 is Stribeck/ Parameter is set internally.

[Unit(UnitType.NONE)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public bool FrictionStribeck { get; set; }

Property Value

bool

FrictionTorque

Friction torque, this is a computed value, don't set it directly.

[Unit(UnitType.NEWTON_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double FrictionTorque { get; set; }

Property Value

double

FrictionViscous

Viscous friction coefficient.

[Unit("Nms/rad")]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double FrictionViscous { get; set; }

Property Value

double

InertiaPrime_B

RW inertia B-frame derivative. Also known as 'IPrimeRWPntWc_B', which is the inertia rate of change of the center of mass of the RW in the body frame.

[Unit(UnitType.KILOGRAM_SQUARE_METRE_PER_SECOND)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Matrix3 InertiaPrime_B { get; set; }

Property Value

Matrix3

Inertia_B

RW inertia about point Wc in B frame components. Also known as 'IRWPntWc_B'. This is the inertia of the center of mass of the RW in the body frame.

[Unit(UnitType.KILOGRAM_SQUARE_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Matrix3 Inertia_B { get; set; }

Property Value

Matrix3

J13

X-Z inertia of wheel about wheel center in wheel frame (imbalance).

[Unit(UnitType.KILOGRAM_SQUARE_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double J13 { get; set; }

Property Value

double

Jg

GgHat axis rotor moment of inertia.

[Unit(UnitType.KILOGRAM_SQUARE_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double Jg { get; set; }

Property Value

double

Js

Spin axis gsHat rotor moment of inertia.

[Unit(UnitType.KILOGRAM_SQUARE_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double Js { get; set; }

Property Value

double

Jt

GtHat axis rotor moment of inertia.

[Unit(UnitType.KILOGRAM_SQUARE_METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double Jt { get; set; }

Property Value

double

Mass

The component mass defined in the object. This is independent of any parent or children objects and exists in isolation.

public override double Mass { get; set; }

Property Value

double

MaxMomentum

Maximum RW wheel momentum in Nms.

[Unit(UnitType.NEWTON_METRE_SECOND)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double MaxMomentum { get; set; }

Property Value

double

MaxTorque

Max torque, negative value turns off saturating the wheel.

[Unit(UnitType.NEWTON_METRE)]
[Metadata(ContainedIn = "Out_RWConfigMsg")]
public double MaxTorque { get; set; }

Property Value

double

MinTorque

Min torque of the wheel.

[Unit(UnitType.NEWTON_METRE)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double MinTorque { get; set; }

Property Value

double

NetTorque_B

Torque command for individual RW in the body frame.

[Unit(UnitType.NEWTON_METRE)]
[ReadOnly]
[Metadata(ContainedIn = "Out_RWConfigMsg")]
public double NetTorque_B { get; set; }

Property Value

double

Omega

Wheel speed.

[Unit(UnitType.RADIAN_PER_SECOND)]
[Metadata(ContainedIn = "Out_RWConfigMsg")]
public double Omega { get; set; }

Property Value

double

OmegaBefore

Wheel speed one time step before.

[Unit(UnitType.RADIAN_PER_SECOND)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double OmegaBefore { get; set; }

Property Value

double

OmegaLimitCycle

Wheel speed that avoids limit cycle with friction.

[Unit(UnitType.RADIAN_PER_SECOND)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double OmegaLimitCycle { get; set; }

Property Value

double

OmegaMax

Max wheel speed, negative values turn off wheel saturation.

[Unit(UnitType.RADIAN_PER_SECOND)]
[Metadata(ContainedIn = "Out_RWConfigMsg")]
public double OmegaMax { get; set; }

Property Value

double

PositionPrime_CB_B

B-frame derivative of r_WcB_B. Also known as 'rPrime_WcB_B'.

[Unit(UnitType.METRE_PER_SECOND)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 PositionPrime_CB_B { get; set; }

Property Value

Vector3

PositionTilde_CB_B

Tilde matrix of r_WcB_B. This is the skew symmetric matrix of the position of the reaction wheel center of mass Wc relative. This is also known as 'RTildeWcB_B'.

[Unit(UnitType.METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Matrix3 PositionTilde_CB_B { get; set; }

Property Value

Matrix3

Position_CB_B

Position of the reaction wheel center of mass Wc relative to B in B-frame components. Also known as 'r_WcB_B'.

[Unit(UnitType.METRE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 Position_CB_B { get; set; }

Property Value

Vector3

RWStatus

Type of operating model.

[Unit(UnitType.NONE)]
[Metadata(ContainedIn = "Out_RWConfigMsg", DisplayName = "Status")]
public RWOperatingStatusType RWStatus { get; set; }

Property Value

RWOperatingStatusType

SpinRateRatio

The ratio of the current reaction wheel speed to the maximum reaction wheel speed. This is a convenient way to measure the degree of saturation for the reaction wheel.

[Unit(UnitType.NONE)]
[ReadOnly]
public double SpinRateRatio { get; }

Property Value

double

StaticImbalance

Static imbalance.

[Unit("kg·m")]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double StaticImbalance { get; set; }

Property Value

double

Theta

Wheel angle.

[Unit(UnitType.RADIAN)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public double Theta { get; set; }

Property Value

double

W2Hat0_B

Initial torque axis unit vector in body frame.

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 W2Hat0_B { get; set; }

Property Value

Vector3

W2Hat_B

Current torque axis unit vector in body frame.

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 W2Hat_B { get; set; }

Property Value

Vector3

W3Hat0_B

Initial gimbal axis unit vector in body frame.

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 W3Hat0_B { get; set; }

Property Value

Vector3

W3Hat_B

Current gimbal axis unit vector in body frame.

[Unit(UnitType.NONE)]
[ReadOnly]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 W3Hat_B { get; set; }

Property Value

Vector3

WheelModelType

Type of imbalance model to use.

[Unit(UnitType.NONE)]
[Metadata(ContainedIn = "Out_RWConfigMsg")]
public RWModelType WheelModelType { get; set; }

Property Value

RWModelType

WheelPosition_B

Position vector of the RW relative to the spacecraft body frame. This is the 'RWB_B' parameter.

[Unit(UnitType.METRE)]
[Metadata(IsAdvanced = true, ContainedIn = "Out_RWConfigMsg")]
public Vector3 WheelPosition_B { get; set; }

Property Value

Vector3

WheelSpinAxis_B

Spin axis unit vector gsHat in B-frame components.

[Unit(UnitType.NONE)]
[Metadata(ContainedIn = "Out_RWConfigMsg")]
public Vector3 WheelSpinAxis_B { get; set; }

Property Value

Vector3

Methods

OnCreate()

Called when the 'Component' is created from the controller.

protected override void OnCreate()

OnLoad(double)

Called after all of the data has been loaded from a save state on this object. This enables any post-load operations to be performed and extra data to be loaded from the metadata.

protected override void OnLoad(double time)

Parameters

time double

[s] The current clock time of the simulation