Rico's Nerd Cluster

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

Robotics - [3D SLAM - 5] Tightly Coupled Lidar Inertial Odometry

Gauge Freedom, Corridor Degeneracy, and FastLIO

Gauge Freedom In lidar-inertial odometry, gauge freedom refers to directions in the state space that are weakly observed or unobservable from the current measurements. In practice, this appears as...

Robotics - [3D SLAM - 5] Loosely and Tightly Coupled Lidar Inertial Odometry

FastLIO

Loosely vs Tightly Coupled LIO In loosely coupled LIO, the IMU and GPS are first fed into error state kalman filter which outputs a global pose estimate T_G. T_G is fed into a lidar odometer (such...

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...

Robotics - [Bugs - 1] SLAM Related "Epic Bugs"

G2O Optimization Vertex Updates, Compiler-Specific Bugs, Yaml-cpp

Below is a list of bugs that took me multiple hours, if not days, to troubleshoot and analyze. These are the “epic bugs” that are worth remembering for my career. Epic Bug 1: G2O Optimization Didn...

[ML] K-Nearest-Neighbor Using Heap With CUDA

KNN (Heap-Based Implementation) Goal: For a query point qqq, find its kkk nearest neighbors from a set of NNN points. Algorithm Idea We use a max-heap of size k. Why a max-heap? The hea...

[ML] -Point-cloud-compression-2-FPFH-Features

Other Alternatives Chamfer distance Earth Mover’s Distance (EMD) Normal consistency loss Curvature loss Learned feature-space loss (via PointNet / DGCNN embeddings) What is FPFH FPFH...