3.5.54Guidance, Navigation & Control (GNC)

Terminal descent — velocity vector alignment, touchdown constraints

2,114 words10 min readdifficulty · medium

WHAT is terminal descent?

WHY these four? A lander with the right position but sideways velocity will scrape a leg and topple. Right velocity but tilted body means thrust has a horizontal component you can't kill in time. So position and velocity and attitude must converge together.


HOW we build the guidance law from first principles

We want the vehicle to reach a desired state at time tft_f. Model the vehicle as a point mass (attitude handled by a faster inner loop):

r¨=acmd+g\ddot{\mathbf{r}} = \mathbf{a}_{cmd} + \mathbf{g}

Sign / definition convention (fix this in your head now): acmd\mathbf{a}_{cmd} is the net commanded acceleration the vehicle should experience, and gravity g=(0,0,g)\mathbf g=(0,0,-g) is added separately in the dynamics. This means the thrust acceleration the engine must physically produce is athrust=acmd\mathbf a_{thrust}=\mathbf a_{cmd} (gravity is NOT re-added here) — the whole point of the g-\mathbf g term inside the formula below is that acmd\mathbf a_{cmd} already contains the gravity-cancelling contribution. So: acmd=Tm,r¨=Tmacmd+g.\mathbf{a}_{cmd}=\frac{\mathbf T}{m},\qquad \ddot{\mathbf r}=\underbrace{\frac{\mathbf T}{m}}_{\mathbf a_{cmd}}+\mathbf g . Keep this straight: the engine supplies exactly acmd\mathbf a_{cmd}, no more.

Step 1 — Ask: what trajectory shape can hit both a position and a velocity target?

Why this step? A single straight line only lets us aim position. To pin position AND velocity at tft_f we need enough free parameters. A constant acceleration gives us exactly the freedom we need.

Assume constant commanded acceleration a\mathbf{a} over the remaining time-to-go tgo=tftt_{go}=t_f-t:

r(tf)=r+vtgo+12(a+g)tgo2\mathbf{r}(t_f)=\mathbf{r}+\mathbf{v}\,t_{go}+\tfrac12(\mathbf{a}+\mathbf{g})\,t_{go}^2 v(tf)=v+(a+g)tgo\mathbf{v}(t_f)=\mathbf{v}+(\mathbf{a}+\mathbf{g})\,t_{go}

Step 2 — Impose the two boundary conditions r(tf)=rf\mathbf{r}(t_f)=\mathbf{r}_f, v(tf)=vf\mathbf{v}(t_f)=\mathbf{v}_f.

From the velocity equation: a+g=vfvtgo\mathbf{a}+\mathbf{g}=\frac{\mathbf{v}_f-\mathbf{v}}{t_{go}}

Substitute into the position equation and solve. This is over-determined with only a constant a\mathbf a, so we allow a\mathbf a to vary linearly in time (add one more free vector). Doing the algebra (this is the classic E-guidance / two-point boundary value result):

Derivation check of the coefficients: With a linear-in-time acceleration a(t)=c0+c1τ\mathbf a(t)=\mathbf c_0+\mathbf c_1\tau (τ\tau measured from now), integrating and matching the four scalar boundary conditions per axis gives the numbers 66 and 22. (Verified in the VERIFY block by integrating and confirming r(tf),v(tf)\mathbf r(t_f),\mathbf v(t_f) hit targets.)

Step 3 — Velocity vector alignment. For a vertical soft touchdown choose vf=(0,0,vtd),vtd12 m/s.\mathbf{v}_f=(0,\,0,\,-v_{td}),\qquad v_{td}\approx 1\text{–}2\ \text{m/s}. The horizontal components of vf\mathbf v_f are zero, forcing the velocity vector to rotate to vertical as tgo0t_{go}\to 0.


Touchdown constraints (the inequalities that must ALL hold)

WHY a tilt limit? A lander tips if its velocity + tilt push the center of mass outside the footprint of the legs. Geometrically, stability requires θ+arctan ⁣vhvtdθtip\theta + \arctan\!\frac{v_h}{v_{td}} \lesssim \theta_{tip} i.e. both a slow horizontal drift and a small body tilt.

Figure — Terminal descent — velocity vector alignment, touchdown constraints

Worked Examples


Common Mistakes (Steel-manned)


Active Recall

