📌 测试用例
PythonAPI/examples/automatic_control.py
自动驾驶代理(Autonomous Agent)演示系统,用于:
- 加载三种不同级别的自动驾驶代理(Basic/Constant/Behavior)
- 自动规划路径并控制车辆从起点到随机目的地
- 提供完整的 HUD 信息显示、传感器管理和交互控制
carla_automatic_control
🔑 主要模块解析
1. 自动驾驶代理系统(核心创新)
脚本集成了 CARLA 官方提供的三种导航代理:
| 代理类型 | 类 | 特性 |
|---|---|---|
BasicAgent |
agents.navigation.basic_agent |
基于 Pure Pursuit 的简单路径跟踪,支持速度限制 |
ConstantVelocityAgent |
agents.navigation.constant_velocity_agent |
保持恒定速度沿直线行驶(用于测试) |
BehaviorAgent |
agents.navigation.behavior_agent |
高级行为代理 ,支持 cautious/normal/aggressive 三种驾驶风格 |
在 CARLA 的 BehaviorAgent 中,cautious(谨慎)、normal(正常)、aggressive(激进)代表三种预设的驾驶行为风格,它们通过调整底层参数来模拟不同性格驾驶员的行为
-
路径规划 :
pythondestination = random.choice(spawn_points).location agent.set_destination(destination) -
循环模式 :
--loop参数启用后,到达目的地自动选择新目标
✅ 这是 CARLA 官方推荐的自动驾驶开发入口。
2. World 类:仿真环境管理器
- 车辆生成 :
- 随机选择符合
--filter和--generation的车辆 - 设置
role_name='hero'便于识别
- 随机选择符合
- 传感器集成 :
- 碰撞检测 (
CollisionSensor) - 车道入侵检测 (
LaneInvasionSensor) - GNSS 定位 (
GnssSensor) - 多摄像头/LiDAR (
CameraManager支持 7 种传感器模式)
- 碰撞检测 (
- 物理优化 :
modify_vehicle_physics()启用 sweep wheel collision 提升稳定性
3. HUD(抬头显示器)系统
实时显示关键信息:
- 性能指标:服务器/客户端 FPS
- 车辆状态:速度、航向角、位置、档位
- 环境信息:地图名称、仿真时间、天气
- 感知数据 :
- 碰撞历史(200 帧强度曲线)
- 周围车辆列表(距离排序)
- GNSS 坐标
💡 通过 进度条+数值 直观展示油门/刹车/转向量。
4. 传感器管理系统(CameraManager)
-
多视角支持:5 种预设摄像头位置(车后、车内、侧方等)
-
多模态传感器 :
pythonself.sensors = [ ['sensor.camera.rgb', ...], ['sensor.camera.depth', ...], ['sensor.camera.semantic_segmentation', ...], ['sensor.lidar.ray_cast', ...] ] -
实时渲染:LiDAR 点云投影为 2D 图像
-
录制功能 :
self.recording = True保存图像到_out/目录
5. 主控制循环
python
while True:
# 1. 推进仿真
if args.sync: world.world.tick()
# 2. 获取代理控制指令
control = agent.run_step()
# 3. 应用车辆控制
world.player.apply_control(control)
# 4. 检查是否到达目的地
if agent.done():
if args.loop:
agent.set_destination(new_destination)
- 同步模式支持:确保代理决策与仿真严格对齐
- 资源安全清理 :
finally块恢复设置并销毁所有 Actor
🎯 核心应用场景
| 场景 | 配置示例 |
|---|---|
| 基础路径跟踪测试 | --agent Basic --behavior normal |
| 激进驾驶行为分析 | --agent Behavior --behavior aggressive |
| 恒速巡航验证 | --agent Constant |
| 长距离连续导航 | --loop --agent Behavior |
| 多传感器数据采集 | 结合 CameraManager 的录制功能 |
✅ 总结
该脚本是 CARLA 自动驾驶代理的标准参考实现,展示了:
- 如何 集成官方导航代理 实现端到端自动驾驶
- 如何 构建完整的仿真监控系统(HUD + 传感器)
- 如何 管理复杂仿真资源(车辆、传感器、代理)
💡 核心价值 :
为研究人员和开发者提供了一个 开箱即用的自动驾驶测试平台 ,无需从零实现路径规划和控制逻辑,可直接聚焦于 高级行为策略 或 感知-决策融合 的研究。