自动驾驶—CARLA仿真(9)visualize_multiple_sensors demo

测试用例

PythonAPI/examples/visualize_multiple_sensors.py

carla_vis_multiple_sensors

这是一个 多传感器同步可视化示例 ,用于在 单个 Pygame 窗口中以网格布局同时显示多个传感器数据,包括:

  • 多视角 RGB 摄像头(前、后、左、右)
  • 3D LiDAR 点云(投影为 2D 图像)
  • 语义 LiDAR(Semantic LiDAR)

适用于传感器融合、感知系统调试等场景。


🔑 主要模块解析

1. DisplayManager:统一显示管理器
  • 功能:创建 Pygame 主窗口,并管理传感器子画面的布局。
  • 核心特性
    • 支持 网格布局 (如 [2, 3] 表示 2 行 3 列)
    • 自动计算每个传感器画面的 尺寸偏移位置
    • 提供 render() 方法统一刷新所有传感器画面
    • 封装 Pygame 初始化与销毁逻辑
  • 关键方法
    • get_display_size():返回每个子画面的宽高
    • get_display_offset(gridPos):根据网格位置 [row, col] 计算像素偏移

✅ 实现了 "一个窗口,多传感器视图" 的核心架构。


2. SensorManager:传感器抽象与数据处理
  • 功能:封装各类传感器的生成、数据回调与渲染逻辑。

  • 支持的传感器类型

    类型 CARLA 蓝图 数据处理方式
    RGBCamera sensor.camera.rgb 转为 NumPy → BGR → Pygame Surface
    LiDAR sensor.lidar.ray_cast 将 3D 点云 正交投影到 2D 平面,绘制为白点图
    SemanticLiDAR sensor.lidar.ray_cast_semantic 同上,但含语义标签(本例未着色)
    Radar sensor.other.radar 接收数据但未渲染(仅计时)
  • 关键机制

    • 自动匹配分辨率 :根据 DisplayManager 的子画面尺寸设置传感器 image_size_x/y
    • 异步监听 :通过 sensor.listen(callback) 注册回调函数
    • 性能统计 :记录每帧数据处理耗时(time_processing

✅ 实现了 传感器类型解耦 ,新增传感器只需扩展 init_sensor() 和对应 save_*_image 方法。


3. 传感器配置与布局(核心演示部分)

run_simulation() 中定义了 6 个传感器 ,布局为 2 行 × 3 列

网格位置 [row, col] 传感器类型 安装位姿
[0, 0] RGBCamera 左侧(yaw = -90°)
[0, 1] RGBCamera 正前方(yaw = 0°)
[0, 2] RGBCamera 右侧(yaw = +90°)
[1, 1] RGBCamera 后方(yaw = 180°)
[1, 0] LiDAR 车顶中心(64 线,100m 范围)
[1, 2] SemanticLiDAR 车顶中心(64 线,100m 范围)
  • 所有传感器均 附着于同一辆自动驾驶车辆(Dodge Charger 2020)
  • 车辆启用 set_autopilot(True),在地图中自主行驶

💡 注释明确提示:修改 grid_sizeSensorManager 实例即可自定义布局与传感器数量(见 lines 290--308)。


4. 仿真控制模式
  • 同步模式(默认)
    • 启用 synchronous_mode
    • 固定时间步长 0.05s(20 FPS)
    • 使用 world.tick() 精确控制仿真推进
  • 异步模式(可选)
    • 使用 world.wait_for_tick() 被动等待

✅ 保证传感器数据与仿真状态严格同步,避免时间错位。


5. 主循环与交互
  • 渲染循环

    python 复制代码
    display_manager.render()  # 绘制所有传感器画面
  • 退出控制

    • ESCQ 键退出
    • 关闭窗口退出

✅ 总结

该脚本是 CARLA 多传感器可视化 的标准范例,展示了:

  1. 如何在单窗口中网格化布局多个传感器视图
  2. 如何抽象不同传感器的数据处理流程
  3. 如何实现同步/异步仿真下的稳定渲染

适用于开发者快速搭建感知系统调试界面,或用于教学演示多传感器协同工作效果。

相关推荐
一点一木6 小时前
深度体验TRAE SOLO移动端7天:作为独立开发者,我把工作流揣进了兜里
前端·人工智能·trae
Lee川7 小时前
mini-cursor 揭秘:从 Tool 定义到 Agent 循环的完整实现
前端·人工智能·后端
weelinking7 小时前
【产品】00_产品经理用Claude实现产品系列介绍
数据库·人工智能·sql·数据挖掘·github·产品经理
Agent产品评测局7 小时前
制造业模具管理AI系统,主流产品能力对比详解:2026年智能制造选型深度洞察
人工智能·ai·chatgpt·制造
研华科技Advantech8 小时前
如何用一套实训设备,打通工业AI预测性维护技术全流程?
人工智能
Lab_AI8 小时前
AI for Science: MaXFlow AI Agent+ 报告体验双升级,让AI智能体更高效易用!
人工智能·ai for science·ai agent·ai智能体
李坤8 小时前
让 Codex 和 Claude 互相 Review:告别手动复制
人工智能·openai·claude
南屹川8 小时前
【API设计】GraphQL实战:从REST到GraphQL的演进
人工智能
KJ_BioMed8 小时前
当计算生物学遇上生成式AI:从头设计生物分子的“新范式”初探
人工智能·从头设计·生命科学·生物医药·科研干货·科晶生物
明月醉窗台8 小时前
深度学习(17)YOLO训练中的超参数详解
人工智能·深度学习·yolo