Robot pipeline — at a glance
This is the first MDX-authored tutorial in the portfolio. It exists to
prove out the toolchain: the page is a .mdx file, server-rendered by
Next.js, with the shared <Callout/>, <Equation/> and <Figure/>
components automatically available.
SLAM (occupancy grid)
The robot fires a 60-ray LiDAR every tick. Each ray either terminates at
a wall (the "hit" cell) or travels its full range. The grid update is a
Bresenham trace from the robot to the hit point that marks each cell along
the ray as FREE, then the hit cell as OCCUPIED (when applicable).
P(occ | z) ∝ P(z | occ) · P(occ) // log-odds form
NDT scan-matching
Normal Distributions Transform models the existing map as a grid of
Gaussian cells. The scan is shifted by (dx, dy, dθ) to maximise the
log-likelihood of the transformed scan points under the cell distributions.
A* path search
Eight-connected grid A* with an inflated Manhattan heuristic and an EDT
clearance penalty. The new findPathYieldable generator
(PR6) lets the demo animate the open / closed sets per RAF.
MPCC tracking
Sequential Quadratic Programming optimises a horizon-length window of control inputs to minimise contour error and maximise progress along the arc-length-parameterised reference.