Skip to the lesson
FixTheRobot Explore Robotics / Guidance, Navigation and Control / M1 The GNC Problem / M1-T3

Guidance, Navigation and Control · Theory · M1

M1-T3 — One Block Diagram, Four Vehicles

The boxes are the same on every vehicle. What differs is what the vehicle does when you take your hands off.

  • Lesson 3 of 4
  • Beginner
  • Module 1: The GNC Problem
  • Theory
  • About 16 minutes to read

A rover, a multirotor, an aircraft and a satellite have almost nothing in common as machines, and yet each is flown by the same four blocks of the same diagram. This lesson walks the diagram over all four, block by block, and then asks the question that decides most of the engineering: if the controller stopped working this instant, what would the vehicle do? The answer ranges from "nothing" to "diverge within a second", and it sets how fast, and how carefully, every other block has to work.

Learning objectives

After this lesson, you should be able to:

  • Map the sensors, navigation, guidance, control and actuators of a rover, a multirotor, an aircraft and a spacecraft onto one diagram.
  • Classify a vehicle channel as stable, neutral or unstable from its open-loop behaviour.
  • Compute how long an uncontrolled vehicle takes to leave an attitude limit, and how much an error grows during a control delay.
  • Say which block changes most between vehicle classes, and why.

The intuition

Return to the loop of M1-T1: Three Questions: Where Am I, Where Should I Go, How Do I Get There. Nothing in it mentions wheels, rotors, wings or thrusters. It names five roles: sensors, navigation, guidance, control, and the vehicle with its actuators. Every vehicle fills those roles. The table shows how, for the four classes this course covers.

The loop is the same on every vehicleThe guidance, navigation and control loop with the vehicle block highlighted. The vehicle block is the one that changes between a rover, a multirotor, an aircraft and a spacecraft. GuidanceWhere should I go?ControlHow do I get there?Vehiclerover, multirotor, aircraft, spacecraft NavigationWhere am I?SensorsWhat I can measure target, mission r u x (truth) z x̂ x̂ d (wind, load, model error) v (sensor noise)
One diagram, four vehicle classes. The vehicle block, with its actuators and the disturbances that act on it, is where the classes differ most.
The loop on four vehicle classes
Wheeled roverMultirotorFixed-wing aircraftSpacecraft in orbit
SensorsWheel encoders, IMU, LiDAR or cameraIMU, barometer, magnetometer, GNSS (camera or LiDAR indoors)IMU, GNSS, air data (pitot and static pressure), magnetometerGyros, star trackers, sun sensors, GNSS in low orbit
Navigation estimatesPose in a map framePosition, velocity, attitude, sometimes windAttitude, position, velocity, airspeed, windAttitude and rates, orbit position and velocity
Guidance asks forVelocity and turn rate along a pathPosition, velocity or trajectory setpointsA path, a glide slope, altitude and speedPointing directions, burns, approach paths
Control loopsWheel-speed loopsRate, attitude, velocity and position cascadeRate and attitude loops, then path, with throttle for speedAttitude loops; the orbit by timed burns
ActuatorsWheel motors, brakesFour or more rotorsElevator, ailerons, rudder, throttleReaction wheels, magnetic torquers, thrusters
Main disturbancesWheel slip, slopes, payloadWind gusts, payload, battery voltageWind, turbulence, icingTiny torques: gravity gradient, solar pressure, drag in low orbit
If control stopsIt coasts to a haltAttitude drifts away: two integrators in series. It tilts, accelerates and fallsDepends on the design: fast modes usually recover, slow ones may drift or divergeIt keeps tumbling or drifting
Speed limitsNone, it can stopNone, it can hoverA minimum (stall) and a maximumNone to choose: orbital speed is fixed by the orbit
Time scalesSecondsTens of milliseconds to minutesFractions of a second to hoursSeconds (attitude) to hours (orbit)

Read the table by rows. The first four rows are about information, and they change in detail but not in kind: some sensors, an estimate, a thing to ask for, some loops. The last five rows are about physics, and they change a great deal. The sensors of a rover and of a spacecraft are different, but the idea of navigation is the same. The behaviour of the two vehicles when nobody is steering is completely different.

