[{"title":"LiDAR Odometry","date":"2026-05-28","tags":["slam","lidar","perception"],"kind":"notes","slug":"lidar-odometry","body":"\nLiDAR odometry estimates a sensor's motion by aligning consecutive point-cloud\nscans. Each new scan is matched against a reference — the previous scan or a local\nmap — and the rigid transform that best aligns them is the frame-to-frame motion.\nIntegrate those transforms and you have a trajectory.\n\nThe matching step is exactly [[point-cloud-registration]]: the odometry front-end is a\nregistration problem solved fast enough to run online. Modern systems fuse an IMU to\nconstrain the optimization (LiDAR-inertial odometry), which keeps the registration\nwell-conditioned during fast motion and feature-poor scenes.\n\n## Why it is hard\n\n- Scans are sparse and unstructured, so naive nearest-neighbour matching is costly.\n- Drift accumulates: small per-frame errors compound over a long trajectory.\n- Degenerate geometry (long corridors, open fields) leaves the alignment\n  under-constrained along some axes.\n\nMost of the engineering effort goes into making [[point-cloud-registration]] both\nrobust and cheap enough to close the loop every frame.\n","readingTimeMins":1,"url":"https://ai.thesatyajit.com/notes/lidar-odometry"},{"title":"Point Cloud Registration","date":"2026-05-28","tags":["registration","lidar","geometry"],"kind":"notes","slug":"point-cloud-registration","body":"\nPoint-cloud registration finds the rigid transform — rotation and translation —\nthat best aligns two overlapping point clouds. It is the core geometric primitive\nbehind mapping, scan stitching, and the front-end of [[lidar-odometry]].\n\n## The classic recipe\n\nIterative Closest Point (ICP) alternates two steps until convergence:\n\n1. **Correspondence** — for each source point, find its nearest target point.\n2. **Alignment** — solve for the transform that minimizes the residual (point-to-point\n   or, faster-converging, point-to-plane).\n\nVariants improve every part of this loop: better correspondences (normals, features),\nrobust losses (to reject outliers), and voxel or KD-tree acceleration so the\nnearest-neighbour search is not the bottleneck.\n\n## In practice\n\nReal systems seed ICP with a coarse global alignment or an IMU prior so it converges\nto the right basin. When registration runs every frame against a sliding local map,\nit becomes [[lidar-odometry]] — same math, tighter time budget.\n","readingTimeMins":1,"url":"https://ai.thesatyajit.com/notes/point-cloud-registration"}]