Attitude Systems 
Top Previous Next 
The attitude system specifies the method FreeFlyer uses to orient a Spacecraft object with respect to the chosen attitude reference frame. As part of this, Spacecraft attitude can be set using a custom CoordinateSystem object using the Spacecraft.SetOrientation() and Spacecraft.SetAttitudeRefFrame() methods as described in the Vectors and Coordinate Systems guide. The attitude systems available in FreeFlyer are as follows.
Euler AnglesAn Euler Angle attitude system consists of an Euler Sequence, the Euler angles, and Euler angle rates. Any orientation can be converted to any other orientation through a maximum of three rotations about the specified axes. The image below shows an example of the use of Euler angles to reorient an object.
Euler Sequence
The equation below shows how FreeFlyer would apply a 123 Euler sequence with Euler angles of a1, a2, a3. This shows how the first rotation (which will be about the xaxis in this example) is applied first via the rightmost matrix, followed by the second rotation about the yaxis, and finally the third rotation about the zaxis is applied using the leftmost matrix. This example assumes that the Spacecraft's attitude reference frame is "LVLH", as indicated by the input "LVLHVector". The output vector is in the Spacecraft BCS frame. Additional input frame options are MJ2000 or geodetic.
To set the Euler sequence in FreeFlyer script, the Spacecraft.EulerSequence property is used.
Euler Angles
When reporting orientations in Euler angles, FreeFlyer constrains the value of the second angle based on the Euler Sequence to resolve ambiguities. For symmetric Euler Sequences (for example, 313), the second angle will be constrained between 0 and 180 degrees. For asymmetric sequences (for example, 312), the second angle will be constrained between 90 and 90 degrees. Note that when reporting the Spacecraft.EulerAngles property, all values are represented between 0 and 360 degrees, so the second angle will be reported between 0 and 90 degrees or 270 and 360 degrees. If a user directly assigns the second angle outside of the constraint ranges, the Spacecraft.EulerAngles property will retain the userspecified value until another operation is applied to the Spacecraft attitude, at which point the angles will be represented with the appropriate constraint applied. These constraints are in keeping with the convention defined in the text "Spacecraft Attitude Determination and Control" by James R. Wertz.
Note: Euler angles can be referenced to a custom CoordinateSystem object.
Euler Angle Rates
QuaternionsThe quaternion attitude system consists of a hypercomplex number, the elements of which can be used to calculate the components of a vector representing an axis of rotation and an angle to be rotated about that axis. The rotation is done using the righthanded convention and the last component represents the scalar element. This is in keeping with Euler's theorem that any orientation can be achieved from any other orientation with a single rotation about a single axis, which may or may not be one of the reference frame chief axes. The quaternion elements used in FreeFlyer, as represented in the following equation, are [Q1, Q2, Q3, Q4] where Q12 + Q22 + Q32 + Q42 = 1. Quaternions in FreeFlyer are defined based on the text "Spacecraft Attitude Determination and Control" by James R. Wertz.
To set the Spacecraft.Quaternion array in FreeFlyer script, the following syntax is used.
The angular velocities associated with the quaternions are controlled using the Spacecraft.AngularVelocity property, meanwhile angular acceleration values can be viewed with the Spacecraft.AngularAcceleration property.
Note: The Quaternion attitude system can be referenced to a custom CoordinateSystem object.
Attitude MatrixThe attitude matrix allows the user to define a Spacecraft's attitude with respect to its attitude reference frame using a 3x3 matrix. This matrix is orthogonal, its determinant should equal 1, and when multiplied by its transpose should result in the identity matrix. In FreeFlyer script, the Spacecraft.AttitudeMatrix property is used to set the attitude matrix as demonstrated in the following example.
Note: The attitude matrix can be referenced to a custom CoordinateSystem object.
SpinnerThe spinner attitude system defines a Spacecraft which rotates about its angular momentum vector, which is then defined as the Spacecraft's zaxis. The following properties can be manipulated to set up a spinner system.
Angular Momentum Vector
Spin Rate
See Also
