Path: SC/Control
% A PID-based 3 axis controller for rigid body.
Includes windup compensation. Use the reset flag to reset the controller
states stored in the data structure. This is an incremental controller
limited to the specific maximum angle per step. The torque output is
computed from the inertia matrix and acceleration vector, T = -I*a
This has 4 modes:
0 - steady rotation about an axis ('axis')
1 - align two vectors ('align')
2 - align with a quaternion ('quat')
3 - point vector and steady rotation ('point')
Use the call with one output to get the default data structure. Type
PID3Axis for a demo. See also PIDMIMO for computing the gains. All axes
use the same gains. The defaults are: damping ratio of 1, undamped
natural frequency of 0.01 rad/sec, the integrator time constant of 200 s,
and a derivative term roll-off frequency of 0.05 rad/sec.
--------------------------------------------------------------------------
Forms:
PID3Axis; % demo
d = PID3Axis; % data structure, uses PIDMIMO
[torque, d] = PID3Axis( q_ECI_body, d )
--------------------------------------------------------------------------
-----
Input
-----
q_ECI_body (4,1) ECI to body quaternion
d (.) Data structure
.a (2,2) PID A Matrix
.b (2,1) PID B Matrix
.c (1,2) PID C Matrix
.d (1,1) PID D Matrix
.inertia (3,3) Inertia matrix
.x_roll (2,1) PID roll state
.x_yaw (2,1) PID yaw state
.x_pitch (2,1) PID pitch stage
.reset (1,1) Reset flag (T/F)
.mode (1,1) or '' Four options:
Mode 0 = rotate about an axis, 'axis'
-requires d.q_desired_state
d.angle / d.axis
Mode 1 = align two vectors, 'align'
-requires d.eci_vector
d.body_vector
Mode 2 = quaternion, 'quat'
-requires d.q_desired_state
Mode 3 = point with rotation, 'point'
-requires d.eci_vector
d.angle / d.axis
d.body_vector
.l (2,1) Windup compensation matrix
.accel_sat (1,1) Saturation acceleration
.max_angle (1,1) Maximum incremental angle
. .q_target_last (4,1) Last target
.q_desired_state (4,1) Target quaternion (mode 0 and 2)
.body_vector (3,1) Axis in body frame (mode 1 and 3)
.eci_vector (3,1) Axis in ECI frame (mode 1 and 3)
.angle (1,1) Angle of rotation (mode 0 and 3)
.axis (3,1) Axis of rotation (mode 0 and 3)
------
Output
------
torque (3,1) Control torque
d (.) Data structure with control states
--------------------------------------------------------------------------
See also: AU2Q, U2Q, PIDMIMO
--------------------------------------------------------------------------
AerospaceUtils: Coord/QIToBDot Common: Control/PIDMIMO Common: Graphics/Plot2D Common: Graphics/TimeLabl Common: Quaternion/AU2Q Common: Quaternion/Q2AU Common: Quaternion/QForm Common: Quaternion/QMult Common: Quaternion/QPose Common: Quaternion/QTForm Common: Quaternion/U2Q Math: Integration/RK4 Math: Linear/Dot
Back to the SC Module page