Table of Contents

Computer: Guidance

Description

When developing flight software chains, there are often a number of software modules that need to be added and connected via the messaging system. Additionally, it can take a significant amount of work to change software modules during a simulation. For example, setting up a use-case for switching between a solar-pointing mode and a camera-imaging mode during a simulation would require some work in the level code to create the switch between the two. The guidance computer is a specialized computer that can construct software chains and enable the user to configure and switch between different chains during a simulation. The user will not be required to construct the software modules themselves, but instead, initialize the starting values and configure any optional parameters.

Example Use Cases

  • Alternating Pointing Modes: Allowing a custom message or event to cause the spacecraft to switch pointing modes during operation.
  • User-Friendly Software: Rather than focusing on building up the software stack, a beginner user can simply add the computer and select a chain type.

Module Implementation

A software chain is a series of software modules that are linked together via the messaging system. A standard chain could look like the following:

Untitled

In this example, a chain would consist of a pointing program (a module that calculates a reference frame), an error program (a module that determines the attitude error), a feedback controller (a module that determines a command torque) and a mapping program (a module that can map the torque to the actuation device). This chain would be linked with the messages between each module and would result in a series of software nodes that are automatically created.

A software sequence is a series of software chains linked together via external messages. What software sequences allow the computer to do is swap out individual chains of software nodes for other chains of software with the same message interfaces. The guidance computer creates a software sequence called the Control Software Sequence and it consists of four types of software chains added together:

  • Navigation Chain
  • Pointing Chain
  • Controller Chain
  • Mapping Chain

Each chain can consist of one or many software (or interface) modules and there can be a number of different chains per chain category. However, each chain within the category must have the same input and output messages to connect with the interface between chains.

Untitled

A list of all chain types and their required input and output messages are shown in the table below. The input and output messages shown are only for connecting the chains together and are the required messages. There may be additional input or output messages depending on the software mode selected.

Chain Category Description Input Messages Output Messages
Navigation Determines the estimated (or actual) position and orientation of the spacecraft from sensors. - NavAttMessage, NavTransMessage
Pointing Determines a reference and guidance frame orientation to target based on some alignment and direction. NavAttMessage, NavTransMessage AttRefMessage, AttGuidMessage
Controller Determines the feedback loop and the required control torque to reach the desired target frame. AttRefMessage, AttGuidMessage CmdTorqueBodyMessage
Mapping Maps the command torque to an appropriate actuator to execute the physics. CmdTorqueBodyMessage -

For each chain, there can be a number of software modules that are connected to each other and are created by the specific chain. Chains can have repeated modules that may be the same between chains, but on each active chain, all other chains are disabled and do not run.

Chain Name Category Purpose Software Modules
Simple Navigation Uses the simple navigator to estimate the position and attitude of a spacecraft by overlaying errors to the actual module. SimpleNavigator
Inertial Pointing Creates a target reference frame with some inertial frame and aims to align the spacecraft’s alignment vector to that frame. InertialHold, AttitudeTrackingError
Sun Pointing Aims to align the solar panel (or some other vector) in the direction of the sun, maximizing power draw efficiency. SunSafePointing
Velocity Pointing Aims to align the thruster (or some other vector) in the direction of orbit around a body to perform in-orbit maneuver procedures. EphemerisNavigation, VelocityPointing, AttitudeReferenceCorrection, AttitudeTrackingError
Nadir Pointing Aims to align the camera (or some other vector) in the direction of a particular celestial body, such as the Earth. EphemerisNavigation, LVLHPointing, AttitudeReferenceCorrection, AttitudeTrackingError
Ground Pointing Aims to align the camera (or some other vector) in the direction of a targeted ground station located on some celestial body. EphemerisNavigation, GroundLocationPointing
Relative Pointing Aims to align the camera (or some other vector) in the direction of another spacecraft in orbit. This can be used as constellation monitoring or communications. SpacecraftEphemerisConverter, RelativePointing, AttitudeTrackingError
Location Pointing Aims to align the camera (or some other vector) in the direction of some geodetic location about a planet. This can be used for imaging specific locations that are non-NADIR. GeodeticEphemerisConverter, GroundLocationPointing
Idle Controller A default controller that produces no torque commands and prevents any actuation from occurring. -
MRP Controller A PID Feedback loop controller takes in optional speeds from the reaction wheels and creates a torque command for an actuator. MRPFeedback
External Torque Mapping A mapping sequence to allow an external force torque module to produce torques on the spacecraft without any reaction wheels. ExternalForceTorque
Reaction Wheels Mapping A reaction wheel motor mapping sequence that can map a force torque to a reaction wheel array object and create a dynamic moment on the spacecraft. ReactionWheelMotorTorque, ReactionWheelArray

For each of the four chain types, there is an enumerator that can be changed on the guidance message that will affect how the guidance computer is creating and running the software chains. This can be set on the In_SoftwareChainMsg field and adjusted during runtime. Whenever a chain changes, all other chains are disabled, preventing the software from running, and that particular chain is enabled. The linking of messages is done each function call when the software sequence is adjusted and ensures that all components are linked correctly.

Additionally, for each of the software chains, a dedicated configuration function has been exposed on the guidance computer that allows for the parameters within the chains to be adjusted. These include the reference frames, targets, planets and required external messages (such as the ground states message in the case of the ground pointing chain). The interface messages between the software chains in the sequence are also exposed on the guidance computer to be read from.

Assumptions/Limitations

  • The guidance computer chains are not configurable past the parameters set in the configuration functions.
  • A complete list of guidance chains has not been added as of this version. Additional chains will be added to each of the four chain types over time.