Lidar_imu自动标定

系统版本:Ubuntu20.04

ROS版本:Noetic

前提条件,安装以下内容:

  • Cmake
  • opencv 2.4
  • eigen 3
  • PCL 1.9
  • Pangolin

执行以下命令,进行软件的编译:

这里给出程序的链接,自行下载:

SensorsCalibration/lidar2imu/auto_calib at master · PJLab-ADG/SensorsCalibration · GitHubOpenCalib: A Multi-sensor Calibration Toolbox for Autonomous Driving - SensorsCalibration/lidar2imu/auto_calib at master · PJLab-ADG/SensorsCalibrationhttps://github.com/PJLab-ADG/SensorsCalibration/tree/master/lidar2imu/auto_calib下载成功后,执行以下命令:

cd ~/auto_lib
# mkdir build
mkdir -p build && cd build
# build
cmake .. && make

小技巧:根据自己电脑的线程可选择编译的速度 ,make时可选择

make make -j4 make -j12

当自己进行编译时,出现以下错误:

第一个错误:

4341f10e2d774a1a99290c5a53ff7220.png

 解决方法:

需要找到报错对应功能包,在功能包的CMakeList.txt文档里加入下面语句:
set(CMAKE_CXX_STANDARD 14)

第二个错误:

b09427791be7485f8ce873a7101cb94e.png

解决方法:

首先检查一下有没有这个文件;如果有,则应该是文件路径不对,通过链接建立关系;如果没有,则下载该相关文件。

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/文件夹

解决上述两个问题后,编译成功,如下图所示。

385f3ffef31f4e60b0d7cda5f7c812aa.png

 然后就可以运行程序,需注意在运行程序前须将数据集换为官方提供的数据集。

官方提供的数据集百度网盘链接:

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间的外参变化:

de8872cddd5a4b89b307911c5311e340.png

 在运行过程中,我们可以看到迭代了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

 

### LIDARIMU在ROS中的标定方法 对于LIDARIMU之间的联合标定,在ROS环境中存在多种实现方式。通常情况下,这类标定过程涉及到获取两传感器间相对位置关系以及时间同步的信息。 #### 时间同步与初步配置 为了确保来自两个设备的数据能够被有效关联起来,首先需要解决的是它们之间的时间戳对齐问题。这可以通过硬件级或者软件级别的手段来完成。如果使用开源工具包,则可能依赖于特定的消息过滤器节点如`message_filters::Synchronizer`来进行基于时间窗口的选择性订阅[^2]。 #### 外部参数估计 针对外部几何变换矩阵(即旋转和平移),一种常用的技术是从静态场景下的观测数据出发构建优化目标函数并求解最优值。例如,通过移动平台携带的LiDAR扫描固定物体表面特征点云序列,并利用IMU测量姿态变化角度作为约束条件之一参与计算最终得到两者间的转换关系[^3]。 #### 自动化流程支持 一些研究项目提供了更为便捷自动化的解决方案。比如LOAM家族算法框架里就包含了专门用于处理此类任务的功能模块——其中LeGO-LOAM不仅实现了轻量高效的里程计估算同时还集成了简易版的手眼标定程序方便用户快速上手操作;而更先进的版本像LIO-SAM则进一步加强了多源感知融合能力从而提高了整体定位精度稳定性[^4]。 ```bash roslaunch lio_sam lidar_imu_calib.launch ``` 上述命令展示了如何启动一个典型的Lidar-Inertial Odometry(SLAM)系统自带的标定脚本实例。 #### 手工辅助调整 当缺乏足够的自动化工具时也可以采取半人工的方式逐步逼近理想状态。具体做法是在已知环境布局的前提下指挥机器人沿预定轨迹行驶记录下一系列配对样本之后再借助图形界面交互式编辑器手动修正偏差直至满意为止。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值