glass-lio courseLesson 7 › Reference card

Reference card · Lesson 7

Planes and degeneracy

One skill, used twice: reading the smallest eigenvalue of a 3×3 matrix.

This tests pure translation with rotation fixed. Passing it does not certify full pose observability. The threshold rejects scans only in the loose path.

Key equations

Warm-up, from memory

$$ \mathbf{J} = \begin{bmatrix}\mathbf{n}^{\top} & (\mathbf{q}\times\mathbf{n})^{\top}\end{bmatrix}, \qquad \mathbf{H} \leftarrow \mathbf{H} + w\,\mathbf{J}^{\top}\mathbf{J} $$

From points to a plane

$$ \mathbf{c} = \frac{1}{n}\sum_{k}\mathbf{p}_k, \qquad \mathbf{C} = \frac{1}{n}\sum_{k}(\mathbf{p}_k - \mathbf{c})(\mathbf{p}_k - \mathbf{c})^{\top} $$

The second eigen-test: degeneracy

$$ \mathbf{H}_t = \sum_i w_i\,\mathbf{n}_i\mathbf{n}_i^{\top} $$

Practice

$$ \begin{aligned} \mathbf{c} &= \tfrac{1}{n}\textstyle\sum_k \mathbf{p}_k, \qquad \mathbf{C} = \tfrac{1}{n}\textstyle\sum_k (\mathbf{p}_k - \mathbf{c})(\mathbf{p}_k - \mathbf{c})^{\top}\\ \mathbf{n} &= \text{eigenvector of } \lambda_0, \qquad \text{accept plane if }\lambda_1\ge10^{-12}\text{ and }\lambda_0\le0.1\lambda_1\\ \mathbf{H}_t &= \textstyle\sum_i w_i\,\mathbf{n}_i\mathbf{n}_i^{\top}, \qquad \text{loose translation gate rejects if } \lambda_{\min}(\mathbf{H}_t)/\mathrm{tr}(\mathbf{H}_t) < 0.05 \end{aligned} $$

Say it at a whiteboard

"Both LiDAR tests are the same move: build a 3×3 scatter matrix and read its smallest eigenvalue. For a voxel's points, the covariance's smallest-eigenvalue eigenvector is the plane normal, and if that eigenvalue isn't much smaller than the middle one, it's a blob, a corner or a line, so there's no plane. For the whole scan, \(\mathbf{H}\)'s translation block is \(\sum w\,\mathbf{n}\mathbf{n}^{\top}\); its smallest-eigenvalue eigenvector is the direction no plane constrains, and when that eigenvalue is a tiny fraction of the trace, like floor plus one wall, the pose can slide along it with a perfectly healthy RMSE. glass-lio's loose path refuses scans below 0.05; the tight path can use IMU information along the weak direction; Zhang et al. instead solve only the well-conditioned directions."