RidgeFlow: a DWA with nothing to tune

A flow-matching model paints a ridge from start to goal. A walker with no goal term and no weights follows it. The model runs in your browser. Drag the obstacles, start or goal and watch the walker (green) find a way out of traps where a classic DWA (red) gets stuck circling.

Loading model…

Ridge walker

–

DWA

–
Scenes

Drag a box, the start (○) or the goal (★) to move it. Drag on empty space to draw a new box. Double-click a box to delete it.

What is happening

The network (a 12.7M-parameter U-Net trained with rectified flow on RRT* demonstrations) takes the 64×64 occupancy grid and the two endpoints and returns a heatmap H: a Gaussian ridge laid along a feasible route. It is sampled in 4 steps.

The walker is a DWA whose objective is the ridge itself. Each step it fans candidates over the half-plane ahead, drops the ones that hit an obstacle, moves to the one that explains the most remaining ridge energy, and subtracts its own footprint. Ridge it has already covered stops attracting it, so there is no goal term and nothing to oscillate back to. Every constant comes from the model or the grid.

A sampled ridge is occasionally broken. The demo draws ridge samples in batches of 4 and shows only a ridge that is connected from start to goal, trying up to 24 samples. The status line says which sample was used.

The DWA only knows the direction to the goal, clearance and speed, so even with tuned weights it drives into dead ends and circles there.

Code: github.com/Rin-Li/ridgeflow