第四章:高精地图采集与制作

4.1 采集车硬件配置——我的“移动测绘实验室”

做高精地图这么多年,我始终觉得采集车是整个链条的起点。车上的传感器配置,直接决定了地图的精度上限。说白了,你采集的数据质量不行,后面算法再牛也救不回来。

我个人习惯把采集车分成三个核心模块:定位模块、感知模块和同步模块。缺一个,数据就废了。

定位模块:IMU+GNSS 的组合拳

我最早做采集时,只用单频GPS,结果在隧道里直接“失明”。后来学乖了,必须上组合导航系统。典型的配置是:

  • GNSS接收机:支持GPS+北斗+GLONASS多星系统,最好带RTK差分
  • 高精度IMU:光纤陀螺级别,零偏稳定性优于0.01°/h
  • 轮速计:从车辆CAN总线读取,辅助短时定位

嗯,这里要注意:IMU和GNSS的天线安装位置必须精确测量。我在项目里见过有人随便一装,结果杆臂效应导致定位偏差半米,后期标定花了两周才找回来。

感知模块:激光雷达与相机的“黄金搭档”

激光雷达负责几何结构,相机负责纹理语义。我常用的配置是:

传感器 型号示例 数量 安装位置
激光雷达 Hesai PandarXT-32 / Ouster OS1-64 1~2个 车顶前后
全景相机 Ladybug5+ / Insta360 Pro2 1个 车顶中央
前视相机 FLIR Blackfly S 12MP 2个 挡风玻璃后

你想想看,激光雷达给的是点云,相机给的是像素。两者必须联合标定,才能把点云投影到图像上。我踩过的坑是:标定板用普通A4纸,反光太强导致角点检测失败。后来改用哑光陶瓷板,问题才解决。

同步模块:时间戳是命根子

所有传感器必须统一到GPS时间。我习惯用PTP(精确时间协议)或者硬件触发线。曾经有个项目,相机和激光雷达的时间戳差了50ms,结果点云和图像对不上,车道线提取全歪了。从那以后,我每次上车第一件事就是检查时间同步。

核心配置清单(我的推荐):
  • GNSS+IMU:NovAtel PwrPak7D-E2
  • 激光雷达:Hesai PandarXT-32(性价比之选)
  • 相机:FLIR Blackfly S 20MP(全局快门)
  • 工控机:Intel i7-11850H + NVIDIA RTX A4000
  • 存储:2TB NVMe SSD × 2(RAID0)

4.2 点云与图像数据采集流程——别让数据“脏”了

硬件配好了,接下来就是跑路采集。很多人觉得采集就是开车转一圈,其实门道多着呢。

采集前的准备:路线规划与天气

我一般会提前一天看天气预报。为什么?因为雨雪天气会导致点云噪点暴增,激光打在雨滴上会形成大量离群点。另外,强光下的图像过曝,车道线反光严重,后期标注根本看不清。

路线规划也有讲究。尽量选择双向多车道的道路,避免单行道。因为高精地图需要左右两侧的参照物(路灯、路牌、护栏),单侧数据会导致定位退化。

采集中的操作:速度与覆盖

采集车的速度建议控制在30~50 km/h。太快了,点云会拉伸变形;太慢了,效率太低。我习惯用定速巡航,保持匀速。

还有一个细节:每条车道至少跑两遍。一遍靠左,一遍靠右。这样能覆盖车道线的两侧边缘,后期制作车道模型时精度更高。

小技巧:在采集软件里开启实时点云预览。如果发现某段路点云稀疏(比如被树遮挡),当场掉头补采。别指望后期“修复”,那都是骗人的。

数据存储与命名规范

数据采集完,第一件事就是备份。我见过有人把数据存在单块硬盘里,结果硬盘坏了,一周的采集白干。

命名规范也很重要。我常用的格式是:

日期_路线编号_传感器类型_序号
示例:20250315_BJ_3rdRing_LiDAR_001.pcd
     20250315_BJ_3rdRing_Camera_001.jpg

这样一看就知道是哪天、哪条路、哪个传感器。千万别用“新建文件夹(1)”这种命名,后期找数据能让你崩溃。

