• Stars
    star
    563
  • Rank 79,150 (Top 2 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created over 3 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LeGO-LOAM, LIO-SAM, LVI-SAM, FAST-LIO2, Faster-LIO, VoxelMap, R3LIVE, Point-LIO, KISS-ICP, DLO, DLIO, Ada-LIO, PV-LIO, SLAMesh, ImMesh, FAST-LIO-MULTI application and comparison on Gazebo and real-world datasets. Installation and config files are provided.

SLAM-application: installation and test


● Results:

Single-LiDAR

Multi-LiDARs

  • video14: FAST-LIO-MULTI bundle update vs asynchronous update


Dependencies

  • Common packages
$ sudo apt-get install -y ros-melodic-navigation ros-melodic-robot-localization ros-melodic-robot-state-publisher
  • GTSAM for LVI-SAM and LIO-SAM
$ wget -O gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip
$ unzip gtsam.zip
$ cd gtsam-4.0.2/
$ mkdir build && cd build
$ cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON ..
$ sudo make install -j8
$ sudo apt-get install -y cmake libgoogle-glog-dev libatlas-base-dev libsuitesparse-dev
$ wget http://ceres-solver.org/ceres-solver-1.14.0.tar.gz #LVI-SAM
$ wget http://ceres-solver.org/ceres-solver-2.1.0.tar.gz #SLAMesh
$ tar zxf ceres-solver-1.14.0.tar.gz #LVI-SAM
$ tar zxf ceres-solver-2.1.0.tar.gz #SLAMesh
$ mkdir ceres-bin
$ mkdir solver && cd ceres-bin
$ cmake ../ceres-solver-1.14.0 -DEXPORT_BUILD_DIR=ON -DCMAKE_INSTALL_PREFIX="../solver"  #good for build without being root privileged and at wanted directory
$ make -j8 # 8 : number of cores
$ make test
$ make install
  • glog, g++-9 and gcc-9 for Faster-LIO
$ sudo apt-get install libgoogle-glog-dev
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt update
$ sudo apt install gcc-9 g++-9
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9

Note: When Ouster-ros package cannot be built with gcc and g++ with the version higher than 6,

  • When building ouster-ros,
catkin b -DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6 -DCMAKE_BUILD_TYPE=Release
  • CGAL and pcl-tools for R3LIVE
$ sudo apt install libcgal-dev pcl-tools

Optionally,
$ sudo apt install meshlab


Installation

● LeGO-LOAM

$ cd ~/your_workspace/src
$ git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● LIO-SAM

$ cd ~/your_workspace/src
$ git clone https://github.com/TixiaoShan/LIO-SAM.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● LVI-SAM

$ cd ~/your_workspace/src
$ git clone https://github.com/TixiaoShan/LVI-SAM.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● Trouble shooting for LVI-SAM

  • for OpenCV 4.X, edit LVI-SAM/src/visual_odometry/visual_loop/ThirdParty/DVision/BRIEF.cpp:53
// cv::cvtColor(image, aux, CV_RGB2GRAY);
cv::cvtColor(image, aux, cv::COLOR_RGB2GRAY);

● FAST-LIO2

$ cd ~/your_workspace/src
$ git clone https://github.com/Livox-SDK/livox_ros_driver.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

$ cd ~/your_workspace/src
$ git clone --recursive https://github.com/hku-mars/FAST_LIO.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● Faster-LIO

$ cd ~/your_workspace/src
$ git clone https://github.com/gaoxiang12/faster-lio.git

$ cd faster-lio/thirdparty
$ tar -xvf tbb2018_20170726oss_lin.tgz

$ cd ~/your_workspace
$ catkin build -DCUSTOM_TBB_DIR=$(pwd)/src/faster-lio/thirdparty/tbb2018_20170726oss -DCMAKE_BUILD_TYPE=Release

● Faster-LIO on ARM architecture (e.g., Jetson Xavier)

$ cd ~/your_workspace/src
$ git clone https://github.com/gaoxiang12/faster-lio.git

$ cd faster-lio/thirdparty
$ git clone https://github.com/syoyo/tbb-aarch64
$ cd tbb-aarch64
$ ./scripts/bootstrap-aarch64-linux.sh
$ cd build-aarch64
$ make && make install

$ gedit faster-lio/cmake/packages.cmake

Edit line 13 as:
    #set(TBB2018_LIBRARY_DIR "${CUSTOM_TBB_DIR}/lib/intel64/gcc4.7")
    set(TBB2018_LIBRARY_DIR "${CUSTOM_TBB_DIR}/lib")


$ cd ~/your_workspace
$ catkin build -DCUSTOM_TBB_DIR=$(pwd)/src/faster-lio/thirdparty/tbb-aarch64/dist -DCMAKE_BUILD_TYPE=Release

● VoxelMap

$ cd ~/your_workspace/src
$ git clone https://github.com/Livox-SDK/livox_ros_driver.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

$ git clone https://github.com/hku-mars/VoxelMap.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● Trouble shooting for VoxelMap

  • /usr/include/lz4.h:196:57: error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’ ...
    • You could meet this error in ROS-melodic. Fix as here
$ sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
$ sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak

$ sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
$ sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h

● R3LIVE

$ cd ~/your_workspace/src
$ git clone https://github.com/hku-mars/r3live.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● Trouble shooting for R3LIVE

  • LiDAR incoming frame too old ...
    • Original Livox-ros-driver does not publish the data with ROS timestamp, but LiDAR time.
    • So, use modified livox-ros-driver here
    • If that does not solve the problem, edit lddc.cpp yourself, line 563:
    //livox_msg.header.stamp = ros::Time((timestamp - init_lidar_tim - packet_offset_time )  / 1e9 + init_ros_time);
      livox_msg.header.stamp = ros::Time::now();
      /**************** Modified for R2LIVE **********************/
      ros::Publisher *p_publisher = Lddc::GetCurrentPublisher(handle);
      if (kOutputToRos == output_type_)
      {
        p_publisher->publish(livox_msg);
      }

● How to properly set configuration for R3LIVE

  • Camera calibration - use Kalibr or camera_calibration
    • Kalibr - refer original repo
    • camera_calibration - use as here
  • Lidar-Camera calibration
    • Other spinning LiDARs are not supported yet (for RGB mapping), but try to use lidar_camera_calibration repo, if you want to.
    • For LiVOX LiDAR, use livox_camera_calib repo
      • Record a bag file of LiVOX LiDAR data and capture the image from RGB camera you use.
      • Convert a bag file into a PCD file with (change directories in the launch file):
      $ roslaunch livox_camera_calib bag_to_pcd.launch
      • Then, calibrate LiDAR and camera as (change directories in the launch and config files):
      $ roslaunch livox_camera_calib calib.launch

★Note: extrinsic rotational parameter from livox_camera_calib should be transposed in the r3live_config.yaml file. Refer my extrinsic result and r3live config file


Left: Target image. Right: Target PCD


Left: calibrated image and residuals. Right: calibrated image


Sensor configuration of mine: Pixhawk4 mini as an IMU, FLIR Blackfly S USB3 (BFS-U3-23S3C-C), LiVOX MID-70


● Point-LIO

$ cd ~/your_workspace/src
$ git clone https://github.com/Livox-SDK/livox_ros_driver.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

$ cd ~/your_workspace/src
$ git clone --recursive https://github.com/hku-mars/Point-LIO.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● KISS-ICP (ROS1)

$ cd ~/your_workspace/src
$ git clone https://github.com/PRBonn/kiss-icp.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● DLO

$ sudo apt install libomp-dev libpcl-dev libeigen3-dev 
$ cd ~/your_workspace/src
$ git clone https://github.com/vectr-ucla/direct_lidar_odometry.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● DLIO

$ sudo apt install libomp-dev libpcl-dev libeigen3-dev 
$ cd ~/your_workspace/src
$ git clone https://github.com/vectr-ucla/direct_lidar_inertial_odometry.git
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● FAST-LIO-MULTI

$ cd ~/your_workspace/src
$ git clone https://github.com/Livox-SDK/livox_ros_driver
$ git clone https://github.com/engcang/FAST_LIO_MULTI
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● PV-LIO

$ cd ~/your_workspace/src
$ git clone https://github.com/Livox-SDK/livox_ros_driver
$ git clone https://github.com/HViktorTsoi/PV-LIO
$ cd ..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● SLAMesh

$ sudo apt-get install build-essential cmake cmake-curses-gui libflann-dev libgsl-dev libeigen3-dev libopenmpi-dev \
     openmpi-bin opencl-c-headers ocl-icd-opencl-dev libboost-all-dev libopencv-dev libyaml-cpp-dev \
     freeglut3-dev libhdf5-dev qtbase5-dev qt5-default libqt5opengl5-dev liblz4-dev

# Ubuntu 18.04
$ sudo apt-get install libvtk6-dev libvtk6-qt-dev
# Ubuntu 20.04
$ sudo apt-get install libvtk7-dev libvtk7-qt-dev

$ git clone https://github.com/uos/lvr2.git
$ cd lvr2 
$ mkdir build && cd build
$ cmake .. && make
$ sudo make install

$ cd ~/your_workspace/src
$ git clone https://github.com/naturerobots/mesh_tools.git
$ git clone https://github.com/RuanJY/SLAMesh.git
$ cd..
$ catkin build -DCMAKE_BUILD_TYPE=Release

● Trouble shooting for SLAMesh

  • With Ceres >= 2.0 version and OpenCV 4.X version, ceres.solve can occur error
  • Delete OpenCV dependency in CMakeLists.txt
#target_link_libraries(slamesh ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBS} ${G2O_LIBS} ${CERES_LIBRARIES} ${LVR2_LIBRARIES})
target_link_libraries(slamesh ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${G2O_LIBS} ${CERES_LIBRARIES} ${LVR2_LIBRARIES})



How to run

● check each of config files and launch files in the folders of this repo

Trouble shooting for Gazebo Velodyne plugin

  • When using CPU ray, instead of GPU ray, height - width should be interchanged, I used this script file

More Repositories

1

vins-application

VINS-Fusion, VINS-Fisheye, OpenVINS, EnVIO, ROVIO, S-MSCKF, ORB-SLAM2, NVIDIA Elbrus application of different sets of cameras and imu on different board including desktop and Jetson boards
C++
432
star
2

ros-yolo-sort

YOLO v3, v4, v5, v6, v7 + SORT tracking + ROS platform. Supporting: YOLO with Darknet, OpenCV(DNN), OpenVINO, TensorRT(tkDNN). SORT supports python(original) and C++. (Not Deep SORT)
C++
218
star
3

FAST-LIO-SAM-QN

A SLAM implementation combining FAST-LIO2 with pose graph optimization and loop closing based on Quatro and Nano-GICP
C++
163
star
4

FAST-LIO-SAM

a SLAM implementation combining FAST-LIO2 with pose graph optimization and loop closing based on LIO-SAM paper
C++
114
star
5

FAST-LIO-Localization-QN

A Map-based localization implementation combining FAST-LIO2 as an odometry with Quatro + Nano-GICP as a map matching method
C++
108
star
6

gazebo_maps

Self-made Gazebo maps and models for public
70
star
7

FAST-LIO-SAM-SC-QN

A SLAM implementation combining FAST-LIO2 with pose graph optimization and loop closing based on ScanContext, Quatro, and Nano-GICP
C++
57
star
8

oakd-ros-simple

OAK-D (OpenCV AI Kit camera) ROS simple codes with C++
C++
38
star
9

TensorRT_YOLOv9_ROS

(ROS, C++) YOLOv9 detection using TensorRT
C++
25
star
10

TROT-Q

ASCC2022 - TROT-Q: TRaversability and Obstacle aware Target tracking system for Quadruped robots
C++
24
star
11

exploration-algorithms

[Docker provided] How to build, install and run open-source exploration algorithms
C++
24
star
12

vins-fusion-gpu-no-ros

VINS-Fusion's non-ROS version (GPU version)
C++
20
star
13

FAST-LIO-Localization-SC-QN

A Map-based localization implementation combining FAST-LIO2 as an odometry with Quatro + Nano-GICP as a map matching method, and with ScanContext as a loop candidate detection method
C++
17
star
14

mavros-gazebo-application

mavros-gazebo-application
Python
14
star
15

PS4_Joystick_teleop_Mobile_Robots_ROS_Python

Simple Joystic_teleop_Mobile_Robots_ROS_Python using PS4 from SONY
Python
14
star
16

ieee_uav_2022

IEEE UAV Competition 2022 - Low Power Computer Vision Challenges (LPCVC): Chase
C
13
star
17

ROLAND

ROLAND: Robust Landing of UAV on Moving Platform using Object Detection and UWB based Extended Kalman Filter
C++
11
star
18

utm_to_pose_path

sensor_msgs/NavSatFix to geometry_msgs/PoseStamped and nav_msgs/Path
Python
11
star
19

tkdnn-ros

(ROS) YOLOv3, v4, v7 detection + Shelfnet semantic segmentation with TensorRT, utilizing tkDNN
C++
11
star
20

HC-SR04-UltraSonicSensor-ROS-RaspberryPi

HC-SR04-UltraSonicSensor-ROS-RaspberryPi using Python
Python
10
star
21

tf_to_trajectory

tf_to_trajectory: Convert ROS topics to nav_msgs/Path trajectory using simple rospy code for rviz
Python
8
star
22

CEO-MLCPP

CEO-MLCPP: Control Efficient and Obstacle-aware Multi-Layer Coverage Path Planner for 3D reconstruction with UAVs
C++
8
star
23

drone_auto_bag_record

MAVROS-PX4 drone auto ROS bag record on / off according to arming state
Python
6
star
24

utility_codes

A collection of various utility codes coded myself
Python
6
star
25

khnp_competition2021

KHNP Robot Competition 2021 / Several Missions with Autonomous Quadruped Robot with Gripping Arm!
C++
5
star
26

husky

MATLAB-ROS and Python-ROS to control the Husky_Clearpath with Velodyne-VLP16 LiDAR Sensor and ZED stereo camera
Python
4
star
27

KalmanFilter_Attitude

Animated Graph on Python code for LKF,EKF, and only accelerometer used attitude estimation
Python
3
star
28

Opencv_tutorial_Matlab_and_python

Using Opencv tutorial and instructions for installing Opencv for MATLAB(Mexopencv)
Python
2
star
29

orb-slam2-modified

C++
2
star
30

flightgoggles_angle_controller

flightgoggles_angle_controller
Python
2
star
31

turtlebot3

ROS-MATALB and ROS-Python for Turtlebot3_burger, mobile robot from Robotis
Python
2
star
32

cpp-reconstruction-application

Build and applying Coverage Path Planners for 3D reconstruction with UAVs
2
star
33

khnp_competition2022

KHNP Robot Competition 2022: KVRC2022 Autonomous drone challenge
C++
1
star
34

S-MSCKF-application

S-MSCKF from https://github.com/KumarRobotics/msckf_vio - application
C++
1
star
35

flightgoggles

Forked from http://flightgoggles.mit.edu. Coded by great friend, Winter-Guerra, when he was in MIT!
C++
1
star
36

AllowanceRobotics-Gazeboyz

Project page of AllowanceRobotics-Gazeboyz
Ruby
1
star
37

turtlebot2

ROS-MATLAB and ROS-Python for Turtlebot2, mobile robot with ROS
Python
1
star