场景构成要素:地图、车辆、传感器、交通参与者、天气、时间、道路设施等核心元素
在LGSVL(现为LG SVL,后由Aptiv接管并开源为SVL Simulator)中,一个完整的自动驾驶仿真场景并非简单的“车辆+道路”组合,而是由多个相互关联、相互制约的核心要素共同构成的有机系统。理解这些要素的分类、属性及其在仿真引擎中的交互方式,是进行高效场景部署的前提。本章将系统拆解LGSVL场景的七大核心构成要素,并深入探讨它们之间的逻辑关系与配置方法。
4.1 地图要素:高精地图与静态路网
核心原理:LGSVL中的地图不仅提供视觉上的道路渲染,更重要的是为自动驾驶算法提供厘米级的几何与拓扑信息。地图以Lanelet2或OpenDRIVE格式存储,包含车道边界线、中心线、停止线、限速值、车道连接关系(拓扑)以及交通标志的位置。仿真引擎将地图数据解析为可查询的路网模型,供感知、规划、控制模块使用。
操作流程:在LGSVL中加载地图通常遵循以下步骤:
- 在Simulator界面选择“Maps”标签页,点击“Add new”上传或选择已有的高精地图文件(.xml或.osm格式)。
- 确认地图的坐标原点与投影方式(UTM或MGRS),确保与车辆初始位置一致。
- 在场景编辑器中,将地图拖拽至场景画布,检查车道线、交叉口、匝道等关键元素是否完整。
- 使用“Validate Map”工具检查拓扑连通性,避免出现断头路或错误连接。
| 地图格式 | 适用场景 | 关键属性 | LGSVL支持度 |
|---|---|---|---|
| Lanelet2 | 城市道路、复杂交叉口 | 车道级拓扑、规则元素 | 原生支持 |
| OpenDRIVE | 高速公路、测试场 | 几何参考线、道路分段 | 需转换插件 |
| OSM(OpenStreetMap) | 简单道路、园区 | 基础道路网络 | 支持导入 |
4.2 车辆要素:主车模型与动力学参数
核心原理:主车(Ego Vehicle)是仿真场景中的被控对象,其模型精度直接影响控制算法的验证效果。LGSVL支持导入URDF(Unified Robot Description Format)或使用内置车辆模型(如Lexus RX450h、Lincoln MKZ等)。车辆模型包含几何外形、质量、转动惯量、轮胎参数、动力传动系统特性等。仿真引擎通过物理引擎(Bullet或PhysX)计算车辆动力学响应,并通过ROS/ROS2话题发布车辆状态(速度、加速度、航向角等)。
配置要点:
- 车辆外形:碰撞检测盒的尺寸必须与真实车辆一致,否则在狭窄道路或泊车场景中会出现“穿模”或“悬空”现象。
- 动力模型:选择前驱、后驱或四驱模式,并设置最大扭矩、制动扭矩、转向比等参数。
- 传感器安装位置:在车辆URDF中定义传感器坐标系(如LiDAR位于车顶中心,Camera位于前挡风玻璃后),确保外参标定准确。
tire_friction参数为0.65,并调整制动扭矩曲线,仿真结果与实车测试误差缩小至3%以内。
4.3 传感器要素:感知系统的仿真配置
核心原理:传感器仿真是LGSVL区别于一般游戏引擎的关键能力。LGSVL基于Unity渲染引擎,通过GPU光线追踪和物理模型模拟各类传感器的原始输出。传感器数据通过ROS话题发布,与真实传感器接口完全一致,从而支持感知算法无缝迁移。
传感器类型与配置:
| 传感器类型 | 输出格式 | 关键参数 | 典型应用 |
|---|---|---|---|
| Camera | RGB图像(PNG/JPEG) | 分辨率、FOV、焦距、畸变模型 | 目标检测、车道线识别 |
| LiDAR | 点云(PCD/ROS PointCloud2) | 线束数、垂直FOV、水平分辨率、测距范围 | 障碍物检测、SLAM |
| Radar | 目标列表/点云 | 探测距离、速度分辨率、方位角 | 自适应巡航、前碰撞预警 |
| IMU | 加速度/角速度 | 零偏、噪声密度、更新频率 | 位姿估计、惯性导航 |
| GNSS | 经纬度/高度 | 定位精度、更新率、丢星概率 | 全局定位 |
操作流程:在LGSVL中配置传感器组时,推荐使用“Sensor Configuration”JSON文件进行批量定义。以下是一个典型的Camera配置片段:
{
"type": "camera",
"name": "front_camera",
"params": {
"width": 1920,
"height": 1080,
"fov": 70,
"near_plane": 0.3,
"far_plane": 1000,
"distortion": "plumb_bob",
"k1": -0.12,
"k2": 0.05
},
"transform": {
"x": 1.8, "y": 0, "z": 1.2,
"pitch": 0, "yaw": 0, "roll": 0
}
}
4.4 交通参与者要素:NPC车辆、行人与其他动态物体
核心原理:交通参与者(NPC)是场景中除主车外的所有动态物体,包括社会车辆、行人、自行车、动物等。LGSVL支持两种NPC控制模式:脚本驱动(通过Python API或Scenario Editor定义轨迹)和AI驱动(基于内置的交通流模型自动生成行为)。NPC的行为模型包括跟车、变道、让行、闯红灯等,其决策逻辑可通过参数调整。
配置方法:
- 静态路径:使用Scenario Editor绘制NPC的行驶路径,设置速度曲线和停留时间。
- 行为树:通过LGSVL的“Behavior Tree”插件定义NPC的决策逻辑,例如“若前方有行人,则减速至0并等待”。
- 随机交通流:在“Traffic Manager”中设置NPC密度、速度分布、车型比例,生成接近真实交通流的动态环境。
4.5 天气与时间要素:环境感知的变量控制
核心原理:天气和时间直接影响传感器的感知质量。LGSVL的天气系统包括雨、雪、雾、云量、光照强度等参数,时间系统则控制太阳高度角、方位角和色温。这些环境变量通过改变渲染管线的光照模型和粒子系统,影响Camera图像质量、LiDAR点云反射强度以及Radar的衰减特性。
关键参数对照表:
| 环境要素 | 参数范围 | 对传感器的影响 | 典型测试场景 |
|---|---|---|---|
| 雨量 | 0-100 mm/h | Camera图像模糊、LiDAR噪点增加 | 暴雨中ACC跟车 |
| 雾浓度 | 0-1(能见度) | Camera对比度下降、LiDAR有效距离缩短 | 团雾路段行驶 |
| 雪量 | 0-50 mm/h | 地面反射增强、特征点丢失 | 雪地车道线检测 |
| 光照强度 | 0-100 klx | 过曝/欠曝、阴影变化 | 隧道出入口、逆光行驶 |
| 时间 | 0-24h | 光照角度、色温变化 | 夜间行人检测 |
操作流程:在LGSVL中设置天气和时间,可通过“Environment”面板实时调整,也可通过Python API在场景运行中动态改变。例如,模拟“晴天转暴雨”的渐变过程:
# Python API 示例
sim = lgsvl.Simulator(address, port)
sim.set_time_of_day(14.5) # 下午2:30
sim.weather.rain = 0.0
sim.weather.fog = 0.1
# 运行10秒后逐渐增大雨量
for i in range(10):
sim.weather.rain = i * 0.1
sim.run(1.0)
4.6 道路设施要素:信号灯、标志与路面标线
核心原理:道路设施是静态场景的重要组成部分,包括交通信号灯、标志牌、护栏、路缘石、路面标线等。在LGSVL中,这些设施不仅具有视觉外观,还带有语义属性(如信号灯的相位状态、标志的类型和内容),供感知和规划模块读取。信号灯的状态变化可通过脚本控制,也可与NPC行为联动。
配置要点:
- 信号灯:定义相位(红/黄/绿)、持续时间、偏移量,并关联到对应的车道组。
- 标志牌:设置类型(限速、停止、让行、禁止转弯等)、位置、朝向和尺寸。
- 路面标线:包括虚线、实线、导流线、停止线,需与高精地图中的车道边界一致。
4.7 要素间的协同与场景集成
核心原理:七大要素并非孤立存在,而是通过LGSVL的“Scene Graph”和“Message Bus”紧密耦合。地图提供空间参考,车辆和传感器通过坐标变换关联,交通参与者在地图路网上运动,天气和时间影响所有视觉传感器,道路设施为决策提供语义信息。场景的最终效果取决于这些要素的协同配置。
集成流程:
- 确定测试目标(如验证AEB功能),据此选择地图区域和道路类型。
- 配置主车模型和传感器组,确保感知范围覆盖关键区域。
- 设计NPC的初始位置、速度和行为逻辑,构建交通冲突场景。
- 设置天气、时间和道路设施状态,模拟目标环境条件。
- 运行场景并采集数据,通过LGSVL的“Scenario Runner”记录所有要素的状态变化。
4.8 常见误区与复盘总结
误区一:忽视坐标系的统一。地图、车辆、传感器各自使用不同的坐标系(UTM、车辆坐标系、传感器坐标系),若未正确配置TF树,会导致感知数据错位。建议在场景启动前,使用rosrun tf view_frames检查TF树完整性。
误区二:过度依赖默认参数。LGSVL提供的默认车辆动力学参数和传感器噪声模型适用于通用测试,但无法精确匹配特定车型或传感器硬件。对于高精度仿真需求,必须根据实车标定数据修改参数。
误区三:忽略场景的可重复性。使用AI驱动的NPC行为具有随机性,导致同一场景多次运行结果不一致。若需要可重复的回归测试,应使用脚本驱动NPC,并固定随机种子。
误区四:场景复杂度失控。初学者倾向于在场景中添加大量NPC和复杂天气,导致仿真运行帧率下降,影响实时性。建议根据测试目标控制场景复杂度,优先保证关键要素的精度。
复盘总结:高效的场景部署应遵循“目标驱动、要素解耦、逐步集成”的原则。首先明确测试目标,然后分别配置各要素,最后通过集成测试验证要素间的协同性。建议建立场景配置模板库,将常用的地图、车辆、传感器、NPC组合保存为模板,便于快速复用。同时,利用LGSVL的Python API实现场景参数的批量修改和自动化测试,可大幅提升场景部署效率。