Giter Club home page Giter Club logo

coco-lic's Introduction

Coco-LIC

Coco-LIC: Continuous-Time Tightly-Coupled LiDAR-Inertial-Camera Odometry using Non-Uniform B-spline

r3live fastlivo lvisam

The following are three main characters of 🥥 Coco-LIC [Paper] [Video] :

  • dynamically place control points to unlock the real power of the continuous-time trajectory
  • tightly fuse LiDAR-Inertial-Camera data in a short sliding window based on a factor graph
  • support multimodal multiple LiDARs and achieve great performance in degenerated cases

Prerequisites

  • ROS(tested with noetic)
  • Eigen 3.3.7
  • Ceres 2.0.0
  • OpenCV 4
  • PCL >= 1.13
  • livox_ros_driver
  • yaml-cpp

Install

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/Livox-SDK/livox_ros_driver.git
cd ~/catkin_ws && catkin_make
cd ~/catkin_ws/src
git clone https://github.com/APRIL-ZJU/Coco-LIC.git
cd ~/catkin_ws && catkin_make
source ~/catkin_ws/devel/setup.bash
cd ~/catkin_ws/src/Coco-LIC && mkdir data

Run

  • Download R3LIVE dataset or FAST-LIVO dataset or NTU-VIRAL dataset or LVI-SAM dataset.

  • Configure parameters in the config/ct_odometry_xxx.yaml file.

    • log_path: the path to log
    • config_path: the path of config folder
    • bag_path: the file path of rosbag
  • Run on R3LIVE dataset for example.

    roslaunch cocolic odometry.launch config_path:=config/ct_odometry_r3live.yaml

    The estimated trajectory is saved in the folder ./src/Coco-LIC/data.

Supplementary1 - non-uniform verification

1 control point per 0.1 seconds 🥊 adaptively placing control points per 0.1 seconds.

The different colors of the trajectory correspond to different densities of control points.

Supplementary2 - comparison on NTU-VIRAL

We additionally compare Coco-LIC with our previous work CLIC on NTU-VIRAL dataset, employing 1 LiDAR.

The best results are marked in bold. It can be seen that Coco-LIC stably outperforms CLIC.

