资讯动态

CarlaAir同步与异步模式详解:为什么数据采集必须用同步模式,以及如何避免仿真器冻结

发布时间:2026/10/16 10:42:33 来源:尧图企业网站定制
【免费下载链接】CarlaAirCarlaAir: Fly Drones Inside a CARLA World!! A Unified Infrastructure for Air-Ground Embodied Intelligence项目地址https://gitcode.com/gh_mirrors/ca/CarlaAir点击查看免费下载CarlaAir 是一个整合 CARLA 与 AirSim 的空地一体仿真平台支持车辆在街道行驶、无人机在楼宇间飞行并采集 RGB/深度/语义等多模态传感器数据。对新手来说最容易踩的坑就是同步模式synchronous mode与异步模式asynchronous mode的混淆用错模式会导致采集数据帧对不齐而退出脚本时忘记恢复设置则会让整个仿真器卡死冻结。本文将讲透两者的区别、正确开启同步模式的步骤以及一套永不冻结的收尾写法。一、两种模式CarlaAir 的默认行为与数据采集的区别CarlaAir 基于 CARLA 引擎仿真世界有两种时间推进方式对比项异步模式默认同步模式时间推进仿真器自己按 GPU 帧率跑步长不固定由你的脚本调用world.tick()主动推进固定步长帧与时间每帧耗时不同时间不精确fixed_delta_seconds固定物理步长如 1/30 秒适用场景键盘开车、手动操控无人机、实时探索数据采集、演示回放、视频录制传感器数据多传感器帧号可能不一致所有传感器数据带同一帧号帧帧对齐官方 FAQ 对这一点的总结很精炼异步模式适合交互式操作同步模式适合数据采集、演示回放和视频录制。上图是一条无人机降落轨迹的采集与回放分析。可以看到每个时刻t1~t5都严格对应一个仿真帧——只有在同步模式下轨迹帧号 ↔ 传感器帧号 ↔ 时间戳才能一一对应后续做标注、评估、训练才可靠。而异步模式下物理步长随渲染帧率漂移采集出的数据时间戳是抖动的。二、如何开启同步模式四步完成配置开启同步模式只需要改WorldSettings但有一个容易漏掉的细节Traffic Manager 也要跟着切到同步。完整步骤如下settings world.get_settings() settings.synchronous_mode True settings.fixed_delta_seconds 1.0 / 30.0 # 30 Hz 固定物理步长 world.apply_settings(settings) tm client.get_trafficmanager(8000) tm.set_synchronous_mode(True) # TM 必须与世界同步模式一致之后主循环里每帧手动调用world.tick()推进仿真再收集各传感器的当帧数据。项目里多个示例都是这样做的可以直接对照阅读空地分屏演示examples/air_ground_sync.py世界同步与 examples/air_ground_sync.pyTraffic Manager 同步车辆轨迹录制examples/recording/record_vehicle.py官方通用同步上下文管理器CarlaSyncModePythonAPI/examples/synchronous_mode.py它在with块内自动开启同步模式退出时自动恢复原设置导演回放模式examples/recording/demo_director.pyfixed_delta_seconds常用取值1/3030 Hz兼顾流畅与精度或1/2020 Hz轻量机器更稳。录制轨迹类数据一般用 0.05s 步长即可。三、仿真器冻结的根因与正确收尾方法为什么脚本一退出仿真器就冻结了因为开启同步模式后仿真器会停止自主推进时间被动等待客户端调用world.tick()。如果你的脚本退出时没有关掉同步模式就没有人会再调用tick()了——世界就永远停在最后一帧表现为画面冻结、键盘无法驾驶。这也是新手最高频的事故。解决方法只有一个原则进同步必出同步。推荐用try/finally保证任何退出路径正常结束、异常、CtrlC都会恢复original_settings world.get_settings() # ① 先保存原始设置 settings world.get_settings() settings.synchronous_mode True settings.fixed_delta_seconds 0.05 world.apply_settings(settings) try: ... # 你的采集主循环 finally: world.apply_settings(original_settings) # ② 无论成功失败都恢复项目里的工具函数把这套逻辑封装成了现成工具值得收藏一键恢复异步examples/recording/trajectory_helpers.py 的cleanup_world(..., restore_asyncTrue)后台交通脚本的自我保护examples/auto_traffic.py 在启动时会检测世界是否残留同步模式发现就主动切回异步并打印警告——说明官方示例对冻结残留问题非常重视同步模式还有个附带好处场景可复现。同样的地图、天气与步长下每次采集的数据序列一致方便做对照实验和回归验证。上图中 Town01~Town10HD 在不同天气下的画面都可以通过固定天气参数 同步模式稳定地批量复现采集。四、实战建议按任务选模式的决策清单用异步模式默认什么都不用改用 WASD 键盘开车、手动操控无人机等交互体验快速验证脚本逻辑、调试传感器配置长时间挂着后台交通流配合 examples/auto_traffic.py用同步模式采集多传感器对齐的数据集相机、LiDAR、语义分割录制轨迹并回放examples/recording/ 录制工具集全为同步模式导演模式拍 MP4 演示视频examples/recording/demo_director.py⚠️避坑三要点开启同步前先用world.get_settings()保存原始设置finally里恢复Traffic Manager 的set_synchronous_mode(True)别漏否则 autopilot 车辆行为会与世界时钟脱节无人机AirSim 通道的轨迹录制建议保持异步交互起飞、再录轨迹官方脚本 examples/recording/record_drone.py 专门为此设计避免同步模式下的操控卡死问题。五、小结一句话总结本文的 CarlaAir 同步/异步模式指南异步模式是默认模式仿真器自驱动适合交互探索同步模式由脚本驱动固定fixed_delta_seconds步长是数据采集与视频录制的必备模式冻结的唯一解法是try/finally 恢复原始设置Traffic Manager 同步开关要一并配置。想进一步上手可以从 CarlaAir_Release/guide/Quick-Start.md 的 10 分钟入门开始遇到具体报错再查 CarlaAir_Release/guide/FAQ.md 的同步 / 异步模式章节。掌握这两类模式后你就能在 CarlaAir 里稳定地产出帧帧对齐、可复现的空地一体仿真数据了。赞分享【免费下载链接】CarlaAirCarlaAir: Fly Drones Inside a CARLA World!! A Unified Infrastructure for Air-Ground Embodied Intelligence项目地址https://gitcode.com/gh_mirrors/ca/CarlaAir点击查看免费下载相关推荐UniRelight性能优化技巧在NVIDIA A100上实现最快推理速度的7个方法UniRelight性能优化技巧在NVIDIA A100上实现最快推理速度的7个方法 UniRelight是一款先进的重照明框架能够联合建模场景内在属性和光Serverless Offline Lambda调用详解同步与异步调用模式全掌握Serverless Offline Lambda调用详解同步与异步调用模式全掌握 Serverless Offline 是一个强大的本地开发工具它能够模拟开发工具云原生后端FlutterFire离线同步设计模式库Firebase同步模式集合FlutterFire离线同步设计模式库Firebase同步模式集合 1. 离线同步核心价值与挑战 在移动应用开发中网络不稳定或完全断网的场景普遍存在。Fl后端移动开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