3、高精地图数据采集:采集车硬件配置、LiDAR与相机标定、IMU/GNSS组合导航、采集作业流程

各位同学,欢迎来到高精地图数据采集这一章。说实话,这一章是整个高精地图生产流程里最「接地气」的部分。你算法再牛,模型再强,数据采集这一步没做好,后面全是白搭。我见过太多团队,花大价钱买了采集车,结果跑了一趟回来,数据没法用——说白了,硬件配置和标定没搞对。

今天我们就来聊聊,一辆靠谱的采集车到底该怎么配,传感器怎么标定,以及作业流程里有哪些坑。

3.1 采集车硬件配置

先说说车。嗯,这里要注意,不是随便一辆车都能当采集车。我个人习惯,首选是改装过的商务车或SUV。为什么?空间够大,供电系统好改,而且减震性能好——你想想看,如果车颠得厉害,激光雷达的点云都会变形。

一套标准的L3级高精地图采集车,硬件配置大概长这样:

硬件模块 推荐型号/规格 作用
主激光雷达 Hesai PandarXT-32 / Ouster OS1-64 获取道路三维点云,精度要求≤2cm
辅助激光雷达 Livox Mid-70(侧向) 补充盲区,尤其是路沿和护栏
全景相机 Ladybug5+ / Insta360 Pro2 采集路面纹理、交通标志、车道线
前视双目相机 FLIR BFS-PGE-50S5C 高精度车道线识别,基线长度建议30cm
IMU NovAtel PwrPak7D-E2 提供高频姿态数据(200Hz)
GNSS接收机 Trimble BD982 / NovAtel OEM7720 RTK定位,厘米级
工控机 Advantech IPC-610 + NVIDIA RTX 4090 实时数据存储与预处理
供电系统 48V直流转12V/24V,200Ah锂电池 保证8小时以上连续作业

我在项目中遇到过一件事:有次我们用了某款国产激光雷达,标称精度1cm,结果实际跑下来,点云里的电线杆都是歪的。后来排查发现,是雷达的温漂问题——温度一高,内部棱镜就变形。所以我的建议是,主雷达一定要选经过车规级验证的型号,别光看参数。

3.2 LiDAR与相机标定

硬件装好了,接下来就是标定。说白了,标定就是让激光雷达和相机「对齐」——让激光点云里的每一个点,都能准确投影到相机图像上对应的像素位置。

3.2.1 联合标定的原理

联合标定的核心,是求解一个外参矩阵 [R|t]。这个矩阵描述了激光雷达坐标系和相机坐标系之间的旋转和平移关系。公式很简单:

P_cam = R * P_lidar + t

其中 P_lidar 是激光雷达坐标系下的3D点,P_cam 是相机坐标系下的3D点。然后通过相机内参矩阵 K,把 P_cam 投影到图像上:

p_img = K * P_cam

嗯,这里要注意,内参矩阵 K 是相机出厂时标定好的,包含焦距、主点坐标和畸变参数。如果你用的是鱼眼相机,还得额外做畸变校正。

3.2.2 标定板与采集流程

我个人习惯用棋盘格标定板,尺寸建议 1.2m x 0.9m,格子大小 10cm x 10cm。为什么用这么大?因为激光雷达的点云稀疏,小棋盘格根本看不清角点。

标定流程大致如下:

  1. 固定采集车:停在平坦地面,轮胎气压一致,避免车身倾斜。
  2. 摆放标定板:距离车头 3m、5m、8m 各摆一次,每次让标定板与车头呈 0°、15°、30° 夹角。
  3. 同步采集:同时触发激光雷达和相机,记录至少 20 组数据。
  4. 提取特征点:在点云中提取棋盘格角点的3D坐标,在图像中提取对应的2D像素坐标。
  5. 求解外参:用PnP算法(比如EPnP)求解 [R|t],然后用非线性优化(比如Levenberg-Marquardt)做精调。
我的小技巧: 标定的时候,记得把车上的空调关掉。为什么?因为空调压缩机会引起车身轻微震动,影响IMU数据。我曾经有一次标定结果总是不收敛,折腾了两天,最后发现是空调没关。

3.2.3 标定结果验证

标定完了,怎么知道对不对?我的做法是:把点云投影到图像上,看边缘是否对齐。比如,路沿在点云里是一条线,投影到图像上应该和路沿的像素边缘完全重合。如果偏差超过 2 个像素,就得重新标定。

