Star Coffee Writing about stuff, working in public

Spacecraft Attitude Dynamics and Control - Notes

Attitude Representation

Euler Angles

Angular velocity:

ω⃗=Sθ⃗˙ \vec \omega = S \dot{\vec \theta}

If C=Rx(θ3)Ry(θ2)Rz(θ1),\textbf C = \textbf R_x(\theta_3) \textbf R_y(\theta_2) \textbf R_z(\theta_1),

ω⃗=Sθ⃗˙=[θ˙300]+Rx(θ3)[0θ˙20]+Rx(θ3)Ry(θ2)[00θ˙1] \vec \omega = S \dot{\vec \theta} = \begin{bmatrix} \dot \theta_3 \\ 0 \\ 0 \end{bmatrix} + \textbf R_x(\theta_3) \begin{bmatrix}0 \\ \dot \theta_2 \\ 0 \end{bmatrix} + \textbf R_x(\theta_3) \textbf R_y(\theta_2) \begin{bmatrix} 0 \\ 0 \\ \dot \theta_1 \end{bmatrix}

Angle-Axis

DCM from parameters:

CBA=cos⁡ϕ+(1−cos⁡ϕ)aa⊺−sin⁡(ϕ)a× \textbf C_{BA} = \cos \phi + (1 - \cos \phi) a a^\intercal - \sin (\phi) a^\times

Parameters from DCM:

