Rico's Nerd Cluster

「离开世界之前 一切都是过程」

Robotics - Gauss Newton (GN) and Levenberg Marquardt (LM) Optimizers

Newton's Method, GN, LM optimizers

Newton’s Method Solving An Equation To find an arbitrary equation’s root $f(x) = 0$, We start from an arbitrary point $x_0$ that’s hopefully close to the solution, $x_s$ The main idea of Ne...

Robotics - [3D SLAM - 5] LIO Hands-On

Spatial Tiling

Issues That I Encountered IMU / LiDAR Synchronization There are several real-world timing problems to handle: The ROS publisher, bag writer, and LiDAR driver are all bursty — LiDAR data can a...

Robotics - [3D SLAM - 5] Map Metrics

Gaussian Entropy, Graph Tension, Chi Squared, Trajectory Smoothness

Residual Calculation In scan matching, a residual is the raw error term e. The weighted squared error is: 1 chi2 = e.transpose() * information * e; where: 1 information = covariance.inverse() ...

Underwater LiDAR: How Light-Based Sensing Works Beneath the Waves

Introduction LiDAR (Light Detection and Ranging) is incredibly effective in air, enabling autonomous vehicles, drones, and robots to map their surroundings with centimeter-level precision. But wha...

Robotics - [3D SLAM - 6] KISS ICP Review

KISS-ICP: Simple Odometry, Done Carefully The paper’s core claim is simple: you do not need a complicated frontend, feature extraction, normals, surfels, IMU fusion, or learned components to get s...

Robotics - [3D SLAM - 4] GICP

Generalized ICP, BFGS Optimization

1. Intuition In GICP (Segal et al, 2009), each matched pair is not just two points $p_s$ and $p_t$. Each point also carries a local covariance estimated from its neighbors (for example, 20 nearest...

Robotics - [3D SLAM - 3] Lidar Odometry

Direct Lidar Odometry, NDT, Incremental NDT, Indirect Lidar Odometry, LOAM

Direct Lidar Odometry When given two scans, a direct NDT method means no features are extracted. The two scans would directly go through NDT for finding their relative poses. The workflow is as fo...

Robotics - [3D SLAM - 2] Scan Matching Hands-On Notes

Preact-Mojave, Lidar-Only Front-End

Preact-Mojave Build & Workflow The ROS2 driver for Preact-Mojave can be found here. When testing it, I ran into below questions: Why make provision & make ros2? make provisi...

Robotics - [3D SLAM - 1] Scan Matching

3D Point-Point ICP, 3D Point-Plane ICP, NDT

The Scan Matching Problem When we run scan matching, we usually have two point clouds: a source scan $S_1 = {\mathbf{p}_1, \ldots, \mathbf{p}_n}$ (the new measurement), and a target scan $S_...

Robotics - [Bugs - 2] SLAM Related Small Bugs

Passing Ptr By Value

⚠️ Beware of Passing Smart Pointers by Value Passing a smart pointer (e.g. std::shared_ptr or boost::shared_ptr) by value is fine when you’re only modifying the object it points to. But if you int...