自动驾驶—CARLA仿真(13)dynamic_weather demo

📌 测试用例

PythonAPI/examples/dynamic_weather.py

动态天气控制,用于:

  1. 平滑移动太阳位置(模拟一天中的时间变化)
  2. 周期性生成风暴(云层、降雨、积水、湿滑路面等)
  3. 以可控速度自动更新天气参数

适用于 自动驾驶系统在复杂天气下的鲁棒性测试、传感器性能评估、视觉算法验证。

carla_dynamic_weather


🔑 主要模块解析

1. Sun 类:动态太阳轨迹模拟
  • 核心逻辑 :

    python 复制代码
    def tick(self, delta_seconds):
        self._t += 0.008 * delta_seconds        # 时间累积(正弦波相位)
        self.azimuth += 0.25 * delta_seconds    # 方位角匀速旋转(360°/40分钟)
        self.altitude = (70 * sin(self._t)) - 20  # 高度角正弦变化(-20° ~ +50°)
  • 效果 :

    • 太阳 东升西落(方位角 0°→360°)
    • 高度角 日出→正午→日落(最低 -20° 地平线下,最高 50°)
  • 用途 :
    模拟 自然光照变化,影响摄像头曝光、阴影、能见度。


2. Storm 类:风暴生命周期管理
  • 状态机设计:

    • _t:内部状态变量(-250 → 100 → -250 循环)
    • _increasing:控制风暴 增强/减弱阶段
  • 天气参数联动:

    参数 计算逻辑 效果
    clouds _t + 40 云量随风暴强度增加
    rain _t 降雨量直接反映风暴强度
    puddles _t + delay 积水滞后于降雨(更真实)
    wetness _t * 5 路面湿滑程度
    wind 基于云量分级 云多则风大
    fog _t - 10 风暴伴随薄雾
  • 周期行为:

    • 平静期 (_t = -250)→ 风暴酝酿 → 暴雨高峰 (_t = 100)→ 逐渐消退

✅ 模拟了 真实风暴的渐进式发展,而非突变。


3. Weather 类:天气系统集成器
  • 职责 :

    • 封装 CARLA 原生 carla.WeatherParameters
    • 协调 Sun 和 Storm 的更新
    • 将计算结果写回 weather 对象
  • 关键方法 :

    python 复制代码
    def tick(self, delta_seconds):
        self._sun.tick(delta_seconds)
        self._storm.tick(delta_seconds)
        # 同步所有参数到 CARLA 天气对象
        self.weather.sun_azimuth_angle = self._sun.azimuth
        self.weather.precipitation = self._storm.rain
        ...

4. 主循环:可控速率更新
python 复制代码
speed_factor = args.speed          # 默认 1.0(实时速度)
update_freq = 0.1 / speed_factor   # 更新间隔(秒)

while True:
    timestamp = world.wait_for_tick()
    elapsed_time += delta_seconds
    if elapsed_time > update_freq:
        weather.tick(speed_factor * elapsed_time)  # 加速/减速时间流
        world.set_weather(weather.weather)
        print(weather)  # 实时显示当前状态
        elapsed_time = 0.0
  • --speed 参数作用 :
    • speed=2.0:天气变化快 2 倍(快速测试极端天气)
    • speed=0.5:天气变化慢 2 倍(精细观察过渡效果)

⚠️ 注意:tick() 中传入 speed_factor * elapsed_time 是为了 保持物理一致性(如降雨量积累)。


🌦️ 动态天气效果演示

时间段 太阳状态 风暴状态 视觉效果
初始 低角度(清晨) 无云无雨 清晰场景,长阴影
中期 高角度(正午) 乌云密布,小雨 光线变暗,路面反光
高峰 西斜(傍晚) 暴雨+强风+积水 摄像头模糊,LiDAR 噪声增加
结束 落山(夜间) 雨停,积水残留 低光照,湿滑路面

🎯 核心应用场景

应用 如何利用本脚本
摄像头鲁棒性测试 验证算法在暴雨/强光下的目标检测性能
LiDAR 性能分析 测试雨雾对点云密度的影响
规划决策验证 检查车辆在湿滑路面是否降低速度
数据集生成 采集带时间连续天气变化的多模态数据

⚠️ 技术亮点

  1. 物理一致的时间缩放

    • 通过 speed_factor 控制仿真速度,但保持 降雨量 ∝ 时间 的物理关系
  2. 参数联动设计

    • 积水(puddles)滞后于降雨(rain)
    • 风速(wind)依赖云量(clouds)
    • 避免不真实的天气组合(如晴天暴雨)
  3. 无缝循环

    • 太阳轨迹(sin 函数)和风暴周期(状态机)均 无限循环,适合长时间测试

✅ 总结

该脚本是 CARLA 高级天气控制的典范,展示了:

  1. 如何构建 时间连续的动态天气系统
  2. 如何实现 多天气参数的物理联动
  3. 如何提供 可配置的仿真加速比

它是评估 自动驾驶系统在复杂气象条件下可靠性 的关键工具,特别适合需要 长时间、渐进式环境变化 的测试场景。

相关推荐
sell-cloud3 小时前
Prompt Engineering要凉了?Fable 5.5能“猜“意图,但银行正在封杀AI Agent——企业AI的真正护城河是什么
人工智能·prompt
Navicat中国4 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI4 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区5 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris6 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy7 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V7 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI7 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技7 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据7 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化