What differs: three things

  1. The open-loop behaviour. Push the vehicle once and let go. A rover slows and stops. A multirotor's tilt keeps growing, because nothing in it pulls a tilted body back. An aircraft with a stable airframe settles. An aircraft or rocket with an unstable airframe diverges. This single property decides how fast the controller must react and how little delay is tolerable.
  2. The limits. A rover can stop and a multirotor can hover. An aircraft cannot: below a minimum speed it stalls, and above a maximum its structure is at risk. A spacecraft cannot stop at all, since its speed is fixed by its orbit, and changing it costs propellant that cannot be replaced. Guidance has to respect limits that the vehicle has, not limits it wishes it had.
  3. The disturbances, and the authority to answer them. A multirotor in wind and a satellite in orbit are both disturbed, but by forces that differ by many orders of magnitude, and their actuators differ accordingly. A wheel can add a little torque forever. A thruster can add a lot, once.

Hopper, the unstable one

The course vehicle is chosen to sit at the demanding end of the first property. In this course Hopper is defined to be unstable in pitch: its designers put the centre of mass behind the aerodynamic centre of the body, as some agile aircraft do (the usual name is relaxed static stability), and the price is a pitch axis that diverges by itself. A small error doubles in about a second. It makes Hopper agile, and it means the pitch loop is not optional: without it, the vehicle is out of its envelope in seconds. Every loop in modules 2 to 5 has to keep it in hand.

The figure below shows the three classes of behaviour on one scale. Each curve is the attitude error of a vehicle that receives a 2 degrees per second kick (a gust, a thruster blip) with no controller acting. The stable vehicle settles at 3 degrees. The neutral one drifts steadily and reaches 10 degrees at 5.0 s. Hopper reaches the same limit at 2.8 s, and the curve is still accelerating.

Attitude error after a rate kick with no control, for a stable, a neutral and an unstable vehicleA plot of attitude error in degrees against time in seconds. A dashed horizontal line marks the 10 degree limit. The stable vehicle rises and levels off at 3 degrees and never reaches the limit. The neutral vehicle rises in a straight line and reaches 10 degrees at 5.0 seconds. The unstable vehicle curves upward and reaches 10 degrees at 2.8 seconds.0123456036912time after the kick (s)attitude error (deg) limit: 10 deg stable: settles at 3 deg neutral: double integrator unstable (Hopper) 2.8 s 5.0 s
A 2 degrees per second kick with the controller off. The same kick leaves a stable vehicle fine, a neutral vehicle with a steadily growing error, and an unstable vehicle with an error that grows faster and faster.

The blocks of the diagram are common to all vehicles. The open-loop behaviour of the vehicle block is not, and it is the first thing to find out about any new machine.

Definitions

Open-loop behaviour
What the vehicle does with its control input held fixed (usually at zero). It describes the vehicle alone, without the controller.
Pole λ\lambda
A number, with units of 1/s, that sets how one mode of the vehicle grows or decays: the mode behaves as eλte^{\lambda t}. Module 3 defines poles properly; here a real pole is enough.
Stable, neutral, unstable
λ<0\lambda < 0: the mode dies away. λ=0\lambda = 0: it neither grows nor decays (an integrator). λ>0\lambda > 0: it grows.
Time to double t2t_2
For an unstable pole, the time in which an error doubles: t2=ln⁡2/λt_2 = \ln 2 / \lambda.
Attitude error θ\theta and rate θ˙\dot{\theta}
The angle between the vehicle's axis and the desired one, and its rate of change. Here a single axis (pitch), in degrees and degrees per second.

A single growing or decaying mode is the simplest possible vehicle:

One mode of the open-loop vehicle
x(t)=x(0) eλtx(t) = x(0)\,e^{\lambda t}
x(0)x(0) is the initial error. For λ=0.7 s−1\lambda = 0.7\ \text{s}^{-1}, the error is multiplied by e0.7=2.01e^{0.7} = 2.01 every second.

An attitude axis has two states, the angle and the rate. The three behaviours in the figure come from three different second-order models with the controller off:

Three open-loop attitude models
θ¨=0(neutral)θ¨=λ2 θ(unstable)θ˙=θ˙0 e−t/τ(stable)\ddot{\theta} = 0 \quad\text{(neutral)} \qquad \ddot{\theta} = \lambda^2\,\theta \quad\text{(unstable)} \qquad \dot{\theta} = \dot{\theta}_0\,e^{-t/\tau} \quad\text{(stable)}
The neutral axis is a double integrator: with no torque the rate stays constant and the angle grows linearly. The unstable axis has a destabilizing moment proportional to the angle, with poles +λ+\lambda and −λ-\lambda. The stable axis has rate damping with time constant τ\tau.

Starting from zero angle with a rate kick θ˙0\dot{\theta}_0, the responses are:

