Reference:
文章跳转:
目的
由于安装原因,线束之间的夹角和设计不一致,会导致测量不准。
方法
多线束打在平面上,利用共面约束,求解夹角误差。
参考
论文:Calibration of a rotating multi-beam Lidar
论文:Improving the Intrinsic Calibration of a Velodyne LiDAR Sensor
论文:3D LIDAR–camera intrinsic and extrinsic calibration: Identifiability and analytical least-squares-based initialization
目的
由于加工原因,产生零偏、标度因数误差、安装误差。
方法
分立级标定:基于转台;
迭代优化标定:不需要转台。
参考
论文:A Robust and Easy to Implement Method for IMU Calibration without External Equipments
代码:https://github.com/Kyle-ak/imu_tk
目的
用编码器输出解算车的位移增量和角度增量,需已知轮子半径和两轮轴距。
方法
以车中心雷达/组合导航做观测,以此为真值,反推模型参数。
参考
论文:Simultaneous Calibration of Odometry and Sensor Parameters for Mobile Robots
目的
相机与真实空间建立关联,需已知其内参。
方法
张正友经典方法
目的
解算雷达和相机之间的相对旋转和平移。
方法
PnP是主流,视觉提取特征点,雷达提取边缘,建立几何约束。
参考
论文: LiDAR-Camera Calibration using 3D-3D Point correspondences
代码: https://github.com/ankitdhall/lidar_camera_calibration
论文: Automatic Extrinsic Calibration for Lidar-Stereo Vehicle Sensor Setups
代码: https://github.com/beltransen/velo2cam_calibration
目的
多雷达是常见方案,使用时将点云直接拼接,但前提是已知雷达之间的外参(相对旋转和平移)。
方法
基于特征(共面)建立几何约束,从而优化外参。
参考
论文:A Novel Dual-Lidar Calibration Algorithm Using Planar Surfaces
代码:https://github.com/ram-lab/lidar_appearance_calibration
目的
手眼标定适用于所有无共视,但是能输出位姿的传感器之间标定。包括:
• 无共视的相机、雷达,或雷达与雷达之间;
• 相机与IMU,或雷达与IMU之间(前提是IMU要足够好,或直接使用组合导航)。
方法
均基于公式 AX=XBAX=XBAX=XB
参考
论文:LiDAR and Camera Calibration using Motion Estimated by Sensor Fusion Odometry
代码:https://github.com/ethz-asl/lidar_align
目的
• 脱离标靶,实现在线标定;
• 某些器件无法提供准确位姿(如低精度IMU),不能手眼标定。
方法
在融合模型中,增加外参作为待估参数。
参考
众多vio/lio系统,如vins、 lio-mapping、 M-Loam 等
这些方法中,推荐优先级从高到低为:
a. 基于共视的标定
b. 融合中标定
c. 手眼标定
建议
应在良好环境下标定,尽量避免不分场景的在线标定。良好环境指观测数据优良的场景,例如:
a. GNSS 信号良好;
b. 点云面特征丰富,没有特征退化;
c. 动态物体较少
目的
在原有离散时间融合模式下,简单地解决时间同步问题。
方案 I
简单但巧妙的策略: IMU时间保持不变,图像上特征点基于匀速运动模型修改位置。
与不考虑时间误差时相比,架构不变,使用极小的改动,实现了期望的效果。
elk=zlk−π(RckwT(Pl−pckw))zlk=[ulkvlk]T.↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓elk=zlk(td)−π(RckwT(Pl−pckw))zlk(td)=[ulkvlk]T+tdVlk.\begin{array}{l} \mathbf{e}_l^k=\mathbf{z}_l^k-\pi\left(\mathbf{R}_{c_k}^{w^T}\left(\mathbf{P}_l-\mathbf{p}_{c_k}^w\right)\right) \\ \mathbf{z}_l^k=\left[\begin{array}{ll} u_l^k & v_l^k \end{array}\right]^T . \\ \downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow \\ \mathbf{e}_l^k=\mathbf{z}_l^k\left(t_d\right)-\pi\left(\mathbf{R}_{c_k}^{w^T}\left(\mathbf{P}_l-\mathbf{p}_{c_k}^w\right)\right) \\ \mathbf{z}_l^k\left(t_d\right)=\left[\begin{array}{ll} u_l^k & v_l^k \end{array}\right]^T+t_d \mathbf{V}_l^k . \end{array} elk=zlk−π(RckwT(Pl−pckw))zlk=[ulkvlk]T.↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓elk=zlk(td)−π(RckwT(Pl−pckw))zlk(td)=[ulkvlk]T+tdVlk.参考文献:Online Temporal Calibration for Monocular Visual-Inertial Systems
方案 II
在滤波中计算相机位姿时,直接按时间差对积分区间进行调整。
状态量:x=[xITICq‾TCpITtdc1T⋯cMT]T\mathbf{x}=\left[\begin{array}{lllllll} \mathbf{x}_I^T & { }_I^C \overline{\mathbf{q}}^T & { }^C \mathbf{p}_I^T & t_d & \mathbf{c}_1^T & \cdots & \mathbf{c}_M^T \end{array}\right]^Tx=[xITICqTCpITtdc1T⋯cMT]T
相机位姿估计:c^new=[GCq(t+td)^GpC(t+td)^]=[ICq^⊗GIq^(t+t^d)Gp^I(t+t^d)+GIR^(t+t^d)TIp^C]\hat{\mathbf{c}}_{n e w}=\left[\begin{array}{c}{ }_G^C \widehat{\mathbf{q}\left(t+t_d\right)} \\ { }^G \widehat{\mathbf{p}_C\left(t+t_d\right)}\end{array}\right]=\left[\begin{array}{c}{ }_I^C \hat{\mathbf{q}} \otimes{ }_G^I \hat{\mathbf{q}}\left(t+\hat{t}_d\right) \\ { }^G \hat{\mathbf{p}}_I\left(t+\hat{t}_d\right)+{ }_G^I \hat{\mathbf{R}}\left(t+\hat{t}_d\right)^T{ }^I \hat{\mathbf{p}}_C\end{array}\right]c^new=[GCq(t+td)GpC(t+td)]=[ICq^⊗GIq^(t+t^d)Gp^I(t+t^d)+GIR^(t+t^d)TIp^C]
参考文献:Online Temporal Calibration for Camera-IMU Systems: Theory and Algorithms
上一篇:PMP考前冲刺2.11 | 2023新征程,一举拿证
下一篇:C++中的枚举与位域