Description

The purpose of this module is to map a body frame control torque to an array of Magnetic Torque Bar rods. As illustrated in the figure below, it’s intended to form the last element of an ADCS software chain, where commands are passed to the target actuators and are designed to work in conjunction with the Torque Dipole Conversion Software software.

Untitled

The module requires the user to specify the pseudo-inverse of the magnetic torque bar steering matrix . This is not currently calculated internally. This is to allow for common error patterns where flight software modules have imperfect knowledge of the dynamic configuration of the system.


Example Use Cases

  • Compute Dipole Commands for MTB Array: This module provides the interface between ADCS software chains and MTB Arrays.
  • Model Steering Errors: Implement a difference between the provided inverse steering matrix and the dynamic configuration of the Magnetic Torque Bar Array. This will result in incorrect mapping of dipole commands to MTBs.

Module Implementation

Given an incoming dipole vector request in the body frame , the goal of this module is to compute the individual dipole commands for an array of magnetic torque bars (MTB) and taking into account saturation limits. This module is intended to be used in conjunction with the TorqueToDipole module, which calculates,

Given a array , which describes the orientation of the MTBs in the body frame, may be calculated as:

Where indicates the pseudo inverse (required where the matrix is not square). After the vector is computed, saturation limits are applied, limiting maximum and minimum dipole commands.

NOTE

The MTB object will also saturate dipole commands. This facility is best used here to apply a software saturation, where MTBs are not reaching their saturation limit e.g. 80% saturation.


Assumptions/Limitations

  • The module currently requires the user to pre-calculate the pseudo-inverse of the magnetic torque bar steering matrix, which is the matrix that maps a control vector to a set of individual commands. A pseudo-inverse is required because may not be square and therefore a normal inverse cannot be computed.