CARLA 自动驾驶系统辅助监控器

多传感器融合 · 环境感知 · 安全预警 · 自动化评估

Python CARLA Platform License


目录


项目概述

本项目基于 CARLA 开源自动驾驶仿真平台,构建了一套完整的多传感器融合、环境感知、安全预警与自动化评估系统。项目覆盖从传感器数据采集、多环境场景模拟、危险行为检测到性能指标量化评估的全链路,可用于自动驾驶算法验证、边界场景测试、毕业设计与教学演示。

核心亮点:

  • 多传感器融合:四路 RGB 相机 + 激光雷达点云 + BEV 鸟瞰图
  • 多环境模拟:晴天 / 雨天 / 雾天 / 夜间一键切换
  • 安全预警:前车碰撞预警(FCW)、车道偏离检测、红绿灯监测
  • 危险场景:自动生成急刹、鬼探头、加塞、落物等极端工况
  • KPI 评估:碰撞率、车道保持率、TTC 等指标自动计算与报告生成
  • 数据回放:黑匣子记录 + 场景录制/回放

系统架构

系统采用模块化设计,各功能解耦为独立模块,由 main.py 统一调度:


核心功能详解

1. 多传感器融合感知

系统部署了多类传感器,构建车辆周围 360° 的感知能力:

  • 四路 RGB 相机:前、后、左、右四视角实时画面拼接,提供车辆全向环境视图,消除盲区
  • 激光雷达点云可视化:将三维点云投影到 BEV(鸟瞰图),以颜色编码区分障碍物距离,直观展示周边障碍物分布
  • 车道线与可行驶区域绘制:结合 CARLA 地图 Waypoint 信息,在 BEV 中高亮车道边界与可行驶区域,辅助判断车道偏离

设计思路:多传感器融合是自动驾驶感知的基础。通过相机获取丰富纹理信息,激光雷达获取精确距离信息,BEV 视角提供全局态势感知,三者互补构成完整的感知链路。

2. 多环境与天气模拟

支持一键切换四种典型天气环境,模拟不同光照与路面条件:

天气模式 光照条件 路面状态 感知影响
晴天 充足自然光 干燥 基准环境,感知最佳
雨天 光照减弱 湿滑积水 相机清晰度下降,雷达噪点增加
雾天 严重散射 微湿 能见度骤降,远距目标丢失
夜间 仅有车灯 干燥 相机暗噪增加,远距感知受限

应用场景:天气模拟可用于验证感知算法在不同环境下的鲁棒性。例如测试雨雾天气下的目标检测准确率衰减,或夜间场景下的车道线识别能力。

3. 安全预警系统

Safety Warning System

实时监控车辆行驶安全状态,提供多维度预警:

  • 前车碰撞预警(FCW):实时计算与前车的距离和碰撞时间(TTC),当距离过近时,屏幕闪烁红/黄告警文字,提示危险等级
  • 黄色预警:TTC < 3s,提醒注意
  • 红色告警:TTC < 1.5s,紧急危险
  • 车道偏离检测:基于地图 Waypoint 判断车辆是否压线,为车道保持率指标提供数据支持
  • 红绿灯状态监测:实时获取前方红绿灯状态,并在仪表盘上方可视化显示,支持红灯停、绿灯行的场景验证

4. 极端危险场景自动生成

系统可随机触发四类高危场景,用于算法边界性能测试:

场景类型 英文标识 触发方式 测试目的
前车急刹 Sudden Brake 前方车辆突然减速 紧急制动响应
鬼探头行人 Pedestrian Jump 行人从遮挡物后方突然出现 行人检测与避让
近距离加塞 Car Cut-in 旁车突然切入本车道 变道冲突处理
道路落物 Static Obstacle 前方出现静止障碍物 静态障碍物识别

场景触发后,系统自动记录 KPI 变化,便于对比不同算法在极端工况下的表现差异。

5. KPI 自动化评估与报告

系统实时计算并记录多项关键性能指标,程序退出时自动生成 kpi_report.txt 报告:

指标 说明 评估维度
碰撞次数 仿真过程中发生的碰撞事件总数 安全性
车道保持率 车辆保持在车道内的时间占比 稳定性
最小 TTC 全程与前车的最小碰撞时间(Time-To-Collision) 安全裕度
急加速/急减速次数 超过阈值的加减速行为次数 舒适性
平均速度 仿真期间的平均车速 效率
通行效率 基于平均车速的通行效率评分 综合效率

