<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Khang Nguyen &#8211; CrashCube</title>
	<atom:link href="https://www.crashcube.ca/author/khang-nguyen/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.crashcube.ca</link>
	<description>Your Cubesatellite Crash Course</description>
	<lastBuildDate>Wed, 12 Jul 2023 16:29:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.5</generator>

<image>
	<url>https://www.crashcube.ca/wp-content/uploads/2021/01/cropped-Logo_notext_blue-32x32.png</url>
	<title>Khang Nguyen &#8211; CrashCube</title>
	<link>https://www.crashcube.ca</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Vectrix Dynamic Notation</title>
		<link>https://www.crashcube.ca/adcs/vectrix-dynamic-notation/</link>
					<comments>https://www.crashcube.ca/adcs/vectrix-dynamic-notation/#respond</comments>
		
		<dc:creator><![CDATA[Khang Nguyen]]></dc:creator>
		<pubDate>Wed, 12 Jul 2023 16:25:33 +0000</pubDate>
				<category><![CDATA[Attitude Determination and Control]]></category>
		<guid isPermaLink="false">https://www.crashcube.ca/?p=955</guid>

					<description><![CDATA[Editor&#8217;s Note: This article deals with complex mathematics and requires background knowledge to understand fully. As prior reading, the following articles and videos are recommended: Introduction The objective of the Attitude Determination and Control System (ADCS) is to maintain the spacecraft’s orientation within the desired limit with respect to a reference frame. To design a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img decoding="async" width="76" height="113" src="https://www.crashcube.ca/wp-content/uploads/2020/11/3U.png" alt="Rare or Very Difficult" class="wp-image-673"/><figcaption class="wp-element-caption">3U Difficulty</figcaption></figure>



<p><em>Editor&#8217;s Note: This article deals with complex mathematics and requires background knowledge to understand fully. As prior reading, the following articles and videos are recommended:</em></p>



<ul>
<li><a href="https://www.khanacademy.org/science/physics/one-dimensional-motion/displacement-velocity-time/v/introduction-to-reference-frames" target="_blank" rel="noreferrer noopener">Khan Academy: Introduction to Reference Frames</a></li>



<li><a href="https://en.wikipedia.org/wiki/Rotation_of_axes_in_two_dimensions" data-type="URL" data-id="https://en.wikipedia.org/wiki/Rotation_of_axes_in_two_dimensions" target="_blank" rel="noreferrer noopener">Wikipedia: Rotation of Axes in Two Dimensions</a></li>



<li><a href="https://www.khanacademy.org/science/physics/magnetic-forces-and-magnetic-fields/electric-motors/v/the-dot-product" target="_blank" rel="noreferrer noopener">Khan Academy: Dot Product</a></li>



<li><a href="https://www.khanacademy.org/science/physics/magnetic-forces-and-magnetic-fields/electric-motors/v/dot-vs-cross-product" target="_blank" rel="noreferrer noopener">Khan Academy: Dot vs. Cross Products</a></li>



<li><a href="https://www.khanacademy.org/science/physics/magnetic-forces-and-magnetic-fields/electric-motors/v/calculating-dot-and-cross-products-with-unit-vector-notation" target="_blank" rel="noreferrer noopener">Khan Academy: Dot and Cross Products Using Unit Vector Notation</a></li>
</ul>



<h2 class="wp-block-heading">Introduction</h2>



<p>The objective of the Attitude Determination and Control System (ADCS) is to maintain the spacecraft’s orientation within the desired limit with respect to a reference frame. To design a control system for a satellite, we need to understand the satellite’s dynamics. This article will introduce Hughes’s Vectrix notation, which is widely used in dynamic systems design.</p>



<p>Vectrix notation was invented by Professor Peter Carlisle Hughes (1940-2023) at the University of Toronto Institute of Aerospace Studies (UTIAS). Initially published in 1986 in the reference book ”Spacecraft Attitude Dynamics” [1], vectrix notation has been continuously taught in university courses and used by many professionals in the field.</p>



<p>In astrodynamics, we have to deal with physical phenomena in multiple reference frames. For example, the sun vector can be located in the Earth-Centered Inertial frame (ECI), but for ADCS, the sun vector must be converted into the satellite body frame, which is a non-inertial frame. Dealing with complex dynamic systems across multiple reference frames can be challenging. Vectrix notations offer a superior approach to representing diverse dynamic phenomena in a specific reference frame, which can enable us to demonstrate how changes in satellite motion can be represented in multiple frames [2].</p>



<h2 class="wp-block-heading">What is a vectrix?</h2>



<p>A vector is a useful way to define a quantity having direction as well as magnitude, this is why vectors are used widely in many branches of physics and engineering. Let us consider a vector <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> in three-dimensional space. In order to give this vector a magnitude and direction, we must define a reference frame.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="407" src="https://www.crashcube.ca/wp-content/uploads/2023/07/frame-1024x407.png" alt="" class="wp-image-995" srcset="https://www.crashcube.ca/wp-content/uploads/2023/07/frame-1024x407.png 1024w, https://www.crashcube.ca/wp-content/uploads/2023/07/frame-300x119.png 300w, https://www.crashcube.ca/wp-content/uploads/2023/07/frame-768x305.png 768w, https://www.crashcube.ca/wp-content/uploads/2023/07/frame.png 1176w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Figure 1: A vector <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> in an example reference frame <span class="katex-eq" data-katex-display="false">\{\underrightarrow{a_1},\underrightarrow{a_2},\underrightarrow{a_3}\}</span>.</figcaption></figure>



<p>We can denote by <span class="katex-eq" data-katex-display="false">\mathcal{F}_a</span> a reference frame having basis vector <span class="katex-eq" data-katex-display="false">\{\underrightarrow{a_1},\underrightarrow{a_2},\underrightarrow{a_3}\}</span> of unit length. Note that only dextral orthonormal sets of basis vectors &#8211; that is, right-handed, orthogonal and normalized as the Cartesian coordinate system &#8211; can be used. Using this notation, we can express <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> as:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{v} = \underrightarrow{\mathcal{F}_a^T} \bold{v} =  v_{1} \underrightarrow{a_{1}} + v_{2} \underrightarrow{a_{2}} + v_{3} \underrightarrow{a_{3}}
\end{equation}</pre></div>



<p>where</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \bold{v} \triangleq \begin{bmatrix}
    v_{1} \\ v_{2} \\ v_{3}
    \end{bmatrix}
\end{equation}</pre></div>



<p>is the column matrix containing the components of vector <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> as resolved in <span class="katex-eq" data-katex-display="false">\mathcal{F}</span>. Therefore, <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}}</span> is the vectrix associate with <span class="katex-eq" data-katex-display="false">\mathcal{F}</span> and defined as</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{\mathcal{F}} \triangleq \begin{bmatrix}
    \underrightarrow{a_1} \\ \underrightarrow{a_2} \\ \underrightarrow{a_3}
    \end{bmatrix}
