☰
SensorsCalibration 实战指南:如何从工厂到在线跑通自动驾驶多传感器标定
2026/9/28 2:42:01 网站建设 项目流程

SensorsCalibration 实战指南:如何从工厂到在线跑通自动驾驶多传感器标定

【免费下载链接】SensorsCalibrationOpenCalib: A Multi-sensor Calibration Toolbox for Autonomous Driving项目地址: https://gitcode.com/gh_mirrors/se/SensorsCalibration

做自动驾驶多传感器融合,最先翻车的往往是标定:LiDAR、相机、IMU、雷达各有各的坐标系,外参(坐标系之间的刚体变换)偏个几度,后面的融合、定位全乱。SensorsCalibration(OpenCalib)是一个面向自动驾驶的多传感器标定工具箱,覆盖相机内参标定、传感器两两外参标定到在线标定的完整链路,官方 Docker 镜像拉下来就能跑。

标定的痛点:每个传感器都有自己的坐标系

先说清楚我们在标定什么。每个传感器都附带一个局部坐标系,标定的目标是求出传感器坐标系到车身坐标系的 4×4 齐次变换——3 个旋转角加 3 个平移,一共 6 个自由度。数学本身不难,难在落地:传感器之间的特征匹配天然带噪声,优化又容易卡进局部最优,最后还得靠人眼判断"到底对齐没有"。

这也是为什么好用的标定工具普遍采用两条腿走路:先手动粗调拿到初值,再让算法自动精修。

SensorsCalibration 里都有些什么

仓库按标定对象分模块组织,一个文件夹对应一类标定,各模块的 README 里都有独立的使用文档:

  • camera_intrinsic:相机内参标定(基于标靶,全自动)
  • imu_heading:IMU 航向角标定(无标靶,自动)
  • lidar2imu、lidar2camera、lidar2lidar:三维感知组合,均提供手动 + 自动两套工具
  • radar2camera、radar2lidar:毫米波雷达组合的手动标定
  • surround-camera:环视相机外参标定(针孔/鱼眼,无标靶与有标靶两种)
  • factory_calib:工厂标定板检测与标定
  • online_calib与SensorX2car:车辆行驶中的在线标定、在线车体标定

支持的主要组合一览:

标定对象参数类型方法手动自动
相机内参内参基于标靶—是
LiDAR-相机外参无标靶(道路场景)是是
LiDAR-IMU外参无标靶(道路场景)是是
LiDAR-LiDAR外参无标靶是是
环视相机外参无标靶 / 基于标靶是是
雷达-相机 / 雷达-LiDAR外参无标靶是—
工厂标定(6 种标定板)内参/外参标定板标靶是是

官方文档:README.md(顶层 README 里有全部模块的索引表)。

值得关注的地方:无标靶道路场景自动标定 + 交互式手动标定

不少开源工具做到"标定板标定"就停了,真实道路场景要自己另搭。SensorsCalibration 的侧重恰好在这个空档:

  • 自动标定无标靶:以 LiDAR-相机为例,它从图像和点云里提取车道线、灯杆这类直线特征,内部用"粗粒度随机搜索 + 局部精细搜索"两级策略求解外参,目标是让图像直线与点云投影精确重合;
  • 手动标定可交互:左侧 GUI 按钮、右侧点云投影预览,支持键盘微调(q/w/e 调角度,r/t/y 调平移),点 Save 即导出外参和内参 JSON;
  • 工厂标定剥离了 OpenCV:棋盘格、圆阵、竖板、AprilTag、ArUco、圆孔板(LiDAR 可用)六种标定板识别全部自研,产线环境部署省心。

⚠️ 注意:自动标定的结果对初值非常敏感,初值偏几十度基本会收敛到错误位置。推荐流程是先用手动工具把初值调到投影大致对齐,再跑自动优化。

快速上手:拉 Docker 镜像、编译、运行

项目提供官方 Docker 镜像,OpenCV、PCL、Eigen、Ceres 等依赖都装好了。宿主机有 NVIDIA GPU 时,run_docker.sh会顺带把 GPU 和 X11 显示挂进来,手动标定窗口能正常弹出来:

git clone https://gitcode.com/gh_mirrors/se/SensorsCalibration cd SensorsCalibration && sudo ./run_docker.sh

容器内代码根目录挂载在/share,进到对应模块目录编译即可:

cd /share/lidar2camera/manual_calib && mkdir -p build && cd build cmake .. && make ./bin/run_lidar2camera data/0.png data/0.pcd \ data/center_camera-intrinsic.json \ data/top_center_lidar-to-center_camera-extrinsic.json

四个参数依次是图像、PCD 点云、内参 JSON、外参初值 JSON。弹窗后微调、保存,手动标定就完成了一半。

拿到手动初值后跑自动标定。这里要注意:自动标定吃的"图像"是用预训练分割模型提取出的特征掩码图,不是原图——绿色点即点云特征在图像上的投影:

cd /share/lidar2camera/auto_calib ./bin/run_lidar2camera data/mask.jpg data/calib.pcd \ data/center_camera-intrinsic.json \ data/top_center_lidar-to-center_camera-extrinsic.json

核心源码:lidar2camera/auto_calib/,官方文档:lidar2camera/README.md。

效果验证与三个常见坑

结果对不对,看投影。下图中白色是图像提取的直线,绿色是 LiDAR 特征,两者贴合就说明标定到位。camera2car 模块还会输出角度误差的评估曲线(AUC 71.3%、MSE 0.000357),可以直接拿来当验收参考。

三个常见的坑,基本都出在数据而不是代码:

  1. 时间同步是第一大坑:LiDAR-IMU 在线标定时,点云和 GNSS/IMU 位姿的时间戳没对齐,参数怎么调轨迹都歪。先查数据的时间同步,再怀疑算法;
  2. 采集有讲究:LiDAR-IMU 自动标定官方要求地面足够平、周边特征丰富(墙体、车道线、灯杆)、车速保持 10km/h、绕圈三圈、尽量避开动态目标。官方轨迹参考如下:

  1. 别指望自动标定从空初值收敛。它是"精修"算法不是"估计"算法,初值必须来自手动工具或工厂值。💡 提示:手动窗口里切到 Intensity Color 显示模式,对比地面车道线的强度分布,对齐判断会更准。

要点速记

  • 环境麻烦?直接用官方镜像scllovewkf/opencalib:v1,run_docker.sh一行起容器,手动标定 GUI 开箱可用;
  • 仓库按标定对象分模块,查顶层 README.md 的索引表,按需进对应目录,不必全读;
  • 推荐"手动出初值 → 自动精修"两段式,自动标定无标靶、直接跑道路场景;
  • 工厂场景看factory_calib,六种标定板识别代码与 OpenCV 解耦;
  • 在线标定看online_calib(LiDAR-IMU、相机-IMU、雷达-车体)与SensorX2car。

【免费下载链接】SensorsCalibrationOpenCalib: A Multi-sensor Calibration Toolbox for Autonomous Driving项目地址: https://gitcode.com/gh_mirrors/se/SensorsCalibration

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询