Chapter 6: Actuation and Drive Systems
Lesson 4: Pneumatic Actuation Principles
This lesson introduces pneumatic actuation from first principles. We model compressed-air power transmission, valve/orifice flow, and cylinder dynamics, emphasizing how air compressibility yields natural compliance and nonlinear pressure–flow behavior. We derive state-space models suitable for linear control design via local linearization, and we provide small simulation examples in Python, C++, Java, and MATLAB/Simulink.
1. Pneumatic Actuation in Robots: System View
Pneumatic actuators use compressed gas (typically air) to generate force or torque. Compared to hydraulics (Lesson 3), pneumatics are lighter, cleaner, and naturally compliant, but deliver lower force density due to limited working pressure and compressibility.
A canonical pneumatic servo axis contains: an air supply (compressor + reservoir), pressure regulation, directional/flow control valves, the actuator (cylinder or vane motor), and exhaust to atmosphere. Control closes the loop using position/pressure sensing.
flowchart TD
S["Compressor + Reservoir"] --> R["Filter/Regulator"]
R --> V["Proportional Valve"]
V --> C["Cylinder Chambers A/B"]
C --> M["Mechanical Load"]
C --> E["Exhaust to Atmosphere"]
P["Pressure Sensors"] --> U["Controller"]
X["Position Sensor"] --> U
U --> V
We now build mathematical models for each block, starting with compressed air physics.
2. Compressed Air as a Working Fluid
Air is well-approximated by the ideal gas law in normal pneumatic ranges: \( pV = mRT \), where \( p \) is absolute pressure, \( V \) chamber volume, \( m \) mass of air in the chamber, \( R \) gas constant (for air), and \( T \) absolute temperature.
Taking the time derivative gives a chamber pressure dynamics relationship. Start from \( p = \frac{mRT}{V} \). Then
\[ \dot p = \frac{RT}{V}\dot m + \frac{mR}{V}\dot T - \frac{mRT}{V^2}\dot V. \]
Pneumatic chambers often undergo a polytropic process \( pV^k = \text{const} \), with \( 1 \le k \le \gamma \) (isothermal to adiabatic), where \( \gamma \approx 1.4 \) for air. The polytropic relation implies a temperature–pressure coupling: \( T \propto p^{(k-1)/k} \). Substituting this into the derivative yields the standard chamber model:
\[ \boxed{ \dot p = \frac{kRT}{V}\,\dot m - \frac{k p}{V}\,\dot V } \]
Interpretation. The first term increases pressure when net mass flow \( \dot m \) is positive. The second term captures pressure drop due to volume expansion.
For a cylinder chamber whose volume depends on piston position \( x \), we will use \( \dot V = A\,\dot x \) (area times velocity).
3. Mass-Flow Through Valves and Orifices
The key nonlinearity in pneumatics is compressible flow through an orifice. Let upstream (supply) pressure be \( p_u \) and downstream (chamber) pressure be \( p_d \), with \( p_d < p_u \). Under quasi-steady, isentropic nozzle assumptions, the mass flow is
\[ \dot m = C_d A_o p_u \sqrt{ \frac{2\gamma}{RT_u(\gamma-1)} \left[ \left(\frac{p_d}{p_u}\right)^{2/\gamma} - \left(\frac{p_d}{p_u}\right)^{(\gamma+1)/\gamma} \right] }, \quad \text{if } \frac{p_d}{p_u} > \left(\frac{2}{\gamma+1}\right)^{\gamma/(\gamma-1)}. \]
When the pressure ratio becomes sufficiently small, flow becomes choked (sonic at the throat) and no longer increases with lower \( p_d \). The choked condition is \( \frac{p_d}{p_u} \le \left(\frac{2}{\gamma+1}\right)^{\gamma/(\gamma-1)} \), and the mass flow saturates:
\[ \dot m = C_d A_o p_u \sqrt{ \frac{\gamma}{RT_u} \left(\frac{2}{\gamma+1}\right)^{(\gamma+1)/(\gamma-1)} }. \]
Proof sketch (isentropic nozzle). Conservation of energy for isentropic steady flow gives \( h_u + \frac{v_u^2}{2} = h + \frac{v^2}{2} \), with \( h = c_p T \). Using isentropic relations \( \frac{T}{T_u} = \left(\frac{p}{p_u}\right)^{(\gamma-1)/\gamma} \) and defining Mach number \( M = v/a \), one obtains a flow rate function increasing with \( M \). Maximizing \( \dot m \) w.r.t. \( p_d/p_u \) yields the critical ratio above, occurring at \( M=1 \).
In control design, we often linearize around an operating point \( (p_u^0, p_d^0, A_o^0) \). Denote valve command by \( u \) with \( A_o \approx A_o^0 + K_A u \). Then for small deviations:
\[ \delta \dot m \approx K_q\,\delta u - K_p\,\delta p_d, \quad K_q = \left.\frac{\partial \dot m}{\partial u}\right|_0, \; K_p = -\left.\frac{\partial \dot m}{\partial p_d}\right|_0. \]
This local affine form creates a path to linear state-space models.
4. Cylinder Mechanics and Chamber Coupling
Consider a double-acting cylinder with chamber A (cap side) and chamber B (rod side). Let piston position be \( x \), positive to the right. Chamber volumes are
\[ V_A(x) = V_{A0} + A_p x, \qquad V_B(x) = V_{B0} + A_r (L-x), \]
where \( A_p \) is piston area, \( A_r \) rod-side area, \( L \) stroke length, and \( V_{A0},V_{B0} \) dead volumes.
The net actuator force on the piston is
\[ F = A_p p_A - A_r p_B - F_f(\dot x) - F_L, \]
with load force \( F_L \) and friction \( F_f(\dot x) = b\dot x + F_c\operatorname{sgn}(\dot x) \) (simple viscous + Coulomb model). Newton’s law:
\[ M\ddot x = A_p p_A - A_r p_B - b\dot x - F_c\operatorname{sgn}(\dot x) - F_L. \]
Using the chamber pressure model from Section 2:
\[ \dot p_A = \frac{kRT}{V_A(x)}\dot m_A - \frac{k p_A}{V_A(x)}A_p\dot x, \qquad \dot p_B = \frac{kRT}{V_B(x)}\dot m_B + \frac{k p_B}{V_B(x)}A_r\dot x. \]
Signs differ because increasing \( x \) expands A and compresses B.
State-space form. Let states be \( \mathbf{s} = [x,\; v,\; p_A,\; p_B]^\top \), with \( v=\dot x \). Then
\[ \begin{aligned} \dot x &= v,\\ \dot v &= \frac{1}{M}\big(A_p p_A - A_r p_B - b v - F_c\operatorname{sgn}(v) - F_L\big),\\ \dot p_A &= \frac{kRT}{V_A(x)}\dot m_A - \frac{kA_p}{V_A(x)}p_A v,\\ \dot p_B &= \frac{kRT}{V_B(x)}\dot m_B + \frac{kA_r}{V_B(x)}p_B v. \end{aligned} \]
This nonlinear model is the basis for control and simulation. Since you know linear control, we next show how to linearize it locally.
5. Local Linear Model Around an Equilibrium
Assume an equilibrium \( v_0=0 \), constant load \( F_L^0 \), and nominal pressures \( p_A^0, p_B^0 \) satisfying \( A_p p_A^0 - A_r p_B^0 = F_L^0 \). Linearize the dynamics with \( \delta\mathbf{s} = \mathbf{s}-\mathbf{s}_0 \) and valve flow deviations \( \delta \dot m_A,\delta \dot m_B \).
Using the linearized valve model \( \delta\dot m_A \approx K_{qA}\delta u - K_{pA}\delta p_A \) and similarly for B, the linearized state equation becomes \( \delta\dot{\mathbf{s}} = \mathbf{A}\delta\mathbf{s} + \mathbf{B}\delta u \). Writing key entries explicitly:
\[ \mathbf{A} \approx \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & -\frac{b}{M} & \frac{A_p}{M} & -\frac{A_r}{M} \\ -\frac{kA_p p_A^0}{V_A^0} & 0 & -\frac{kRT}{V_A^0}K_{pA} & 0 \\ \frac{kA_r p_B^0}{V_B^0} & 0 & 0 & -\frac{kRT}{V_B^0}K_{pB} \end{bmatrix}, \quad \mathbf{B} \approx \begin{bmatrix} 0\\ 0\\ \frac{kRT}{V_A^0}K_{qA}\\ \frac{kRT}{V_B^0}K_{qB} \end{bmatrix}. \]
Controllability note. If \( K_{qA} \neq 0 \) and/or \( K_{qB} \neq 0 \), pressure states are directly actuated, and because pressures couple into acceleration, the pair \( (\mathbf{A},\mathbf{B}) \) is locally controllable in typical operating regions (rank of controllability matrix equals 4).
6. Why Pneumatics Feel “Springy”: Stiffness and Energy
Because air is compressible, a pneumatic chamber stores potential energy and produces an effective stiffness. Consider a single chamber with constant mass (no flow), polytropic process \( pV^k = C \). The pressure as a function of volume is \( p(V)=C V^{-k} \). The energy stored is the integral of work:
\[ U(V) = \int_{V_0}^{V} p(\xi)\,d\xi = \int_{V_0}^{V} C \xi^{-k}\,d\xi = \frac{C}{1-k}\big(V^{1-k}-V_0^{1-k}\big). \]
Using \( C=pV^k \), this can be written as \( U = \frac{pV}{k-1} - \frac{p_0V_0}{k-1} \). Thus,
\[ \boxed{U \propto pV} \]
which is analogous to a spring’s stored energy.
The incremental stiffness for a chamber pushing on a piston with area \( A \) is \( K = \frac{dF}{dx} \), where \( F = Ap \) and \( V = V(x) \). Since \( p=C V^{-k} \):
\[ \frac{dp}{dx} = \frac{dp}{dV}\frac{dV}{dx} = (-k) C V^{-k-1} A = -k\frac{p}{V}A. \]
Therefore
\[ \boxed{ K = \frac{dF}{dx} = A\frac{dp}{dx} = -k\frac{A^2}{V}p } \]
The negative sign indicates force decreases as volume increases; stiffness magnitude is \( kA^2p/V \). Higher pressure and smaller trapped volume yield stiffer behavior.
7. Python Example — Nonlinear Cylinder with a Proportional Valve
We simulate a simplified single-ended cylinder (one active chamber, one
vented) using numpy, scipy, and optionally
control for linearization.
import numpy as np
from scipy.integrate import solve_ivp
# Parameters
M = 2.0 # kg
A = 3.0e-4 # m^2 piston area
V0 = 2.0e-5 # m^3 dead volume
k = 1.2 # polytropic exponent
R = 287.0 # J/(kg K)
T = 293.0 # K
b = 15.0 # N s/m viscous friction
p_atm = 101325.0 # Pa
# Valve/orifice simplified flow model: mdot = Kq*u - Kp*(p - p_atm)
Kq = 1.3e-4 # kg/s per unit input
Kp = 2.0e-9 # kg/(s Pa)
def dynamics(t, s):
x, v, p = s
V = V0 + A*x
u = 1.0 if t >= 0.05 else 0.0 # step command
mdot = Kq*u - Kp*(p - p_atm)
# Pressure dynamics
pdot = (k*R*T/V)*mdot - (k*p/V)*(A*v)
# Mechanical dynamics
F = A*p - b*v
vdot = F/M
xdot = v
return [xdot, vdot, pdot]
s0 = [0.0, 0.0, p_atm] # initial position, velocity, pressure
sol = solve_ivp(dynamics, [0, 0.4], s0, max_step=1e-3)
x = sol.y[0]
v = sol.y[1]
p = sol.y[2]
print("Final position (m):", x[-1])
print("Final pressure (kPa):", p[-1]/1000.0)
This minimal model ignores choked flow and second chamber coupling, but matches the derived structure.
8. C++ Example — Forward Euler Pneumatic Axis
A lightweight simulation loop (use Eigen if you want matrix
linearization later).
#include <iostream>
#include <cmath>
int main() {
// Parameters
const double M = 2.0; // kg
const double A = 3.0e-4; // m^2
const double V0 = 2.0e-5; // m^3
const double k = 1.2;
const double R = 287.0;
const double T = 293.0;
const double b = 15.0;
const double p_atm = 101325.0;
const double Kq = 1.3e-4;
const double Kp = 2.0e-9;
// State
double x = 0.0, v = 0.0, p = p_atm;
// Integration
const double dt = 1e-4;
const double tf = 0.4;
for (double t = 0.0; t < tf; t += dt) {
double V = V0 + A*x;
double u = (t >= 0.05) ? 1.0 : 0.0;
double mdot = Kq*u - Kp*(p - p_atm);
double pdot = (k*R*T/V)*mdot - (k*p/V)*(A*v);
double F = A*p - b*v;
double vdot = F/M;
x += v*dt;
v += vdot*dt;
p += pdot*dt;
}
std::cout << "Final x = " << x << " m\n";
std::cout << "Final p = " << p/1000.0 << " kPa\n";
return 0;
}
9. Java Example — Discrete-Time Pneumatic Simulation
Java version using simple discrete integration (Apache Commons Math ODE solvers are optional).
public class PneumaticAxisSim {
public static void main(String[] args) {
double M = 2.0, A = 3.0e-4, V0 = 2.0e-5, k = 1.2;
double R = 287.0, T = 293.0, b = 15.0;
double pAtm = 101325.0, Kq = 1.3e-4, Kp = 2.0e-9;
double x = 0.0, v = 0.0, p = pAtm;
double dt = 1e-4, tf = 0.4;
for (double t = 0.0; t < tf; t += dt) {
double V = V0 + A*x;
double u = (t >= 0.05) ? 1.0 : 0.0;
double mdot = Kq*u - Kp*(p - pAtm);
double pdot = (k*R*T/V)*mdot - (k*p/V)*(A*v);
double F = A*p - b*v;
double vdot = F/M;
x += v*dt;
v += vdot*dt;
p += pdot*dt;
}
System.out.println("Final x (m): " + x);
System.out.println("Final p (kPa): " + p/1000.0);
}
}
10. MATLAB/Simulink Example — Linearized Model for Control
MATLAB script to form the linearized state-space model of Section 5 and simulate a step input. In Simulink, implement the nonlinear equations using Integrator blocks.
% Parameters
M = 2.0; A_p = 3e-4; A_r = 3e-4;
V_A0 = 2e-5; V_B0 = 2e-5;
k = 1.2; R = 287; T = 293;
b = 15; pA0 = 101325; pB0 = 101325;
KqA = 1.3e-4; KpA = 2.0e-9;
KqB = 1.3e-4; KpB = 2.0e-9;
% Linearized matrices
A = [ 0 1 0 0;
0 -b/M A_p/M -A_r/M;
-k*A_p*pA0/(V_A0) 0 -(k*R*T/V_A0)*KpA 0;
k*A_r*pB0/(V_B0) 0 0 -(k*R*T/V_B0)*KpB ];
B = [0; 0; (k*R*T/V_A0)*KqA; (k*R*T/V_B0)*KqB ];
C = eye(4); D = zeros(4,1);
sys = ss(A,B,C,D);
t = 0:1e-3:0.4;
u = double(t >= 0.05); % step
y = lsim(sys, u, t);
plot(t, y(:,1)); grid on;
xlabel('Time (s)'); ylabel('x (m)');
title('Linearized Pneumatic Axis Step Response');
11. Problems and Solutions
Problem 1 (Chamber Pressure Dynamics): Starting from the ideal gas law \( pV=mRT \), and assuming a polytropic process with exponent \( k \), derive the pressure dynamics \( \dot p = \frac{kRT}{V}\dot m - \frac{k p}{V}\dot V \).
Solution:
Write \( p=\frac{mRT}{V} \) and differentiate:
\[ \dot p = \frac{RT}{V}\dot m + \frac{mR}{V}\dot T - \frac{mRT}{V^2}\dot V. \]
For polytropic processes, \( T \propto p^{(k-1)/k} \), implying \( \frac{\dot T}{T} = \frac{k-1}{k}\frac{\dot p}{p} \). Substitute into the derivative and solve for \( \dot p \):
\[ \dot p - \frac{k-1}{k}\dot p = \frac{RT}{V}\dot m - \frac{p}{V}\dot V \quad\Rightarrow\quad \dot p = \frac{kRT}{V}\dot m - \frac{k p}{V}\dot V. \]
Problem 2 (Choked vs. Subsonic Flow): For air with \( \gamma=1.4 \), compute the critical pressure ratio. Decide if a valve with \( p_u=600\text{ kPa} \) and \( p_d=250\text{ kPa} \) is choked.
Solution:
The critical ratio is \( r_c=\left(\frac{2}{\gamma+1}\right)^{\gamma/(\gamma-1)} \).
\[ r_c = \left(\frac{2}{2.4}\right)^{1.4/0.4} = (0.8333)^{3.5} \approx 0.528. \]
Actual ratio: \( p_d/p_u = 250/600 \approx 0.417 \). Since \( 0.417 < 0.528 \), the flow is choked.
Problem 3 (Effective Stiffness): A sealed chamber at pressure \( p \) drives a piston (area \( A \)) with trapped volume \( V \) and polytropic exponent \( k \). Derive the stiffness magnitude \( |K| = kA^2p/V \).
Solution:
With \( pV^k=C \Rightarrow p=C V^{-k} \) and \( V(x)=V_0+Ax \),
\[ \frac{dp}{dx} = \frac{dp}{dV}\frac{dV}{dx} = (-k)C V^{-k-1}A = -k\frac{p}{V}A. \]
Force \( F=Ap \), so \( K=\frac{dF}{dx}=A\frac{dp}{dx}=-k\frac{A^2}{V}p \). Hence \( |K|=kA^2p/V \).
Problem 4 (Equilibrium Pressures): A double-acting cylinder has areas \( A_p=4\times 10^{-4}\,m^2 \) and \( A_r=3\times 10^{-4}\,m^2 \). If a constant load \( F_L=120\,N \) is to be held at rest with \( p_B^0=200\,kPa \), find \( p_A^0 \).
Solution:
Rest equilibrium requires \( A_p p_A^0 - A_r p_B^0 = F_L \).
\[ p_A^0 = \frac{F_L + A_r p_B^0}{A_p} = \frac{120 + (3\times10^{-4})(200\times10^3)}{4\times10^{-4}} = \frac{120 + 60}{4\times10^{-4}} = \\ \frac{180}{4\times10^{-4}} = 450\times10^3\,Pa = 450\,kPa. \]
12. Summary
We modeled pneumatic actuation by combining (i) ideal-gas thermodynamics for chamber pressure, (ii) compressible valve/orifice flow with choked saturation, and (iii) Newtonian piston mechanics. The resulting nonlinear state model was locally linearized into a form usable with standard linear control tools. Pneumatic compliance emerges naturally from air compressibility, yielding an effective stiffness proportional to \( kA^2p/V \).
13. References
- Shearer, J.L. (1956). Study of pneumatic processes in the continuous control of motion with compressed air. Transactions of the ASME, 78, 233–242.
- Richer, E., & Hurmuzlu, Y. (2000). A high performance pneumatic force actuator system: Part I—Nonlinear mathematical model. Journal of Dynamic Systems, Measurement, and Control, 122(3), 416–425.
- Bobrow, J.E., & McDonell, B.W. (1998). Modeling, identification, and control of a pneumatically actuated, force-controllable robot. IEEE Transactions on Robotics and Automation, 14(5), 732–742.
- Belforte, G., Eula, G., Ivanov, A., & Sirolli, S. (2004). Dynamic modeling of pneumatic servo systems: A thermodynamic approach. Mechatronics, 14(5), 507–531.
- Van Vliet, R., & Krut, S. (2007). On the passivity and stability of compressible-fluid actuation. International Journal of Control, 80(9), 1427–1440.
- Pohl, J., & Lenz, J. (2012). Nonlinear control-oriented models for proportional pneumatic valves. Control Engineering Practice, 20(8), 856–867.