Guidance, Navigation and Control · Theory · M2
M2-T3 — Forces, Moments and Actuator Models
A force model says what the vehicle pushes with. An actuator model says how fast, how far and how hard the push can change. Both limit what a controller can do.
Module 3 designs controllers, and a controller is only as good as the model of what it acts on. The last lesson wrote the equations of motion with symbols for the force and the moment. This lesson gives those symbols content for Hopper: what the thrust is and what it costs in propellant, where the unstable pitch moment comes from, and how the gimbal that produces the control moment responds to a command. The actuator is the part most often left out of a first model, and the part most often to blame when a designed loop fails to behave.
Learning objectives
After this lesson, you should be able to:
- Model gravity, thrust with propellant flow and an aerodynamic moment as forces and moments on a vehicle.
- Compute the propellant flow, burn time and pitch authority of Hopper from its thrust and mass.
- Model an actuator by its bandwidth, rate limit and position limit.
- Show that a rate limit makes an actuator's delay depend on the size of the command.
The intuition
A force model answers one question: given the state of the vehicle and what the controller asks for, what pushes on the vehicle? The answer for Hopper has four parts.
- Weight. A force straight down. The mass is a state, because Hopper burns propellant.
- Thrust. A force along the body axis, tilted by the gimbal angle. The engine can be throttled between zero and a maximum of 2400 N. The thrust costs propellant at a rate set by the engine's specific impulse.
- Gimbal moment. Tilting the thrust by the gimbal angle puts the thrust off the line through the centre of mass, and the lever arm turns it into a pitching moment. This is the vehicle's only control moment.
- Aerodynamic moment. The air pushes the nose further from the direction of flight. For Hopper this is the destabilizing moment of the last two lessons. Its aerodynamic force on the translation, drag, is left out: at Hopper's speeds it is far smaller than thrust and weight, and every part of the model is left out only when the size of the neglected effect has been checked.
The aerodynamic moment is the one a real vehicle could not hold constant. It depends on the dynamic pressure, , and so it grows with the square of the airspeed. This course holds the divergence rate of Hopper at 0.7 per second as a modelling choice, so that the vehicle has a fixed, known pole to design against. Module 5 returns to what happens when the pole moves.
Propellant and authority
Thrust is paid for by mass. A rocket engine accelerates propellant backwards, and the push on the vehicle is the rate at which that backward momentum is created. An engine's specific impulse, in seconds, is the thrust it gives per unit weight of propellant burnt per second, and it says how efficient the engine is. Hopper's is 150 s, a modest figure, between that of a cold-gas thruster and that of a hydrazine monopropellant engine, so the 48 kg of propellant it carries (40% of its liftoff mass) lasts about a minute at hover thrust.
The mass falls during the flight, and with it the thrust needed to hover. The gimbal moment is the thrust times the lever arm, so Hopper's pitch authority, the angular acceleration it gets per radian of gimbal, falls by the same 40%. A controller tuned at liftoff has 40% too much gain at burnout, which is why this course schedules it in module 5.
The actuator is a dynamic system
The gimbal does not move when commanded. A servo takes time to turn the engine, and three things describe it.
- Its bandwidth: for small commands it behaves as a first-order lag. Hopper's servo has a bandwidth of 40 rad/s, a time constant of 25 ms.
- Its rate limit: it cannot move faster than 3 rad/s, whatever it is told. A big command is followed by a straight-line ramp.
- Its position limit: it cannot move beyond ±0.15 rad (about 8.6 degrees).
The figure shows the consequence. A small step is followed with a delay of 25 ms. A large step has to climb at the rate limit first, so the same servo is slower: it takes 32.5 ms to reach 63% of the 0.15 rad command, and 0.30 rad ends at the same 0.15. An actuator with a rate limit has a delay that depends on the size of the command. A control loop is designed with small signals in mind and meets large ones when it matters most.
A model of an actuator has three numbers: how fast it follows small commands, how fast it can move at all, and how far. The second and third are nonlinear, and they are where a loop that works on the bench fails in flight.
Definitions
- Thrust
- The force of the engine along its axis, between 0 and N. The commanded throttle is the thrust.
- Specific impulse and exhaust speed
- The impulse per unit weight of propellant, in seconds, and the equivalent speed of the exhaust relative to the vehicle: , with m/s² (a fixed constant for converting).
- Propellant flow and mass
- The propellant burnt per second (kg/s) and the vehicle mass, which falls by the propellant burnt: .
- Gimbal angle , lever arm
- The angle of the thrust relative to the body axis (rad), and the distance from the centre of mass to the gimbal (1.0 m).
- Pitch authority
- The angular acceleration produced per radian of gimbal: in rad/s² per rad.
- Actuator bandwidth , rate limit , position limit
- The three numbers of the actuator model: 40 rad/s, 3 rad/s and 0.15 rad for Hopper's gimbal.
The propellant flow and the thrust are tied together by the exhaust speed:
The speed a vehicle can gain by burning all its propellant, in a region without gravity or drag, is the rocket equation:
The moment equation of the vehicle, and the pitch authority:
Finally, the actuator. Its output follows its command through a first-order lag whose speed is limited, and whose output is limited:
Derivation: propellant flow, the rocket equation and the delay of a rate-limited step
Two results of this lesson come from short arguments: the cost of thrust in propellant, and the dependence of the servo's delay on amplitude.
Thrust costs propellant
A rocket pushes on the vehicle with the rate at which it gives momentum to the exhaust. Propellant leaves at kilograms per second with speed relative to the vehicle, so the momentum given per second is and the reaction on the vehicle is the same.
Define the specific impulse as (the unit is seconds) and solve for the flow. A more efficient engine has a higher and burns less for the same thrust.
With no other force, the thrust accelerates the vehicle. Replace by , since the vehicle loses what the exhaust carries away.
Integrate from the initial mass to the final mass. The speed gained depends only on the exhaust speed and the mass ratio, not on how fast the propellant is burnt.
A rate limit makes the delay depend on the size of the step
Take a step command of size (positive, below the position limit) and a servo at rest. Its demanded rate is , which at the start is . If that exceeds the rate limit, the servo ramps at until the demand has fallen to the limit.
The ramp ends when the error has shrunk to the value at which the lag asks for exactly the limit rate. For Hopper rad.
The time to ramp from zero to at the limit rate. For it is ms and the output is at 50% of the command.
After the ramp the servo is an ordinary first-order lag acting on the remaining error, which decays exponentially with time constant ms.
The time at which the output has reached 63% of the command, i.e. the error has fallen to 37% of . For : ms, against ms for a small step.
A rate limit is a nonlinearity that depends on amplitude. The bigger the command, the later the 63% point: from 25 ms for a small step to 32.5 ms at 0.15 rad. A controller that was tuned on small signals is slower, and has less phase margin, on large ones.
A worked example
Put the numbers of Hopper through the model.
- Propellant. At liftoff the vehicle weighs N, so hover needs a thrust of 1177 N. The flow is kg/s, and the 48 kg of propellant lasts 60 s at hover thrust.
- Delta-v budget. If all propellant could be used with no gravity, the rocket equation gives m/s. Hovering for the minute that the propellant lasts spends m/s of it against gravity, which is why the budget is tight even for a short hop.
- Authority. At liftoff rad/s² per rad. At burnout the hover thrust is N and rad/s² per rad, 40% lower.
- Servo. Simulate the gimbal with a step command and measure the time to 63% and 95% of the final value. Small steps give 25.0 ms and 74.8 ms, as the first-order lag predicts. A 0.15 rad step takes 32.7 ms to 63% and 82.5 ms to 95%, close to the 32.5 ms of the derivation (the simulation has a time step of 0.1 ms). A 0.30 rad command ends at the position limit of 0.15 rad and follows the same path.
- Conclusion. The servo is 30% slower on a large command, and the control moment shrinks 40% over a flight. Both are changes in the gain and the phase of the actuator that a linear design at one operating point does not see.
import math
from gnckit import Actuator, HOPPER, G0
P = HOPPER
isp, g = P['isp'], P['g']
hover_T = P['m0'] * g
print(f'liftoff hover thrust {hover_T:.0f} N, propellant flow {hover_T / (isp * G0):.2f} kg/s, burns {P["m0"] - P["m_dry"]:.0f} kg in {(P["m0"] - P["m_dry"]) * isp * G0 / hover_T:.0f} s')
print(f'Tsiolkovsky delta-v with all propellant: {isp * G0 * math.log(P["m0"] / P["m_dry"]):.0f} m/s')
for name, m in (('liftoff', P['m0']), ('empty tanks', P['m_dry'])):
T = m * g
print(f'{name:11s} m = {m:5.0f} kg: hover thrust {T:6.0f} N, pitch authority T l / J = {T * P["l"] / P["J"]:5.2f} rad/s^2 per rad of gimbal')
def response(step_size, dt=1e-4, t_end=0.4):
a = Actuator(P['act_wn'], P['delta_max'], P['delta_rate'])
ts, ys = [], []
for k in range(int(t_end / dt)):
ys.append(a.step(step_size, dt)); ts.append((k + 1) * dt)
return ts, ys
def time_to(ts, ys, level):
return next(t for t, y in zip(ts, ys) if y >= level)
print('gimbal step response (lag 40 rad/s, rate limit 3 rad/s, limit 0.15 rad):')
for cmd in (0.01, 0.05, 0.15, 0.30):
ts, ys = response(cmd)
final = min(cmd, P['delta_max'])
print(f' command {cmd:5.2f} rad: reaches 63% of its final value {1000 * time_to(ts, ys, 0.632 * final):5.1f} ms, 95% {1000 * time_to(ts, ys, 0.95 * final):5.1f} ms, ends at {ys[-1]:.3f}')liftoff hover thrust 1177 N, propellant flow 0.80 kg/s, burns 48 kg in 60 s Tsiolkovsky delta-v with all propellant: 751 m/s liftoff m = 120 kg: hover thrust 1177 N, pitch authority T l / J = 19.62 rad/s^2 per rad of gimbal empty tanks m = 72 kg: hover thrust 706 N, pitch authority T l / J = 11.77 rad/s^2 per rad of gimbal gimbal step response (lag 40 rad/s, rate limit 3 rad/s, limit 0.15 rad): command 0.01 rad: reaches 63% of its final value 25.0 ms, 95% 74.8 ms, ends at 0.010 command 0.05 rad: reaches 63% of its final value 25.0 ms, 95% 74.8 ms, ends at 0.050 command 0.15 rad: reaches 63% of its final value 32.7 ms, 95% 82.5 ms, ends at 0.150 command 0.30 rad: reaches 63% of its final value 32.7 ms, 95% 82.5 ms, ends at 0.150
In robotics
The same three-part treatment applies to every actuator, and the numbers differ.
- Multirotor motors. A rotor and its speed controller are a lag, typically of tens of milliseconds, with saturation at the largest and smallest thrust. A mixer that asks for more than the motors can give, in one direction, saturates it, and UAV M5-T2: Quadrotor dynamic modelling and the motor-mixing calculator show where. The motor lag is the inner loop of the cascade in M1-T2: Nested Loops and Separation of Timescales.
- Aircraft control surfaces. A servo moves an elevator or an aileron through hydraulics or an electric motor, with a bandwidth of some tens of rad/s, a rate limit and a travel limit. A pilot-induced or controller-induced oscillation in a large manoeuvre is the textbook failure of a rate limit that the design did not include.
- Spacecraft wheels and thrusters. A reaction wheel has a torque limit (how fast it can speed up) and a momentum limit (how fast it can spin). Both are saturations, and the second is permanent: once a wheel is full, it cannot absorb any more until it is unloaded (module 11).
- Engines and throttles. A throttle that cannot go to zero, or below some minimum, makes a "suicide burn" landing a tight scheduling problem. Hopper's engine can be shut off and its thrust is 0 to 2400 N.
- Finding the numbers. The parameters of a real actuator are measured by commanding steps of several sizes and fitting a model like the one above, which is system identification: see Robot Learning M7-T2: System Identification. The test with two sizes of step is the quickest way to discover a rate limit.
For a new vehicle, the first model to build is therefore a list: every force with what it depends on, every moment likewise, and for every actuator three numbers (bandwidth, rate limit, position limit). Writing the list down exposes what has been left out, and the controller designer needs all of it.
Common misconceptions
“The actuator is instant; I can treat the command as the force.”
It is a lag, a rate limit and a stop. Hopper's servo has a 25 ms time constant, which is a delay of the same size as the sensing and computing delays that the last lesson showed cost an unstable vehicle 7% error growth per 100 ms. Leave it out, and the model predicts a stability margin that the real vehicle does not have.
“Saturation only matters at the extremes.”
It changes the loop gain: while the actuator is saturated, the loop is open and the controller's integrator keeps growing. A loop that is stable for small signals can diverge as the signals grow. Module 3 treats this as windup and gives the cure.
“A rate limit is the same as a lower bandwidth.”
A bandwidth is linear and the same at every amplitude. A rate limit is not: it does nothing to small commands and slows large ones. A servo with a 40 rad/s bandwidth and a 3 rad/s rate limit looks 40 rad/s at 0.01 rad and slower than that at 0.15 rad.
“The control authority is fixed by the engine.”
It depends on the thrust and the inertia, and both change in flight. Hopper's authority falls 40% between liftoff and burnout, since the hover thrust is proportional to the mass. A gain that is right at liftoff is 1.67 times too high at burnout.
“Specific impulse is thrust per kilogram of propellant.”
It is thrust per unit weight flow of propellant, so its unit is seconds. The flow in kg/s is , and the factor is a unit conversion, not the local gravity: Hopper's at the range and the standard are different symbols for different jobs.
Key takeaways
- A force model lists each force and moment with what it depends on: weight , thrust along a tilted body axis, a gimbal moment and an aerodynamic moment .
- Thrust costs propellant: . Hopper burns 0.80 kg/s at hover and has about a minute of propellant.
- Pitch authority falls 40% from liftoff to burnout, from 19.6 to 11.8 rad/s² per rad.
- An actuator model has three numbers: bandwidth (40 rad/s), rate limit (3 rad/s) and position limit (0.15 rad). The last two are nonlinear.
- A rate limit makes the delay depend on the size of the command: the 63% time of Hopper's servo is 25 ms for small steps and 32.5 ms for 0.15 rad.
- Build the list of forces, moments and actuator numbers before designing the controller. What is missing from it is what the loop will not tolerate.
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.
- G. P. Sutton and O. Biblarz, Rocket Propulsion Elements, 9th edition, Wiley, 2016, the chapters on thrust and specific impulse. The standard text. Paid book.
- NASA, “Attitude Determination and Control Systems” (NTRS 20110007876) , for the actuators of a spacecraft and their limits. Free; public use permitted.
- K. J. Åström and R. M. Murray, Feedback Systems, 2nd edition, Princeton University Press, 2021 , the sections on saturation and on actuator models. Free to read as the authors' PDF; the book is copyrighted.
- B. L. Stevens, F. L. Lewis and E. N. Johnson, Aircraft Control and Simulation, 3rd edition, Wiley, 2016, the chapter on aircraft modelling, for force and moment coefficients and actuator models. Paid book.
Knowledge check
Three questions. Write an answer, then reveal the explanation. Your answers stay in your browser.
Question 1
Hopper has used some propellant and now weighs 100 kg. What thrust does it need to hover, how fast does it burn propellant, and how long can it hover on the 28 kg that remains?
Explanation
Hover thrust is m g = 100 × 9.81 = 981 N. The flow is T / (Isp g0) = 981 / (150 × 9.80665) = 0.667 kg/s. The 28 kg that remain (100 kg less the 72 kg dry mass) last 28 / 0.667 = 42 s. The flow falls as the mass does, so a long hover costs less per second late in the flight than at liftoff, and the remaining time is a little longer if the vehicle gets lighter.
Question 2
The gimbal is commanded to step by 0.12 rad. Is it rate limited, and for how long does it ramp?
Explanation
Yes. The demanded rate at the start is ωa × 0.12 = 40 × 0.12 = 4.8 rad/s, above the limit of 3 rad/s. The ramp ends when the error has fallen to rmax / ωa = 3 / 40 = 0.075 rad, which happens after t1 = (0.12 − 0.075) / 3 = 15 ms, with the gimbal at 0.045 rad. After that the servo is an ordinary first-order lag acting on the remaining 0.075 rad of error.
Question 3
A pitch controller is tuned by applying 0.01 rad gimbal steps and it behaves well. In a hard manoeuvre it commands 0.15 rad steps and starts to oscillate. Explain using the actuator model.
Explanation
For a small step the servo is a 25 ms lag, but for a 0.15 rad step it first ramps at the 3 rad/s rate limit, and the 63% time rises to 32.5 ms, a 30% increase in the delay. The extra delay costs the pitch loop phase margin, and the loop was designed on the small-signal lag. If the margin was thin, the larger delay is enough to make it oscillate. The fix is to include the rate limit in the design and the simulation, or to command smaller steps (for example, by limiting the demanded rate of the outer loop).
What’s next
Related content
Nothing below is required to finish this lesson.
- BeforeM2-T2: Rigid-Body Equations of Motion for Any Vehicle
Derive the translational and rotational equations in body axes with the transport theorem, and reduce them to the planar model of Hopper.
Other courses on this site treat neighbouring topics from their own angle:
- UAV M1-T4: UAV coordinate frames
- UAV M1-T5: Six-degree-of-freedom UAV dynamics
- UAV M5-T1: UAV equations of motion
- UAV M5-T2: Quadrotor dynamic modelling
- Linear Algebra M7-T3: Three-Dimensional Rotation Matrices
- Linear Algebra M7-T8: Euler Angles and Quaternions
- Linear Algebra M8-T4: Jacobian Matrices
- Navigation M1-T3: Robot Motion Models for Navigation
- Robot Learning M7-T2: System Identification
This course leaves the following to the pages that already teach them:
Get notified when the next lesson and new labs are released.
One email per new lesson or lab.