Marine robotics · Guidance, navigation and control

Line-of-Sight (LOS) Path Following

See why a lookahead point turns cross-track error into a desired course, how a heading controller drives the vehicle toward the path, and what changes when the lookahead distance, steering limits or water current change.

Offline · Single HTML file · Student laboratory

1 · Choose a scenario

Presets reset the experiment

2 · LOS geometry and vehicle motion

t = 0.0 s / 120 s
Desired pathVehicle trajectoryLOS point and rayCross-track errorDesired course

3 · Error, Lyapunov candidate and its derivative

Gray = saved reference run

Interpretation: This is a kinematic USV with heading-rate limits, not a hydrodynamic model. The tangent-line LOS preview is generally not exactly on a curved path. The Lyapunov quantity below measures geometric cross-track error only, not all vehicle dynamics.

Suggested student experiments

15–20 minutes
  1. Lookahead: run straight-line convergence with Δ = 5 m and save the trace. Reset and compare with Δ = 30 m. Which has a larger near-path time constant?
  2. Control lag: lower yaw-rate limit to 10°/s. Does a very short lookahead still give the smoothest response?
  3. Why LOS? switch to “Path tangent” from an off-path initial position. Does following the path heading eliminate cross-track error?
  4. Cross-current: apply +0.8 m/s north current. Compare uncompensated heading guidance against current-compensated LOS. Is χ equal to ψ?
  5. Lyapunov: find a period where V̇ > 0 during heading transients. Why does ideal geometric LOS analysis not immediately prove stability of the full heading-controlled USV?

Instructor prompt

Reveal after prediction

Why doesn't a very large Δ converge quickly? The LOS guidance direction changes only weakly with eᵧ, so the vehicle steers gently and the lateral error usually decreases more slowly. With a very small Δ, correction is more aggressive but yaw-rate limits can produce overshoot or oscillation.

Tip: pause and click the map to reposition the USV, then press Start. Space = play/pause · R = reset.