news 2026/6/10 18:04:46

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶—CARLA仿真(8)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 蓝图数据处理方式
    RGBCamerasensor.camera.rgb转为 NumPy → BGR → Pygame Surface
    LiDARsensor.lidar.ray_cast将 3D 点云正交投影到 2D 平面,绘制为白点图
    SemanticLiDARsensor.lidar.ray_cast_semantic同上,但含语义标签(本例未着色)
    Radarsensor.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.主循环与交互
  • 渲染循环
    display_manager.render()# 绘制所有传感器画面
  • 退出控制
    • ESCQ键退出
    • 关闭窗口退出

✅ 总结

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 13:06:29

WebUploader支持国密加密的大文件分块上传方案?

前端老哥的外包求生记:20G大文件上传系统(Vue3原生JS) 兄弟们!我是福建一名“头发渐少但代码不秃”的前端程序员,最近接了个外包活——给客户做文件管理系统,核心需求就一个:“20G大文件文件夹…

作者头像 李华
网站建设 2026/6/10 12:22:44

提高表达能力必看的七本演讲与口才类书籍推荐

古语有云:「三寸之舌,强于百万之师」,足见口才的力量。TED掌门人克里斯也曾说:无论今天公众演讲有多重要,未来只会更重要!为了帮助大家提升演讲与口才能力,特此推荐七本演讲方面的经典书籍&…

作者头像 李华
网站建设 2026/6/10 12:51:39

百度热搜榜:近期Qwen3-VL-8B关注度持续攀升原因

Qwen3-VL-8B为何突然火了?轻量多模态模型的落地突围 在AI技术不断向“更聪明”演进的今天,一个现象值得关注:越来越多企业不再盲目追逐千亿参数的大模型,而是将目光投向像Qwen3-VL-8B这样参数适中、部署灵活、能真正用起来的轻量级…

作者头像 李华
网站建设 2026/6/9 19:23:50

Mapbox GL JS 核心表达式:`all` 多条件且判断完全教程

all 是 Mapbox GL JS 表达式系统中最核心的逻辑判断表达式之一,用于实现多条件“且”判断——只有所有输入的布尔表达式结果均为 true 时,all 才返回 true;且支持短路求值(一旦某个条件为 false,立即停止后续条件计算&…

作者头像 李华
网站建设 2026/6/10 13:07:04

Mapbox GL JS 核心表达式:`any` 多条件或判断完全教程

any 是 Mapbox GL JS 表达式系统中与 all 互补的核心逻辑表达式,用于实现多条件“或”判断——只要任意一个输入的布尔表达式结果为 true,any 就返回 true;同时具备短路求值特性(一旦某个条件为 true,立即停止后续条件…

作者头像 李华
网站建设 2026/6/10 0:03:37

纯镍旋塞阀有哪些结构优势?

纯镍旋塞阀凭借其独特的结构设计,在耐腐蚀性、密封性、操作便捷性和维护性等方面展现出显著优势,尤其适用于高温、强腐蚀等苛刻工况。以下是其核心结构优势的详细分析:一、双道沟槽密封环设计:零泄漏保障 动态密封机制 阀体进出口…

作者头像 李华