Rico's Nerd Cluster

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

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] Iterative Extended Kalman Filter

Prediction: xk = xk_1 + F_k (x_k-1 - x_k) Observation: h(x_k) = h(x_k-1) + H_x (xk-xk-1) innovation = z - h(x_k) My understanding is in innovation, we do it iteratively. x = get_kf_pose kf.updat...

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

Point-Point ICP If we write out our state vector as [theta, translation], the pseudo code for point-point ICP is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 pt_pt_icp(pose_estimate, source_scan, target_...

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

Robotics - A Survey On Oil Pipe Inspection Robotics (Revising)

Sonar Imaging

Non-Destructive Testing Methods American Society for Testing and Materials (ASTM) and American Society of Mechanical Engineers (ASME) develops standards for pipe inspections Ultrasonic Testing...

Robotics - ROS2 Logging

Logging Level Tweaking

Logging Level Tweaking Programmatic API (in-process) In C++, any rclcpp::Logger can have its level tweaked at runtime: 1 2 3 #include <rclcpp/logger.hpp> auto my_logger = rclc...

Robotics - ROS2 TF2

Transform Listener

TF2 and Sim Time When working with ROS2 and tf2, you may encounter the following warning when visualizing data in RViz or processing buffers: 1 Warning: TF_OLD_DATA ignoring data from the past fo...