如何三步完成自动驾驶多传感器标定:LiDAR、相机、IMU 外参一次搞定
2026/9/19 7:46:25 网站建设 项目流程

如何三步完成自动驾驶多传感器标定:LiDAR、相机、IMU 外参一次搞定

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

SensorsCalibration(OpenCalib)是一个面向自动驾驶的多传感器标定工具箱,帮你把激光雷达、相机、IMU、毫米波雷达的数据统一到同一坐标系里。说白了,标定就是给每个传感器求出一组"外参"——描述它装在车上哪个位置、朝向如何——这样不同传感器看到的才是同一件事。它同时覆盖内参标定、外参标定、手动标定和自动标定,你不需要贴满整个车间的标定板,也能在普通路测场景里把参数求出来。

外参标定到底在解决什么问题

你可以把车想象成一个人,它装着好几个"眼睛"和"耳朵":相机看颜色和纹理,激光雷达测三维点云,IMU 感知姿态,毫米波雷达追运动目标。但每个传感器都有自己的坐标系,方向、位置都不一样。如果这些坐标对不齐,融合出来的障碍物就会"飘",定位和建图也跟着出错。

红色是车身坐标系,橙色是各传感器坐标系,标定的目标就是求出它们之间的变换关系。

标定的数学本质是一个 4×4 的齐次变换矩阵,里面装着一个旋转(3×3)和一个平移。难点不在公式,而在于你很难直接"量"出这组数——传感器装在车上,你没法拿尺子去量它和车身的相对位置。

落地提示:外参标定是传感器融合的地基。它不准,后面所有感知算法都白搭,所以一定要在融合之前把它做对。

Docker 一键起环境,5 分钟跑通第一个标定

这个工具箱的依赖不少(OpenCV、PCL、Eigen、Pangolin,部分模块还要 Ceres 和 Pangolin),手动装环境很劝退。官方给了一份现成的 Docker 镜像,把依赖都打包好了,你只需要一行命令拉镜像、再一行命令挂载代码目录启动容器。

sudo docker pull scllovewkf/opencalib:v1 sudo ./run_docker.sh

踩坑提醒:run_docker.sh会自动检测有没有 NVIDIA GPU,有 GPU 会带上--gpus all启动,图像语义分割那类任务会快很多;没有 GPU 也能跑纯 C++ 的标定模块。

每个标定模块(lidar2camera、lidar2imu、factory_calib 等)各自带一个CMakeLists.txt,进到对应目录mkdir build && cd build && cmake .. && make就能编译,编译产物在bin/下。

手动标定:用键盘把激光点云和图像对齐 🔧

当你有一张相机图像和一帧激光点云,想确认它们的相对位姿时,手动标定工具最直接。它把点云投影到图像上,你通过键盘微调旋转和平移,直到点云轮廓和图像里的道路、路缘严丝合缝。

cd lidar2camera/manual_calib ./bin/run_lidar2camera data/0.png data/0.pcd \ data/center_camera-intrinsic.json \ data/top_center_lidar-to-center_camera-extrinsic.json

左半边是手动标定控制面板,右半边是点云投影到图像上的对齐效果。

面板里q/aw/se/d分别调三个旋转自由度,r/ft/gy/h调平移,i/ku/j还能顺便微调相机的内参焦距。对齐满意后点Save,结果会以矩阵和 JSON 两种格式存到运行目录。

踩坑提醒:点云和图像的时间戳必须对得上。哪怕差几十毫秒,车一动,点云就会整体偏移,怎么调都"差一口气"。

自动标定:不贴标定板也能求外参 🚗

手动标定靠人眼,慢且主观。自动标定走的是另一条路:从图像和点云里各提取一批"直线特征"——车道线、路缘石、电线杆、立杆——然后把两类特征对齐来求解外参。它不需要你在车上贴标定板,一段普通路测就能跑。

图像侧的直线特征要先用一个预训练的语义分割网络(DeepLabV3)跑出 mask,再喂给标定程序;点云侧则直接从 PCD 文件里提特征。

cd 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

绿色为激光点云特征在图像平面上的投影,投影误差越小,外参越准。

这个模块的算法叫 CRLF,基于直线特征做标定和迭代精化,对路口的斜线、曲线都能稳定收敛。

落地提示:自动标定对"直线特征"的密度敏感。一段全是平路、没有立杆和路缘的直路,特征太少,结果会飘。采集时尽量走有丰富垂直和水平特征的路段。

工厂标定和路测标定,你该用哪一套 🏭

工具箱其实分两套场景,选错会白忙一场:

  • 工厂标定factory_calib/):车下生产线最后一道工序,用四定位 + 标定板求传感器位姿,靠的是"标定板识别"。它支持棋盘格、圆点板、竖板、AprilTag、Aruco Marker、圆孔板六种板子,而且识别代码不依赖 OpenCV,不同光照下都很稳。适合量产、重复性强、要求精度可追溯的场合。

AprilTag 标定板在相机图像中的自动识别效果,角点被精确框出。

  • 路测标定lidar2camera/lidar2imu/SensorX2car/surround-camera/):车已经在路上跑,用真实道路场景求外参,适合装车后的标定与在线精化。

怎么选一句话概括:要精度可追溯、批量重复,用工厂标定;要在真实路况下快速求参或做在线校准,用路测标定。两者并不冲突,常见做法是工厂先给一组高精初始值,路测再做自动精化。

决策提醒:如果你只是想让点云和图像"大致对齐"做个 demo,手动标定最快;如果要上量产线,务必走工厂标定并做标定板识别的精度验收。

想深入看某类标定的实现,可以直接进对应目录,每个模块的 README 都写了输入文件格式和运行命令,照着改路径就能复用。

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

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

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

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

立即咨询