categories: robotics, automation & robotics, control theory
New sub-topic: the object that basically every control-systems tool (Bode plots, Nyquist, PID tuning, stability analysis) is built on top of — the transfer function $$G(s)$$. Before deriving one, it's worth being clear on what problem it's actually solving.
Why G(s) exists at all
A transfer function is an algebraic representation of a system's dynamics in the frequency (Laplace) domain, assuming zero initial conditions. The whole point: it turns a differential equation — something you generally can't just divide or multiply your way through — into an ordinary algebraic fraction, $$G(s)=Y(s)/U(s)$$. Once your system is a fraction of polynomials in $$s$$ instead of a differential equation, a whole toolbox opens up that would otherwise require solving ODEs by hand every time: reading off stability directly from where the poles sit, plotting frequency-response curves (Bode, Nyquist) without simulating a single time-domain signal, and tuning PID gains algebraically instead of by pure trial and error. This is the single biggest reason control engineers work in $$s$$ instead of $$t$$.
Task: deriving G(s) from a real physical system
Object: a planar mass-spring-damper mechanical system — this exact model also stands in for a huge range of other real objects (a suspension, a robot joint with elastic coupling, a vibration-damped sensor mount).
Step 1 — write the differential equation of motion (Newton's second law). An external forcing input $$F(t)$$ (this is our input $$u(t)$$) acts on mass $$m$$, opposed by the spring force $$F_k=k\cdot x(t)$$ and the damping force $$F_b=b\cdot\dot x(t)$$. The system's output is the mass's position $$x(t)$$: $$m\frac{d^2x(t)}{dt^2}+b\frac{dx(t)}{dt}+kx(t)=F(t)$$
Step 2 — apply the Laplace transform. With zero initial conditions ($$x(0)=0$$, $$\dot x(0)=0$$), differentiation in time becomes plain multiplication by $$s$$ in the Laplace domain — $$\frac{d}{dt}\to s$$, $$\frac{d^2}{dt^2}\to s^2$$. This is the entire mechanism that lets you skip solving the ODE directly: $$ms^2X(s)+bsX(s)+kX(s)=F(s)$$
Step 3 — solve for G(s)=X(s)/F(s). Factor $$X(s)$$ out and divide output by input: $$X(s)\big(ms^2+bs+k\big)=F(s) \implies G(s)=\frac{X(s)}{F(s)}=\frac{1}{ms^2+bs+k}$$ Dividing numerator and denominator by $$k$$ puts this into the standard canonical second-order form you'll see in every textbook, with a static gain $$K_{st}$$, natural frequency $$\omega_n$$, and damping ratio $$\zeta$$: $$G(s)=\frac{1/k}{\frac{m}{k}s^2+\frac{b}{k}s+1}=\frac{K_{st}}{\frac{1}{\omega_n^2}s^2+\frac{2\zeta}{\omega_n}s+1}$$ Once it's in this form, $$\omega_n$$ and $$\zeta$$ alone tell you everything about how the system responds — how fast it oscillates, whether it overshoots, how long it takes to settle — all without ever touching the time-domain differential equation again.
Same three-step recipe every time a physical system needs a transfer function: write $$F=ma$$ (or the equivalent balance law for your domain — Kirchhoff's laws for circuits, heat balance for thermal systems), Laplace-transform it with zero initial conditions, then solve for output over input. Next post: this exact $$G(s)$$ won't run as-is on a microcontroller — you'll see why, and how to convert it into code. Thank you for reading!
Read more