所有指标实时显示在监控画面右上角,支持过程观察与事后复盘。

6. 数据记录与回放

  • 黑匣子数据记录:将车辆位置、速度、航向角、加速度等数据持续写入 blackbox.csv,支持事后分析与轨迹复现
  • 场景录制与回放:支持按键快捷操作,便于复现特定工况
  • R 键 → 开始录制
  • S 键 → 停止录制并保存
  • P 键 → 回放已保存的场景

7. 可视化界面

Visualization Interface

  • 主监控窗口:四路相机拼接 + BEV 鸟瞰图 + KPI 指标面板 + 告警信息,一站式掌控全局
  • 仪表盘窗口:实时显示车速、红绿灯状态,界面清晰直观,模拟真实驾驶体验

项目结构

carla-rl-project-main/
├── main.py                      # 主程序入口,统一调度各模块
├── requirements.txt             # 项目依赖库
├── README.md                    # 项目说明文档
└── core/                        # 模块化功能目录
    ├── __init__.py              # 模块初始化
    ├── sensors.py               # 相机与激光雷达管理
    ├── npc_manager.py           # NPC车辆与行人生成管理
    ├── recorder.py              # 场景录制
    ├── player.py                # 场景回放控制
    ├── blackbox.py              # 车辆数据黑匣子记录
    ├── map_drawer.py            # BEV鸟瞰图与车道绘制
    ├── ui_dashboard.py          # 虚拟仪表盘
    ├── traffic_light_monitor.py # 红绿灯状态监测
    ├── kpi_evaluator.py         # KPI指标自动评估
    └── hazard_manager.py        # 极端危险场景生成

运行环境与依赖

基础环境

依赖项 版本要求 说明
Python 3.7 ~ 3.10 推荐 3.8+
CARLA 0.9.12+ 推荐 0.9.16
操作系统 Windows / Linux 需支持 CARLA 模拟器

Python 依赖库

numpy>=1.21.0
opencv-python>=4.5.5.62
carla>=0.9.14

快速启动

1. 安装 CARLA 模拟器

CARLA Release 下载对应版本,解压后运行:

# Linux
./CarlaUE4.sh

# Windows
CarlaUE4.exe

等待地图加载完成,出现仿真窗口即表示启动成功。

2. 安装 Python 依赖

pip install -r requirements.txt

注意carla Python 包的版本需与 CARLA 模拟器版本匹配。CARLA 0.9.14+ 对应 carla>=0.9.14

3. 运行主程序

python main.py

启动后会出现两个窗口:主监控窗口(四路相机 + BEV + KPI)和仪表盘窗口(车速 + 红绿灯)。


按键操作说明

按键 功能 分类
n 切换白天/夜间模式 天气控制
r 开启雨天模式 天气控制
f 开启雾天模式 天气控制
c 恢复为晴天 天气控制
R 开始录制场景 录制回放
S 停止录制并保存 录制回放
P 回放已保存的场景 录制回放
ESC 退出程序 系统控制

适用场景与价值

场景 说明
毕业设计/课程设计 完整的系统架构与功能模块,可直接作为课程设计或毕设项目,覆盖感知、决策、评估全链路
算法验证平台 支持不同天气、高危场景下的自动驾驶算法性能测试与对比,快速迭代验证
教学演示 直观的可视化界面,适合向他人展示自动驾驶感知与安全预警的基本原理
未来扩展 模块化设计预留了控制算法接口,可快速接入 PID、MPC 或强化学习控制器

扩展方向

本项目采用模块化架构,预留了多个扩展接口,欢迎在此基础上进行二次开发:

  • 控制算法接入:在 core/ 下新增控制器模块,接入 PID / MPC / 强化学习等控制算法
  • 更多传感器:扩展 sensors.py,添加深度相机、GNSS、IMU 等传感器
  • 场景库扩充:在 hazard_manager.py 中添加更多危险场景模板
  • 多车协同:基于 npc_manager.py 扩展多车通信与协同决策
  • ROS 桥接:通过 CARLA ROS Bridge 将数据发布到 ROS 生态,对接更丰富的算法栈

License

本项目基于 CARLA 开源平台构建,遵循 MIT License