移除 Windows 11 的 AI 功能:Copilot 和 Recall 一键清空,一篇讲透
2026/9/13 11:46:18
PythonAPI/examples/sensor_synchronization.py
多传感器同步采集的底层实现示例,用于:
适用于理解 CARLA 同步机制、开发自定义传感器同步逻辑、调试传感器丢失问题。
World's frame:39070541Frame:39070541Sensor: lidar01 Frame:39070541Sensor: camera01 Frame:39070541Sensor: camera02 Frame:39070541Sensor: camera03 Frame:39070541Sensor: radar01 Frame:39070541Sensor: radar02 Frame:39070541Sensor: lidar02settings.fixed_delta_seconds=0.2# 5 FPS 仿真步长settings.synchronous_mode=Trueworld.apply_settings(settings)fixed_delta_seconds=0.2→ 每 200ms 推进一帧world.tick()返回时所有传感器数据已就绪⚠️ 注意:此脚本不处理传感器数据内容,仅验证数据到达。
defsensor_callback(sensor_data,sensor_queue,sensor_name):sensor_queue.put((sensor_data.frame,sensor_name))(帧号, 传感器名)入队,不处理原始数据queue.Queue()确保多传感器并发写入安全sensor_data)✅ 这是生产级传感器管理的最佳实践:回调函数应尽量轻量。
| 传感器类型 | 数量 | 配置差异 |
|---|---|---|
| RGB 摄像头 | 3 | 默认配置(无位置/朝向设置) |
| LiDAR | 2 | 不同点云密度: - lidar01: 100K 点/秒- lidar02: 1M 点/秒 |
| Radar | 2 | 默认配置 |
💡设计意图:
通过不同配置的传感器验证同步机制的鲁棒性(高负载 LiDAR 可能延迟)。
whileTrue:world.tick()# 推进仿真w_frame=world.get_snapshot().frame# 等待所有传感器数据for_inrange(len(sensor_list)):s_frame=sensor_queue.get(True,1.0)# 阻塞等待 1 秒print("Frame: %d Sensor: %s"%(s_frame[0],s_frame[1]))sensor_data.frame确保数据属于当前仿真帧⚠️重要限制:
假设所有传感器每帧都触发(实际中雷达/LiDAR 可能因性能跳帧)。
| 特性 | 本脚本 | CarlaSyncMode上下文管理器 |
|---|---|---|
| 数据处理 | 仅验证到达 | 可直接获取原始数据 |
| 易用性 | 需手动管理队列 | 封装为with语句 |
| 灵活性 | 适合底层调试 | 适合应用开发 |
| 错误处理 | 手动捕获Empty | 自动帧对齐断言 |
💡定位差异:
本脚本是同步机制的教学示例,而CarlaSyncMode是工程化封装。
该脚本是 CARLA多传感器同步原理的底层演示,展示了:
💡核心价值:
为开发者提供了理解 CARLA 同步机制的最小可行示例,特别适合需要深度定制传感器同步逻辑的高级应用场景。