Module: hingedRigidBodyMotor¶
Executive Summary¶
Calculates a motor torque given a sensed and reference hinged rigid body state using a simple PD control law.
Message Connection Descriptions¶
The following table lists all the module input and output messages. The module msg connection is set by the user from python. The msg type contains a link to the message structure definition, while the description provides information on what this message is used for.
Msg Variable Name |
Msg Type |
Description |
---|---|---|
hingedBodyStateSensedInMsg |
sensed rigid body state (theta, theta dot) |
|
hingedBodyStateReferenceInMsg |
reference hinged rigid body state (theta, theta dot) |
|
motorTorqueOutMsg |
motor torque on hinged rigid body |
Detailed Model Description¶
This module takes in a reference angle and angle rate, as well as a sensed angle and angle rate, and calculates the motor torque according to:
K and P are the constant gains. Both should be set to positive values.
User Guide¶
This section contains a conceptual overview of the code and an example for the prospective user.
Module Setup¶
The interface module is created in python using:
1testModule = hingedRigidBodyMotor.hingedRigidBodyMotor()
2testModule.ModelTag = "hingedRigidBodyMotor"
A sample setup is done using:
1testModule.K = 1 # proportional gain constant
2testModule.P = 1 # derivative gain constant
If \(K\) and \(P\) are not set, they default to 0.
-
class HingedRigidBodyMotor : public SysModel¶
- #include <hingedRigidBodyMotor.h>
Calculates a motor torque to drive a hinged panel to a reference angle state. A sensed and reference hinged rigid body angle drives a simple PD control law.
Public Functions
-
HingedRigidBodyMotor()¶
This is the constructor for the module class. It sets default variable values and initializes the various parts of the model
-
~HingedRigidBodyMotor()¶
Module Destructor
-
void Reset(uint64_t CurrentSimNanos)¶
This method is used to reset the module and checks that required input messages are connect.
- Returns
void
-
void UpdateState(uint64_t CurrentSimNanos)¶
This is the main method that gets called every time the module is updated. It calculates a motor torque on a hinged rigid body using a simple PD control law.
- Returns
void
Public Members
-
double K¶
gain on theta
-
double P¶
gain on theta dot
-
ReadFunctor<HingedRigidBodyMsgPayload> hingedBodyStateSensedInMsg¶
sensed rigid body state (theta, theta dot)
-
ReadFunctor<HingedRigidBodyMsgPayload> hingedBodyStateReferenceInMsg¶
reference hinged rigid body state (theta, theta dot)
-
Message<ArrayMotorTorqueMsgPayload> motorTorqueOutMsg¶
motor torque on hinged rigid body
-
BSKLogger bskLogger¶
— BSK Logging
-
HingedRigidBodyMotor()¶