\end{equation}</pre></div>



<p>Note that the result may seem like a <span class="katex-eq" data-katex-display="false">1 \times 1</span> matrix because of the multiplication of a <span class="katex-eq" data-katex-display="false">1 \times 3</span> matrix with a <span class="katex-eq" data-katex-display="false">3 \times 1</span> matrix, but the result is a vector because <span class="katex-eq" data-katex-display="false">\{\underrightarrow{a_1}, \underrightarrow{a_2}, \underrightarrow{a_3}\}</span> are basis vectors so a vectrix is a <span class="katex-eq" data-katex-display="false">3 \times 3</span> matrix.</p>



<p>Therefore, we can also see the following result using the Vectrix notation.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{v} = \underrightarrow{\mathcal{F}_a^T} \bold{v} = \bold{v^{T}}\underrightarrow{\mathcal{F}_a}
\end{equation}</pre></div>



<p>We note that the representation of <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> in a given reference frame makes the vector a <span class="katex-eq" data-katex-display="false">3 \times 1</span> form that we are all familiar with. Vectrix notation explicitly separates reference frame and vector representation.</p>



<h2 class="wp-block-heading">Dot Products and Cross Products</h2>



<p>This section includes an overview of how the dot and cross products are calculated using vectrix notation.</p>



<h3 class="wp-block-heading">Dot Product</h3>



