激光雷达Lidar和RTK的标定算法实现(matlab)
本阶段所谓标定算法本质上不过是在matlab下对标定算法lidar align的重构和实现(原始的lidar align适用于ouster激光雷达,关键点在于ouster雷达数据中的时间戳信息,由于velodyne和ouster雷达上的一些不同,原始的lidar align标定代码应用范围有限)。
原理
标定算法的核心原理非常简单,激光雷达和组合导航在固定在载体上,中间差一个旋转矩阵(姿态变换)R0
,一个位移变化t0
,组合导航本身有位置t1
和姿态信息(转换为旋转矩阵R1
),可以转换为齐次坐标表示T0
,原始点云信息本质上是一个个坐标原点在激光雷达上的位置信息tx
[x0,y0,z0],那么,点云的真实位置t
(地理系下)应该表示为:
t = R1*(R0*tx+t0)+t1
若R1,R2,t0,t0
准确,点云最终表示的就是周围环境的点云地图,优化的目的其实就是找到评价点云t反应周围环境地图好坏的标准作为代价函数,对R0、t0
进行求解。
以上原理用公式表示为:
[ a b c 1 ] = T 1 ( T 0 [ x 0 y 0 z 0 1 ] ) \left[\begin{array}{c} a \\ b \\ c \\ 1 \end{array}\right]=T_{1}\left(T_{0}\left[\begin{array}{c} x_{0} \\ y_{0} \\ z_{0} \\ 1 \end{array}\right]\right) ⎣⎢⎢⎡abc1⎦⎥⎥⎤=T1⎝⎜⎜