Why must position AND velocity be targeted in terminal descent?
A right position with wrong velocity vector causes skid/topple; soft landing pins both endpoints — a two-point boundary value problem.
Write the soft-landing guidance acceleration.
acmd=6tgo2(rfr)2tgo(2v+vf)g\mathbf a_{cmd}=\frac{6}{t_{go}^2}(\mathbf r_f-\mathbf r)-\frac{2}{t_{go}}(2\mathbf v+\mathbf v_f)-\mathbf g
What does the g-\mathbf g term do and where does it live?
It cancels the +g+\mathbf g in r¨=acmd+g\ddot{\mathbf r}=\mathbf a_{cmd}+\mathbf g; it is folded inside acmd\mathbf a_{cmd}, so the engine produces exactly T/m=acmd\mathbf T/m=\mathbf a_{cmd} (do not add gg again).
Does the engine supply acmda_{cmd} or acmd+ga_{cmd}+g?
Exactly acmda_{cmd}: T/m=acmd\mathbf T/m=\mathbf a_{cmd}, because the g-\mathbf g inside the formula already handles gravity compensation.
Where do the coefficients 6 and 2 come from?
Matching a linear-in-time acceleration to the four position+velocity boundary conditions per axis.
What happens as tgo0t_{go}\to 0?
The 1/tgo21/t_{go}^2 gain diverges → infinite thrust; must floor tgot_{go} or hand off to a hover-drop.
Name the touchdown envelope constraints.
Vertical speed, horizontal speed, tilt angle, angular rate, and position-within-pad — all AND-constraints.
Why a tilt-angle limit?
To keep the CoM inside the leg footprint so combined tilt + drift don't tip the lander.
What is velocity vector alignment?
Rotating velocity to nearly vertical (horizontal components → 0, vertical → small vtd-v_{td}) at touchdown.
Recall Feynman: explain to a 12-year-old

Imagine landing a drone on a tiny box. You don't want to slam into it or slide off. So in the last few seconds you slow down until you're barely moving, make sure you're going straight down (not sideways), and keep the drone standing up straight — and you do all three at once, right when you touch. The math just says: "how hard should I push, given how far I still have to go and how fast I'm still moving?" Push harder if far/fast. And here's the key: the formula already includes the extra push needed to fight gravity — so the motor just does what the formula says, you don't tack on gravity a second time.

Connections

  • Powered Descent Guidance (PDG) — earlier phase feeding into terminal descent
  • Proportional Navigation — contrast: aims position only, not velocity
  • Attitude Control & Inner Loop — enforces the tilt/rate limits
  • Time-to-go Estimation — the tgot_{go} that appears in every gain
  • Convex Optimization Landing (lossless convexification) — modern alternative honoring thrust bounds

Concept Map

requires

requires

requires

requires

else

else

else

modeled by

contains

equals

assume

hits both pos and vel

over-determined needs

Terminal descent

Position to pad

Velocity alignment down

Attitude upright

Timing at tf

Tip skid crash

Point-mass dynamics

a_cmd net commanded accel

Thrust T over m

Constant accel over t_go

Boundary conditions r_f v_f

Linearly varying accel

Hinglish (regional understanding)

Intuition Hinglish mein samjho

Dekho, terminal descent matlab landing ke last few seconds. Yahan sirf pad pe pahunchna kaafi nahi hai — vehicle ka velocity vector bhi seedha neeche point karna chahiye aur speed almost zero honi chahiye, warna lander sideways skid karke gir jaayega. Isliye hum ek "two-point boundary value problem" solve karte hain: position bhi target karo aur velocity bhi target karo, dono ek saath tft_f pe milne chahiye.

Guidance law ka formula hai acmd=6tgo2(rfr)2tgo(2v+vf)ga_{cmd}=\frac{6}{t_{go}^2}(\mathbf r_f-\mathbf r)-\frac{2}{t_{go}}(2\mathbf v+\mathbf v_f)-\mathbf g. Pehla term position gap band karta hai, doosra term current velocity ko desired final velocity ki taraf le jaata hai. Ab important baat: g-\mathbf g term already acmda_{cmd} ke andar hai — matlab engine ko exactly T/m=acmdT/m=a_{cmd} produce karna hai, gravity ko dobara add mat karo. Dynamics hai r¨=acmd+g\ddot{\mathbf r}=a_{cmd}+\mathbf g, aur formula ka g-\mathbf g us +g+\mathbf g ko cancel karta hai.

Touchdown constraints ek saath satisfy hone chahiye (AND conditions): vertical speed limit se kam, horizontal drift bahut kam, body ka tilt angle chhota, angular rate low, aur pad ke andar. Agar tilt aur sideways drift dono milke center of mass ko legs ke bahar dhakel de to lander topple ho jaayega — isiliye velocity vector ko vertical rotate karna zaroori hai.

Ek important trap: jaise-jaise tgo0t_{go}\to0, gain 1/tgo21/t_{go}^2 infinity ki taraf jaata hai — thrust saturate ho jaayega. Isliye practical mein hum tgot_{go} ko floor karte hain ya last thodi height pe ek simple hover-then-drop pe switch kar dete hain. Mantra: SLOW, STRAIGHT, STEADY, ON-TIME, ON-PAD.

Go deeper — visual, from zero

Test yourself — Guidance, Navigation & Control (GNC)

Connections