<p>Let us consider two vectors <span class="katex-eq" data-katex-display="false">\underrightarrow{u}</span> and <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> expressed in the same reference frame <span class="katex-eq" data-katex-display="false">\mathcal{F}</span>.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{u} = \underrightarrow{\mathcal{F}^T} \bold{u} = \bold{u^T} \underrightarrow{\mathcal{F}} 
\end{equation}</pre></div>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{v} = \underrightarrow{\mathcal{F}^T} \bold{v}
\end{equation}</pre></div>



<p>The dot product (inner product) of <span class="katex-eq" data-katex-display="false">\underrightarrow{u}</span> and <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> is denoted by</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{u} \cdot \underrightarrow{v} =  \bold{u^T} \underrightarrow{\mathcal{F}} \cdot \underrightarrow{\mathcal{F}^T} \bold{v} 
\end{equation}</pre></div>



<p>We can see that by matrix multiplication and distributing the dot product operator to the elements of <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}} \cdot \underrightarrow{\mathcal{F}^T}</span> and invoke the dot products for a pair of basis vectors, we get the identity matrix <span class="katex-eq" data-katex-display="false">\bold{I}</span>.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{\mathcal{F}} \cdot \underrightarrow{\mathcal{F}^T} = \bold{I}
\end{equation}</pre></div>



<p>This also further serves as a formal statement of orthonormality. Finally, we can find the dot product for two vectors.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \underrightarrow{u} \cdot \underrightarrow{v} = \bold{u^T}\bold{v} = u_{1}v_{1} + u_{2}v_{2} + u_{3}v_{3}
\end{equation}</pre></div>



<p>Therefore, we can see the result of the dot product is a scalar.</p>



<h3 class="wp-block-heading">Cross Product</h3>



<p>Let us also consider the cross product of two vectors <span class="katex-eq" data-katex-display="false">\underrightarrow{u}</span> and <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span>.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}  
\underrightarrow{u} \times \underrightarrow{v} =  \bold{u^T} \underrightarrow{\mathcal{F}} \times \underrightarrow{\mathcal{F}^T} \bold{v}
\end{equation}</pre></div>



<p>To avoid going into lengthy proof, we will define the cross operator <span class="katex-eq" data-katex-display="false">(\cdot)^{\times}</span>. We can apply this operator on a <span class="katex-eq" data-katex-display="false">3 \times 1</span> <span class="katex-eq" data-katex-display="false">\bold{u}</span> as:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \bold{u}^{\times} = \begin{bmatrix}
        0 &amp; - u_{3} &amp; u_{2} \\
        u_{3} &amp; 0 &amp; -u_{1} \\
        -u_{2} &amp; u_{1} &amp; 0
    \end{bmatrix}
\end{equation}</pre></div>



<p>This gives us the cross product of <span class="katex-eq" data-katex-display="false">\underrightarrow{u}</span> and <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> as follows:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
\underrightarrow{u} \times \underrightarrow{v} = \underrightarrow{\mathcal{F^{T}}} \bold{u}^{\times} \bold{v} =\underrightarrow{\mathcal{F^{T}}} \begin{bmatrix}
        
     u_{2}v_{3}  - v_{2}u_3\\ 
    u_{3}v_{1} - v_{3} u_{1}\\ u_{1}v_{2} - v_{1}u_{2} \end{bmatrix} 
\end{equation}</pre></div>



<p>The cross-product gives us a vector in the <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}}</span> reference frame.</p>



<h2 class="wp-block-heading">Rotation Matrices</h2>



<p>The vector <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> can have many equivalent expressions in different reference frames.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
\underrightarrow{v} = \underrightarrow{\mathcal{F}_a^T} \bold{v_a} = \underrightarrow{\mathcal{F}_b^T} \bold{v_b}
\end{equation}</pre></div>



<p>We can find <span class="katex-eq" data-katex-display="false">\bold{v_a}</span>from <span class="katex-eq" data-katex-display="false">\bold{v_b}</span> by changing <span class="katex-eq" data-katex-display="false">\bold{v_b}</span> from frame <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_b}</span> to frame <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_a}</span>.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
\bold{v_a} = \underrightarrow{\mathcal{F}_a} \cdot \underrightarrow{\mathcal{F}_b^{T}} \bold{v_b}
\end{equation}</pre></div>



<p>We can define <span class="katex-eq" data-katex-display="false">\bold{C_{ab}}</span>, the rotation matrix from frame <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_b}</span> to frame <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_a}</span>, as:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
\bold{C_{ab}} \equiv \underrightarrow{\mathcal{F}_a} \cdot \underrightarrow{\mathcal{F}_b^{T}}
\end{equation}</pre></div>



<p>Therefore,</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
\bold{v_a} = \bold{C_{ab}} \bold{v_{b}}
\end{equation}</pre></div>



<p>We can say that <span class="katex-eq" data-katex-display="false">\bold{C_{ab}}</span> describes the orientation or attitude of <span class="katex-eq" data-katex-display="false">\mathcal{F}_a</span> with respect to <span class="katex-eq" data-katex-display="false">\mathcal{F}_b</span>. We can expand equation 15 to obtain equation 17, in which <span class="katex-eq" data-katex-display="false">\theta_{ij}</span> is the angle between <span class="katex-eq" data-katex-display="false">\underrightarrow{a_{i}}</span> and <span class="katex-eq" data-katex-display="false">\underrightarrow{b_{j}}</span>.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    C_{ab} \equiv \begin{bmatrix} a_{1} \cdot b_{1} &amp; a_{1} \cdot b_{2} &amp; a_{1} \cdot b_{3} \\
    a_{2} \cdot b_{1} &amp; a_{2} \cdot b_{2} &amp; a_{2} \cdot b_{3} \\
    a_{3} \cdot b_{1} &amp; a_{3} \cdot b_{2} &amp; a_{3} \cdot b_{3}
    \end{bmatrix} \equiv \begin{bmatrix}
        \cos{\theta_{11}} &amp; \cos{\theta_{12}} &amp; \cos{\theta_{13}} \\
        \cos{\theta_{21}} &amp; \cos{\theta_{22}} &amp; \cos{\theta_{23}} \\
        \cos{\theta_{31}} &amp; \cos{\theta_{32}} &amp; \cos{\theta_{33}}
    \end{bmatrix}
\end{equation}</pre></div>



<p>We can see that the rotation matrix is composed of the directional cosines between the two sets of basis vectors.</p>



<h3 class="wp-block-heading">Principal Rotations</h3>



<p>We can consider a few special cases of <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_a}</span> being displaced from <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_b}</span> by a rotation through an angle $\theta$ (using the right-hand rule) about one of the principal axes. This is referred to as a principal rotation.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="650" src="https://www.crashcube.ca/wp-content/uploads/2023/07/coordinates-1024x650.png" alt="" class="wp-image-996" srcset="https://www.crashcube.ca/wp-content/uploads/2023/07/coordinates-1024x650.png 1024w, https://www.crashcube.ca/wp-content/uploads/2023/07/coordinates-300x190.png 300w, https://www.crashcube.ca/wp-content/uploads/2023/07/coordinates-768x488.png 768w, https://www.crashcube.ca/wp-content/uploads/2023/07/coordinates.png 1323w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Figure 2: Rotation about the three principal axes <span class="katex-eq" data-katex-display="false">\underrightarrow{b_1}</span>, <span class="katex-eq" data-katex-display="false">\underrightarrow{b_2}</span>, <span class="katex-eq" data-katex-display="false">\underrightarrow{b_3}</span></figcaption></figure>