# 伪代码:投影验证
for each point in lidar_points:
    p_cam = R * point + t
    p_img = K * p_cam
    if p_img is within image_bounds:
        draw_circle(p_img, color=red, radius=2)

3.3 IMU/GNSS组合导航

高精地图对定位精度的要求是厘米级。单靠GNSS不行——城市里高楼遮挡、隧道里信号丢失,定位误差能到几十米。所以必须用IMU做惯导推算,两者组合起来。

3.3.1 组合导航的原理

说白了,就是卡尔曼滤波。GNSS提供绝对位置(低频,10Hz),IMU提供相对位移和姿态(高频,200Hz)。卡尔曼滤波把两者融合,输出一个平滑、高频率、高精度的位姿估计。

状态向量通常包含:位置(x,y,z)、速度(vx,vy,vz)、姿态(roll,pitch,yaw)、以及IMU的零偏误差。

状态方程:
x_k = F * x_{k-1} + B * u_k + w_k

观测方程:
z_k = H * x_k + v_k

嗯,这里要注意,IMU的零偏会随时间漂移。如果不做在线估计,10分钟后定位误差就能到米级。所以实际工程中,我们用的是松耦合或紧耦合的卡尔曼滤波——我个人更推荐紧耦合,因为它直接处理原始观测数据,精度更高。

3.3.2 实战中的坑

我曾经踩过的坑: 有一次在隧道里采集数据,GNSS信号完全丢失,IMU零偏又没校准好,结果组合导航输出的轨迹直接飘到了对面车道。后来我加了一个「零速检测」模块——当车辆静止时,强制更新IMU零偏。这个模块救了我很多次。

另外,IMU的安装位置也很关键。我建议把IMU安装在车辆后轴中心附近,因为这里是车辆旋转的中心,IMU测到的角速度最准确。如果装在车头,转弯时会有额外的离心力干扰。

3.4 采集作业流程

硬件配好了,标定也做了,接下来就是上路采集。这一节我直接给你一个标准作业流程,照着做基本不会出大问题。

3.4.1 采集前准备

  1. 路线规划:提前踩点,确认道路是否封闭施工。我习惯用Google Earth先走一遍,标记出桥梁、隧道、高架等关键路段。
  2. 设备自检:启动所有传感器,检查数据流是否正常。重点看激光雷达的点云有没有空洞,相机图像有没有过曝或欠曝。
  3. IMU预热:IMU需要预热 10-15 分钟,让内部温度稳定。否则零偏会很大。
  4. GNSS基站设置:如果使用RTK,需要在采集区域附近架设基站,或者接入千寻位置的CORS网络。

3.4.2 采集中的操作

  • 车速控制:城市道路建议 30-40 km/h,高速建议 60-80 km/h。太快了,点云会变稀疏;太慢了,效率太低。
  • 车道保持:尽量行驶在车道正中间。如果压线行驶,采集到的车道线数据会有偏差。
  • 重复采集:同一路段至少采集 3 遍。为什么?因为车流、光照、遮挡都会影响数据质量。取3遍数据的融合结果,鲁棒性更好。
  • 记录异常:遇到施工路段、临时交通标志、事故现场,用语音记录器备注一下。后期数据处理时,这些是重点检查对象。

3.4.3 采集后的数据检查

回到工位后,别急着下班。先做快速检查:

  1. 点云完整性:用可视化工具看一遍,有没有大面积的空洞。如果有,可能是激光雷达被遮挡了。
  2. 轨迹平滑性:检查组合导航输出的轨迹,有没有跳变。如果轨迹出现「锯齿」,说明IMU/GNSS融合有问题。
  3. 图像清晰度:随机抽检 10% 的图像帧,看有没有运动模糊。如果模糊帧超过 5%,说明快门速度太慢,或者车辆震动太大。

核心要点总结:

  • 采集车硬件配置,主雷达选车规级,IMU装在后轴中心。
  • LiDAR与相机标定,用大棋盘格,关空调,验证偏差≤2像素。
  • IMU/GNSS组合导航,用紧耦合卡尔曼滤波,加零速检测。
  • 采集作业,同一路段跑3遍,车速别太快,异常要备注。

好了,这一章的内容就到这里。下一章我们会讲「点云预处理与地面分割」,到时候我会分享一个我亲手调过的地面滤波算法,效果还不错。各位回去可以先把采集车的硬件清单列一下,看看自己手头的设备有没有踩坑的地方。