Case Study: Designing an Attitude Control System for an Earth-Imaging Smallsat

"An attitude control system is not chosen; it is sized — torque by torque, arcsecond by arcsecond."

Executive Summary

In the first case study we took apart a flown attitude system. Here we build one on paper. Given a mission — an agile Earth-imaging satellite in low orbit that must snap sharp pictures on command — we will select and size a complete attitude determination and control system (ADCS): estimate the four environmental torques it must fight, size the reaction wheels that slew it, choose and size the magnetorquers that dump the wheels' momentum, pick the sensor suite, and prove with a pointing budget that the design meets its requirement. This is exactly the sequence a real ADCS engineer runs, and the one you will run on your own mission. It pulls together every section of the chapter into a single design.

Skills applied

  • Estimating all four environmental torques (gravity-gradient, aerodynamic, magnetic, solar) and finding the dominant one (§14.3).
  • Sizing reaction wheels from a slew requirement — torque and stored momentum (§14.5).
  • Choosing and sizing magnetorquers for momentum dumping in LEO (§14.5).
  • Selecting determination sensors and closing a pointing budget by root-sum-square (§14.4, §14.6).

Background

The requirement

Our customer wants a small Earth-observation satellite:

Parameter Value Kind
Orbit 500 km, sun-synchronous (LEO)
Pointing accuracy $0.02^\circ = 72\ \text{arcsec}$ accuracy
Agility slew $30^\circ$ and settle in $\le 30\ \text{s}$ (to retarget between scenes)
Spacecraft inertia (slew axis) $I \approx 12\ \text{kg·m}^2$ Tier 3, illustrative
Body size / areas $\sim 0.6\ \text{m}$ class; frontal area $A \approx 0.5\ \text{m}^2$ Tier 3

The two drivers are the $72$-arcsec pointing accuracy and the agility (a $30^\circ$ slew in $30\ \text{s}$). As §14.6 promised, these two numbers will size almost everything. We work through the design in the order an engineer does: disturbances first (what are we fighting?), then actuators (what fights back?), then sensors and budget (does it meet spec?).

Phase 1: Estimate the disturbance torques

We evaluate all four torques of §14.3 at $r = 6{,}871\ \text{km} = 6.871\times10^6\ \text{m}$ (500 km altitude) to find which dominates. Spacecraft parameters are illustrative (Tier 3); the environment values are representative (Tier 2).

Gravity-gradient (worst case, long axis $45^\circ$ from vertical, $\lvert I_{\max}-I_{\min}\rvert = 5\ \text{kg·m}^2$): $$ M_{gg} = \frac{3\mu}{2r^3}\lvert I_{\max}-I_{\min}\rvert = \frac{3(3.986\times10^{14})}{2(6.871\times10^6)^3}(5) = (1.84\times10^{-6})(5) \approx 9.2\times10^{-6}\ \text{N·m}. $$

Aerodynamic (drag force at a $d = 0.05\ \text{m}$ offset; density at 500 km $\rho \approx 5\times10^{-13}\ \text{kg/m}^3$, speed $v \approx 7.6\ \text{km/s}$, $C_d = 2.2$): $$ F_{\text{drag}} = \tfrac12\rho v^2 C_d A = \tfrac12(5\times10^{-13})(7{,}600)^2(2.2)(0.5) \approx 1.6\times10^{-5}\ \text{N}, \quad M_{\text{aero}} = F_{\text{drag}}\,d \approx 8\times10^{-7}\ \text{N·m}. $$

Magnetic (residual dipole $m \approx 0.05\ \text{A·m}^2$, field at 500 km $B \approx 3\times10^{-5}\ \text{T}$): $$ M_{\text{mag}} = mB = (0.05)(3\times10^{-5}) \approx 1.5\times10^{-6}\ \text{N·m}. $$

Solar radiation pressure ($P_\odot = 4.5\times10^{-6}\ \text{N/m}^2$, $\rho = 0.5$, $d = 0.05\ \text{m}$): $$ M_{\text{SRP}} = P_\odot A (1+\rho)\,d = (4.5\times10^{-6})(0.5)(1.5)(0.05) \approx 1.7\times10^{-7}\ \text{N·m}. $$

Torque Magnitude (N·m) Rank at 500 km
Gravity-gradient $9.2\times10^{-6}$ dominant
Magnetic $1.5\times10^{-6}$ 2nd
Aerodynamic $8\times10^{-7}$ 3rd
Solar radiation $1.7\times10^{-7}$ smallest

Sanity check. All four land between $10^{-7}$ and $10^{-5}\ \text{N·m}$ — the band the chapter kept promising. Gravity-gradient wins in LEO, exactly opposite to Kepler's deep-space case (Case Study 1), where solar pressure dominated and the others vanished. The place decides the disturbance. We will size the wheels' disturbance-rejection margin against a worst-case secular value of a few $\times10^{-6}\ \text{N·m}$ (gravity-gradient largely oscillates and partly averages out over an orbit; magnetic and aero supply the steadier component).