<p>First let&#8217;s consider the rotation about <span class="katex-eq" data-katex-display="false">\underrightarrow{b_1}</span>. This will keep <span class="katex-eq" data-katex-display="false">\underrightarrow{b_1}</span> parallel to <span class="katex-eq" data-katex-display="false">\underrightarrow{a_1}</span> and the rotation matrix reduces to:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    C_{ab} = \begin{bmatrix} 1 &amp; 0 &amp; 0 \\
    0 &amp; \cos{\theta} &amp; \cos{(\frac{\pi}{2}-\theta)} \\
    0 &amp; \cos{(\frac{\pi}{2}+ \theta)} &amp; \cos{(\theta)} 
    \end{bmatrix} \equiv \begin{bmatrix}
        1 &amp; 0 &amp; 0 \\
        0  &amp; \cos{(\theta)} &amp; \sin{(\theta)} \\ 0 &amp; -\sin{(\theta)} &amp; \cos{(\theta)}
    \end{bmatrix} \equiv C_1
\end{equation}</pre></div>



<p>This defines a principal rotation and, since it is a rotation about the 1-axis, we can denote it by <span class="katex-eq" data-katex-display="false">C_1</span>. The other principal rotations about the 2-axis (<span class="katex-eq" data-katex-display="false">\underrightarrow{b_2}</span>) and 3-axis (<span class="katex-eq" data-katex-display="false">\underrightarrow{b_3}</span>) can likewise be written as:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
C_{2} \equiv
\begin{bmatrix}
\cos{(\theta)} &amp; 0 &amp; -\sin{(\theta)} \\
        0  &amp; 1 &amp; 0 \\ \sin{(\theta)} &amp; 0 &amp; \cos{(\theta)} \end{bmatrix}, \: \: C_{3} \equiv
\begin{bmatrix}
\cos{(\theta)} &amp; \sin{(\theta)} &amp; 0 \\
        -\sin{(\theta)}  &amp; \cos{(\theta)} &amp; 0 \\ 0 &amp; 0 &amp; 1 \end{bmatrix}
\end{equation}</pre></div>



<p>These are the three principal rotation matrices.</p>



<h3 class="wp-block-heading">Euler Rotation</h3>



<p>Euler&#8217;s Theorem provides a way to represent multiple rotational transformations as a single rotation about a unique axis passing through a fixed point, offering a concise and widely used framework for describing rotations in three-dimensional space. Specifically, it states that any general displacement of a rigid body with one point fixed can be represented as a rotation about an axis through that point.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="985" src="https://www.crashcube.ca/wp-content/uploads/2023/07/Euler-1024x985.png" alt="" class="wp-image-998" srcset="https://www.crashcube.ca/wp-content/uploads/2023/07/Euler-1024x985.png 1024w, https://www.crashcube.ca/wp-content/uploads/2023/07/Euler-300x289.png 300w, https://www.crashcube.ca/wp-content/uploads/2023/07/Euler-768x739.png 768w, https://www.crashcube.ca/wp-content/uploads/2023/07/Euler.png 1322w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Figure 3: An arbitrary object rotated about a unit-normal axis <span class="katex-eq" data-katex-display="false">\underrightarrow{a}</span> through an angle <span class="katex-eq" data-katex-display="false">\phi</span></figcaption></figure>