Response to a rate kick
θneutral=θ˙0 tθunstable=θ˙0λ sinh⁡(λt)θstable=θ˙0 τ (1−e−t/τ)\theta_{\text{neutral}} = \dot{\theta}_0\,t \qquad \theta_{\text{unstable}} = \frac{\dot{\theta}_0}{\lambda}\,\sinh(\lambda t) \qquad \theta_{\text{stable}} = \dot{\theta}_0\,\tau\,\bigl(1 - e^{-t/\tau}\bigr)
The stable response levels off at θ˙0τ\dot{\theta}_0 \tau. sinh⁡x=(ex−e−x)/2\sinh x = (e^x - e^{-x})/2 grows like ex/2e^{x}/2 for large xx.

Derivation: how long does an unstable vehicle give you?

The question that matters for design is time. How long can a vehicle be left alone before it is out of its envelope, and how much does a delay in the control loop cost? Derive both for the unstable axis, since it is the demanding case.

  1. θ¨=λ2 θ  ⇒  s2=λ2  ⇒  s=±λ\ddot{\theta} = \lambda^2\,\theta \;\Rightarrow\; s^2 = \lambda^2 \;\Rightarrow\; s = \pm\lambda

    With no control, try a solution este^{st} and substitute. The two poles are +λ+\lambda (growing) and −λ-\lambda (decaying). One of the two modes grows, so the vehicle is unstable.

  2. θ(t)=A eλt+B e−λt\theta(t) = A\,e^{\lambda t} + B\,e^{-\lambda t}

    The general solution is a combination of the two modes. The constants AA and BB are set by the initial conditions.

  3. θ(0)=0, θ˙(0)=θ˙0  ⇒  A=θ˙02λ, B=−A  ⇒  θ=θ˙0λsinh⁡(λt)\theta(0) = 0,\ \dot{\theta}(0) = \dot{\theta}_0 \;\Rightarrow\; A = \frac{\dot{\theta}_0}{2\lambda},\ B = -A \;\Rightarrow\; \theta = \frac{\dot{\theta}_0}{\lambda}\sinh(\lambda t)

    A kick from rest means zero starting angle and a starting rate θ˙0\dot{\theta}_0. The two conditions give AA and BB, and the pair of exponentials combine into a hyperbolic sine.

  4. θ(tout)=θmax⁡  ⇒  tout=1λ asinh⁡ ⁣(λ θmax⁡θ˙0)\theta(t_{\text{out}}) = \theta_{\max} \;\Rightarrow\; t_{\text{out}} = \frac{1}{\lambda}\,\operatorname{asinh}\!\left(\frac{\lambda\,\theta_{\max}}{\dot{\theta}_0}\right)

    Invert the response to find when the error reaches the limit θmax⁡\theta_{\max}. For the neutral axis the same question gives the simpler t=θmax⁡/θ˙0t = \theta_{\max}/\dot{\theta}_0.

  5. θ(t+T)θ(t)  →  eλT(λt≫1)\frac{\theta(t+T)}{\theta(t)} \;\to\; e^{\lambda T}\quad (\lambda t \gg 1)

    Once the growing mode dominates, any error is multiplied by this factor in every interval of length TT during which nothing corrects it. A delay in the loop is exactly such an interval.

The last line is the useful one for design. Sensing, estimating, computing and moving an actuator take a total delay TT, and during it the error grows by eλTe^{\lambda T} before the first correction takes effect. If λT\lambda T is much less than 1, the growth is negligible, and a controller can hold the vehicle. If λT\lambda T is around 1, the error has grown by a factor of 2.7 before anything happens, and the actuator must then provide enough authority to undo it. If it is well above 1, there is no controller that can hold the vehicle with that delay. Module 3 turns this argument into a bound on the loop's bandwidth, and shows in M3-T6: Limits of Performance: Delay, Right-Half-Plane Zeros and the Bode Integral that delay and unstable poles together limit what any controller can do.

Stable vehicles forgive delay. Unstable vehicles charge compound interest on it, at the rate of their own pole.

A worked example

