CarlaUnreal Traffic Module 技术文档
概述
CarlaUnreal的Traffic模块用于在虚幻引擎中模拟动态城市交通系统,支持: - 自动驾驶仿真中的复杂交通流生成 - 车辆、行人、交通信号等元素的自动化行为控制 - 基于规则的交通行为模型配置
系统架构流程图
graph TD
A[Traffic Manager] --> B[车辆生成系统]
A --> C[行人AI系统]
A --> D[交通信号控制器]
B --> E{路径网络}
C --> E
D --> E
E --> F((仿真环境))
核心功能
1. 车辆生成系统
功能描述
- Spawner Actors:通过路径点网络自动生成车辆
- 流量控制:
- 密度调节(车辆/分钟)
- 车型比例配置
- 区域限定生成
- 行为模式:
- 遵守交通规则
- 自适应巡航
- 变道逻辑
参数配置表
参数项 | 类型 | 默认值 | 范围 | 描述 |
---|---|---|---|---|
SpawnDensity | float | 30.0 | 0-200 | 每分钟生成车辆数 |
MaxVehicles | int | 100 | 0-500 | 场景内最大同时存在车辆数 |
SpawnRadius | meters | 1500 | 100-5000 | 以玩家为中心的生成半径 |
LaneChangeFrequency | float | 0.3 | 0.0-1.0 | 变道概率(0=从不,1=频繁) |
#### 模块逻辑 | ||||
|
||||
工程应用场景: | ||||
- 自动驾驶压力测试:通过调节SpawnDensity=200 模拟高峰流量,验证感知系统对密集车流的处理能力 |
||||
- 特殊车辆调度:设置EmergencyVehicleRatio=0.2 模拟紧急救援通道,测试优先通行算法 |
||||
- 区域限流测试:配置SpawnRadius=300 聚焦特定路段的交通流建模 |
车辆类型配置示例
VehicleMix:
- Blueprint: "/Game/Carla/Blueprints/Vehicles/Sedan"
Weight: 0.6
Attributes:
MaxSpeed: 160 # km/h
ColorVariants: 5
2. 行人AI系统
功能特性
- 基于导航网格的路径规划
- 群体行为模拟:
- 行人分组
- 避障逻辑
- 路口等待行为
模块逻辑
flowchart TB
Start[导航请求] --> PathCheck{路径有效性}
PathCheck -- 有效 --> BehaviorSelect[行为模式选择]
PathCheck -- 无效 --> Replan[重新规划]
BehaviorSelect -->|常规| Normal[沿路径移动]
BehaviorSelect -->|群体| Group[跟随领队]
Normal --> ObstacleCheck{障碍检测}
ObstacleCheck -- 有 --> Avoidance[动态避让]
ObstacleCheck -- 无 --> Continue[保持移动]
Group --> Formation[保持队形]
工程应用场景:- 十字路口仿真:配置
路口等待概率=0.8
模拟行人遵守信号灯行为- 紧急疏散模拟:设置
群体跟随系数=0.95
测试密集人流下的路径规划性能- 商业区建模:应用
时段波动系数+0.3
实现白天高峰人流自动调节
人群密度配置表
区域类型 | 基础密度 | 时段波动系数 |
---|---|---|
商业区 | 0.8 | +0.3 (白天) |
住宅区 | 0.5 | -0.2 (夜间) |
3. 交通信号控制
功能组件
- 可编程信号灯系统:
- 相位时间配置
- 感应式信号触发
- 紧急车辆优先通道
信号相位时序表
相位阶段 | 持续时间 | 触发条件 |
---|---|---|
Green | 25s | 车辆队列>3辆 |
Yellow | 4s | 倒计时结束 |
4. 路径规划系统
- 基于Waypoint的路由网络
- 动态路径重计算
- 交叉路口优先级管理
5. 性能优化
- 动态加载/卸载远端车辆
- LOD控制机制
- 多线程路径计算
接口定义
Python API
class TrafficManager:
def set_global_speed_limit(self, speed: float) -> bool
控制协议
{
"command": "spawn_vehicle",
"params": {"type": "sedan"}
}
常见问题
Q: 车辆无法生成 - 检查Waypoint文件路径有效性 - 验证SpawnRadius是否大于最小阈值(200米)
Q: 车辆卡在交叉路口 - 调整Waypoint连接半径(wp_connection_radius) - 检查信号灯相位配置
Q: 交通流导致性能下降 - 降低GlobalDensity参数 - 启用bEnableDynamicLOD
配置与依赖
必要组件
- CarlaUnreal插件(0.9.12+)
- 路径网络资源包
- 交通信号蓝图库
安装步骤
- 启用插件:
[ProjectName].uproject > Plugins > CarlaUnreal
- 导入基础资源:
/Content/Carla/Static/TrafficSigns
/Content/Carla/Maps/HDMaps
- 创建TrafficManager实例:
UTrafficManager::CreateTrafficSystem(World);
使用示例
基础车辆生成
- 放置
VehicleSpawner
Actor - 配置参数:
spawn_rate: 30 # 车辆/分钟 vehicle_mix: sedan: 60% truck: 20% motorcycle: 20% path_radius: 500m # 生成半径
- 连接路径网络节点
车辆生成流程图
sequenceDiagram
participant Spawner as 生成器
participant Graph as 路径网络
participant AI as 车辆AI
participant World as 世界场景
Spawner->>Graph: 请求可用路径
Graph-->>Spawner: 返回路径节点
Spawner->>World: 生成车辆实例
World->>AI: 挂载控制组件
AI->>Graph: 实时路径查询
AI->>World: 执行移动指令
交通信号配置
Begin Object Class=/Script/Carla.TrafficLightController
PhaseTiming:
Green -> 30s
Yellow -> 5s
Red -> 40s
bEmergencyPriority = True
End Object
交通信号控制流程图
stateDiagram-v2
[*] --> 信号检测
信号检测 --> 相位决策
相位决策 --> 绿灯: 车流>阈值
相位决策 --> 黄灯: 倒计时结束
黄灯 --> 红灯: 3秒过渡
红灯 --> 相位决策: 周期循环
绿灯 --> 紧急优先检测
紧急优先检测 --> 强制黄灯: 检测到应急车辆
高级配置
自定义行为模型
- 修改
BehaviorTree/CarlaTrafficBT
- 调整决策参数:
UTrafficParticipantComponent::SetBehaviorParams( MinSafetyDistance = 200, Aggressiveness = 0.3 // [0-1] )
路径网络调试
- 启用调试视图:
console command: show TrafficPaths
- 路径有效性检测:
road_graph.validate_connectivity()
路径网络验证流程
graph LR
A[原始路径数据] --> B[拓扑分析]
B --> C{闭合验证}
C -- 通过 --> D[生成导航网格]
C -- 失败 --> E[标记断点]
E --> F[人工修复]
F --> B
D --> G[发布可用网络]
graph LR
A[原始路径数据] --> B[拓扑分析]
B --> C{闭合验证}
C -- 通过 --> D[生成导航网格]
C -- 失败 --> E[标记断点]
E --> F[人工修复]
F --> B
D --> G[发布可用网络]
性能优化
硬件配置推荐
组件 | 最低要求 | 推荐配置 |
---|---|---|
CPU | i5-8600K 3.6GHz | i7-10700K 3.8GHz |
渲染参数
bEnableLOD=True
LODThresholds=(Distance=5000, ActorCount=50)
调试诊断
错误代码表
错误码 | 严重等级 | 解决方案 |
---|---|---|
T001 | Critical | 检查路径网络闭合性 |
T004 | Warning | 重新连接蓝图信号线 |
性能监控
TrafficMonitor.GetMetrics(
Metrics=["Vehicles.Alive", "FPS.Main"]
)
注意事项
- 路径网络需形成闭合回路
- 高密度交通时建议启用LOD优化
- 与CarSim/VeriStand联用时注意时钟同步
关键要点说明: 1. 采用分层结构,从功能概述到具体配置逐级展开 2. 包含代码片段与配置示例提升实用性 3. 强调与Carla核心架构的集成方式 4. 提供典型问题诊断路径 5. 注意区分基础使用与高级定制内容
建议根据实际项目需求补充: - 版本特定特性说明 - 性能优化参数参考值 - 与ROS/自动驾驶栈的接口示例 - 实际项目部署的最佳实践 ```