测试用例
PythonAPI/examples/manual_control.py
功能完备的手动驾驶控制客户端,提供:
- 完整的车辆手动控制(油门、刹车、转向、灯光等)
- 高级车辆特性支持(车门控制、遥测显示、Ackermann 控制)
- 多传感器支持(RGB、深度、语义分割、LiDAR、雷达、DVS、光流)
- 高级仿真功能(天气切换、地图图层控制、录制/回放)
适用于 交互式驾驶测试、传感器调试、教学演示、数据采集。
carla_manual_control
🔑 主要模块解析
1. World 类:仿真世界管理器
- 核心职责 :
- 管理主车(Player)的生成与重生(
Backspace键) - 初始化并管理 5 类传感器 :
CollisionSensor(碰撞检测)LaneInvasionSensor(车道入侵)GnssSensor(GPS 定位)IMUSensor(惯性测量)RadarSensor(毫米波雷达可视化)
- 控制 天气预设 (
C/Shift+C) - 管理 地图图层 (建筑、植被、路灯等,
V/B键) - 支持 车门开关 (
O键)和 车辆遥测 (T键)
- 管理主车(Player)的生成与重生(
✅ 是整个仿真环境的"中枢控制器"。
2. KeyboardControl 类:全功能车辆控制
-
基础控制:
按键 功能 W/S油门/刹车 A/D左/右转向 Q切换倒挡 Space手刹 M+,/.手动换挡 -
灯光系统:
L:位置灯 → 近光灯 → 雾灯 → 关闭Shift+L:开启远光灯Z/X:左/右转向灯I:车内灯- 自动灯光:刹车时亮刹车灯,倒车时亮倒车灯
-
高级功能:
Ctrl+W:启用 60 km/h 定速巡航P:切换自动驾驶(Autopilot)Backspace:重生车辆(保留传感器配置)O:开关所有车门T:切换车辆遥测(显示底盘 debug 信息)F:切换 Ackermann 控制器(高精度转向模型)
✅ 实现了 真实车辆的完整人机交互逻辑。
3. Ackermann 控制器支持(核心创新)
-
传统控制 :使用
VehicleControl(简化转向模型) -
Ackermann 控制 :
pythonself._ackermann_control = carla.VehicleAckermannControl() world.player.apply_ackermann_control(self._ackermann_control) -
优势 :
- 模拟真实车辆的 阿克曼转向几何
- 低速时更精确的转向响应
- HUD 显示目标速度(
3.6 * self._ackermann_control.speed)
🚗 适用于 高精度路径跟踪 和 低速泊车场景。
4. HUD 类:专业级抬头显示器
实时显示 15+ 项关键信息:
- 性能指标:服务器/客户端 FPS
- 车辆状态:速度、航向角、加速度、陀螺仪
- 定位数据:GNSS 坐标、高度、罗盘方向
- 控制参数:油门/刹车/转向量(进度条可视化)
- 环境感知 :
- 碰撞历史强度曲线(200 帧)
- 周围车辆列表(距离排序,最远 200 米)
- Ackermann 信息:目标速度(当启用时)
💡 通过 颜色编码 直观展示车辆状态(如红色=急刹,绿色=加速)。
5. 传感器系统(CameraManager)
支持 14 种传感器模式 ,通过 ````` 或 N 键切换:
| 传感器类型 | 特性 |
|---|---|
| RGB 摄像头 | 支持畸变模拟(色差、晕影) |
| 深度摄像头 | 3 种深度着色模式(Raw/Gray/Logarithmic) |
| 语义分割 | CityScapes 调色板 |
| 实例分割 | 对象级分割 |
| LiDAR | 点云投影为 2D 图像 |
| DVS | 动态视觉传感器(事件相机) |
| 光流 | 运动矢量可视化 |
| 法线图 | 表面法线方向 |
| Cosmos 可视化 | 专用控制算法可视化 |
- 5 种预设视角 (
Tab键切换):- 车后跟随(第三人称)
- 车内视角
- 侧前方
- 高空俯视
- 左侧后视镜
✅ 提供 多模态感知数据 的实时可视化。
6. 雷达可视化(RadarSensor)
-
创新实现 :
pythonself.debug.draw_point(radar_data.transform.location + fw_vec, color=carla.Color(r,g,b)) -
速度着色 :
- 红色:远离车辆(正速度)
- 蓝色:接近车辆(负速度)
- 绿色:横向移动(零径向速度)
-
动态点云:每个点存活 0.06 秒,形成运动轨迹
📡 这是 CARLA 官方提供的雷达可视化方案。
7. 录制与回放系统
- 图像录制 :
R键保存传感器图像到_out/ - 仿真录制 :
Ctrl+R录制完整仿真到manual_recording.log - 回放控制 :
Ctrl+P:启动回放Ctrl+ +/-:调整回放起点(±1/10 秒)
✅ 支持 实验可复现性 和 数据集生成。
8. 地图图层控制
-
11 类图层 :
python[Buildings, Foliage, ParkedVehicles, StreetLights, Walls, ...] -
操作方式 :
V/Shift+V:切换图层类型B/Shift+B:加载/卸载当前图层
🌆 允许 动态调整场景复杂度(如关闭建筑物简化测试)。
✅ 总结
该脚本是 CARLA 最全面的手动驾驶示例,集成了:
- 车辆动力学控制(标准 + Ackermann + 灯光系统)
- 多传感器融合(视觉、激光雷达、雷达、DVS、光流)
- 环境动态调控(天气、地图图层)
- 数据记录与回放
- 实时状态监控
💡 核心价值 :
它不仅是官方推荐的 入门教程 ,更是 开发自定义驾驶应用的参考模板,适用于从学术研究到工业落地的全场景需求。