← Back to Projects

Modern Control · State-Space Design · Estimation

Reaction-Wheel Satellite Attitude Control

A satellite will not return to a commanded orientation on its own — it drifts. This project builds the state-space model that explains why, then designs the feedback and the estimator that fix it.

Course EE 513 — Modern Control Theory, Cal Poly San Luis Obispo
Timeline Winter 2026 · submitted March 2026
Team Two engineers
State-Space Modelling Pole Placement Luenberger Observer Controllability Observability Reference Prefilter MIMO MATLAB

Third order, two inputs, two measurements.

3 States — attitude, satellite rate, and reaction wheel speed
2 Control inputs — internal wheel torque and external thruster torque
rank 3 Controllability matrix — full rank, so any state is reachable
10° Step command tracked with no steady-state error
The Sentinel-6 Michael Freilich satellite in orbit above Earth, its gold thermal blanketing and deployed solar array catching sunlight against the black of space.
Where this applies. Earth-observation spacecraft like Sentinel-6 Michael Freilich hold their pointing with reaction wheels — imaging and RF links only work if attitude is held to a fraction of a degree. Image: NASA/JPL-Caltech

From angular momentum to a state-space plant.

The model starts from rotational dynamics rather than from an assumed transfer function. A reaction wheel exchanges angular momentum with the satellite body; a thruster adds momentum to the whole system from outside. Those are physically different actions, and the model has to keep them distinct.

Newton's rotational torque law gives one second-order equation for the satellite body and one first-order equation for the wheel. The wheel's motor torque appears with opposite signs in the two — it accelerates the wheel while pushing back equally on the body. The thruster torque appears only on the body. Checking the total angular momentum of the combined system confirms the sign convention: the internal wheel torque cancels out, leaving the momentum rate equal to the external thruster torque alone, exactly as it should be.

Choosing the states

One second-order equation plus one first-order equation makes a third-order system, so three states are the minimum: satellite attitude, satellite angular rate, and reaction wheel speed. The two outputs were chosen for what a real spacecraft can actually measure — attitude from sensors, and wheel speed from motor encoder telemetry. The satellite's angular rate is deliberately left unmeasured, which is what motivates the observer later.

Why the open loop drifts

The state matrix is already in Jordan form, with all three eigenvalues at the origin. That alone is not conclusive — what matters is the structure. A two-by-two Jordan block at zero means a double integrator, so any nonzero initial angular rate makes the attitude angle grow linearly and without bound. The satellite drifts and cannot recover on its own. In transfer-function terms the attitude output goes as 1/s² in applied torque, while wheel speed goes as 1/s. Constant torque therefore produces a quadratically growing pointing error.

This is the whole argument for closed-loop control, and it falls out of the model rather than being asserted.

Placing the poles, then estimating what is missing.

Before designing anything, controllability and observability were verified by rank tests. The controllability matrix comes out full rank, meaning the two torque inputs together have enough authority to drive the system to any state — a precondition for pole placement to be possible at all rather than an afterthought.

State feedback with a reference prefilter

A multi-input state-feedback law places the closed-loop poles in the left half plane, which removes the drift and gives exponential convergence to the commanded attitude. State feedback alone, though, will not track a step command to the right final value — it stabilises without guaranteeing unity DC gain. A reference prefilter scales the command so a 10° request settles at 10°.

Block diagram of a state feedback control system: reference v through prefilter F into a summing junction, minus K times the state, giving control input u; u through B into a second summing junction with A times the state, integrated to give the state x, then through C to the output y, with D feeding u forward to the output.
The standard state-feedback structure — prefilter F sets the DC gain, gain K places the closed-loop poles.

A full-order Luenberger observer

Because satellite angular rate is not measured, full-state feedback needs an estimate of it. A full-order observer reconstructs the complete state from the two available measurements. Started deliberately from mismatched initial conditions, the estimated attitude and rate converge onto the true values quickly enough that the controller behaves as though it had been given the real state all along.

Block diagram of a full-state observer: the plant output y is differenced against the reconstructed output C x-hat and the feedforward term D u; the residual passes through observer gain L, sums with B u and A x-hat, and integrates to produce the state estimate x-hat.
The observer runs a model of the plant in parallel and corrects it by the measurement residual through L, so the estimate is driven onto the true state.

Tracking, actuator effort, and estimator convergence.

Closed-loop attitude step response: satellite angle rises smoothly from zero and settles onto the 10 degree reference with no overshoot.
Closed-loop response to a 10° attitude command — well damped, no steady-state error.
Commanded wheel torque and thruster torque against time, both starting near plus or minus 1.5 newton-metres and decaying smoothly toward zero.
The torque both actuators are asked for. Bounded throughout — the manoeuvre is achievable with real hardware, not just on paper.
True and estimated satellite attitude plotted together from mismatched initial conditions; the estimate converges onto the true value within the first few seconds and both settle at the reference.
Observer convergence from deliberately mismatched initial conditions — the estimate locks onto the true attitude within the first few seconds.

What the design costs in hardware.

A controller that works in simulation is only useful if the actuators it assumes can be built. Two parametric studies put numbers on that.

  • Inertia versus actuator demand. Holding the controller poles fixed and increasing satellite inertia raises peak wheel torque, peak thruster torque, and peak wheel speed substantially. A controller tuned for a small satellite will outrun its actuators on a larger one, even for the same commanded angle.
  • Pole location versus effort. With inertias fixed, poles nearer the origin give slower rise and settling but demand far less torque; poles pushed further left respond faster and cost more peak torque. Speed is bought with actuator capability.
Both studies point at the same practical conclusion: pole placement is not free. Where the poles go is a hardware budget decision as much as a control one.

Report and presentation.

The report carries the full derivation from angular momentum through the state-space model, the stability, controllability and observability analysis, the controller and observer design, and both parametric trade studies. The presentation is the condensed version delivered to the class.