Skip to content

gyyc233/sensor_lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

472 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sensor Lab

中文|Chinese

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

🚧

Getting Started

Prerequisites

  • 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 a621ff local 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.9 installed but rarely used
  • octomap a 3D occupancy grid mapping approach
  • Python 3.8.10. I use the features of matplotlibcpp and run some python scripts
  • yaml-cpp use .yaml

Modules Introduction

Each module describes the methods it contains

attention: some test data comes from the network public dataset

cpp_test

including some cpp feature test

Algorithm

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

Feature Detect

  • based orb operator match

orb_image_good_match

  • LK option flow apply
pre image current image LK option flow result

Pose Estimation

  • sfm: epipolar constrainc and triansgulation
  • 3D points ICP
  • gaussian-newton estimate camera pose

Kalman Filter

  • direct kalman filter point estimate
  • extend kalman filter test

imu_and_gnss

  • 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

imu_and_gnss

Lidar_2d

  • 2d lidar scans ICP (point to point & point to plane distance)
  • scan to occupancy grid map
  • lidar 2d mapping global map

2d_mapping_global_map

Lidar_3d

  • 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

incremental_ndt_lo

pcl_test

  • point cloud linear fit
  • point cloud data convert
  • nearest neighbor search

cere_test

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)

ceres_test

g2o_test

g2o optimize library test

gtsam_test

gtsam optimize library test

Path Plan

this module conclude some common tips and knowledge in global or local path plan.

Dijkstra global path plan A star global path plan
DWA local path plan RRT* sample based local path plan

Bezier Curve local path plan and B spline curve local path plan and smooth

Bezier Curve B spline curve

Dubins Curve path plan

dubins curve LSR dubins curve LSL

Path Tracking

PID controller LQR controller
pure pursuit controller stanley controller

Usage

mkdir build && cd build

# enable debug
cmake ..
make -j8

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages