实测数据与已知限制
1. 实测数据
测试环境:Windows 11 + Python 3.10 + CARLA 0.9.16 + AMD Radeon 880M 集显。
1.1 场景
| 项目 | 结果 |
|---|---|
| OSC 生成器往返解析 | 4 场景 × 4 版本 = 16/16 通过 |
| 场景模板编译与校验 | 12/12 通过,同 seed 指纹一致 |
| 批量生成 50 个 | 6.86 s(要求 < 60 s) |
| 批量生成 80 个混合 | 10.89 s |
| 重复场景 | 0 |
1.2 路网与 CARLA
| 项目 | 结果 |
|---|---|
| 布局生成 | 7/7 通过几何校验 |
| CARLA 路网加载 | 7/7 成功,每种约 7 秒(含 2 秒世界加载) |
| 场景播放 | 12/12 模板跑通,未支持项 0 |
1.3 轨迹
| 项目 | 结果 |
|---|---|
| 轨迹导入 | CSV / FCD / JSON 三种格式全部通过 |
| 批量合成 100 条 | 0.17 s(595 条/秒) |
| 合成成功率 | 100/100 |
| 速度分布 KS 距离 | 0.029 |
1.4 工程一致性
| 项目 | 结果 |
|---|---|
| 工具装饰器 | 51 个 |
self.tools 列表 |
60 个 |
| 派发链分支 | 61 个 |
| "可见但调用失败"的工具 | 0 个(修复前 5 个) |
| 重复派发键 | 0 |
| 调用了未定义函数的分支 | 0 |
2. 已知限制
2.1 播放器是子集实现
不支持的条件与动作会记入 unsupported 并明确返回,不会静默跳过。
| 类别 | 不支持项 |
|---|---|
| 条件 | ParameterCondition、TimeOfDayCondition、UserDefinedValueCondition |
| 结构 | Story 分支、Catalog、EntitySelection、运行期 ParameterAssignment |
| 动作 | 绝对目标车道(AbsoluteLaneChange) |
已支持的条件组语义:ConditionGroup 之间 OR、组内 AND,支持 Condition 的 delay;
Story/Act/Sequence 全层级与一个 ManeuverGroup 多个 Actor 均已覆盖;
StopTrigger 与 StartTrigger 同一套语义,满足即提前结束。
已支持的条件(共 16 种):SimulationTimeCondition、TimeHeadwayCondition、
DistanceCondition、SpeedCondition、StandStillCondition、
ReachPositionCondition、CollisionCondition、TimeToCollisionCondition、
RelativeSpeedCondition、AccelerationCondition、OffroadCondition、
EndOfRoadCondition、TraveledDistanceCondition、RelativeDistanceCondition、
RelativeAngleCondition(需 OSC 1.3,导出时自动抬版本)、TrafficSignalCondition。
已支持的动作:SpeedAction、LongitudinalDistanceAction(IDM 跟驰)、
LaneChangeAction(含横向加速度限幅)、LaneOffsetAction、
FollowTrajectoryAction、TrafficSignalControllerAction。
即便支持的部分也有简化:
| 项目 | 简化 |
|---|---|
| 跟驰 | 用 IDM(智能驾驶员模型),日常参数取舒适型标定;动作里的 maxAcceleration / maxDeceleration 会覆盖 / ,但仍未实现 OSC 完整的时距语义 |
| 变道 | 用纯追踪 + 横向加速度 3 m/s² 限幅,未做完整车辆动力学 |
| 速度动力学 | 支持 step / linear / cubic / sinusoidal 与 rate 维度,按帧离散插值 |
| 位置语义 | freespace / alongroute 未实现,一律按直线距离 |
| 信号灯 | 按"自车前方最近红绿灯"的真实状态判定,忽略控制器内部的相位时长模型 |
2.2 路口环是折线拼接
CommonJunctionCreator 用直线连接各臂端点,十字路口呈现为菱形环
而不是正方形环。拓扑正确、可通行,但几何不是真实交叉口的样子。
2.3 CARLA 客户端断言
一个进程内连续切换多个世界会偶发 _episode != nullptr 断言(引擎侧问题)。
目前的规避方式是每种布局跑独立进程,未在代码里根治。
2.4 测试环境
集显 + -quality-level=Low 下完成,未在独立显卡 / 高画质复验。
2.5 轨迹数据
当前没有真实车队数据,测试用符合 NGSIM 格式的合成样本 (3 条 / 180 帧 / 10 Hz)。拿到实采数据后需要重跑分布对比, 确认增强强度是否合适。
duration 的 KS 距离偏大(0.68),原因是 3 条种子时长完全相同、
真实方差为 0,这个指标在退化分布上没有意义。
2.6 轨迹到 SUMO
只实现了起点终点法(按轨迹首尾生成 flow),没有按 edge 序列精确还原路径。
2.7 OpenSCENARIO 默认版本
默认输出 OSC 1.1。若下游播放器只支持 1.0,需要改默认值并补行人 model 定义。
3. 参考
| 内容 | 链接 |
|---|---|
| CARLA | https://carla.org/ |
| OpenSCENARIO | https://www.asam.net/standards/detail/openscenario/ |
| OpenDRIVE | https://www.asam.net/standards/detail/opendrive/ |
| scenariogeneration | https://github.com/pyoscx/scenariogeneration |
| NGSIM | https://ops.fhwa.dot.gov/trafficanalysistools/ngsim.htm |