TODO List

  • serve as the front-end of incremental 3D Gaussian Splatting(Gaussian-LIC
  • optimize the code architecture (rosbag play mode) and support ikd-tree for acceleration

Citation

If you find our work helpful, please consider citing 🌟:

@article{lang2023coco,
  title={Coco-LIC: continuous-time tightly-coupled LiDAR-inertial-camera odometry using non-uniform B-spline},
  author={Lang, Xiaolei and Chen, Chao and Tang, Kai and Ma, Yukai and Lv, Jiajun and Liu, Yong and Zuo, Xingxing},
  journal={IEEE Robotics and Automation Letters},
  year={2023},
  publisher={IEEE}
}
@article{lv2023continuous,
  title={Continuous-time fixed-lag smoothing for lidar-inertial-camera slam},
  author={Lv, Jiajun and Lang, Xiaolei and Xu, Jinhong and Wang, Mengmeng and Liu, Yong and Zuo, Xingxing},
  journal={IEEE/ASME Transactions on Mechatronics},
  year={2023},
  publisher={IEEE}
}

Acknowledgement

Thanks for Basalt, LIO-SAM, Open-VINS, VINS-Mono, R3LIVE and FAST-LIVO.

LICENSE

The code is released under the GNU General Public License v3 (GPL-3).

coco-lic's People

Contributors

jerry-locker 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  avatar  avatar  avatar  avatar  avatar  avatar

coco-lic's Issues

code release

Thanks for your work! When would you plan to open the source code? Thanks!

double free or corruption (out) when running test data

Hi, @Jerry-locker !

I followed the same environment and third party version as listed in the README. However, it died with a double free problem.

At first I thought it was because pcl did not turn off MARCH_NATIVE when compiling. After I turned off this option and recompiled, the memory error still occurred. Any suggestions? Thanks!
截图 2024-05-09 16-48-54

Melodic and Noetic are all meeting this problem. Like the followings:

In file included from /home/h/ku/pcl-1.14-installpath/include/pcl-1.14/pcl/type_traits.h:40,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/../utils/mypcl_cloud_type.h:21,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.h:24,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.cpp:19:
/home/h/ku/pcl-1.14-installpath/include/pcl-1.14/pcl/point_struct_traits.h:68:30: error: redefinition of ‘struct pcl::traits::decomposeArray’
68 | template struct decomposeArray
| ^~~~~~~~~~~~~~
In file included from /usr/local/include/pcl-1.10/pcl/make_shared.h:47,
from /usr/local/include/pcl-1.10/pcl/PCLHeader.h:6,
from /usr/local/include/pcl-1.10/pcl/point_cloud.h:47,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/../utils/mypcl_cloud_type.h:20,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.h:24,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.cpp:19:
/usr/local/include/pcl-1.10/pcl/point_traits.h:99:33: note: previous definition of ‘struct pcl::traits::decomposeArray’
99 | template struct decomposeArray
| ^~~~~~~~~~~~~~
In file included from /home/h/ku/pcl-1.14-installpath/include/pcl-1.14/pcl/type_traits.h:40,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/../utils/mypcl_cloud_type.h:21,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.h:24,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.cpp:19:
/home/h/ku/pcl-1.14-installpath/include/pcl-1.14/pcl/point_struct_traits.h:76:9: error: redefinition of ‘struct pcl::traits::POD’
76 | struct POD
| ^~~
In file included from /usr/local/include/pcl-1.10/pcl/make_shared.h:47,
from /usr/local/include/pcl-1.10/pcl/PCLHeader.h:6,
from /usr/local/include/pcl-1.10/pcl/point_cloud.h:47,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/../utils/mypcl_cloud_type.h:20,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.h:24,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.cpp:19:
/usr/local/include/pcl-1.10/pcl/point_traits.h:107:12: note: previous definition of ‘struct pcl::traits::POD’
107 | struct POD
| ^~~
In file included from /home/h/ku/pcl-1.14-installpath/include/pcl-1.14/pcl/type_traits.h:40,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/../utils/mypcl_cloud_type.h:21,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.h:24,
from /home/h/hong.MD.degree/cocolic_ws/src/Coco-LIC/src/spline/trajectory.cpp:19:
/home/h/ku/pcl-1.14-installpath/include/pcl-1.14/pcl/point_struct_traits.h:108:10: error: redefinition of default argument for ‘int dummy’
108 | struct name /** \cond NO_WARN_RECURSIVE / : name<typename POD::type, Tag, dummy> /* \endcond */
| ^~~~

roslaunch cocolic odometry.launch config_path:=config/ct_odometry_r3live.yaml

(base) kj@kj-System-Product-Name:~/catkin_ws/src/Coco-LIC$ roslaunch cocolic odometry.launch config_path:=config/ct_odometry_r3live.yaml
... logging to /home/kj/.ros/log/9400507e-4d90-11ef-8d3e-718a63e53793/roslaunch-kj-System-Product-Name-103918.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://kj-System-Product-Name:34085/

SUMMARY

PARAMETERS

  • /odometry_node_kj_System_Product_Name_103918_3781620890318617476/bag_path:
  • /odometry_node_kj_System_Product_Name_103918_3781620890318617476/config_path: /home/kj/catkin_w...
  • /odometry_node_kj_System_Product_Name_103918_3781620890318617476/pasue_time: -1.0
  • /odometry_node_kj_System_Product_Name_103918_3781620890318617476/verbose: False
  • /rosdistro: noetic
  • /rosversion: 1.16.0

NODES
/
odometry_node_kj_System_Product_Name_103918_3781620890318617476 (cocolic/odometry_node)
rviz_odom (rviz/rviz)

auto-starting new master
process[master]: started with pid [103963]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 9400507e-4d90-11ef-8d3e-718a63e53793
process[rosout-1]: started with pid [104007]
started core service [/rosout]
ERROR: cannot launch node of type [cocolic/odometry_node]: Cannot locate node of type [odometry_node] in package [cocolic]. Make sure file exists in package path and permission is set to executable (chmod +x)
process[rviz_odom-3]: started with pid [104014]
QFileSystemWatcher::removePaths: list is empty
QFileSystemWatcher::removePaths: list is empty
================================================================================REQUIRED process [rviz_odom-3] has died!
process has finished cleanly
log file: /home/kj/.ros/log/9400507e-4d90-11ef-8d3e-718a63e53793/rviz_odom-3*.log
Initiating shutdown!

[rviz_odom-3] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

Gaussian-LIC

I really like a few of your works. May I ask if this paper will have open-source code?

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.