cos⁡ϕ=12(C11+C22+C33−1)=12(σ−1) \cos \phi = \frac{1}{2} \left( C_{11} + C_{22} + C_{33} -1 \right) = \frac{1}{2}(\sigma - 1) a⃗={12sin⁡ϕ[C23−C32C31−C13C12−C21]σ≠−1,3[±1+C112±1+C222±1+C332]σ=−1indeterminateσ=3 \vec a = \left\{ \begin{aligned} &\frac{1}{2 \sin \phi} \begin{bmatrix} C_{23} - C_{32} \\ C_{31} - C_{13} \\ C_{12} - C_{21} \end{bmatrix} &\sigma \neq -1,3 \\ &\begin{bmatrix} \pm \sqrt{\frac{1 + C_{11}}{2}} \\ \pm \sqrt{\frac{1 + C_{22}}{2}} \\ \pm \sqrt{\frac{1 + C_{33}}{2}} \end{bmatrix} &\sigma = -1 \\ &\text{indeterminate} &\sigma=3 \end{aligned} \right.

Angular velocity:

a⃗˙=12[a⃗×−cot⁡(ϕ2)a⃗×a⃗×]ω⃗ \dot{\vec a} = \frac{1}{2} \left[ \vec a^\times - \cot \left(\frac{\phi}{2} \right) \vec a^\times \vec a^\times \right] \vec \omega ϕ˙=a⃗⊺ω⃗ \dot \phi = \vec a^\intercal \vec \omega

Quaternions

DCM from parameters:

CBA=(η2−ϵ⃗⊺ϵ⃗)+2ϵ⃗ϵ⃗⊺−2ηϵ⃗× \textbf C_{BA} = (\eta^2 - \vec \epsilon ^\intercal \vec \epsilon) + 2 \vec \epsilon \vec \epsilon^\intercal - 2 \eta \vec \epsilon^\times

Parameters from axis-angle:

η=cos⁡ϕ2ϵ⃗=a⃗sin⁡ϕ2 \begin{aligned} \eta &= \cos \frac{\phi}{2} \\ \vec \epsilon &= \vec a \sin \frac{\phi}{2} \end{aligned}

Parameters from DCM:

η=±121+C11+C22+C33ϵ⃗=14η[C23−C32C31−C13C12−C22] \begin{aligned} \eta &= \pm \frac{1}{2} \sqrt{1 + C_{11} + C_{22} + C_{33}} \\ \vec \epsilon &= \frac{1}{4\eta} \begin{bmatrix} C_{23} - C_{32} \\ C_{31} - C_{13} \\ C_{12} - C_{22} \end{bmatrix} \end{aligned}

Angular velocity:

ϵ⃗˙=12(ϵ⃗×+η)ω⃗η˙=−12ϵ⃗⊺ω⃗ \begin{aligned} \dot{\vec \epsilon} &= \frac{1}{2}(\vec \epsilon^\times + \eta) \vec \omega \\ \dot \eta &= - \frac{1}{2} \vec \epsilon^\intercal \vec \omega \end{aligned}

Attitude Dynamics

Euler's equation is defined as:

M⃗=Jω⃗˙+ω⃗×Jω⃗ \vec M = \mathbf{J} \dot{\vec \omega} + \vec \omega^\times \mathbf{J} \vec \omega

Assuming principal axis rotations, the equation can be expanded to:

Mx=Jxω˙x−(Jy−Jz)ωyωzMy=Jyω˙y−(Jz−Jx)ωxωzMz=Jzω˙z−(Jx−Jy)ωxωy \begin{aligned} M_x &= J_x \dot \omega_x - (J_y - J_z) \omega_y \omega_z \\ M_y &= J_y \dot \omega_y - (J_z - J_x) \omega_x \omega_z \\ M_z &= J_z \dot \omega_z - (J_x - J_y) \omega_x \omega_y \end{aligned}

Linearized form plant model:

G(s)=1Js2 G(s) = \frac{1}{Js^2}

Euler Angle Attitude Representation

Rate of change for 321 Euler angle rotation:

[ϕ˙θ˙ψ˙]=[1sin⁡(ϕ)tan⁡(θ)cos⁡(ϕ)tan⁡(θ)0cos⁡(ϕ)−sin⁡(ϕ)0sin⁡(ϕ)sec⁡(θ)cos⁡(ϕ)sec⁡(θ)][ωxωyωz]=[ωx+ωztan⁡(θ)cos⁡(ϕ)+ωytan⁡(θ)sin⁡(ϕ)ωycos⁡(ϕ)−ωzsin⁡(ϕ)ωzsec⁡(θ)cos⁡(ϕ)+ωysec⁡(θ)sin⁡(ϕ)] \begin{align*} \begin{bmatrix} \dot \phi \\ \dot \theta \\ \dot \psi \end{bmatrix} &= \begin{bmatrix} 1 & \sin(\phi) \tan(\theta) & \cos(\phi) \tan(\theta) \\ 0 & \cos(\phi) & -\sin(\phi) \\ 0 & \sin(\phi) \sec(\theta) & \cos(\phi) \sec(\theta) \end{bmatrix} \begin{bmatrix} \omega_x \\ \omega_y \\ \omega_z \end{bmatrix} \\ &= \begin{bmatrix} \omega_x + \omega_z \tan(\theta) \cos(\phi) + \omega_y \tan(\theta) \sin(\phi) \\ \omega_y \cos(\phi) - \omega_z \sin(\phi) \\ \omega_z \sec(\theta) \cos(\phi) + \omega_y \sec(\theta) \sin(\phi) \end{bmatrix} \end{align*}

State vector:

u⃗=[ϕθψωxωyωz] u⃗˙=[ϕ˙θ˙ψ˙ω˙xω˙yω˙z]=[ωx+ωztan⁡(θ)cos⁡(ϕ)+ωytan⁡(θ)sin⁡(ϕ)ωycos⁡(ϕ)−ωzsin⁡(ϕ)ωzsec⁡(θ)cos⁡(ϕ)+ωysec⁡(θ)sin⁡(ϕ)[Mx+(Jy−Jz)ωyωz]/Jx[My+(Jz−Jx)ωxωz]/Jy[Mz+(Jx−Jy)ωxωy]/Jz] \displaystyle \vec u = \begin{bmatrix} \phi \\ \theta \\ \psi \\ \omega_x \\ \omega_y \\ \omega_z \end{bmatrix} \; \; \; \dot{\vec u} = \begin{bmatrix} \dot \phi \\ \dot \theta \\ \dot \psi \\ \dot \omega_x \\ \dot \omega_y \\ \dot \omega_z \end{bmatrix} = \begin{bmatrix} \omega_x + \omega_z \tan(\theta) \cos(\phi) + \omega_y \tan(\theta) \sin(\phi) \\ \omega_y \cos(\phi) - \omega_z \sin(\phi) \\ \omega_z \sec(\theta) \cos(\phi) + \omega_y \sec(\theta) \sin(\phi) \\ \left[ M_x + (J_y - J_z) \omega_y \omega_z\right]/J_x \\ \left[ M_y + (J_z - J_x) \omega_x \omega_z \right]/J_y \\ \left[ M_z + (J_x - J_y) \omega_x \omega_y \right]/J_z\end{bmatrix}

Quaternion Attitude Representation

u⃗=[q⃗ω⃗]=[q0q1q2q3ωxωyωz] \displaystyle \vec u = \begin{bmatrix} \vec q \\ \vec \omega \end{bmatrix} = \begin{bmatrix} q_0 \\ q_1 \\ q_2 \\ q_3 \\ \omega_x \\ \omega_y \\ \omega_z \end{bmatrix} u⃗˙=[12(−q1ωx−q2ωy−q3ωz)12(q0ωx+q2ωz−q3ωy)12(q0ωy−q1ωz+q3ωx)12(q0ωz+q1ωy−q2ωx)[Mx+(Jy−Jz)ωyωz]/Jx[My+(Jz−Jx)ωxωz]/Jy[Mz+(Jx−Jy)ωxωy]/Jz] \displaystyle \dot{\vec u} = \begin{bmatrix} \frac{1}{2}(-q_1 \omega_x - q_2 \omega_y - q_3 \omega_z) \\ \frac{1}{2}(q_0 \omega_x + q_2 \omega_z - q_3 \omega_y) \\ \frac{1}{2}(q_0 \omega_y - q_1 \omega_z + q_3 \omega_x) \\ \frac{1}{2}(q_0 \omega_z + q_1 \omega_y - q_2 \omega_x) \\ \left[ M_x + (J_y - J_z) \omega_y \omega_z\right]/J_x \\ \left[ M_y + (J_z - J_x) \omega_x \omega_z \right]/J_y \\ \left[ M_z + (J_x - J_y) \omega_x \omega_y \right]/J_z \end{bmatrix}

Attitude Control

PD Control

Frequency domain definition:

Mc=(Kp+sKd)Δθ~HC=Kp+sKd \begin{aligned} M_c &= (K_p + sK_d) \tilde{\Delta \theta} \\ H_C &= K_p + sK_d \end{aligned}

Time-domain definition:

Mc=KpΔθ+KdΔθ˙=Kp(θref−θ)+Kd(θ˙ref−θ˙) M_c = K_p \Delta \theta + K_d \Delta \dot \theta = K_p (\theta_\text{ref} - \theta) + K_d (\dot \theta_\text{ref} - \dot \theta)

Defining gains in terms of natural frequency and damping ratio:

Kp=Jωn2 K_p = J \omega_n^2 Kd=2Jωnζ K_d = 2 J \omega_n \zeta

Quaternion Feedback Control

Control law:

u⃗=−Kq⃗err,v−Cω⃗err \vec u = - \mathbf K \vec q_{\text{err}, v} - \mathbf C \vec \omega_\text{err}

Known formulations:

K=KI, C=diag(C1,C2,C3), K,Ci>0 \mathbf K = K \mathbf I, \; \mathbf C = \text{diag}(C_1, C_2, C_3), \; K, C_i > 0 K=Kqerr,s3I, C=diag(C1,C2,C3) \mathbf K = \frac{K}{q_{\text{err}, s}^3} \mathbf I, \; \mathbf C = \text{diag}(C_1, C_2, C_3) K=Ksign(qerr,s)I, C=diag(C1,C2,C3) \mathbf K = K \text{sign}(q_{\text{err}, s}) \mathbf I, \; \mathbf C = \text{diag}(C_1, C_2, C_3) K=[αJ+βI]−1, K−1C≤0, α,β≤0 \mathbf K = \left[ \alpha \mathbf J + \beta \mathbf I \right]^{-1}, \; \mathbf K^{-1} \mathbf C \leq 0, \; \alpha, \beta \leq 0

Eigen-axis rotations:

u⃗=−Kq⃗err,v−Cω⃗err+ω⃗×Jω⃗ \vec u = - \mathbf K \vec q_{\text{err}, v} - \mathbf C \vec \omega_\text{err} + \vec \omega^\times \mathbf J \vec \omega
CC BY-SA 4.0 Michal Jagodzinski. Last modified: May 09, 2024.
Website built with Franklin.jl and the Julia programming language.