Phase 2: Size the reaction wheels from the slew

The agility requirement, not the disturbances, sizes the wheels — by two orders of magnitude. We must slew $30^\circ = 0.524\ \text{rad}$ and stop in $t = 30\ \text{s}$, using a bang-bang profile (accelerate for the first $15\ \text{s}$, decelerate for the second). Accelerating through the first half-angle $0.262\ \text{rad}$ needs

$$ \alpha = \frac{4\,\theta_{\text{slew}}}{t^2} = \frac{4(0.524)}{(30)^2} = \frac{2.094}{900} = 2.33\times10^{-3}\ \text{rad/s}^2. $$

The wheel torque and peak stored momentum follow:

$$ M_{\text{wheel}} = I\alpha = (12)(2.33\times10^{-3}) = 0.028\ \text{N·m}, \qquad H_{\text{wheel}} = I\,\omega_{\text{peak}} = I\,\alpha\tfrac{t}{2} = (12)(2.33\times10^{-3})(15) = 0.42\ \text{N·m·s}. $$

Sanity check. The peak rate is $\omega_{\text{peak}} = 0.035\ \text{rad/s} \approx 2^\circ/\text{s}$ — brisk and reasonable for an agile imager. Compare the slew torque ($0.028\ \text{N·m}$) to the dominant disturbance ($9.2\times10^{-6}\ \text{N·m}$): the slew demands about 3,000 times more torque. This is the general rule — for an agile spacecraft the wheels are sized by the slew, and disturbance rejection comes free. We select reaction wheels rated for at least $0.03\ \text{N·m}$ torque and $0.5\ \text{N·m·s}$ momentum, and fly four in a skewed pyramid so any one can fail and the remaining three still control all three axes (theme 2 — the Case Study 1 lesson, applied).

Phase 3: Size the momentum dumping (magnetorquers)

The wheels absorb the secular disturbance momentum and will eventually saturate; being in LEO, we dump with magnetorquers rather than spend precious propellant (theme 4). First, how fast does momentum build? A steady disturbance of $M_d \approx 5\times10^{-6}\ \text{N·m}$ over one orbit ($T \approx 5{,}670\ \text{s}$ at 500 km) deposits

$$ \Delta H = M_d\,T = (5\times10^{-6})(5{,}670) \approx 0.028\ \text{N·m·s per orbit}, $$

so a $0.5\ \text{N·m·s}$ wheel could coast $\sim 18$ orbits before saturating — but we dump continuously instead. A magnetorquer of dipole $m = 5\ \text{A·m}^2$ against $B \approx 3\times10^{-5}\ \text{T}$ delivers up to

$$ M_{\text{torquer}} = mB = (5)(3\times10^{-5}) = 1.5\times10^{-4}\ \text{N·m}, $$

which exceeds the $5\times10^{-6}\ \text{N·m}$ disturbance thirtyfold — ample authority to bleed momentum off the wheels as fast as it accumulates.

Sanity check. $M_{\text{torquer}} = 1.5\times10^{-4}\ \text{N·m} \gg M_d = 5\times10^{-6}\ \text{N·m}$, so the magnetorquers keep up with room to spare — and cost zero propellant, giving effectively unlimited desaturation for the mission life. The one caveat from §14.5: a magnetorquer cannot torque about the field direction itself, so at any instant it has only two-axis authority; over an orbit the field vector sweeps around and full three-axis desaturation averages out. This is why magnetorquer dumping is a LEO luxury our deep-space Case Study 1 could not use.

Phase 4: Sensors and the pointing budget

To hold $72\ \text{arcsec}$ accuracy we need commensurate knowledge, so the suite is built around a star tracker:

Sensor Role
Star tracker (×2, different look directions) Primary absolute attitude, few-arcsec knowledge; two so the Sun can't blind both
Rate gyros (3-axis) High-rate propagation between star-tracker fixes; drift reset by the trackers (Kalman fusion, Ch. 13)
Coarse Sun sensors (all-sky) Safe-mode Sun pointing to keep the arrays powered
Magnetometer Feeds the magnetorquer control law; coarse backup attitude

Now the pointing budget. We tally the independent error contributors and combine by root-sum-square (§14.6). Estimated contributions (Tier 3):

Error source Contribution (arcsec)
Star-tracker measurement noise 20
Gyro propagation drift between fixes 15
Reaction-wheel / actuator quantization 20
Sensor–instrument alignment + thermal distortion 40
Structural jitter 20

$$ \sigma_{\text{total}} = \sqrt{20^2 + 15^2 + 20^2 + 40^2 + 20^2} = \sqrt{400+225+400+1600+400} = \sqrt{3025} = 55\ \text{arcsec}. $$

