A repository of implementations and notes that provide services for the math, computer vision, AI, robotics, autonomous driving related methods I have studied
just for fun
π§
- Ubuntu 20.04 (virtual machine); ROS noetic
- add below ros messages library and don't forget
source source /opt/ros/noetic/setup.bash
sudo apt install ros-noetic-cv-bridge ros-noetic-image-transport ros-noetic-roscpp ros-noetic-rospy ros-noetic-rosbag ros-noetic-std-msgs ros-noetic-sensor-msgs ros-noetic-pcl-ros ros-noetic-pcl-conversions ros-noetic-geometry-msgs
- C++14; OpenCV 4.2.0; Eigen 3.3.7; PCL 1.10.0
- Sophus, commit SHA
a621fflocal build, support SO(3) and SE(3) operator - glog(release version); gflags; gtest build gtest and
sudo cp libgtest*.a /usr/local/lib - Ceres v2.2.0, deal with complicated non-linear optimization problems like Bundle Adjustment
- G2O
checkout ff647bd, like Ceres - DBoW3, images loop closure
- gtsam 4.2.0, optimize library
- Pangolin
branch:v0.9installed but rarely used - octomap a 3D occupancy grid mapping approach
- Python 3.8.10. I use the features of
matplotlibcppand run some python scripts - yaml-cpp use .yaml
Each module describes the methods it contains
attention: some test data comes from the network public dataset
including some cpp feature test
this module summarizes some methods for tradition image process and curve fit
- dlt camera calibration
- image undistortion
- based on Tsai-Lenz of hand-eye calibration (eye in hand)
- least square polynomial curve fit and move least square
- cubic spline interpolation curve fit
- thin plate spline
- stereo match and 3D point cloud reconstruction
stereo match and 3D reconstruction
- based orb operator match
- LK option flow apply
- sfm: epipolar constrainc and triansgulation
- 3D points ICP
- gaussian-newton estimate camera pose
- direct kalman filter point estimate
- extend kalman filter test
- static imu initialization
- tradition imu integration
- imu pre-integration
- gnss data convert to utm
- eskf gins (imu data predict and gnss data update)
- eskf gins with imu pre-integration optimize
in the image below, the left shows the ESKF and the right side uses IMU pre-integration, trajectory interruptions due to poor GNSS signals are reduced
- 2d lidar scans ICP (point to point & point to plane distance)
- scan to occupancy grid map
- lidar 2d mapping global map
- point cloud ICP registration
- point cloud NDT registration
- direct NDT lidar odom
- incremental NDT LO
- loosely coupled LIO
incremental NDT loosely coupled LIO mapping and without loop closure
- point cloud linear fit
- point cloud data convert
- nearest neighbor search
the below image show the easy use of the ceres optimization library
- left image was source BAL data
- right image use ceres for BA optimize,reduce some noise(running in virtual machine, low performance)
g2o optimize library test
gtsam optimize library test
this module conclude some common tips and knowledge in global or local path plan.
Bezier Curve local path plan and B spline curve local path plan and smooth
Dubins Curve path plan
mkdir build && cd build # enable debug cmake .. make -j8