<p>Directional cosine matrices can be expressed as Euler-axis rotations about a unit-normal axis <span class="katex-eq" data-katex-display="false">\underrightarrow{a}</span> and a rotation angle <span class="katex-eq" data-katex-display="false">\phi</span>.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    C(a,\phi) = \cos\phi \bold{I} + (1-\cos \phi)aa^{T} - sin\phi \; a^{\times}
\end{equation}</pre></div>



<p>The rotation axis <span class="katex-eq" data-katex-display="false">\underrightarrow{a}</span> can be expressed in either the initial or final frame of the transformation.</p>



<h3 class="wp-block-heading">Other Properties of Rotation Matrices</h3>



<p>The inverse transformation is physically a rotation through the same angle in the opposite direction. The inverse of a rotation matrix is also its transpose, therefore, we can transfer from <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_a}</span> back to <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_b}</span> by taking the transpose of the rotation matrix.</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    C_{ab}^{-1} \equiv C_{ba}  \equiv C_{ab}^{T} 
\end{equation}</pre></div>



<p>If we introduce another reference frame <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_c}</span> obtained from <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_b}</span> via another rotation, then the components of <span class="katex-eq" data-katex-display="false">\underrightarrow{v}</span> in this new frame in terms of its components in <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_a}</span> are given by:</p>



<div class="wp-block-katex-display-block katex-eq" data-katex-display="true"><pre>\begin{equation}
    \bold{v_{c}} = C_{cb}v_{b} = C_{cb}C_{ba}v_{a} = C_{ca}v_{a}
\end{equation}</pre></div>



<p>Where <span class="katex-eq" data-katex-display="false">C_{ca} = C_{cb}C_{ba}</span> is the rotation from <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_a}</span> to <span class="katex-eq" data-katex-display="false">\underrightarrow{\mathcal{F}_c}</span>. Note that the order of rotation is important.</p>



<p>In conclusion, vectrix notation provides a means of representing a vector within a specific reference frame, and through the application of linear algebra, we can define dot and cross products within that same reference frame. Moving forward, the application of vectrix notation is especially valuable when working with dynamic systems in multiple reference frames, such as satellites or spacecraft orbiting Earth or another celestial body.</p>



<h2 class="wp-block-heading">References</h2>



<ol>
<li>P. C. Hughes, “Spacecraft Attitude Dynamics,” Wiley, New York, 1986.</li>