Sanity check and design insight. The total, $55\ \text{arcsec} = 0.0153^\circ$, is inside the $72$-arcsec requirement — the design closes, with about $47\ \text{arcsec}$ of RSS margin. The alignment/thermal term (40 arcsec) contributes $1600/3025 \approx 53\%$ of the budget by itself, so if we later need to tighten pointing, that is where to spend: better thermal stability and calibration of the star-tracker-to-instrument alignment, not a fancier gyro. The budget doesn't just pass the design — it tells us where its weakness lives.

Phase 5: Safe mode and reliability

Finally, the theme-2 discipline: what happens when something breaks? The design degrades gracefully.

  • Redundancy: four skewed wheels (survive one failure), two star trackers (survive Sun blinding of one), three gyros. A single fault in any of these leaves the mission fully capable.
  • Safe mode: on any serious anomaly the spacecraft drops to its simplest robust sensors — coarse Sun sensors and the magnetometer — uses magnetorquers to detumble, points the solar arrays at the Sun to stay powered, and waits for ground commands. No star tracker, no wheels, no precise pointing needed to survive; those are needed only to work.
# Size the smallsat ADCS (hand-traced; do not run).
import math

MU = 3.986e14        # Earth grav. parameter, m^3/s^2
r  = 6.871e6         # 500 km altitude, m
I  = 12.0            # slew-axis inertia, kg*m^2 (Tier 3)

def grav_grad_torque(dI, theta_deg):
    """Worst-case gravity-gradient torque, N*m. (Sec 14.3)"""
    return (3 * MU) / (2 * r**3) * dI * math.sin(2 * math.radians(theta_deg))

def slew_wheel(inertia, angle_deg, t):
    """Bang-bang slew: return (peak torque N*m, peak momentum N*m*s). (Sec 14.5)"""
    ang = math.radians(angle_deg)
    alpha = 4 * ang / t**2
    return inertia * alpha, inertia * alpha * (t / 2)

M_gg = grav_grad_torque(5.0, 45.0)            # dominant LEO disturbance
M_w, H_w = slew_wheel(I, 30.0, 30.0)          # slew sizing

print(round(M_gg, 7))                          # N*m
print(round(M_w, 3), round(H_w, 2))            # N*m , N*m*s
# Expected output:
# 9.2e-06
# 0.028 0.42

The two lines are the design in miniature: a $\sim 9\times10^{-6}\ \text{N·m}$ disturbance to reject, and a wheel that must supply $0.028\ \text{N·m}$ and store $0.42\ \text{N·m·s}$ to meet the agility spec — the slew, three orders of magnitude larger, sizing the hardware.

Discussion Questions

  1. At 500 km, gravity-gradient torque dominated; for Kepler in deep space (Case Study 1), solar pressure did. Explain physically why altitude reorders the four disturbances so completely.
  2. The slew requirement sized the wheels roughly 3,000× harder than disturbance rejection did. What kind of mission would reverse that — where disturbance rejection, not slewing, sizes the wheels?
  3. We dumped momentum with magnetorquers instead of thrusters. State two advantages this gives in LEO and the one physical reason it would not work for an interplanetary spacecraft.
  4. The pointing budget passed at 55 arcsec against a 72-arcsec requirement, but the alignment/thermal term dominated. If the customer tightened the requirement to 40 arcsec, what specific changes would you make, and which sensors would you not bother upgrading?

Your Turn: Extensions

  • Option A (design). Re-size the wheels for a more aggressive $30^\circ$ slew in $15\ \text{s}$ (half the time). By what factor do the required torque and momentum change? (Hint: torque $\propto 1/t^2$, peak momentum $\propto 1/t$.) Comment on the mass penalty of agility (theme 4).
  • Option B (computation). Add functions for the aerodynamic, magnetic, and solar torques to the code and print all four at both 500 km and (by changing $r$ and $\rho$) 350 km. Show numerically how the ranking shifts as you go lower. (Hand-trace; add # Expected output:.)
  • Option C (your mission). Run this whole five-phase sizing for your MDR mission's spacecraft: dominant disturbance, wheel size from your slew or pointing need, dumping method for your environment, and a pointing budget against your requirement. Record the sized ADCS in your MDR.

Key Takeaways

  1. Size against the dominant disturbance and the hardest maneuver. At 500 km gravity-gradient dominates, but the slew requirement sizes the wheels ~3,000× harder — for an agile spacecraft, agility rules.
  2. Match the dumping method to the environment. In LEO, magnetorquers dump wheel momentum for free ($M = mB \gg M_d$); no propellant spent, unlike a deep-space vehicle that must burn hydrazine.
  3. Prove pointing with a root-sum-square budget. $55\ \text{arcsec} < 72\ \text{arcsec}$ closes the design, and the dominant (alignment/thermal) term shows where to invest if the spec tightens.
  4. Design the failure modes, not just the success mode. Four skewed wheels, two star trackers, and a Sun-pointing safe mode on coarse sensors make the system survive faults — the discipline that separates a mission that flies from one that is merely clever.