GithubHelp home page GithubHelp logo

zijiechenrobotics / ig_lio Goto Github PK

View Code? Open in Web Editor NEW
382.0 382.0 52.0 12.81 MB

iG-LIO: An Incremental GICP-based Tightly-coupled LiDAR-inertial Odometry

License: GNU General Public License v2.0

CMake 2.56% C++ 96.77% C 0.67%

ig_lio's People

Contributors

juliangaal avatar zijiechenrobotics avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ig_lio's Issues

TIME EVALUATION

您好,我想问一下TIME EVALUATION是怎么评估的~

开发在已构建点云地图上定位的代码

作者你好,我在算法运行之初,使用voxel_map_ptr_->AddCloud(PCDCloudGMap);将事先建好的地图存入到Voxelmap中,然后通过给定初值,实现在已知地图上定位的功能。但是我发现通过ComputeHashIndex无法为当前帧的点云在地图中很好的找到对应的索引,或者说,在同一个位置,SLAM过程中voxel_map_ptr_的hashidx,和定位中的hashidx没有一样的,请问有什么好的办法吗?

config files have typos

config files have typos.

# from "ig_lio/config/avia.yaml"
# ...
inti_pos_cov: 0.0001  # it should be "init_pos_cov"
# ...

anyway, thanks for sharing the code.

iG-LIO works really good!

License

Hi. Thank you for sharing your great work.

I think there is no proper License updated yet.
Please kindly specify the proper license!

Drift in z using Livox MID-360

Hello dear,

First, what an amazing work that pushes the LIO state of art further !

I started to play a little bit with the package using a LIVOX mid-360 on a grounded robot and i observed that in x-y the estimation is quite good, however there is a significant drift in Z, as you can see in the following picture :
image

What do you think about this behaviour ? i can also provide the bag file if its necessary !
EDIT : To prevent that, is it possible to add a constraint regarding the flatness of the world ?

Thank you !

协方差更新

  1. lio.cpp中ComputeFinalCovariance方法中更新协方差P_ = L * temp_P * L是不是少了一个转置
  2. 另外论文中的公式(8)的 协方差的计算,分母是不是应该是N-1

最后非常感谢作者的开源工作

cannot run in AVIA Dataset

Hi, I just follow your demo line in 2.4 AVIA Dataset, but ig-lio drift and fly away quikly, how to solve it , thank you.

PCD Scan Save

How do you save scans like you could do it for LIO SLAMs ?

I tried using this in config.yaml -
pcd_save: interval: -1
pcd_save_en: true

Didn't work, any help would be appreciated !

About NCLT Dataset ground truth

Hi author, thanks for the great work!
I am confused about the coordinate system of the ground_truth.csv provided by NCLT.
As far as I know, the IMU attitude is transformed to the LiDAR coordinate system in the script. The trajectory should be in the transformed coordinate system. Is there any script or method to generate ground_truth.txt of the NCLT Dataset in the IMU coordinate system?

Another question about nclt extrinsic parameter for lidar-->imu:
t_imu_lidar : [0, 0, 0.28]
R_imu_lidar : [1, 0, 0,
0, 1, 0,
0, 0, 1]
Is this extrinsic parameter really correct?

