Zurück zum Ranking

cggos/imu_x_fusion

C++msf.cgabc.xyz

IMU + X(GNSS, 6DoF Odom) Loosely-Coupled Fusion Localization based on ESKF, IEKF, UKF(UKF/SPKF, JUKF, SVD-UKF) and MAP

sensor-fusionekf-localizationvisual-inertial-odometrygnsseskfimu-sensorslamukf-localizationnonlinear-least-squares
Sterne-Wachstum
Sterne
1.1k
Forks
189
Wochenwachstum
Issues
17
5001k
Juli 2020Juli 2022Juli 2024Juli 2026
README

IMU + X Fusion

IMU + X Loosely-Coupled Fusion Localization


Overview

Features

  • Dataset

    • KAIST dataset: ROS publish
  • Sensors

    • IMU
      • Numerical Integration (TODO: RK4)
      • Pre-Integration
    • Wheel Odometer
    • Manometer
    • GPS
    • 6DoF Odom (Stereo Visual Odometry)
    • LiDAR
    • Multi-modal data
  • State Estimation

    • EKF
      • ESKF
      • IEKF
    • UKF
      • JUKF
      • SVD-UKF
    • Particle Filter
    • MAP
      • User-defined G-N
      • Ceres-Solver
      • G2O
      • GTSAM
  • Local / Global Angular Error (Rotation Perturbation)

    • Local Angular Error (OK)
    • Global Angular Error (TODO: why Poor)
    enum ANGULAR_ERROR { LOCAL_ANGULAR_ERROR, GLOBAL_ANGULAR_ERROR };
    
  • Debug

    • Check Measurement Jacobian Matrix

Requirements

tested on Ubuntu 16.04, Ubuntu 18.04 and Ubuntu 20.04

  • Ubuntu 16.04 & ROS Kinetic

    • OpenCV 3
    • ROS package: nmea_navsat_driver
    • GeographicLib 1.50.1 (built from souce code, cmake 3.18.0 tested)
  • Ubuntu 18.04 & ROS Melodic

    • OpenCV 3
    • ROS package: nmea_navsat_driver
    • GeographicLib 1.49
      sudo apt install libgeographic-dev
      
  • Ubuntu 20.04 & ROS Melodic

    • OpenCV 3
    • ROS package: nmea_navsat_driver
    • GeographicLib 1.50.1
      sudo apt install libgeographic-dev
      

Build

mkdir -p ws_msf/src
cd ws_msf/src
git clone xxx
cd ..
catkin_make -j4 # error happened when using the default cmake 3.5.1 on Ubuntu 16.04, upgrade it
# or
catkin build -j4

Run on Host

IMU + GNSS

test data: utbm_robocar_dataset_20180719_noimage.bag

  • [sensor_msgs/Imu] /imu/data: 100 hz
  • [nmea_msgs/Sentence] /nmea_sentence: 15 hz
  • [sensor_msgs/NavSatFix] /fix: 5 hz
  • [nav_msgs/Path] /nav_path: 63 hz
roslaunch imu_x_fusion imu_gnss_fusion.launch
rosbag play -s 25 utbm_robocar_dataset_20180719_noimage.bag

ROS graph and path on rviz:

plot the result path (fusion_gps.csv & fusion_state.csv) on Google Map using the scripts folium_csv.py:

IMU + 6DoF Odom

VO: ORB-SLAM2 (Stereo) + EuRoC V1_01_easy.bag

roslaunch imu_x_fusion imu_vo_fusion.launch [est:=ekf, ukf or map]
run ORB-SLAM2 (Stereo) and play back bag file
# https://github.com/cggos/orbslam2_cg
# pose cov:
# sigma_pv: 0.001
# sigma_rp: 0.5
# sigma_yaw: 0.5
roslaunch orbslam2_ros run_stereo_euroc.launch

rosbag play V1_01_easy.bag

results(Green path: estimated pose; Red path: pose of VO):

Use the recorded bag file directly

Download orbslam2_v101easy.bag

rosbag play orbslam2_v101easy.bag

VO: ORB-SLAM2 (Stereo) + MYNTEYE-S1030 Camera

# TODO: Test
roslaunch imu_x_fusion imu_vo_fusion_mynteye.launch

roslaunch mynt_eye_ros_wrapper mynteye.launch

Run with KAIST Dataset

rosrun imu_x_fusion kaist_pub /dev_sdb/datasets/KAIST/urban39-pankyo

Run with Docker

# pull from DockerHub
sudo docker pull cggos/ubuntu-ros-slam:bionic-melodic

# run, e.g.: imu_vo_fusion
./scripts/run_docker.sh

# modify the script for running others

Code Format

code format based on Google style

./batch_format.sh

Docs

  • Requirements

    sudo apt install graphviz
    sudo apt install doxygen
    
  • Generate

    # output in html and latex dir
    doxygen Doxygen.config
    

Community

Ähnliche Repositories
hku-mars/FAST-LIVO2

FAST-LIVO2: Fast, Direct LiDAR-Inertial-Visual Odometry

C++GNU General Public License v2.03d-reconstructioncolored-point-cloud
4.4k807
mit-han-lab/bevfusion

[ICRA'23] BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation

PythonPyPIApache License 2.03d-perceptioncamera
bevfusion.mit.edu
3.2k605
hku-mars/r3live

A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package

C++GNU General Public License v2.0slamlidar-slam
2.4k483
hku-mars/FAST-LIVO

A Fast and Tightly-coupled Sparse-Direct LiDAR-Inertial-Visual Odometry (LIVO).

C++GNU General Public License v2.03d-reconstructionlidar-camera-fusion
1.6k266
autonomousvision/transfuser

[PAMI'23] TransFuser: Imitation with Transformer-Based Sensor Fusion for Autonomous Driving; [CVPR'21] Multi-Modal Fusion Transformer for End-to-End Autonomous Driving

PythonPyPIMIT Licenseimitation-learningautonomous-driving
1.6k241
HKUST-Aerial-Robotics/GVINS

Tightly coupled GNSS-Visual-Inertial system for locally smooth and globally consistent state estimation in complex environment.

C++GNU General Public License v3.0sensor-fusionestimation-algorithm
1.1k272
kriswiner/MPU9250

Arduino sketches for MPU9250 9DoF with AHRS sensor fusion

C++mpu9250sensor-fusion
1.1k462
superxslam/SuperOdom

A highly robust and accurate LiDAR-only, LiDAR-inertial odometry

C++3d-reconstructionlidar-localization
superodometry.com
1k136
hyye/lio-mapping

Implementation of Tightly Coupled 3D Lidar Inertial Odometry and Mapping (LIO-mapping)

C++GNU General Public License v3.0sensor-fusionslam
sites.google.com/view/lio-mapping
1k323