自动驾驶—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. 如何实现同步/异步仿真下的稳定渲染

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

相关推荐
NAGNIP1 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab2 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab2 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP6 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年6 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼6 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS7 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区8 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈8 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang8 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx