大家好!最近在使用HandBot-S2进行相机和激光雷达内外参标定,在标定过程中,踩过坑也收获不少。总结以了几个方面的内容,希望能帮你少走弯路,高效搞定标定!

一 内参标定
1.1. 相机内参是什么?
内参:就是相机自己的视力参数——它决定了三维世界中的点,在拍成照片时会落在图像的哪个位置。

如图所示一个空间三维点(X,Y,Z),投影到那一个像素坐标(U,V)上,就是由相机的内参所决定。
1.2. 常见的相机模型与畸变模型
pinholeomni(全向,较少用) | radtanequidistant(等距,适用于广角) | |
pinholeequidistant或直接使用 fisheye 模型(需注意 Kalibr 实际仍用 pinhole + equidistant 表示鱼眼) | equidistant(更适合大视场角) |
注:Kalibr没有独立的fisheye投影模型,而是通过pinhole投影+equidistant畸变来建模鱼眼相机。这是其与OpenCV的fisheye模型的主要区别。
1.3. 如何进行内参标定?
1.3.1 准备标定板
这里我们使用Apriltag标定板,参数文件详解如下:

target_type: 'aprilgrid' :使用AprilTag阵列(AprilGrid)tagCols: 4 # 列有4个AprilTagtagRows: 6 # 行有6个AprilTagtagSize: 0.07 # 单个AprilTag的边长tagSpacing: 0.3 # 白色间隔与tagSize的比值codeOffset: 0 # 第一个AprilTag的ID起始编号
1.3.2 采集数据
这里我们用HandBot-S2录制采集数据,需要注意:
标定板的位姿尽量丰富一些,使其出现在相机画面的各个位置; 标定板需保持图像清晰、无运动模糊; 标定板在各个位置也可以倾斜20°~45°,增强深度约束。
1.3.3 启动标定
以标定HandBot-S2前相机为例(左右相机同理),运行命令:
kalibr_calibrate_cameras
--bag data1.bag
--topics /image_right0
--models pinhole-equidistant
--target april_4x6.yaml
1.3.4 输出结果说明
待标定结束,标定结果文件会存放对应bag包所在目录:

pdf文件:PDF版本的结果报告,包含重投影误差和标定姿态分布等。 txt文件:以文本文件储存的标定结果。 yaml文件:以YAML格式储存的标定结果。
yaml文件内容如下:
cam0:
cam_overlaps: []
camera_model: pinhole
distortion_coeffs: [0.3349406715984585, 0.21006075829846438, -0.33115314725802114, 0.13742653401800578]
distortion_model: equidistant
intrinsics: [600.9262770803342, 600.9770099580633, 659.4511971524234, 503.3520992593917]
resolution: [1280, 960]
rostopic: /image_right0
其中内参为intrinsics:[fx,fy,cx,cy],畸变参数为distortion_coeffs:[k1,k2,k3,k4]。
1.3.5 标定质量分析(标定结果仅供参考)
看重投影误差:左侧分布均匀,右侧重投影误差在1pix以内。

注:重投影误差 > 1pixel时重新采集数据,避免模糊、遮挡、低纹理区域。
看标定板位姿是否丰富:显然有远/近距离、侧向角度、高度变化。

看极角误差:大部分误差集中在0~1像素之间,说明整体标定质量不错。

看方位角误差:大部分误差集中在0~1像素,整体标定质量合格。

注:在实际应用中,标定精度不仅依赖算法本身,更受限于数据采集质量。标定板尺寸设计、采集姿态多样性、视野覆盖完整性等因素,都会直接决定最终标定结果的可靠性。
总结:通过上述相机标定流程,已完成前、左、右相机的内参标定,为后续相机与激光雷达之间的外参标定提供了可靠的前置条件。
二、外参标定
2.1 什么是外参
外参是描述传感器(如相机、激光雷达)在三维空间中相对于世界坐标系(或参考坐标系)的位置与姿态的一组参数,本质是刚体变换关系。
通俗来讲:外参就是描述一个传感器(比如相机、激光雷达)在外部世界中的“身份定位”。它回答了“我在哪里”以及“我朝向哪里”这两个问题。
核心构成:
旋转矩阵 R(3×3):描述传感器坐标系相对世界坐标系的旋转(朝向); 平移向量 T(3×1):描述传感器坐标系原点在世界坐标系中的位置。
2.2 如何标定外参
HandBot-S2提供可选配的标定代码,直接利用场景中的特征从LiDAR点云中提取3D边缘特征,同时从相机图像中提取2D边缘特征,通过将点云投影到图像平面,寻找两者的对齐关系(即外参)。
具体流程:
从LiDAR点云中提取3D边缘/平面特征(如物体轮廓); 从相机图像中提取对应的2D边缘/线条特征; 通过投影将3D点云特征投影到图像平面,交互式优化外参矩阵,使投影后的3D特征与2D特征对齐。
优点:
交互式,易操作,标定精度高。 HandBot-S2选配的标定代码可以适配定制各种多线机械雷达和固态雷达,可以同时标定多雷达和多相机的外参。
2.3 运行外参标定
2.3.1 采集数据
设备静止放置,采集10~20秒左右的数据,如图所示:

2.3.2 运行外参标定
标定算法将会收集激光点云和图像数据,并根据初始外参生成可视化结果:将点云投影在图像中的融合图像,同时在rviz中根据外参生成3维彩色点云,其中点云投影图像中的点云是根据反射率进行着色。
运行之后,同时终端也会输出相应的外参矩阵。此时要使用键盘进行调整,使点云与原物基本贴合,调整之后如图所示。

调整完毕后(设备平移外参已设置为结构参数),终端会输出相应的旋转矩阵,同时标定程序的rviz也能观察到彩色点云效果,如图所示:


总结:我们已完成HandBot-S2相机内参、相机与激光雷达外参的标定,将标定参数按设备指定格式写入设备后,重启设备即可实现彩色点云重建。
HandBot-S2产品采购渠道
HandBot-S2为了满足不同需求的客户,我们将提供不同的版本,具体总结如下:
| HandBot-S1 | 标准款 | |||||||
| 进阶款 | ||||||||
| HandBot-S2 | 标准款 | |||||||
| 进阶款 | ||||||||
| 3DGS款 | ||||||||
| 高阶款 |
HandBot-S2与HandBot-S1三维空间扫描仪产品差异总结如下:

