我是文章的搬运工
详细介绍以及编译报错解决方法在这篇文章
这里贴一下我遇到的问题:
定义冲突问题
error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’ typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
这个原因是ROS版本下有两个头文件定义发生冲突,github的issue中给出了两种解决办法,之一是重命名头文件避免冲突:
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.bak
sudo 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
(详见:https://github.com/ethz-asl/lidar_align/issues/16)
改了这个我在ubuntu18下就可以编译成功拉
一些学习:
激光和IMU标定需要标什么?
参考文献[1]中指出 “the LiDAR-IMU calibration mainly includes the LiDAR extrinsic parameters calibration, IMU intrinsic parameters calibration, and coordinate transformation between LiDAR and IMU”,即需要标定三个:Lidar的外参、IMU内参、Lidar与IMU之间的变换。
Lidar外参一般厂商都做了标定,所以不用管。
IMU的内参,首先需要给出IMU的测量模型。
Lidar与IMU之间的变换,包括两部分:6DoF的刚体变换,与传感器延迟的时间差。
具体原理参考这篇文章