跳转至

仿真环境建模

自动驾驶仿真系统的核心基础之一是环境建模——在虚拟世界中精确重建真实驾驶场景的几何结构、物理属性和动态行为。环境模型的保真度直接决定了仿真结果的可信度和可迁移性。本章将系统介绍仿真环境建模的关键技术,包括三维场景重建、高精地图集成、天气光照仿真、数字孪生、动态物体建模以及材质与纹理系统。


1. 三维场景重建

1.1 程序化生成

程序化生成(Procedural Generation)通过算法规则自动构建三维场景,适用于大规模、可参数化的环境创建。典型的程序化生成流程包括:

  • 路网生成:基于 L-system 或 Voronoi 图算法自动生成道路网络拓扑
  • 建筑物生成:通过形状文法(Shape Grammar)规则生成不同风格的建筑立面
  • 植被分布:利用泊松盘采样(Poisson Disk Sampling)算法在场景中自然分布植被

程序化生成的优势在于可以快速生成大量多样化场景,缺点是难以精确复现特定的真实地点。CARLA 中的城镇地图和 NVIDIA DRIVE Sim 中的场景编辑器均支持程序化生成。

1.2 真实数据重建

真实数据重建利用传感器采集的数据(点云、全景图像等)来还原真实场景的三维结构。

点云重建是最常用的方法。通过 LiDAR 扫描获取场景点云,再利用以下流程进行重建:

  1. 点云配准:使用 ICP(Iterative Closest Point)算法将多帧点云对齐到统一坐标系
  2. 表面重建:采用泊松表面重建(Poisson Surface Reconstruction)或 Delaunay 三角化生成连续的网格表面
  3. 纹理映射:将同步采集的相机图像投影到重建的三维网格上

全景图像重建结合多目相机采集的全景图像,通过结构化运动恢复(Structure from Motion, SfM)和多视图立体匹配(Multi-View Stereo, MVS)算法重建场景。代表性工具包括 COLMAP 和 OpenMVG。

1.3 NeRF 场景重建

神经辐射场(Neural Radiance Fields, NeRF)是近年来三维场景重建领域的突破性技术。NeRF 使用一个多层感知机(MLP)来隐式表示场景的颜色和密度:

\[F_\theta : (\mathbf{x}, \mathbf{d}) \rightarrow (\mathbf{c}, \sigma)\]

其中 \(\mathbf{x} = (x, y, z)\) 为三维空间坐标,\(\mathbf{d} = (\theta, \phi)\) 为视角方向,\(\mathbf{c} = (r, g, b)\) 为颜色输出,\(\sigma\) 为体积密度。

沿相机光线 \(\mathbf{r}(t) = \mathbf{o} + t\mathbf{d}\) 进行体积渲染,像素颜色为:

