Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

No packages published

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /