参考博客:
mkdir -p ~/catkin_li_calib/src
cd ~/catkin_li_calib/src
catkin_init_workspace
####下载源码###########
git clone https://github.com/APRIL-ZJU/lidar_IMU_calib
####下面是安装一些依赖############
####ndt_omp###
wstool init
wstool merge lidar_IMU_calib/depend_pack.rosinstall
wstool update
cd lidar_imu_calib
./build_submodules.sh
cd ../..
catkin_make
source ./devel/setup.bash
###
直接编译,出现问题
/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above
7 | #error PCL requires C++14 or above
我发现lidar_imu_calib 的CMakeList.txt已经设定了 c++14
因此需要注意的是 ndt_omp 的CMakeList.txt里是否设置了c++14(我的就是这个问题)
如果想要适配雷达可以根据该
1:提示报错,找不到libpython3.7m.so.1.0,没有这个文件
这个报错是由于系统中没有python3.7。这种情况不需要再安装python3.7,上边博客有解决该问题的方法(我没有出现)
2. 初始化一直不成功
lidar_IMU_calib/src/core/inertial_initializer.cpp,即初始化程序发现,它与cov(2)值有关,程序设置必须值大于0.25才能初始化成功,不得不怀疑是imu的运动激励不够,但是这也没有办法,设备都在车上装着,只能将这个值调低点。
我的cov(2)>0.10才能初始化成功,但是最后的结果看起来是有问题的
下面我决定仔细读一遍代码,看能否找到问题
3. 初始化成功了,但是代码在优化时迭代卡在了0次,不往下运行。
在GitHub的issue55中找到解决方案:在 /thirdparty/Kontiki/kontiki/sensors.const_bias_imu.h 中找如下代码,并在代码中加入 return true
bool LockGyroscopeBias(bool lock) {
gyro_bias_locked_ = lock;
//加入
return true;
}
bool AccelerometerBiasIsLocked() const {
return acc_bias_locked_;
}
bool LockAccelerometerBias(bool lock) {
acc_bias_locked_ = lock;
//加入
return true;
}