<li>G. M. T. D’Eleuterio and G. R. Heppler, Newton’s Second Law And All That. Toronto, Ontario: University of Toronto, 2019.</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://www.crashcube.ca/adcs/vectrix-dynamic-notation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Introduction to Attitude Determination and Control (ADCS)</title>
		<link>https://www.crashcube.ca/adcs/introduction-to-attitude-determination-and-control-adcs/</link>
					<comments>https://www.crashcube.ca/adcs/introduction-to-attitude-determination-and-control-adcs/#respond</comments>
		
		<dc:creator><![CDATA[Khang Nguyen]]></dc:creator>
		<pubDate>Wed, 31 May 2023 16:29:21 +0000</pubDate>
				<category><![CDATA[Attitude Determination and Control]]></category>
		<guid isPermaLink="false">https://www.crashcube.ca/?p=947</guid>

					<description><![CDATA[What is ADCS? The Attitude Determination and Control System (ADCS) is a fundamental part of every satellite mission. The objective of the ADCS is to maintain the spacecraft’s orientation within the desired limit with respect to a reference frame. The capability to actively control a spacecraft’s attitude empowers engineers to utilize a wide range of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="76" height="113" src="https://www.crashcube.ca/wp-content/uploads/2020/11/1U.png" alt="Very Common or Easy Difficulty" class="wp-image-671"/><figcaption class="wp-element-caption">1U Difficulty</figcaption></figure>



<h2 class="wp-block-heading">What is ADCS?</h2>



<p>The Attitude Determination and Control System (ADCS) is a fundamental part of every satellite mission. The objective of the ADCS is to maintain the spacecraft’s orientation within the desired limit with respect to a reference frame. The capability to actively control a spacecraft’s attitude empowers engineers to utilize a wide range of payloads.</p>



<p>The technology for ADCS has undergone significant expansion since the launch of Sputnik 1 on October 4, 1957. ADCS has evolved from simple spin gyroscope stabilization methods to complex optimization control strategies utilizing powerful onboard computers. The tremendous growth in ADCS technology has enabled the development of CubeSats capable of performing complex tasks comparable to those of larger satellites.</p>



<p>Most satellites are equipped with some form of ADCS, which can be either passive or active. Active attitude control involves the use of sensors and internal actuators, while passive control relies on natural forces, such as the Earth’s gravity or magnetic field, to orient the satellite. Satellites that rely solely on passive control are typically used for technology demonstrations, while those with active control have a wider range of applications, including earth observation, communication, scientific research, and technology demonstration.</p>



<p>A simple onboard ADCS for active control is shown below in <strong>Figure 1</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="379" src="https://www.crashcube.ca/wp-content/uploads/2023/05/Sample-ADCS-Architecture-1024x379.png" alt="" class="wp-image-948" srcset="https://www.crashcube.ca/wp-content/uploads/2023/05/Sample-ADCS-Architecture-1024x379.png 1024w, https://www.crashcube.ca/wp-content/uploads/2023/05/Sample-ADCS-Architecture-300x111.png 300w, https://www.crashcube.ca/wp-content/uploads/2023/05/Sample-ADCS-Architecture-768x285.png 768w, https://www.crashcube.ca/wp-content/uploads/2023/05/Sample-ADCS-Architecture.png 1382w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Figure 1: A simple active ADCS design for CubeSat</figcaption></figure>



<p>The design of ADCS for active control satellites typically involves a range of components, including sensors, actuators, control laws, attitude estimators, and space environment models. Additionally, a means of determining the satellite’s position in orbit is necessary; an error in position estimation will translate to errors in attitude estimation. A mission evaluation must be conducted to determine the appropriate hardware and software. This evaluation should also include pointing budget analysis, actuator sizing and simulation in order to ensure optimal performance. Mission evaluation will be discussed further in its own section.</p>



<h2 class="wp-block-heading">ADCS Sensor Hardware</h2>



<p>A satellite&#8217;s ADCS relies on onboard sensors to determine its attitude. CubeSats commonly use magnetometers and sun sensors, but gyroscopes and star trackers can be added when higher accuracy is needed.</p>



<p>A three-axis magnetometer is usually used to measure the local magnetic field vector and compare it with an onboard International Geomagnetic Reference Field (IGRF) ephemeris for attitude estimation. Some satellites have their magnetometers on protruding booms to provide magnetic isolation from the spacecraft body, but most satellites can have magnetometers placed internally without any detrimental effects. Satellites rely on fine sun sensors to measure the sun vector and combine it with an onboard Astronomical Almanac Sun Vector (AASV) ephemeris to facilitate attitude estimation. A very small number of satellites utilize solar panels to measure the sun vector, but this approach is only feasible when a sufficient number of solar panels are present, and its accuracy is not as high as that of sun sensors. By combining sun sensor and magnetometer measurements, full three-axis attitude information can be determined.</p>



<p>Other sensors can also be used in place of or in addition to magnetometers and sun sensors, though they are less common. Star Trackers are optical sensors that take a star picture to estimate the satellite&#8217;s attitude in all three axes, but require a satellite to be largely stable (i.e. not spinning without control). Earth horizon sensors are available, but they are not utilized as frequently as star trackers due to their limited accuracy. Gyroscopes can be used to more accurately determine the angular rotation of a satellite than measuring the change in the magnetic field with a magnetometer. Adding these advanced sensors can enable more missions with more challenging requirements, and can also increase redundancy if some of them fail during the satellite&#8217;s lifetime.</p>



<p>For satellites that require a high degree of pointing accuracy, Global Navigation Satellite System (GNSS) technology is often utilized for determining position, while other satellites relied on ground tracking and orbital propagator software. Although the orbital state is not an attitude parameter per se, the addition of GNSS technology improves the ability to perform attitude determination since sensors such as sun sensors and magnetometers rely on space environment models that are dependent on the satellite’s current position. An error in position estimation can lead to an error in attitude estimation. While incorporating GNSS technology can enhance a satellite’s performance, there are regulations that exist concerning the integration of GNSS systems on board.</p>



<h2 class="wp-block-heading">ADCS Actuator Hardware</h2>



<p>To control the orientation of a spacecraft, the ADCS requires actuators. Magnetic control is a common approach used by many satellites, which involves generating a local magnetic field that interacts with Earth’s magnetic field to control the spacecraft’s attitude. Passive magnetic control using permanent magnets or active magnetic control using magnetorquers are the most common methods.</p>



<p>Reaction wheels are also frequently used in satellites that require precise control. They work by storing momentum and using the principle of conservation of angular momentum to stabilize the spacecraft. Control Moment Gyroscopes (CMGs) use the same principle as reaction wheels for attitude control. CMGs are more commonly used for larger satellites, but there has been a trend toward miniaturizing CMG technology for use in CubeSats. Momentum dumping is necessary for both reaction wheels and CMGs to prevent saturation, which happens when the wheels or gyroscope reach their maximum rotational speed. Momentum dumping is often handled using magnetorquers on CubeSats.</p>



<p>Other actuator technologies, such as propulsion systems, gravity gradient booms, and solar sails, are rarely used due to their complexity and cost.</p>



<h2 class="wp-block-heading">ADCS Software</h2>



<p>Onboard software governs the ADCS, making all decisions related to spacecraft attitude including mode transitions, executing external commands, conducting attitude estimation, and evaluating control laws. Typically, sensor measurements and ground station commands serve as input to the software, while output commands are directed toward actuators.</p>



<p>The flight code for ADCS must incorporate sensor processing software, which receives and filters measurements from sensors. The software then converts the filtered measurements into a measured ephemeris vector. The ephemeris vector is utilized by an attitude estimator to compare with an onboard astrodynamical model to get the spacecraft’s estimated attitude.</p>



<p>Attitude estimation algorithms such as the Attitude Extended Kalman Filter (AEKF), QUEST and TRIAD are commonly used for CubeSats. AEKF is one of the most commonly use attitude estimation algorithms because it can process non-linear errors with low computation cost. Attitude estimation methods such as the AEKF linearize the satellite equations of motion about a discrete trajectory and propagate it through time.</p>



<p>The main purpose of an attitude controller is to evaluate the appropriate control torque. The control’s torque then gets transmitted to the actuators to control the attitude and the body’s angular rates. The choice of control law depends on the mission objective but there is a trade-off between computation time (accuracy) and power consumption. Tuning the control gains (parameters) and implementing them in a discrete fashion is required to achieve optimal operation. The system bandwidth, inherent errors, and actuator saturation limits place constraints on overall performance, emphasizing the importance of selecting <em>appropriate</em> hardware and software for a given mission.</p>



<h2 class="wp-block-heading">What to Expect From ADCS Articles</h2>



<p>In the upcoming articles, I will be discussing the mathematics involved in dynamic system satellites, as well as exploring different reference frames and timekeeping methods. We will also delve into the space environment and operational conditions, including topics such as disturbance torque. Afterwards, I will cover critical aspects of mission planning including how to set ADCS requirements, mission analysis and modes of operation. I will also discuss the design of GNC software and the selection of appropriate hardware. Lastly, we’ll delve into the crucial process of ADCS system integration and testing, ensuring a comprehensive understanding of this complex topic.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.crashcube.ca/adcs/introduction-to-attitude-determination-and-control-adcs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