Compare the three behaviours with numbers. A 2 degrees per second kick hits an attitude axis, and the attitude limit is 10 degrees. Hopper has λ=0.7 s−1\lambda = 0.7\ \text{s}^{-1}. The stable vehicle has a rate-damping time constant τ=1.5 s\tau = 1.5\ \text{s}.

  1. Stable vehicle. The angle levels off at θ˙0τ=2×1.5=3\dot{\theta}_0 \tau = 2 \times 1.5 = 3 degrees. It never reaches the 10 degree limit, with or without a controller.
  2. Neutral vehicle. t=θmax⁡/θ˙0=10/2=5.0t = \theta_{\max}/\dot{\theta}_0 = 10/2 = 5.0 s.
  3. Hopper. t=asinh⁡(0.7×10/2)/0.7=asinh⁡(3.5)/0.7=1.966/0.7=2.8t = \operatorname{asinh}(0.7 \times 10 / 2)/0.7 = \operatorname{asinh}(3.5)/0.7 = 1.966/0.7 = 2.8 s. Hopper has just over half of the neutral vehicle's time, and the time to double is ln⁡2/0.7=0.99\ln 2 / 0.7 = 0.99 s.
  4. Delay. The growth factor e0.7Te^{0.7 T} is 1.04 for a 50 ms delay, 1.07 for 100 ms, 1.42 for 500 ms and 2.01 for a full second. A control loop with a total delay of 100 ms costs Hopper 7% of error growth. One with a 1 s delay lets the error double before it acts.
  5. Read it. The stable vehicle needs a controller only for accuracy, not for survival. The neutral one needs a controller within about a few seconds. Hopper needs one that reacts in a fraction of its 1 s doubling time, with a total delay of a small fraction of a second. That requirement flows down into the loop bandwidths of M1-T2: Nested Loops and Separation of Timescales and into the navigation filter's latency.

The same numbers from a short program (standard library only):

import math

LIMIT, KICK = 10.0, 2.0   # attitude limit (deg) and a rate disturbance (deg/s)
lam = 0.7                 # Hopper's divergence rate (1/s)
tau = 1.5                 # rate-damping time constant of the stable vehicle (s)

settle = KICK * tau                                  # stable: theta' = KICK * exp(-t / tau)
t_neutral = LIMIT / KICK                             # neutral: theta = KICK * t
t_unstable = math.asinh(lam * LIMIT / KICK) / lam    # unstable: theta = (KICK / lam) * sinh(lam * t)

print('time to leave +/-10 deg after a 2 deg/s kick, controller off')
print(f'  stable (rate damps, tau = 1.5 s): never, settles at {settle:.1f} deg')
print(f'  neutral (double integrator):      {t_neutral:.1f} s')
print(f'  Hopper (unstable, lambda = 0.7):  {t_unstable:.1f} s')
print(f'Hopper doubles an error every {math.log(2) / lam:.2f} s; growth during a control delay T:')
for T in (0.05, 0.1, 0.5, 1.0):
    print(f'  T = {T:4.2f} s -> error x {math.exp(lam * T):.3f}')
time to leave +/-10 deg after a 2 deg/s kick, controller off
  stable (rate damps, tau = 1.5 s): never, settles at 3.0 deg
  neutral (double integrator):      5.0 s
  Hopper (unstable, lambda = 0.7):  2.8 s
Hopper doubles an error every 0.99 s; growth during a control delay T:
  T = 0.05 s -> error x 1.036
  T = 0.10 s -> error x 1.073
  T = 0.50 s -> error x 1.419
  T = 1.00 s -> error x 2.014
The models are single-axis idealizations chosen to show the three behaviours. Module 2 builds Hopper's real model.

In robotics

The classification explains design choices that look arbitrary from outside.

  • Safe states differ. A rover has a free safe state: stop. A multirotor has none, because stopping the motors is a crash, so its failsafe is to land (see UAV M8-T14: Communication loss and failsafes). An aircraft cannot stop either, and its failsafe is to keep flying: return, loiter or glide. What the failsafe can be depends on the open-loop behaviour and the limits, not on the software.
  • Unstable on purpose. Many modern fighter aircraft are designed with relaxed static stability and are flown by computers, because an unstable airframe turns faster. They accept the price this lesson computes: the flight control loop cannot be allowed to fail, and it is duplicated several times over. Many launch vehicles are aerodynamically unstable during part of their ascent and are held by thrust-vector control.
  • Stable is not the same as controlled. A stable airframe returns to level flight, but it still needs a guidance loop to go anywhere, and a control loop to do it accurately and to reject wind. Stability buys forgiveness, not performance.
  • Spacecraft disturbances are small but never stop. Gravity-gradient torque and solar pressure add momentum to a satellite continuously, and the reaction wheels that absorb it eventually saturate. The control problem becomes a bookkeeping of momentum over weeks (module 11), not a fight against a diverging mode.

The same three-way classification returns throughout the course. Module 3 sorts it by poles in the complex plane, module 4 by the eigenvalues of a state matrix, and module 10 meets the aircraft modes, some stable, some slowly unstable. For the multirotor case, UAV M5-T2: Quadrotor dynamic modelling writes the model whose attitude axes are the double integrators of this lesson.

Common misconceptions

“A spacecraft is easy to control because nothing disturbs it.”

The disturbances are tiny, but so are the actuators, and there is no air to damp anything. An attitude axis is a double integrator: once it is rotating it keeps rotating, and a small torque for a long time adds up to a large momentum. Control authority, momentum storage and propellant, not divergence, are the difficulties.

“Unstable means it crashes immediately.”

It means a mode grows exponentially, at a rate set by the pole. Hopper doubles an error in about a second, so a controller with a 50 ms delay copes easily, and one with a 1 s delay does not. The number that matters is λT\lambda T, the pole times the delay.

“A stable vehicle does not need a controller.”

It needs no controller to avoid diverging, but it still needs one to go to a target, to track a path accurately and to reject disturbances. Stable aircraft are flown by autopilots all the time, and so are stable rovers.

“Aircraft and rovers just differ in their speed.”

The difference is structural. A rover can stop, so every error can be cured by waiting. An aircraft has a minimum speed below which it cannot fly at all, and guidance for it has to respect that limit in every command, including during turns, when the stall speed rises.

“Each vehicle class needs a different control architecture.”

The architecture, the five roles in the diagram, is common. The vehicle-specific part is the model in the vehicle block, the actuator limits and the numbers in the loops. The same engineers move between rovers, drones and spacecraft by learning the model of the new vehicle, not a new theory of control.

Key takeaways

  1. The same five roles (sensors, navigation, guidance, control, vehicle with actuators) appear on every vehicle. The details differ, the structure does not.
  2. The vehicle block is where classes differ most: open-loop behaviour, speed limits, disturbances and actuator authority.
  3. A mode with pole λ\lambda behaves as eλte^{\lambda t}: it decays if λ<0\lambda < 0, stays if λ=0\lambda = 0 and grows if λ>0\lambda > 0.
  4. An unstable pole doubles an error in ln⁡2/λ\ln 2/\lambda seconds, and any delay TT in the loop multiplies the error by eλTe^{\lambda T}.
  5. Stable vehicles forgive delay and errors, neutral ones accumulate them, and unstable ones amplify them. The controller's speed requirement follows.
  6. What a vehicle does when control stops decides what its failsafe can be.

References and further reading

Each source is marked free or paid. Free to read does not mean free to reuse: the course resources page lists every source with its licence.

Knowledge check

Three questions. Write an answer, then reveal the explanation. Your answers stay in your browser.

Question 1

A quadrotor is hovering when a gust gives it a 5 degrees per second roll rate. Its roll channel is a double integrator and the roll limit is 30 degrees. How long until it exceeds the limit with no control, and what does the answer tell you about the roll controller?

Explanation

t = θmax / θ̇₀ = 30 / 5 = 6 s, ignoring rotor drag and the change in thrust as the vehicle tilts, which are small over this time. The multirotor is neutral in roll, so there is plenty of time to react, but any controller must act within a small fraction of that, and an actuator limit that prevents it from stopping the rotation (for example saturated motors) turns a harmless kick into a flip. This is why the roll rate loop of a multirotor runs at hundreds of hertz even though 6 s is long.

Question 2

Hopper's state estimator adds a 0.3 s lag between a true attitude change and the estimate that the pitch controller uses. With λ = 0.7 per second, by what factor can an attitude error grow during that lag, and is it a problem?

Explanation

e^(λT) = e^(0.7 × 0.3) = e^0.21 = 1.23, so an error can grow by about 23% before the controller even sees it. Compared with a time to double of 0.99 s the lag is 30% of the doubling time, which is a significant fraction of the vehicle's patience: the controller must then be strong enough to undo the extra growth, and the loop has less phase margin to spare. A 30 ms lag would cost 2%. The right response is a faster estimator or a faster sensor path, since the physics of the vehicle cannot change.

Question 3

Which block of the loop changes least between a wheeled rover and a satellite, and which changes most? Give one reason for each.

Explanation

Navigation is structurally the most alike: both estimate a state from noisy sensors, with a motion model and measurement updates (the sensors differ, the estimator's idea does not). The vehicle block changes most: a rover stops by itself and has a safe state, a satellite cannot stop, has no aerodynamic damping and has actuators with tiny, rationed authority. Guidance also changes strongly in what it asks for (a path versus a burn or a pointing direction), but the greatest difference is in the dynamics, because they decide what control must do.

What’s next

Next lesson

M1-T4 — From Mission Requirement to GNC Budget

Split a landing-accuracy requirement into a navigation error, a guidance error and a control error, and combine independent errors by root-sum-square.

Nothing below is required to finish this lesson.

Other courses on this site treat neighbouring topics from their own angle:

This course leaves the following to the pages that already teach them: