# 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.

Figure 1: etSphericalControl() Module I/O Illustration

Module I/O Messages

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

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

## User Guide¶

The ETcontrol module is created using:

1etSphericalControlData = etSphericalControl.etSphericalControlConfig()
2etSphericalControlWrap = scSim.setModelDataWrap(EetSphericalControlData)
3etSphericalControlWrap.ModelTag = "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 etSphericalControlData.

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

double phi_r