\[C(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \cdot \sigma(\mathbf{r}(t)) \cdot \mathbf{c}(\mathbf{r}(t), \mathbf{d}) \, dt\]

其中 \(T(t) = \exp\left(-\int_{t_n}^{t} \sigma(\mathbf{r}(s)) \, ds\right)\) 表示从 \(t_n\)\(t\) 的累积透射率。

在自动驾驶场景中,NeRF 的扩展方法包括:

方法 特点 适用场景
Block-NeRF 将大场景分割为多个子 NeRF 块 城市级别场景重建
Urban Radiance Fields 引入 LiDAR 深度监督 街景级高精度重建
UniSim 支持动态物体分离与编辑 闭环仿真中的场景操控
EmerNeRF 分离静态/动态场景 + 流场建模 自动驾驶数据增强

1.4 3D Gaussian Splatting

3D Gaussian Splatting(3DGS)是 NeRF 之后的又一重要突破,以显式的三维高斯基元表示场景,实现实时渲染。

每个高斯基元由以下参数定义:

  • 中心位置 \(\boldsymbol{\mu} \in \mathbb{R}^3\)
  • 协方差矩阵 \(\boldsymbol{\Sigma} \in \mathbb{R}^{3 \times 3}\)(通过缩放向量 \(\mathbf{s}\) 和旋转四元数 \(\mathbf{q}\) 参数化)
  • 不透明度 \(\alpha \in [0, 1]\)
  • 球谐函数系数(用于视角相关的颜色表示)

渲染时,三维高斯基元通过 Splatting 投影到二维图像平面:

\[\boldsymbol{\Sigma}' = \mathbf{J} \mathbf{W} \boldsymbol{\Sigma} \mathbf{W}^T \mathbf{J}^T\]

其中 \(\mathbf{W}\) 为视图变换矩阵,\(\mathbf{J}\) 为投影变换的雅可比矩阵。

3DGS 相比 NeRF 的优势:

  • 实时渲染:在消费级 GPU 上即可达到 100+ FPS
  • 显式表示:便于场景编辑和动态物体操控
  • 训练速度快:通常在数分钟内完成训练

在自动驾驶领域,Street Gaussians、DrivingGaussian 等方法已将 3DGS 扩展到街景重建和动态场景建模。


2. 高精地图集成

2.1 OpenDRIVE 格式

OpenDRIVE 是国际通用的高精地图描述标准,被 CARLA、LGSVL、SUMO 等仿真平台广泛支持。OpenDRIVE 文件以 XML 格式描述道路网络,核心层次结构为:

Road
├── PlanView          // 道路参考线(几何定义)
│   ├── Line          // 直线段
│   ├── Arc           // 圆弧段
│   ├── Spiral        // 欧拉螺线(缓和曲线)
│   └── ParamPoly3    // 三次参数多项式
├── ElevationProfile  // 高程剖面
├── LateralProfile    // 横向超高与横坡
├── Lanes             // 车道定义
│   ├── LaneSection   // 车道段
│   └── Lane          // 单车道属性
├── Objects           // 路面物体(护栏、标志杆等)
└── Signals           // 交通信号与标志

一个典型的 OpenDRIVE 道路定义示例:

<road id="1" junction="-1" length="500.0">
  <planView>
    <geometry s="0.0" x="0.0" y="0.0" hdg="0.0" length="200.0">
      <line/>
    </geometry>
    <geometry s="200.0" x="200.0" y="0.0" hdg="0.0" length="300.0">
      <arc curvature="0.005"/>
    </geometry>
  </planView>
  <lanes>
    <laneSection s="0.0">
      <center><lane id="0" type="none"/></center>
      <right>
        <lane id="-1" type="driving">
          <width sOffset="0.0" a="3.5" b="0" c="0" d="0"/>
        </lane>
        <lane id="-2" type="driving">
          <width sOffset="0.0" a="3.5" b="0" c="0" d="0"/>
        </lane>
      </right>
    </laneSection>
  </lanes>
</road>

2.2 HD Map 要素

高精地图(HD Map)包含的核心要素远超传统导航地图,主要涵盖以下四类信息:

要素类别 具体内容 精度要求
车道拓扑 车道中心线、车道边界、车道连接关系、汇入/分流关系 厘米级
交通规则 限速标志、交通信号灯位置与状态、让行规则、禁止转弯标志 位置精度 < 20 cm
道路几何 曲率、坡度、超高、路面高程模型 高程精度 < 5 cm
语义要素 斑马线、停车位、公交站、施工区域、减速带 位置精度 < 30 cm

2.3 地图格式转换

不同仿真平台和自动驾驶系统使用的地图格式各异,常见的转换需求包括:

  • OpenDRIVE → Lanelet2:Apollo 和 Autoware 使用 Lanelet2 格式,需要将 OpenDRIVE 的车道定义转换为 Lanelet 多边形
  • OpenDRIVE → SUMO Network:使用 SUMO 提供的 netconvert 工具完成转换
  • 点云地图 → OpenDRIVE:从 LiDAR 点云中提取道路边界和车道线,拟合为 OpenDRIVE 几何元素
# SUMO 的 netconvert 工具示例
netconvert --opendrive input.xodr --output-file output.net.xml

# 指定额外参数控制转换精度
netconvert --opendrive input.xodr \
  --output-file output.net.xml \
  --opendrive.curve-resolution 1.0 \
  --opendrive.advance-stopline 2.0

3. 天气与光照仿真

3.1 太阳位置模型

精确模拟太阳位置是光照仿真的基础。太阳在天球上的位置由太阳高度角 \(\alpha_s\) 和方位角 \(A_s\) 描述:

\[\sin \alpha_s = \sin \varphi \sin \delta + \cos \varphi \cos \delta \cos h\]

其中 \(\varphi\) 为观测者纬度,\(\delta\) 为太阳赤纬角,\(h\) 为时角。

太阳赤纬角可由日期近似计算:

\[\delta = 23.45° \cdot \sin\left(\frac{360°}{365}(284 + n)\right)\]

其中 \(n\) 为一年中的第几天。

3.2 大气散射模型

真实的天空颜色和光照分布由大气散射决定。仿真中常用的散射模型包括:

  • Rayleigh 散射:描述光与远小于波长的气体分子的散射,散射系数与波长的四次方成反比 \(\beta_R \propto \lambda^{-4}\),这解释了天空呈现蓝色的原因
  • Mie 散射:描述光与气溶胶粒子(尘埃、水滴)的散射,散射方向性更强,前向散射主导

在仿真引擎中,Preetham 天空模型和 Hosek-Wilkie 天空模型是两种常用的实时大气散射实现,可根据太阳位置和大气浊度(Turbidity)参数动态生成天空穹顶纹理。

3.3 雨天仿真

雨天仿真需要同时模拟视觉效果和对传感器的物理影响。

粒子系统用于渲染雨滴的视觉效果。每个雨滴粒子具有以下属性:

  • 初始位置:在相机视锥体上方随机生成
  • 下落速度:由雨滴直径 \(d\) 决定,终端速度近似为 \(v_t = 9.65 - 10.3 \cdot e^{-0.6d}\)(m/s,\(d\) 的单位为 mm)
  • 风偏移:受横向风速影响产生倾斜轨迹

传感器影响建模是雨天仿真的关键。雨对不同传感器的影响如下:

传感器 雨天影响 建模方法
相机 镜头水滴附着、图像模糊、对比度下降 雨滴折射贴图叠加 + 高斯模糊
LiDAR 雨滴产生虚假回波、最大探测距离下降 随机点噪声注入 + 衰减系数
毫米波雷达 雨杂波增大、地面杂波增强 雷达截面积扰动 + 噪声叠加
超声波 声波在雨中传播衰减 探测距离缩减模型

3.4 雾天仿真

雾对光信号的衰减遵循 Beer-Lambert 定律

\[I(d) = I_0 \cdot e^{-\beta \cdot d}\]

其中 \(I_0\) 为初始光强,\(I(d)\) 为经过距离 \(d\) 后的光强,\(\beta\) 为消光系数(单位 \(\text{m}^{-1}\))。

气象能见度 \(V_{met}\) 定义为对比度下降至 5% 时的距离,由此可得消光系数与能见度的关系:

\[\beta = \frac{\ln 20}{V_{met}} \approx \frac{3.0}{V_{met}}\]

在仿真中,雾的浓度通常分级如下:

雾等级 能见度 \(V_{met}\) 消光系数 \(\beta\) 对自动驾驶的影响
薄雾 1000 - 2000 m 0.0015 - 0.003 轻微影响,相机感知距离略降
中雾 200 - 1000 m 0.003 - 0.015 明显影响,LiDAR 和相机性能下降
浓雾 50 - 200 m 0.015 - 0.06 严重影响,视觉传感器几乎失效
强浓雾 < 50 m > 0.06 极端条件,仅毫米波雷达可正常工作

雾天仿真中的颜色混合公式(用于渲染管线):

\[C_{final} = C_{object} \cdot e^{-\beta \cdot d} + C_{fog} \cdot (1 - e^{-\beta \cdot d})\]

其中 \(C_{object}\) 为物体原始颜色,\(C_{fog}\) 为雾的颜色(通常为灰白色)。

3.5 雪天与冰面仿真

雪天仿真需要额外关注以下方面:

  • 积雪覆盖:道路、车辆和建筑物表面逐渐被雪覆盖,改变场景的反射特性和几何形状
  • 路面摩擦力变化:干燥路面摩擦系数 \(\mu \approx 0.8\),积雪路面 \(\mu \approx 0.2 - 0.3\),冰面 \(\mu \approx 0.05 - 0.15\)
  • 传感器遮挡:雪花附着在传感器外壳上导致视场遮挡
  • LiDAR 点云退化:降雪产生大量虚假点云,点云密度和质量显著下降

4. 数字孪生

4.1 数字孪生概念

数字孪生(Digital Twin)是物理世界实体在虚拟空间中的精确映射,其核心特征是双向数据流——物理世界的传感器数据实时更新虚拟模型,虚拟模型的仿真结果反过来指导物理世界的决策。

在自动驾驶领域,数字孪生的层次结构为:

数字孪生体系
├── L1 - 静态孪生    // 道路基础设施的三维模型
├── L2 - 动态孪生    // 加入实时交通流和信号灯状态
├── L3 - 感知孪生    // 集成传感器模型,模拟感知输出
├── L4 - 决策孪生    // 接入自动驾驶决策算法
└── L5 - 全栈孪生    // 完整的端到端自动驾驶系统闭环

4.2 实时同步机制

数字孪生系统需要在物理世界和虚拟世界之间维持低延迟的数据同步。关键的同步维度包括:

  • 位姿同步:通过 RTK-GNSS 和 INS 获取车辆的实时位置和姿态,同步到虚拟场景中的孪生车辆
  • 交通参与者同步:利用路侧感知设备检测的交通参与者信息,在虚拟场景中实时渲染对应的数字实体
  • 信号灯同步:将交通信号控制系统的相位信息实时映射到虚拟场景
  • 环境同步:将气象站数据(温度、湿度、风速、降水量)映射为仿真引擎的天气参数

实时同步的性能要求因应用场景而异:安全预警类应用要求端到端延迟 < 100 ms,交通流分析类应用可容忍 1 - 5 s 的延迟。

4.3 预测验证

数字孪生的核心价值之一是预测验证(Predictive Validation)。通过在虚拟空间中"提前"运行算法,可以在物理世界执行之前预判潜在风险:

  1. 轨迹预演:将规划算法输出的候选轨迹在数字孪生中模拟执行,检查是否会与其他交通参与者发生碰撞
  2. 传感器遮挡预判:利用数字孪生中的完整场景信息,预测即将出现的感知盲区
  3. What-if 分析:修改数字孪生中的某些参数(例如前方车辆突然刹车),评估自车算法的应对能力

4.4 V2X 数字孪生

车路协同(V2X)数字孪生将单车智能扩展到交通系统层面:

  • 路侧数字孪生:在路侧计算单元上维护路口区域的数字孪生,融合路侧摄像头和雷达的感知数据,为通过的网联车辆提供超视距感知信息
  • 交通系统孪生:在云端维护城市级交通数字孪生,支持区域交通信号优化和拥堵预测
  • 协同感知验证:在数字孪生中模拟多车、多路侧设备的协同感知场景,验证 V2X 消息的延迟和可靠性对协同决策的影响

5. 动态物体建模

5.1 车辆动力学模型

仿真环境中的车辆运动需要通过动力学模型来模拟。根据保真度需求,常用模型分为两类。

自行车模型(Bicycle Model)是最常用的简化模型,将四轮车辆简化为前后两个等效轮:

\[\dot{x} = v \cos(\psi + \beta)\]
\[\dot{y} = v \sin(\psi + \beta)\]
\[\dot{\psi} = \frac{v}{l_r} \sin \beta\]
\[\dot{v} = a\]

其中侧偏角 \(\beta\) 为:

\[\beta = \arctan\left(\frac{l_r}{l_f + l_r} \tan \delta_f\right)\]

变量说明:\((x, y)\) 为车辆质心位置,\(\psi\) 为航向角,\(v\) 为速度,\(a\) 为纵向加速度,\(\delta_f\) 为前轮转角,\(l_f\)\(l_r\) 分别为质心到前后轴的距离。

多体动力学模型(Multi-Body Dynamics Model)提供更高保真度的车辆仿真,考虑以下因素:

  • 独立的四轮悬架运动学和动力学
  • 轮胎力学模型(Pacejka 魔术公式):\(F_y = D \sin\{C \arctan[B\alpha - E(B\alpha - \arctan(B\alpha))]\}\)
  • 车身六自由度运动(纵向、横向、垂向、俯仰、侧倾、偏航)
  • 传动系统和制动系统动力学

5.2 行人运动模型

行人是自动驾驶场景中最关键也最难预测的交通参与者。常用的行人运动模型包括:

社会力模型(Social Force Model)由 Helbing 和 Molnar 提出,将行人运动建模为多种"社会力"的合力驱动:

\[m_i \frac{d\mathbf{v}_i}{dt} = \mathbf{f}_i^{drive} + \sum_{j \neq i} \mathbf{f}_{ij}^{social} + \sum_w \mathbf{f}_{iw}^{wall} + \boldsymbol{\xi}_i\]

其中 \(\mathbf{f}_i^{drive}\) 为目标驱动力,\(\mathbf{f}_{ij}^{social}\) 为行人之间的社会力(排斥 + 吸引),\(\mathbf{f}_{iw}^{wall}\) 为障碍物排斥力,\(\boldsymbol{\xi}_i\) 为随机波动项。

ORCA 模型(Optimal Reciprocal Collision Avoidance)通过在速度空间中计算最优避碰速度,实现多行人的实时碰撞避免仿真,计算效率高于社会力模型,适用于大规模人群仿真。

数据驱动模型利用深度学习从真实行人轨迹数据中学习运动模式。Social-LSTM、Social-GAN 和 Trajectron++ 等方法可以生成多模态的行人轨迹预测,用于仿真环境中行人行为的真实感建模。

5.3 骑行者行为建模

自行车和电动自行车(在中国交通场景中尤其常见)的运动模式兼具机动车和行人的特征:

  • 车道使用:可能在机动车道、非机动车道和人行道之间切换
  • 运动模型:采用改进的自行车模型,但需要额外考虑骑行者的平衡约束——低速转弯时曲率半径受限
  • 群体行为:在中国城市场景中,电动自行车常在路口形成大规模集群,等待信号灯时的启动行为具有独特的时空分布模式
  • 违规行为:逆行、闯红灯等违规行为的概率建模对于自动驾驶安全验证至关重要

6. 材质与纹理系统

6.1 基于物理的渲染材质

基于物理的渲染(Physically Based Rendering, PBR)是现代仿真引擎的标准材质模型。PBR 材质通过以下参数描述表面光学属性:

参数 含义 取值范围 典型值示例
Base Color 表面固有颜色(反照率) RGB [0, 1] 沥青路面 (0.08, 0.08, 0.08)
Metallic 金属度 [0, 1] 车身漆面 0.0,铝合金 1.0
Roughness 粗糙度 [0, 1] 干燥沥青 0.9,湿润沥青 0.4
Normal 法线贴图 RGB 向量 路面裂缝、车道线凹凸
Ambient Occlusion 环境光遮蔽 [0, 1] 车底阴影区域 0.2

PBR 材质的反射模型通常基于 Cook-Torrance 微表面 BRDF:

\[f_r(\omega_i, \omega_o) = \frac{DFG}{4(\omega_o \cdot \mathbf{n})(\omega_i \cdot \mathbf{n})}\]

其中 \(D\) 为法线分布函数(通常使用 GGX 分布),\(F\) 为菲涅尔项,\(G\) 为几何遮蔽函数。

6.2 路面材质属性

路面材质对自动驾驶仿真至关重要,不同路面状态显著影响传感器感知和车辆动力学:

干燥路面

  • 漫反射为主,反照率较低(3% - 12%)
  • LiDAR 反射率稳定,适合标定
  • 摩擦系数 \(\mu \approx 0.7 - 0.9\)

湿润路面

  • 粗糙度显著降低,镜面反射增强
  • 产生路面积水反射(Planar Reflection),对相机感知造成干扰
  • LiDAR 反射率变化大,积水区域可能产生镜面反射导致虚假地面点
  • 摩擦系数下降至 \(\mu \approx 0.4 - 0.6\)

冰面路面

  • 高度光滑,近似镜面反射
  • LiDAR 回波极弱,可能出现"黑洞"效应
  • 摩擦系数极低 \(\mu \approx 0.05 - 0.15\)

6.3 植被材质

植被在城市自动驾驶场景中广泛存在,其材质建模需要考虑:

  • 次表面散射(Subsurface Scattering):光线穿透树叶产生的半透明效果,影响背光树叶的外观
  • 季节变化:春夏秋冬的叶片颜色和密度变化,影响 LiDAR 穿透率和相机语义分割
  • 风动效果:树枝和树叶在风中的摆动可能触发感知算法的误检测

6.4 反光表面

反光表面(交通标志反光膜、车辆漆面、玻璃幕墙等)对传感器仿真提出了特殊挑战:

  • 逆反射材料:交通标志使用的逆反射膜(如 3M Diamond Grade)将入射光沿入射方向反射回去,在夜间车灯照射下产生高亮反光,需要特殊的 BRDF 模型
  • 车漆多层材质:现代汽车车漆由底漆、色漆和清漆多层组成,产生深度感和随角异色效果,影响相机的颜色感知稳定性
  • 玻璃与镜面:玻璃幕墙的反射可能导致 LiDAR 探测到"幽灵"物体(Ghosting),车辆后挡风玻璃的部分透射特性影响 LiDAR 对车内物体的感知

参考资料

  1. Dosovitskiy, A., Ros, G., Codevilla, F., et al. "CARLA: An Open Urban Driving Simulator." Proceedings of the 1st Annual Conference on Robot Learning (CoRL), 2017.
  2. Mildenhall, B., Srinivasan, P. P., Tancik, M., et al. "NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis." ECCV, 2020.
  3. Kerbl, B., Kopanas, G., Leimkühler, T., et al. "3D Gaussian Splatting for Real-Time Radiance Field Rendering." ACM Transactions on Graphics (SIGGRAPH), 2023.
  4. ASAM. "OpenDRIVE Standard Specification." Version 1.8, 2023.
  5. Helbing, D., Molnar, P. "Social Force Model for Pedestrian Dynamics." Physical Review E, 51(5):4282-4286, 1995.
  6. Pacejka, H. B. Tire and Vehicle Dynamics. 3rd Edition, Butterworth-Heinemann, 2012.
  7. Tancik, M., Casser, V., Yan, X., et al. "Block-NeRF: Scalable Large Scene Neural View Synthesis." CVPR, 2022.
  8. Yang, J., Pavone, M., Wang, Y. "DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes." CVPR, 2024.
  9. Yan, Z., Li, M., et al. "Street Gaussians for Modeling Dynamic Urban Scenes." arXiv preprint arXiv:2401.01339, 2024.
  10. Cook, R. L., Torrance, K. E. "A Reflectance Model for Computer Graphics." ACM Transactions on Graphics, 1(1):7-24, 1982.