A ros package for robust odometry and mapping using LiDAR with aid of different sensors

Related tags

Miscellaneous W-LOAM
Overview

W-LOAM

A ros package for robust odometry and mapping using LiDAR with aid of different sensors

Demo Video

https://www.bilibili.com/video/BV1Fy4y1L7kZ?from=search&seid=6228704901331074158&spm_id_from=333.337.0.0

Sensor Configure

  1. wheel encoder + steer encoder + LiDAR
    This is proposed by this repo
  2. IMU + LiDAR
    The imuOdometry is implemented based on
    https://github.com/TixiaoShan/LIO-SAM/blob/master/src/imuPreintegration.cpp
  3. configure 1 or 2 + GPS
    For mapping a large area, GPS is favored

Dependency

  • ROS (tested with melodic)
    sudo apt install ros-melodic-gps-common
    # optional
    # if you want to visualize with satellite maps, use rviz plugin rviz_satellite
    cd YOUR_CATKIN_WS/src
    git clone https://github.com/Saki-Chen/rviz_satellite
    cd .. && catkin_make -DCMAKE_BUILD_TYPE=Release
  • gtsam (tested with 4.0.3)
    refer to https://github.com/borglab/gtsam
    or for ubuntu 18.04
    git clone https://github.com/borglab/gtsam
    cd gtsam
    git checkout 4.0.3
    mkdir build && cd build
    cmake ..
    make -j8
    sudo make install

Build

cd YOUR_CATKIN_WS/src
git clone https://github.com/Saki-Chen/apa_msgs
git clone https://github.com/Saki-Chen/W-LOAM
cd .. && catkin_make -DCMAKE_BUILD_TYPE=Release

Data Format

  1. Point
    float32 x   
    float32 y      
    float32 z    
    float32 intensity
    // id of the laser scaner
    uint16 ring
    // time relative to the header stamp  
    float32 rel_time    
  1. Wheel Counting
    std_msgs/Header header
    // four counter for four wheel
    int64 FL
    int64 FR
    int64 RL
    int64 RR
  1. Steer Angle
    std_msgs/Header header
    // positive for clock-wise
    float64 angle
  1. IMU (sensor_msgs/Imu )

Calibration

The extrinsic for sensors is expressed as urdf file in folder launch/config.
Especially, the parameter file for Wheel Odometry is in vehicle_params.

Run

  1. using provided test bag
1. Download bag
https://pan.baidu.com/s/1v_jl-j4jdTZGjtW3P6c7Eg   
password: nk5a

2. run algorithm
// with wheel odometry
roslaunch wloam run.launch simulation:=true
// or with imu odometry
roslaunch wloam run.launch simulation:=true odometry_link:=imu_link

3. run rviz
roslaunch wloam rviz.launch

4. play bag
rosbag play parking-lot.bag --clock
  1. using dataset provided by lio-sam
goto https://github.com/TixiaoShan/LIO-SAM
1. Find and Download bag
Walking, Park and Garden is tested

2. run algorithm
roslaunch wloam run.launch laser_topic:=points_raw imu_topic:=imu_raw cloud_format:=velodyne robot_name:=lio odometry_link:=imu_link simulation:=true

3. run rviz
roslaunch wloam rviz.launch

4. play bag
rosbag play park.bag --clock

If you want to test GPS, just add option enable_gps:=true when start launch file and check the AerialMapDisplay in rviz.
  1. using Livox data
goto https://github.com/KIT-ISAS/lili-om
1. Find and Download bag
using KA_Urban_Schloss_1.bag as example

2. run algorithm
roslaunch wloam run.launch laser_topic:=points_raw imu_topic:=imu/data cloud_format:=velodyne robot_name:=livox odometry_link:=imu_link simulation:=true

3. run convertion for livox data
rosrun wloam livox_converter

4. run rviz
roslaunch wloam rviz.launch

5. play bag
rosbag play KA_Urban_Schloss_1.bag --clock imu/data:=nouse gnss:=gps/fix

If you want to test GPS, just add option enable_gps:=true when start launch file and check the AerialMapDisplay in rviz.

Paper

WLOAM Wheel-LiDAR Odometry and Mapping for Autonomous Vehicles
comming soon...

Imu Odometry is adapted from LIO-SAM

@inproceedings{liosam2020shan,
  title={LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping},
  author={Shan, Tixiao and Englot, Brendan and Meyers, Drew and Wang, Wei and Ratti, Carlo and Rus Daniela},
  booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={5135-5142},
  year={2020},
  organization={IEEE}
}

Acknowledgement

This work is inspired by LOAM(Lidar Odometry and Mapping in Real-time) and LIO-SAM(Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping)

You might also like...
Direct LiDAR Odometry: Fast Localization with Dense Point Clouds
Direct LiDAR Odometry: Fast Localization with Dense Point Clouds

Direct LiDAR Odometry: Fast Localization with Dense Point Clouds DLO is a lightweight and computationally-efficient frontend LiDAR odometry solution w

Raspberry Pi Pico (RP2040) and Micro-ROS (ROS 2) Integration

The Pico is an amazing microcontroller and I couldn't wait for ROS 2 support or Arduino Core, so here is my approach. Once the Arduino Core for RP2040 is out it will be easier to use micro_ros_arduino.

 The ROS version of ICP Mapping with QPEP Solver (Quadratic Pose Estimation Problems)
The ROS version of ICP Mapping with QPEP Solver (Quadratic Pose Estimation Problems)

The ROS version of ICP Mapping with QPEP Solver (Quadratic Pose Estimation Problems) The project is based on https://github.com/ethz-asl/ethzasl_icp_m

