Each follower i tracks the vehicle ahead with a constant time-gap spacing policy: the desired bumper-to-bumper gap grows with speed, sdes = s₀ + h·vi. A linear feedback law converts the spacing error and closing rate into an acceleration command:
e_i = (x_{i-1} - x_i - L) - (s₀ + h·v_i) spacing error
ė_i = v_{i-1} - v_i closing-rate error
a_i = k_p·e_i(t-τ) + k_d·ė_i(t-τ) [ACC]
a_i = k_p·e_i(t-τ) + k_d·ė_i(t-τ) + a_{i-1}(t-τ_ff) [CACC]
This 2D view runs the identical control law as the 3D platoon (ported verbatim — same kp, kd, feed-forward lag τff≈0.05s, actuator saturation), so the numbers agree exactly; only the rendering differs. Under ACC, every signal is delayed by the lag τ on the slider, so each vehicle over-reacts to what the one ahead already did — unless h is generously large, the correction overshoots and the next vehicle overshoots more, amplifying a single brake pulse down the string. Under CACC, every vehicle also receives the leader's actual acceleration command over V2V (τff≈0.05s) and feeds it forward directly, breaking the delay-driven amplification chain.
- Top lane view — drag horizontally to pan the camera along the road; it otherwise auto-follows the platoon's centre of mass. Car colour interpolates blue→red with spacing error.
- Speed trace — lead vs. every follower's speed over the last few seconds; a brake pulse under ACC visibly grows in amplitude toward the rear.
- Spacing-error bars — one bar per follower, signed (ahead of desired gap vs. behind), refreshed every frame; watch the bars grow toward the back of the platoon when unstable.
- Platoon length and brake severity are 2D-only extra parameters: a longer platoon under ACC amplifies a disturbance more (more links in the delay chain), and a harder brake pulse tests saturation at the same amin=−6 m/s² actuator limit.