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.

../../../../../_images/moduleEtSphericalControl.svg

Figure 1: etSphericalControl() Module I/O Illustration#

Module I/O Messages#

Msg Variable Name

Msg Type

Description

servicerTransInMsg

NavTransMsgPayload

Servicer position and velocity input message

debrisTransInMsg

NavTransMsgPayload

Debris position and velocity input message

servicerAttInMsg

NavAttMsgPayload

Servicer attitude input message

servicerVehicleConfigInMsg

VehicleConfigMsgPayload

Servicer vehicle configuration (mass information) input message

debrisVehicleConfigInMsg

VehicleConfigMsgPayload

Debris vehicle configuration (mass information) input message

eForceInMsg

CmdForceInertialMsgPayload

Inertial electrostatic force that acts on servicer input message

forceInertialOutMsg

CmdForceInertialMsgPayload

Inertial frame control thrust force output message

forceBodyOutMsg

CmdForceBodyMsgPayload

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

\[{\bf T}_t = m_T [ {\bf u} - {\bf F}_c (1/m_T + 1/m_D)]\]

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.

Class EtSphericalControl#

class EtSphericalControl : public SysModel#

Top level structure for the sub-module routines.

Public Functions

void reset(uint64_t callTime) override#

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:

callTime – [ns] time the method is called

Returns:

void

void updateState(uint64_t callTime) override#

Add a description of what this main Update() routine does for this module

Parameters:

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

Returns:

void

void calcRelativeMotionControl(NavTransMsgPayload servicerTransInMsgBuffer, NavTransMsgPayload debrisTransInMsgBuffer, NavAttMsgPayload servicerAttInMsgBuffer, VehicleConfigMsgPayload servicerVehicleConfigInMsgBuffer, VehicleConfigMsgPayload debrisVehicleConfigInMsgBuffer, CmdForceInertialMsgPayload eForceInMsgBuffer, CmdForceInertialMsgPayload *forceInertialOutMsgBuffer, CmdForceBodyMsgPayload *forceBodyOutMsgBuffer)#

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:
  • 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

Public Members

ReadFunctor<NavTransMsgPayload> servicerTransInMsg#

servicer orbit input message

ReadFunctor<NavTransMsgPayload> debrisTransInMsg#

debris orbit input message

ReadFunctor<NavAttMsgPayload> servicerAttInMsg#

servicer attitude input message

ReadFunctor<VehicleConfigMsgPayload> servicerVehicleConfigInMsg#

servicer vehicle configuration (mass) input message

ReadFunctor<VehicleConfigMsgPayload> debrisVehicleConfigInMsg#

debris vehicle configuration (mass) input message

ReadFunctor<CmdForceInertialMsgPayload> eForceInMsg#

servicer electrostatic force input message

Message<CmdForceInertialMsgPayload> forceInertialOutMsg#

servicer inertial frame control force output message

Message<CmdForceBodyMsgPayload> 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.