📌 测试用例
PythonAPI/examples/synchronous_mode.py
同步模式下的多传感器可视化示例,用于:
- 同步采集 RGB 摄像头和语义分割摄像头数据
- 将两路图像叠加显示(RGB 为底图,语义分割为半透明覆盖层)
- 通过预设路径自动控制车辆移动
适用于多模态感知算法验证、传感器融合调试、教学演示。
🔑 主要模块解析
1.CarlaSyncMode类:同步模式上下文管理器(核心创新)
- 功能:封装 CARLA 同步模式的开启/关闭逻辑
- 优势:
- 自动管理
world.tick()与传感器数据对齐 - 确保每帧只处理同一仿真时刻的多传感器数据
- 自动管理
- 使用方式:
withCarlaSyncMode(world,camera_rgb,camera_semseg,fps=30)assync_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.车辆控制逻辑(简化版路径跟踪)
# 初始化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.多传感器叠加显示
# 绘制 RGB 图像(底层)draw_image(display,image_rgb)# 绘制语义分割图像(半透明覆盖层)draw_image(display,image_semseg,blend=True)blend=True实现:ifblend:image_surface.set_alpha(100)# 设置透明度(0-255)- 语义分割着色:
image_semseg.convert(carla.ColorConverter.CityScapesPalette)- 使用 CityScapes 标准调色板(道路=灰色,车辆=蓝色等)
🎨 效果:RGB 图像 + 半透明语义标签覆盖,直观显示分割结果。
4.性能监控
实时显示两种 FPS:
# 真实 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多传感器同步可视化的精简范例,展示了:
- 如何可靠地同步多传感器数据
- 如何叠加显示不同模态的感知结果
- 如何通过路点系统实现自动路径跟踪