Lidar_imu自动标定
系统版本:Ubuntu20.04
ROS版本:Noetic
前提条件,安装以下内容:
- Cmake
- opencv 2.4
- eigen 3
- PCL 1.9
- Pangolin
执行以下命令,进行软件的编译:
这里给出程序的链接,自行下载:
cd ~/auto_lib
# mkdir build
mkdir -p build && cd build
# build
cmake .. && make
小技巧:根据自己电脑的线程可选择编译的速度 ,make时可选择
make make -j4 make -j12
当自己进行编译时,出现以下错误:
第一个错误:
解决方法:
需要找到报错对应功能包,在功能包的CMakeList.txt文档里加入下面语句:
set(CMAKE_CXX_STANDARD 14)
第二个错误:
解决方法:
首先检查一下有没有这个文件;如果有,则应该是文件路径不对,通过链接建立关系;如果没有,则下载该相关文件。
sudo apt-get install libjsoncpp-dev
sudo ln -s /usr/include/jsoncpp/json/ /usr/include/json
#include <json/json.h>代表/usr/include/json/json.h。include就是/usr/include/文件夹
解决上述两个问题后,编译成功,如下图所示。
然后就可以运行程序,需注意在运行程序前须将数据集换为官方提供的数据集。
官方提供的数据集百度网盘链接:
Link (链接): https://pan.baidu.com/s/1AODTuqhmgwbRWxGGCmo0iA
Extraction code (提取码): 94id
然后执行命令:
cd ~./auto_calib/
./bin/run_lidar2imu data/top_center_lidar/ data/NovAtel-pose-lidar-time.txt data/gnss-to-top_center_lidar-extrinsic.json
就可以得到lidar和imu间的外参变化:
在运行过程中,我们可以看到迭代了34次,并将得到的结果放在auto_calib目录下的refined_calib_imu_to_lidar.txt文件中。
文件的内容如下:
refined calib:
R: 0.0043972 0.999914 0.0124048 -0.999829 0.00417381 0.0179774 0.0179241 -0.0124817 0.999761
t: -1.20788 -0.0180692 -1.37356
deltaTrans:
0.999988 0.00380849 -0.00308101 -0.00422593
-0.00381098 0.999992 -0.000801757 -0.00940856
0.00307793 0.000813489 0.999995 0
0 0 0 1
delta roll, pitch, yaw, tx, ty, tz:
0.000807626 -0.00307948 -0.00380975 -0.00422593 -0.00940856 0
delta roll, pitch, yaw, tx, ty, tz from begin:
1.0008 -0.00688495 -0.000581471 -0.00422593 -0.00560535 0.999993