# Module: mrpPD¶

## Executive Summary¶

This module provides a MRP based PD attitude control module. It is similar to Module: mrpFeedback, but without the RW or the integral feedback option. The feedback control is able to asymptotically track a reference attitude if there are no unknown dynamics and the attitude control torque is implemented with a thruster set.

## Message Connection Descriptions¶

The following table lists all the module input and output messages. The module msg variable name 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.

Figure 1: mrpPD() Module I/O Illustration

Module I/O Messages

Msg Variable Name

Msg Type

Description

cmdTorqueOutMsg

Commanded external torque output message

vehConfigInMsg

Vehicle configuration input message

guidInMsg

Vehicle configuration input message

## Detailed Module Description¶

This attitude feedback module using the MRP feedback control related to the control in section 8.4.1 in Analytical Mechanics of Space Systems:

(1)${\bf L}_{r} = -K \pmb\sigma - [P] \delta\pmb\omega + [I](\dot{\pmb\omega}_{r} - [\tilde{\pmb\omega}]\pmb\omega_{r}) +[\tilde{\pmb \omega}_{r}] ] [I]\pmb\omega - \bf L$

Note that this control solution creates an external control torque which must be produced with a cluster of thrusters. No reaction wheel information is used here. Further, the feedback control component is a simple proportional and derivative feedback formulation. As shown in Analytical Mechanics of Space Systems, this control can asymptotically track a general reference trajectory given by the reference frame $$\cal R$$.

## Module Assumptions and Limitations¶

This control assumes the spacecraft is rigid and that the inertia tensor does not vary with time.

## User Guide¶

The following parameters must be set for the module:

• K: the MRP proportional feedback gain

• P: the $$\pmb\omega$$ tracking error proportional feedback gain

• knownTorquePntB_B: (Optional) the known external torque vector $${}^{B}{\bf L}$$. The default value is a zero vector.

Functions

void SelfInit_mrpPD(MrpPDConfig *configData, int64_t moduleID)

This method initializes the configData for this module. It checks to ensure that the inputs are sane and then creates the output message

Parameters
• configData – The configuration data associated with this module

• moduleID – The module identifier

Returns

void

void Update_mrpPD(MrpPDConfig *configData, uint64_t callTime, int64_t moduleID)

This method takes the attitude and rate errors relative to the Reference frame, as well as the reference frame angular rates and acceleration, and computes the required control torque Lr.

Parameters
• configData – The configuration data associated with the MRP Steering attitude control

• callTime – The clock time at which the function was called (nanoseconds)

• moduleID – The module identifier

Returns

void

void Reset_mrpPD(MrpPDConfig *configData, uint64_t callTime, int64_t moduleID)

This method performs a complete reset of the module. Local module variables that retain time varying states between function calls are reset to their default values.

Parameters
• configData – The configuration data associated with the MRP steering control

• callTime – [ns] Time the method is called

• moduleID – The module identifier

Returns

void

struct MrpPDConfig
#include <mrpPD.h>

Module configuration message definition.

Public Members

double K

[rad/sec] Proportional gain applied to MRP errors

double P

[N*m*s] Rate error feedback gain applied

double knownTorquePntB_B[3]

[N*m] known external torque in body frame vector components

double ISCPntB_B[9]

[kg m^2] Spacecraft Inertia

CmdTorqueBodyMsg_C cmdTorqueOutMsg

commanded torque output message

AttGuidMsg_C guidInMsg

attitude guidance input message

VehicleConfigMsg_C vehConfigInMsg

vehicle configuration input message

BSKLogger *bskLogger

BSK Logging.