In liw-oam project(https://github.com/ZikangYuan/liw_oam) , the extrinsic is set as:
T_IMU_LIDAR = [[1, 0, 0, 0.112],
[0, 1, 0, 0.176],
[0, 0, 1, -0.247],
[0, 0, 0, 1]]

Proposal to Add Point Cloud Map Saving Feature

Thanks to your excellent work!

I believe that adding a feature to save point cloud maps as .PCD file would make it even more powerful and useful. Such a feature would enable users to conveniently save and manage point cloud data.

Thank you for your time and effort!

建图漂移问题

作者您好,我在使用自己设备录制的操场数据包的时候,跑了大概100米左右整个建图突然发生了极大的漂移,我们使用的是外部的imu,你知道这是为什么吗?

About AHRS Initilization

enable_ahrs_initalization: Set true or false. If the IMU message has orientation channel, iG-LIO can be initialized via AHRS.

I didn't understand this, what orientation? is this about a 9 axis IMU?

Mapping Problem on NCD quad Dataset

Hi, I'm trying your code, but there are some problems.

    1. the Autoware is necessary? Because when running, I meet below report:
[ERROR] [1704597406.254755494]: PluginlibFactory: The plugin for class 'autoware_rviz_debug/DecisionMakerPanel' failed to load.  Error: According to the loaded plugin descriptions the class autoware_rviz_debug/DecisionMakerPanel with base class type rviz::Panel does not exist. Declared types are  rviz_plugin_tutorials/Teleop
[rospack] Error: no package given
[librospack]: error while executing command
[rospack] Error: no package given
[librospack]: error while executing command
    1. Failed to repeat the mapping result on NCD dataset. I did not change the config file, and run as default. It will rotate and down-forward .
      2024-01-07_11-10

no compila

[ 37%] Building CXX object ig_lio/CMakeFiles/ig_lio_node.dir/src/pointcloud_preprocess.cpp.o
[ 37%] Building CXX object ig_lio/CMakeFiles/ig_lio_node.dir/src/lio.cpp.o
[ 37%] Building CXX object ig_lio/CMakeFiles/ig_lio_node.dir/src/faster_voxel_grid.cpp.o
[ 50%] Building CXX object ig_lio/CMakeFiles/ig_lio_node.dir/src/ig_lio_node.cpp.o
[ 62%] Building CXX object ig_lio/CMakeFiles/ig_lio_node.dir/src/voxel_map.cpp.o
[ 75%] Building CXX object ig_lio/CMakeFiles/ig_lio_node.dir/src/SymmetricEigenSolver.cpp.o
[ 87%] Building CXX object ig_lio/CMakeFiles/ig_lio_node.dir/src/timer.cpp.o
In file included from /home/edu/ig_lio/catkin_ws/src/ig_lio/src/voxel_map.cpp:1:0:
/home/edu/ig_lio/catkin_ws/src/ig_lio/include/ig_lio/voxel_map.h:10:10: fatal error: execution: No existe el archivo o el directorio
#include
^~~~~~~~~~~
compilation terminated.
ig_lio/CMakeFiles/ig_lio_node.dir/build.make:117: fallo en las instrucciones para el objetivo 'ig_lio/CMakeFiles/ig_lio_node.dir/src/voxel_map.cpp.o'
make[2]: *** [ig_lio/CMakeFiles/ig_lio_node.dir/src/voxel_map.cpp.o] Error 1
make[2]: *** Se espera a que terminen otras tareas....
In file included from /home/edu/ig_lio/catkin_ws/src/ig_lio/include/ig_lio/lio.h:30:0,
from /home/edu/ig_lio/catkin_ws/src/ig_lio/src/lio.cpp:1:
/home/edu/ig_lio/catkin_ws/src/ig_lio/include/ig_lio/voxel_map.h:10:10: fatal error: execution: No existe el archivo o el directorio
#include
^~~~~~~~~~~
compilation terminated.
ig_lio/CMakeFiles/ig_lio_node.dir/build.make:103: fallo en las instrucciones para el objetivo 'ig_lio/CMakeFiles/ig_lio_node.dir/src/lio.cpp.o'
make[2]: *** [ig_lio/CMakeFiles/ig_lio_node.dir/src/lio.cpp.o] Error 1
In file included from /home/edu/ig_lio/catkin_ws/src/ig_lio/include/ig_lio/lio.h:30:0,
from /home/edu/ig_lio/catkin_ws/src/ig_lio/src/ig_lio_node.cpp:16:
/home/edu/ig_lio/catkin_ws/src/ig_lio/include/ig_lio/voxel_map.h:10:10: fatal error: execution: No existe el archivo o el directorio
#include
^~~~~~~~~~~
compilation terminated.
ig_lio/CMakeFiles/ig_lio_node.dir/build.make:75: fallo en las instrucciones para el objetivo 'ig_lio/CMakeFiles/ig_lio_node.dir/src/ig_lio_node.cpp.o'
make[2]: *** [ig_lio/CMakeFiles/ig_lio_node.dir/src/ig_lio_node.cpp.o] Error 1
/home/edu/ig_lio/catkin_ws/src/ig_lio/src/pointcloud_preprocess.cpp: In member function ‘void PointCloudPreprocess::ProcessVelodyne(const ConstPtr&, pcl::PointCloudpcl::PointXYZINormal::Ptr&)’:
/home/edu/ig_lio/catkin_ws/src/ig_lio/src/pointcloud_preprocess.cpp:70:12: warning: variable ‘yaw_end’ set but not used [-Wunused-but-set-variable]
double yaw_end = yaw_first;
^~~~~~~
CMakeFiles/Makefile2:2628: fallo en las instrucciones para el objetivo 'ig_lio/CMakeFiles/ig_lio_node.dir/all'
make[1]: *** [ig_lio/CMakeFiles/ig_lio_node.dir/all] Error 2
Makefile:145: fallo en las instrucciones para el objetivo 'all'
make: *** [all] Error 2
Invoking "make -j8 -l8" failed
edu@edu-APB20:~/ig_lio/catkin_ws$

Why is the pointcloud during mapping separated like grids, and there are very few points in each frame

截图 2024-07-27 21-21-24
截图 2024-07-27 21-21-37
截图 2024-07-27 21-29-35
截图 2024-07-27 21-43-41

Figure 1 and 2 are the pcd I saved. It looks like many points are clustered into grids.
Figure3 is the screenshot of each frame from rviz2, I subscribe the /cloud_registered and set Size(pixels) to 5(default:1), I only managed to see the points after that. No matter which angle I rotate the lidar to, the number of points is always small and sparse.
In figure4, I set Size(pixels) to 2, Decay Time to 300, it can be seen that although it is a smooth wall, there are still some points that are particularly dense, while others are very sparse.

Lidar: livox mid360
Due to special requirements, I flipped the roll axis of the radar 180 degrees.
I run ig_lio_mapping.launch.py, and it loaded livox.yaml.
here is my params:

/**:
  ros__parameters:
    #for odom
    odom/sendTF: true
    #topic names 
    odom/lidar_topic: /livox/lidar #/points_raw
    odom/imu_topic: /livox/imu #/imu_correct
    odom/lidar_type: livox # livox velodyne ouster

    #frames
    odom/odom_frame: lio_odom
    odom/robot_frame: base_link
    odom/imu_frame: imu_link
    odom/lidar_frame: livox_frame
    odom/min_radius: 1.0
    odom/max_radius: 150.0
    odom/point_filter_num: 1
    odom/time_scale: 1000.0 # nclt: 0.001 other: 1000.0
    odom/enable_ahrs_initalization: false
    odom/enable_acc_correct: true

    odom/scan_resolution: 0.05
    odom/voxel_map_resolution: 0.5
    odom/max_iterations: 10

    odom/acc_cov: 0.1
    odom/gyr_cov: 0.1
    odom/ba_cov: 0.000001   #0.000001
    odom/bg_cov: 0.000001   #0.000001
    odom/init_ori_cov: 0.0001
    odom/init_pos_cov: 0.0001
    odom/init_vel_cov: 100.0
    odom/init_ba_cov: 0.0001
    odom/init_bg_cov: 0.0001
    odom/gravity: 9.80665

    odom/gicp_constraints_gain: 100.0 #100.0
    odom/point2plane_constraints_gain: 1000.0 #1000.0
    odom/enable_undistort: true
    odom/enable_outlier_rejection: true

    

    
    #for extrinsics
    extrinsics/imu2lidar/t: [0.011, -0.02329, 0.04412]
    extrinsics/imu2lidar/r: [1.0, 0.0, 0.0,
                            0.0, 1.0, 0.0,
                            0.0,  0.0, 1.0 ]
    
    extrinsics/robot2lidar/t: [0.0, 0.0, 0.0]
    extrinsics/robot2lidar/r: [1.0, 0.0, 0.0,
                              0.0, 1.0, 0.0,
                              0.0,  0.0, 1.0 ]
                              
    extrinsics/robot2imu/t: [0.0, 0.0, 0.0]
    extrinsics/robot2imu/r: [1.0, 0.0, 0.0,
                            0.0, 1.0, 0.0,
                            0.0,  0.0, 1.0 ]

    #for map
    map/save_map_path: /home/handshow/ig_lio/map #do not put / at the end of line
    map/map_name: loc
    map/map_frame: map  # lio_odom

HILTI SLAM challenge config files

According to some of your commits and comments, you tried ig_lio on the HILTI SLAM challenge. Could you provide the config files you used? Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.