Module: etSphericalControl
Executive Summary
This module computes the control thrust force of the Electrostatic Tractor Relative Motion Control. A servicing satellite and a debris (or other satellite) are charged to different electrostatic potentials, resulting in an attractive force between the two craft. The Electrostatic Tractor (ET) concept uses this attractive force to tug the debris to another orbit. See Relative Motion Control For Two-Spacecraft Electrostatic Orbit Corrections for more information on the ET relative motion control.
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.
Msg Variable Name |
Msg Type |
Description |
---|---|---|
servicerTransInMsg |
Servicer position and velocity input message |
|
debrisTransInMsg |
Debris position and velocity input message |
|
servicerAttInMsg |
Servicer attitude input message |
|
servicerVehicleConfigInMsg |
Servicer vehicle configuration (mass information) input message |
|
debrisVehicleConfigInMsg |
Debris vehicle configuration (mass information) input message |
|
eForceInMsg |
Inertial electrostatic force that acts on servicer input message |
|
forceInertialOutMsg |
Inertial frame control thrust force output message |
|
forceBodyOutMsg |
Body frame control thrust force output message |
Module Assumptions and Limitations
This control law in this module is based on an attractive electrostatic force between the two craft, so the electric potentials of the two craft must be different in sign (assuming that both craft are fully conducting).
Equations
The necessary equations for this module are given in Relative Motion Control For Two-Spacecraft Electrostatic Orbit Corrections. Note that Eq. (45) in this paper should be
User Guide
The ETcontrol module is created using:
1etSphericalControl = etSphericalControl.etSphericalControl()
2etSphericalControl.ModelTag = "etSphericalControl"
3scSim.AddModelToTask(fswTaskName, etSphericalControl, etSphericalControl)
The reference position variables in the spherical frame \(L_r\), \(theta_r\), \(phi_r\), the feedback gains \(K\) and \(P\), and the gravitational parameter mu must be added to etSphericalControl.
The module computes the control force vector both with respect to the inertial and body frame as separate output messages. Depending on the needs of the developer, the control force can be connected in either frame to down-stream modules. However, don’t connect both output messages because this would result in the control force being applied twice.
Functions
-
void SelfInit_etSphericalControl(etSphericalControlConfig *configData, int64_t moduleID)
This method initializes the output messages for this module.
- Parameters:
configData – The configuration data associated with this module
moduleID – The module identifier
- Returns:
void
-
void Update_etSphericalControl(etSphericalControlConfig *configData, uint64_t callTime, int64_t moduleID)
Add a description of what this main Update() routine does for this module
- Parameters:
configData – The configuration data associated with the module
callTime – The clock time at which the function was called (nanoseconds)
moduleID – The module identifier
- Returns:
void
-
void Reset_etSphericalControl(etSphericalControlConfig *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 module
callTime – [ns] time the method is called
moduleID – The module identifier
- Returns:
void
This function calculates the control force of the Electrostatic Tractor Relative Motion Control based on current relative position and velocity, and desired relative position
- Parameters:
configData – The configuration data associated with the module
servicerTransInMsgBuffer – Servicer’s position and velocity
debrisTransInMsgBuffer – Debris’ position and velocity
servicerAttInMsgBuffer – Servicer’s attitude
servicerVehicleConfigInMsgBuffer – Servicer Vehicle Configuration
debrisVehicleConfigInMsgBuffer – Servicer Vehicle Configuration
eForceInMsgBuffer – Electrostatic force on servicer
forceInertialOutMsgBuffer – inertial force output (3-axis)
forceBodyOutMsgBuffer – body force output (3-axis)
- Returns:
void
-
struct etSphericalControlConfig
- #include <etSphericalControl.h>
Top level structure for the sub-module routines.
Public Members
-
NavTransMsg_C servicerTransInMsg
servicer orbit input message
-
NavTransMsg_C debrisTransInMsg
debris orbit input message
-
NavAttMsg_C servicerAttInMsg
servicer attitude input message
-
VehicleConfigMsg_C servicerVehicleConfigInMsg
servicer vehicle configuration (mass) input message
-
VehicleConfigMsg_C debrisVehicleConfigInMsg
debris vehicle configuration (mass) input message
-
CmdForceInertialMsg_C eForceInMsg
servicer electrostatic force input message
-
CmdForceInertialMsg_C forceInertialOutMsg
servicer inertial frame control force output message
-
CmdForceBodyMsg_C forceBodyOutMsg
servicer body frame control force output message
-
double mu
[m^3/s^2] gravitational parameter
-
double L_r
[m] reference separation distance
-
double theta_r
[rad] reference in-plane rotation angle
-
double phi_r
[rad] reference out-of-plane rotation angle
-
double K[9]
3x3 symmetric positive definite feedback gain matrix [K]
-
double P[9]
3x3 symmetric positive definite feedback gain matrix [P]
-
BSKLogger *bskLogger
BSK Logging.
-
NavTransMsg_C servicerTransInMsg