Table of Contents

Dynamics: Reaction Wheel Array

Description

The reaction wheel array component is a container and interface for a set of ReactionWheel modules. By default, it registers any reaction wheel component that has been attached to it as a child object as part of its array to manage. It’s primary purpose is to act as a single interface to control the attached reaction wheel array and to collect ensemble information e.g. reaction wheel mass properties and contributions to the parent object Equations of Motion (EOM). This design is to simplify user interactions (e.g. one command message array can be attached to a single object instead of individual commands to each reaction wheel) and to better support unit-specific model calibration (e.g. calibrating each reaction wheel to represent measured performance).

Untitled

Example Use Cases

  • Reaction Wheel Actuators: This module can be used as the primary interface for a reaction wheel-based actuation set in an ADCS.

Module Implementation

Unlike other modules, the ReactionWheelArray component is designed to act as the interface between instances of the ReactionWheel class and the parent object’s equations of motion (EOM) e.g. the spacecraft. As a result, the ReactionWheel class does not implement the standard UpdateMassProperties and UpdateContributions functions described in the Spacecraft module. Instead, those methods are implemented here and this module calls reaction wheel specific behaviors. This is to ensure that reaction wheels do not double their contribution to the parent component.

Note

A limitation of this approach is that the reaction wheel module must connected to a reaction wheel array, even if it’s a singleton, to function correctly. The following sections provide high-level pseudo-code illustrating the behaviour of the main ReactionWheelArray methods.

On Begin

At the beginning of every simulation, this module will attempt to fetch all of the reaction wheels that exist as components attached to the reaction wheel stack. Here it will recursively search through child components for components with Type ReactionWheel and return an array of ReactionWheel modules.

Register States

The ReactionWheel class is an example of a module that has a local StateProperty variable that requires integration. In its current implementation, it uses the spacecraft’s integrator integrate the reaction wheel speed and rotation angle, where specific ReactionWheel model's primary task to to specify the derivates of these properties. The pseudo-code provided below gives an example of how the reaction wheel array registers its child ReactionWheel components with the spacecraft integrator. See the ReactionWheel module description for more details on how these parameters are used.

  1. Loop through the reaction wheels and record the important parameters for each wheel, updating a local state array.
  2. Request new states in the state properties to be integrated during the update call
  3. Set the initial values of the states to be equal to the values from the reaction wheels.

On Update

At every tick step, the module follows the following procedure:

  1. The module checks for a valid array of torque command messages, which are the primary mechanism required to command reaction wheel speeds. If the message is null, torque requests are zeroed by default.

  2. The input reaction wheel torque command array is distributed amongst attached reaction wheels.

    Note

    The assumption is that the index of attached children matches the reaction wheel configuration message that’s provided to the flight software. This configuration message is output from the ReactionWheelArray object but a command error pattern is to misalign this command array. This must be done manually.

  3. Triggers a write output message function on self.

Update Mass Properties

As discussed above, unlike most components, the ReactionWheel module does not implement an UpdateMassProperties function. Instead, as shown below, the ReactionWheelArray component implements this function and calls an RW-specific update mass properties function. It’s important to note, that this function updates the local mass information stored on each reaction wheel as normal.

Assumptions/Limitations

  • Reaction wheels are assumed to be added to the reaction wheel array as child components.