4.3 自动化与人工标注——机器干粗活,人干细活

数据采集完了,接下来就是标注。高精地图的标注量巨大,一条城市道路可能有上千个要素。全靠人工?不现实。全靠自动?不靠谱。我的策略是:自动化粗标 + 人工精修。

自动化标注:让算法先跑一遍

自动化标注主要做三件事:

  1. 地面分割:用RANSAC或Patchwork算法,把地面点云和非地面点云分开
  2. 要素提取:用深度学习模型(如PointPillars、VoxelNet)检测车道线、路沿、交通标志
  3. 语义分割:对图像做像素级分类,识别路面、标线、杆状物

我常用的自动化标注流程是这样的:

# 伪代码示例:自动化标注管线
def auto_labeling(pcd_path, img_path):
    # 1. 地面分割
    ground = segment_ground(pcd_path)
    # 2. 要素检测
    lane_lines = detect_lane_lines(ground)
    traffic_signs = detect_signs(pcd_path)
    # 3. 图像语义分割
    seg_map = semantic_segmentation(img_path)
    # 4. 融合验证
    fused_result = fuse_lidar_camera(lane_lines, seg_map)
    return fused_result

自动化标注的准确率大概在80%~90%。剩下的10%~20%需要人工介入。比如被树遮挡的车道线、磨损严重的标线、异形交通标志,算法经常搞不定。

注意:自动化标注的结果一定要做质量检查。我见过有人直接拿自动标注的结果建图,结果车道线偏移了30cm,导致车辆定位偏差。自动标注只能当“初稿”,不能当“终稿”。

人工标注:精细活,急不得

人工标注主要修正自动化结果的错误,并补充缺失的要素。我团队里的标注员每人每天大概能处理2~3公里的道路数据。效率不高,但精度必须保证。

人工标注的要点:

  • 车道线:必须标注到像素级精度,虚线要标出起止点
  • 路沿:高度变化超过3cm就要标注
  • 交通标志:不仅要标位置,还要标类型(限速、禁行、指示)
  • 杆状物:路灯、信号灯、路牌杆,直径大于10cm的都要标

我曾经遇到过一个案例:某段路的路沿被积雪覆盖,自动化标注完全没识别出来。人工标注时,标注员根据两侧护栏的走向,手动补上了路沿。后来这段路在冬天定位时,全靠这条人工标注的路沿做约束。

标注质量验证:闭环检查

标注完成后,必须做闭环验证。我的做法是:

  1. 把标注好的地图要素投影回原始点云,看是否对齐
  2. 用另一台车的采集数据做定位测试,看定位精度是否达标
  3. 随机抽取10%的标注结果,由质检员重新标注,对比一致性

只有通过这三步,标注数据才能进入地图库。嗯,这一步不能省。我见过有团队为了赶进度跳过验证,结果地图上线后定位频繁跳变,最后不得不回滚版本。

总结一下我的经验:
  • 采集车硬件:定位模块是核心,时间同步是命脉
  • 采集流程:天气、速度、覆盖,一个都不能少
  • 标注策略:自动化粗标 + 人工精修 + 闭环验证
高精地图采集与制作流程 采集车硬件配置 定位模块:GNSS+IMU 感知模块:LiDAR+相机 同步模块:PTP/硬件触发 数据采集流程 路线规划与天气 匀速采集30-50km/h 数据备份与命名 数据标注 自动化粗标 人工精修 质量验证 数据流:点云(几何) + 图像(纹理/语义) 联合标定 → 时间同步 → 融合存储 输出:高精地图要素 车道线 | 路沿 | 交通标志 | 杆状物 闭环验证
我的建议:如果你刚开始搭建采集系统,别追求最贵的传感器。先买一套中端配置(比如32线激光雷达+工业相机),跑通全流程。等你有经验了,再升级硬件。我见过太多人一开始就上128线激光雷达,结果数据量太大,处理不过来,反而拖慢进度。

好了,这一章的内容就到这里。高精地图的采集与制作,说白了就是“硬件搭台,数据唱戏”。硬件配置决定了数据质量的上限,采集流程决定了数据的完整性,标注质量决定了地图的可用性。三者缺一不可。

可可精品资料库