chennuo0125-hit / lidar_imu_calib Goto Github PK
View Code? Open in Web Editor NEWautomatic calibration of 3D lidar and IMU extrinsics
automatic calibration of 3D lidar and IMU extrinsics
您好我测试了几个包。发现含有9轴imu数据的包测试结果比较好,6轴的包结果往往是错误的。请问您这个算法时只适用于9轴imu吗?感谢!
我测试了代码,输出结果只有旋转参数,不应该有平移参数么
I have a Jetson AGX that I am trying to get this working on. Its arm64 architecture
I managed to get ndt_omp installed by fixing the cmake
I then used the same process to install lidar_imu_calib. It built without errors
I edited the launch file to read my topics of lidar and imu
When I run your launch file I get:
SUMMARY
========
PARAMETERS
* /calib_exR_lidar2imu_node/bag_file: /home/lbackpack/c...
* /calib_exR_lidar2imu_node/imu_topic: /imu/data
* /calib_exR_lidar2imu_node/lidar_topic: /velodyne_points
* /rosdistro: melodic
* /rosversion: 1.14.10
NODES
/
calib_exR_lidar2imu_node (lidar_imu_calib/calib_exR_lidar2imu_node)
ROS_MASTER_URI=http://localhost:11311
process[calib_exR_lidar2imu_node-1]: started with pid [13307]
/home/lbackpack/catkin_ws/src/lidar_imu_calib/build/devel/lib/lidar_imu_calib/calib_exR_lidar2imu_node: error while loading shared libraries: libndt_omp.so: cannot open shared object file: No such file or directory
[calib_exR_lidar2imu_node-1] process has died [pid 13307, exit code 127, cmd /home/lbackpack/catkin_ws/src/lidar_imu_calib/build/devel/lib/lidar_imu_calib/calib_exR_lidar2imu_node __name:=calib_exR_lidar2imu_node __log:=/home/lbackpack/.ros/log/96d22832-6c0b-11eb-8543-48b02d2ff3be/calib_exR_lidar2imu_node-1.log].
log file: /home/lbackpack/.ros/log/96d22832-6c0b-11eb-8543-48b02d2ff3be/calib_exR_lidar2imu_node-1*.log
all processes on machine have died, roslaunch will exit
any suggestion on getting this working?
thanks in advance
first, thanks for you great work @chennuo0125-HIT !
as i know, this pip can be devided into two step, in first step, compute the init extrinsic rotation part. after first step, why not undistort cloud, it will give much more precise result when ndt match. and in the step two, it only use init rotation computed in step one as the ndt init, and do the same work again as step one???
it seems I'm the only one having issue with this error
cc1plus: fatal error: CMakeFiles/calib.dir/src/lib/calibExRLidar2Imu.cpp.d: No such file or directory
compilation terminated.
lidar_imu_calib/lidar_imu_calib/CMakeFiles/calib.dir/build.make:75: recipe for target 'lidar_imu_calib/lidar_imu_calib/CMakeFiles/calib.dir/src/lib/calibExRLidar2Imu.cpp.o' failed
make[2]: *** [lidar_imu_calib/lidar_imu_calib/CMakeFiles/calib.dir/src/lib/calibExRLidar2Imu.cpp.o] Error 1
CMakeFiles/Makefile2:1917: recipe for target 'lidar_imu_calib/lidar_imu_calib/CMakeFiles/calib.dir/all' failed
make[1]: *** [lidar_imu_calib/lidar_imu_calib/CMakeFiles/calib.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 70%] Built target align
Makefile:145: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed
is anyone out there? plz help..
Hi, when I use XYZI type point cloud calibration, it always shows add lidar msg and no lidar and imu data, when I use XYZIRT type point cloud calibration, it shows failed to find match for field "intensity", how can I solve this problem?
What should I do if the above message appears after I have finished the calibration? Thank you
ctrl+c结束后报错如下,无其他输出,请问这是为什么呢
[calib_exR_lidar2imu_node-2] escalating to SIGTERM
is there any way to get translation between lidar and imu?
目前雷达是禾赛的Pandar40,请问您在标定前如何进行时间的同步?
Thanks for your great work!
I've been trying to calibrate Lidar and IMU mounted on ground vehicle, Can I use this algorithm?
It seems to be not very accurate in my simulation environment with only 2d movement.
Hi!
Thanks for your excellent works! I'm using your algorithm to calibrate lidar and imu.The output is not accurate enough.I would like to know how to record rosbag to improve accuracy?Are there any requirements for the scene where the data is recorded?I would be very grateful if you could give a detailed answer. : )
If you got the following error:
Errors << lidar_imu_calib:make /home/he/catkin_ws/logs/lidar_imu_calib/build.make.003.log
In file included from /home/he/catkin_ws/src/lidar_imu_calib/include/calibExRLidar2Imu.h:16:0,
from /home/he/catkin_ws/src/lidar_imu_calib/src/lib/calibExRLidar2Imu.cpp:1:
/usr/include/lz4.h:196:57: error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’
typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
In file included from /home/he/catkin_ws/src/lidar_imu_calib/include/calibExRLidar2Imu.h:16:0,
from /home/he/catkin_ws/src/lidar_imu_calib/src/lib/calibExRLidar2Imu.cpp:1:
/usr/include/lz4.h:249:72: error: conflicting declaration ‘typedef struct LZ4_streamDecode_t LZ4_streamDecode_t’
typedef struct { unsigned long long table[LZ4_STREAMDECODESIZE_U64]; } LZ4_streamDecode_t;
^~~~~~~~~~~~~~~~~~
there is a fix in ethz-asl/lidar_align#16
exactly here: ethz-asl/lidar_align#16 (comment)
System: Ubuntu 18.04
ROS: melodic
Reason: /usr/include/lz4.h conflict with /usr/include/flann/ext/lz4.hI thing this will be fixed in next release version of system or ROS.
But you could try these commands to fix this problem.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.baksudo 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
感谢作者的工作!
想请问一下这套方法适合无人车么?
对于数据集,车辆需要行驶怎么样的轨迹呢?需要绕八字么?
Hi @mingjitianming @chennuo0125-HIT
I do not understand how this algorithm works, but why the extrinsic rotation matrix is not consistent? every time I run the algorithm I got different result!
please find the output below for three runs.
Thanks.
==================================================================================
ibrahim@ihroob:~/catkin_ws$ roslaunch lidar_imu_calib calib_exR_lidar2imu.launch
... logging to /home/ibrahim/.ros/log/e4333678-a5dd-11eb-8a1b-000c4302407b/roslaunch-ihroob-9257.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.
PARAMETERS
NODES
/
calib_exR_lidar2imu_node (lidar_imu_calib/calib_exR_lidar2imu_node)
process[calib_exR_lidar2imu_node-1]: started with pid [9272]
/points_raw, /imu_raw
[ INFO] [1619369790.190354985, 3976.880000000]: lidar buffer size 5, imu buffer size 99
[ INFO] [1619369795.393294432, 3982.080000000]: lidar buffer size 5, imu buffer size 89
[ INFO] [1619369800.392866976, 3987.080000000]: lidar buffer size 5, imu buffer size 97
[ INFO] [1619369805.393084713, 3992.080000000]: lidar buffer size 6, imu buffer size 85
[ INFO] [1619369810.395708642, 3997.080000000]: lidar buffer size 5, imu buffer size 86
[ INFO] [1619369815.398423282, 4002.080000000]: lidar buffer size 5, imu buffer size 92
^C[calib_exR_lidar2imu_node-1] killing on exit
total lidar buffer size 324, imu buffer size 5265
constraints size 323
constraints size 323
result euler angle(RPY) : 2.02875 0.0837701 -0.631102
result extrinsic rotation matrix :
0.804547 -0.200267 -0.559104
-0.587966 -0.401234 -0.702359
-0.0836722 0.893814 -0.440562
shutting down processing monitor...
... shutting down processing monitor complete
done
ibrahim@ihroob:/catkin_ws$ ^C/catkin_ws$ roslaunch lidar_imu_calib calib_exR_lidar2imu.launch
ibrahim@ihroob:
... logging to /home/ibrahim/.ros/log/e4333678-a5dd-11eb-8a1b-000c4302407b/roslaunch-ihroob-10630.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.
PARAMETERS
NODES
/
calib_exR_lidar2imu_node (lidar_imu_calib/calib_exR_lidar2imu_node)
process[calib_exR_lidar2imu_node-1]: started with pid [10645]
/points_raw, /imu_raw
[ INFO] [1619373238.069081582, 7423.670000000]: lidar buffer size 5, imu buffer size 94
[ INFO] [1619373243.243420420, 7428.840000000]: lidar buffer size 5, imu buffer size 93
^C[calib_exR_lidar2imu_node-1] killing on exit
total lidar buffer size 79, imu buffer size 1316
constraints size 78
constraints size 78
result euler angle(RPY) : 1.91052 -0.661753 -2.06045
result extrinsic rotation matrix :
-0.371043 -0.0215748 -0.928365
-0.696215 0.668024 0.262734
0.614501 0.743827 -0.262886
shutting down processing monitor...
... shutting down processing monitor complete
done
ibrahim@ihroob:~/catkin_ws$ roslaunch lidar_imu_calib calib_exR_lidar2imu.launch
... logging to /home/ibrahim/.ros/log/e4333678-a5dd-11eb-8a1b-000c4302407b/roslaunch-ihroob-10704.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.
PARAMETERS
NODES
/
calib_exR_lidar2imu_node (lidar_imu_calib/calib_exR_lidar2imu_node)
process[calib_exR_lidar2imu_node-1]: started with pid [10719]
/points_raw, /imu_raw
[ INFO] [1619373352.608345477, 7538.170000000]: lidar buffer size 5, imu buffer size 98
[ INFO] [1619373357.789264147, 7543.350000000]: lidar buffer size 6, imu buffer size 88
^C[calib_exR_lidar2imu_node-1] killing on exit
total lidar buffer size 66, imu buffer size 1143
constraints size 65
constraints size 65
result euler angle(RPY) : 1.80554 -0.797497 -0.0234645
result extrinsic rotation matrix :
0.698308 -0.70125 0.143579
-0.0163885 -0.216197 -0.976212
0.71561 0.679344 -0.162465
shutting down processing monitor...
... shutting down processing monitor complete
done
This algorithm is taking almost 10-15mins for a 4gb Bagfile of a 64Channel Lidar .
Is there any way to speed it up ?
Hi
I've tried to read your reference page but when translating to english several important information loses.
After I run roslaunch lidar_imu_calib I got "result extrinsic R -> -0.0368546 0.01498 -0.214961" I copied and pasted to Lio-Sam params config.yaml extrinsicTrans: [-0.0368546, 0.01498, -0.214961] . I haven't seen any difference between before and after result.
Hi, I tried to use this repo for LIO_SAM
In my case, I use LIVOX MID-70 LiDAR, and WIT motion WT901CTTL 9DOF IMU.
First, I checked my lidar messages detected well in src/lib/calibExRLidar2Imu.cpp, before codeline 350, all the messages are detected well.
but, in linenumber 352, there is a if condition like below.
if (invalid_lidar_it != lidar_buffer_.begin())
lidar_buffer_.erase(lidar_buffer_.begin(), invalid_lidar_it);
after this, my lidar messages are set as 0. I want to figure it out why my all lidar messages are set as 0.
I made the above mistakes when making,How can I solve them?
calibExRLidar2Imu.h 中78-80的三个vector应该用eigen的分配器,要不会崩溃,因为定义的struct用了EIGEN_MAKE_ALIGNED_OPERATOR_NEW进行对齐。
可改为:vector<LidarFrame, Eigen::aligned_allocator> lidar_buffer_;
There was an error compiling the repo.
catkin_ws/src/lidar_imu_calib/include/calibExRLidar2Imu.h:15:10: fatal error: pclomp/ndt_omp.h: No such file or directory
#include <pclomp/ndt_omp.h>
^~~~~~~~~~~~~~~~~~
sudo apt install libpcl-dev
can not solve the problem. I also compiled PCL 1.7.2 from the source still the same error.
I am getting the following warning/error repeatedly when using the calibration tool:
[pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would overflow.
I am using the following configuration:
(In order to compile on Ubuntu 20.04LTS I had to change the compiler from c++11 to c++14 in CMakeLists.txt
, but then it appeared to compile correctly)
Thank you for sharing your nice project & research!
Can I know the refrence paper for this project?
Thank you!
In case anyone gets the following error during compilation,
/usr/include/flann/ext/lz4.h:196:57: error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’
typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
checkout the following issue for possible workaround.
ethz-asl/lidar_align#16 (comment)
If anyone has a better resolution please do let me know.
Cheers
Sooraj
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.