Rico's Nerd Cluster

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

Robotics - [3D SLAM - 2] Lidar Odometry

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

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

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)

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 Foundation] Ros2 Miscellaneous Thingies

Name Spacing

Namespacing If you have something like: 1 2 3 4 5 class FiveCardStudPlayer : public rclcpp::Node { public: FiveCardStudPlayer() : Node("five_card_stud_player"){ ... }} And you launc...

Robotics - [ROS2 Foundation] Ros2 Bags

Introduction ros2 bag is a command line tool for recording data published on topics in your system. It accumulates the data passed on any number of topics and saves it in a database. You can then ...

Robotics - [ROS2 Foundation] Ros2 Rclpy Executor Callback Model

Rclpy Executors, Rate Object

Rclpy MultiThreadedExecutor rclpy.executors.MultiThreadedExecutor is implemented entirely in Python, not as a direct wrapper around the C++ rclcpp::executors::MultiThreadedExecutor. Internally it ...

Robotics - [ROS2 Foundation] Ros2 Composition Instead Of Nodelets

Components

Reference The basic idea of ROS2 composition is to have a unified API in place of ROS1 nodes and nodelets. Nodelets in ROS1 are compiled into shared libraries and can be loaded into one process du...

Robotics - [ROS2 Foundation] Ros2 Rclcpp Executor Callback Model

Executor, Callbacks, Threading Model

C++ Executors In ROS2, we can have multiple logical nodes executing their callbacks of timer, subscription, etc. in executors. There are three types of executors: SingleThreadedExecutor, StaticSin...