📌 测试用例
PythonAPI/examples/synchronous_mode.py
同步模式下的多传感器可视化示例,用于:
- 同步采集 RGB 摄像头和语义分割摄像头数据
- 将两路图像叠加显示(RGB 为底图,语义分割为半透明覆盖层)
- 通过预设路径自动控制车辆移动
适用于 多模态感知算法验证、传感器融合调试、教学演示 。

🔑 主要模块解析
1. CarlaSyncMode 类:同步模式上下文管理器(核心创新)
-
功能:封装 CARLA 同步模式的开启/关闭逻辑
-
优势 :
- 自动管理
world.tick()与传感器数据对齐 - 确保每帧只处理同一仿真时刻的多传感器数据
- 自动管理
-
使用方式 :
pythonwith CarlaSyncMode(world, camera_rgb, camera_semseg, fps=30) as sync_mode: snapshot, image_rgb, image_semseg = sync_mode.tick(timeout=2.0) -
关键机制 :
- 为每个传感器创建独立队列(
queue.Queue) - 通过
assert all(x.frame == self.frame for x in data)确保帧同步
- 为每个传感器创建独立队列(
✅ 这是 CARLA 多传感器同步采集的最佳实践。
2. 车辆控制逻辑(简化版路径跟踪)
python
# 初始化
waypoint = m.get_waypoint(start_pose.location)
# 主循环中
waypoint = random.choice(waypoint.next(1.5))
vehicle.set_transform(waypoint.transform)
- 特点 :
- 禁用物理引擎 :
vehicle.set_simulate_physics(False) - 直接设置位姿:跳过控制指令,直接 teleport 到路点
- 随机路径选择 :
random.choice(waypoint.next(1.5))在前方 1.5 米处随机选路点
- 禁用物理引擎 :
- 效果:车辆沿道路自动行驶,但运动不连续(瞬移式)
⚠️ 注意:这不是真实驾驶,而是路径可视化演示。
3. 多传感器叠加显示
python
# 绘制 RGB 图像(底层)
draw_image(display, image_rgb)
# 绘制语义分割图像(半透明覆盖层)
draw_image(display, image_semseg, blend=True)
-
blend=True实现 :pythonif blend: image_surface.set_alpha(100) # 设置透明度(0-255) -
语义分割着色 :
pythonimage_semseg.convert(carla.ColorConverter.CityScapesPalette)- 使用 CityScapes 标准调色板(道路=灰色,车辆=蓝色等)
🎨 效果:RGB 图像 + 半透明语义标签覆盖,直观显示分割结果。
4. 性能监控
实时显示两种 FPS:
python
# 真实 FPS(Pygame 渲染帧率)
font.render('% 5d FPS (real)' % clock.get_fps(), ...)
# 仿真 FPS(CARLA 仿真步长)
fps = round(1.0 / snapshot.timestamp.delta_seconds)
font.render('% 5d FPS (simulated)' % fps, ...)
- 典型值 :
simulated FPS= 30(由fps=30参数决定)real FPS≈ 30(取决于渲染性能)
✅ 总结
该脚本是 CARLA 多传感器同步可视化的精简范例,展示了:
- 如何 可靠地同步多传感器数据
- 如何 叠加显示不同模态的感知结果
- 如何 通过路点系统实现自动路径跟踪