This repository uses a ROS node to subscribe to camera (hikvision) and lidar (livox) data. After the node merges the data, it publishes the colored point cloud and displays it in rviz.
This repository uses a ROS node to subscribe to camera (hikvision) and lidar (livox) data. After the node merges the data, it publishes the colored point cloud and displays it in rviz.

fusion-lidar-camera-ROS 一、介绍 本仓库是一个ROS工作空间,其中ws_fusion_camera/src有一个工具包color_pc ws_fusion_camera │ README.md │ └───src │ └───package: c

RefleXXion is a utility designed to aid in bypassing user-mode hooks utilised by AV/EPP/EDR etc
RefleXXion is a utility designed to aid in bypassing user-mode hooks utilised by AV/EPP/EDR etc

Introduction RefleXXion is a utility designed to aid in bypassing user-mode hooks utilised by AV/EPP/EDR etc. In order to bypass the user-mode hooks,

Robust LiDAR SLAM
Robust LiDAR SLAM

SC-A-LOAM What is SC-A-LOAM? A real-time LiDAR SLAM package that integrates A-LOAM and ScanContext. A-LOAM for odometry (i.e., consecutive motion esti

Lidar-with-velocity - Lidar with Velocity: Motion Distortion Correction of Point Clouds from Oscillating Scanning Lidars
Lidar-with-velocity - Lidar with Velocity: Motion Distortion Correction of Point Clouds from Oscillating Scanning Lidars

Lidar with Velocity A robust camera and Lidar fusion based velocity estimator to undistort the pointcloud. This repository is a barebones implementati

image_projection is a ROS package to create various projections from multiple calibrated cameras.
image_projection is a ROS package to create various projections from multiple calibrated cameras.

image_projection Overview image_projection is a ROS package to create various projections from multiple calibrated cameras. Use cases involve: Rectify

Isaac ROS image_pipeline package for hardware-accelerated image processing in ROS2.

isaac_ros_image_pipeline Overview This metapackage offers similar functionality as the standard, CPU-based image_pipeline metapackage, but does so by

Comments
  • Some questions

    Some questions

    Hi,Chen, Thank your for sharing the great work. The test demo is very good.

    Maybe something wrong with the feature extract,the corner features are strange as the figure bellow(the pink is surf and green is corner feature). I use the default parameters.

    The first figure is the bag you provide. 2022-01-21 09-58-09屏幕截图

    And the second figure is my test bag(vlp-16). 2022-01-24 14-24-30屏幕截图

    opened by chengwei0427 0
  • 报错,这是为什么呢

    报错,这是为什么呢

    CMake Error at W-LOAM/src/odometry/CMakeLists.txt:5 (add_executable): Target "imuOdometry_fix_lag" links to target "Boost::timer" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing?

    opened by HIT-Ygq 0
Owner
Saki-Chen
Saki-Chen
A Robust LiDAR-Inertial Odometry for Livox LiDAR

LIO-Livox (A Robust LiDAR-Inertial Odometry for Livox LiDAR) This respository implements a robust LiDAR-inertial odometry system for Livox LiDAR. The

livox 363 Dec 26, 2022
RRxIO - Robust Radar Visual/Thermal Inertial Odometry: Robust and accurate state estimation even in challenging visual conditions.

RRxIO - Robust Radar Visual/Thermal Inertial Odometry RRxIO offers robust and accurate state estimation even in challenging visual conditions. RRxIO c

Christopher Doer 63 Dec 20, 2022
LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping

LVI-SAM This repository contains code for a lidar-visual-inertial odometry and mapping system, which combines the advantages of LIO-SAM and Vins-Mono

Tixiao Shan 1.1k Jan 8, 2023
ROS package to calibrate the extrinsic parameters between LiDAR and Camera.

lidar_camera_calibrator lidar_camera_calibrator is a semi-automatic, high-precision, feature-based camera and LIDAR extrinsic calibration tool. In gen

Networked Robotics and Sytems Lab 78 Dec 23, 2022
A ROS package for mobile robot localization with 2D LiDAR

mcl_ros About mcl_ros mcl_ros is a ROS package for mobile robot localization with 2D LiDAR. To implement localization, Monte Carlo localization (MCL)

Naoki Akai 47 Oct 13, 2022
A Multi-sensor Fusion Odometry via Smoothing and Mapping.

LVIO-SAM A multi-sensor fusion odometry, LVIO-SAM, which fuses LiDAR, stereo camera and inertial measurement unit (IMU) via smoothing and mapping. The

Xinliang Zhong 152 Dec 24, 2022
Small Robot, with LIDAR and DepthCamera. Using ROS for Maping and Navigation

?? RoboCop ?? Small Robot, with LIDAR and DepthCamera. Using ROS for Maping and Navigation Made by Clemente Donoso, ?? Chile ???? RoboCop Lateral Fron

Clemente Donoso Krauss 2 Jan 4, 2022
VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation

VID-Fusion VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation Authors: Ziming Ding , Tiankai Yang, Kunyi Zhan

ZJU FAST Lab 86 Nov 18, 2022
This package provides localization in a pre-built map using ICP and odometry (or the IMU measurements).

Localization using ICP in a known map Overview This package localizes the lidar sensor in a given map using the ICP algorithm. It subscribes to lidar

Robotic Systems Lab - Legged Robotics at ETH Zürich 131 Jan 3, 2023
Continuous Time LiDAR odometry

CT-ICP: Elastic SLAM for LiDAR sensors This repository implements the SLAM CT-ICP (see our article), a lightweight, precise and versatile pure LiDAR o

null 384 Dec 21, 2022