自动驾驶—CARLA仿真(16)generate_traffic demo

📌 测试用例

PythonAPI/examples/generate_traffic.py

大规模交通流生成器(Traffic Generator),用于:

  1. 批量生成指定数量的车辆和行人
  2. 配置 Traffic Manager(TM)实现智能交通行为
  3. 支持同步/异步模式、安全过滤、主车设置等高级功能

适用于 自动驾驶系统在复杂城市场景下的压力测试、感知算法验证、V2X 通信仿真

carla_generate_traffic


🔑 主要模块解析

1. 蓝图过滤与代际控制
python 复制代码
def get_actor_blueprints(world, filter, generation):
    bps = world.get_blueprint_library().filter(filter)
    if generation.lower() == "all": return bps
    # 按 generation 属性过滤(1/2/3 代车辆)
    bps = [x for x in bps if int(x.get_attribute('generation')) == int_generation]
  • --generationv / --generationw:限制生成特定代际的车辆/行人
  • --safe :仅生成 base_type='car' 的车辆(排除摩托车等易事故车型)

✅ 确保生成的 Actor 符合测试需求(如只用四轮汽车)。


2. Traffic Manager 高级配置
python 复制代码
traffic_manager = client.get_trafficmanager(args.tm_port)
traffic_manager.set_global_distance_to_leading_vehicle(2.5)  # 跟车距离
traffic_manager.set_hybrid_physics_mode(True)               # 混合物理(近处高精度)
traffic_manager.set_respawn_dormant_vehicles(True)          # 自动重生休眠车辆
traffic_manager.global_percentage_speed_difference(30.0)    # 全局降速 30%
  • 混合物理模式
    • 半径 70 米内车辆使用完整物理
    • 外部车辆简化计算 → 提升大规模仿真性能
  • 自动重生:在大型地图(如 Town10)中防止交通稀疏

3. 高效批量生成(Batch Spawning)
车辆生成:
python 复制代码
batch = []
for transform in spawn_points[:args.number_of_vehicles]:
    batch.append(SpawnActor(blueprint, transform)
        .then(SetAutopilot(FutureActor, True, tm_port)))
client.apply_batch_sync(batch, do_tick=True)
  • 原子操作SpawnActor + SetAutopilot 合并为单次 RPC 调用
  • 避免逐个生成的高延迟
行人生成(三阶段):
  1. 生成行人实体(带速度属性)

  2. 生成 AI 控制器controller.ai.walker

  3. 启动控制器

    python 复制代码
    controller.start()
    controller.go_to_location(random_location)
    controller.set_max_speed(walking_speed)

✅ 支持 行人过街行为set_pedestrians_cross_factor)和 轮椅行人(10% 概率)。


4. 同步模式管理
python 复制代码
if not args.asynch:
    traffic_manager.set_synchronous_mode(True)
    settings.synchronous_mode = True
    settings.fixed_delta_seconds = 0.05  # 20 FPS
world.apply_settings(settings)
  • 同步模式:确保传感器数据与时序严格对齐(推荐用于数据采集)
  • 异步模式:更高帧率但可能丢帧(仅用于可视化)

5. 特殊车辆配置
  • 英雄车(Hero Vehicle)

    python 复制代码
    if hero: blueprint.set_attribute('role_name', 'hero')
    • 通常用于挂载传感器的主车
    • 可通过 world.get_actors().filter('vehicle.*')role_name 筛选
  • 自动车灯管理

    python 复制代码
    traffic_manager.update_vehicle_lights(actor, True)
    • 根据环境光自动开关大灯/雾灯

6. 资源安全清理
python 复制代码
finally:
    # 恢复原始世界设置
    world.apply_settings(original_world_settings)
    
    # 批量销毁车辆
    client.apply_batch([DestroyActor(x) for x in vehicles_list])
    
    # 停止行人控制器 + 销毁所有行人
    for i in range(0, len(all_id), 2):
        all_actors[i].stop()  # 控制器需先 stop()
    client.apply_batch([DestroyActor(x) for x in all_id])
  • 关键细节 :行人控制器必须先 stop() 再销毁,否则会报错

🎯 核心应用场景

场景 配置参数
高密度交通测试 -n 100 -w 50 --hybrid
夜间行车验证 --car-lights-on
特定车型测试 --filterv "vehicle.tesla.*" --generationv 2
无渲染高性能仿真 --no-rendering --asynch
可复现实验 --seed 12345 --seedw 67890

⚠️ 技术点

  1. 混合物理模式

    • Town10 等大型地图中,同时保证 近处精度全局规模
  2. 行人行为多样性

    • 支持 行走/奔跑过街轮椅 三种行为模式
  3. 原子化批量操作

    • 使用 apply_batch_sync 减少网络开销,100 辆车生成时间 < 2 秒
  4. 无缝模式切换

    • 自动处理同步/异步模式的世界设置差异

✅ 总结

该脚本是 CARLA 生产级交通仿真的标准模板,展示了:

  1. 如何 高效生成大规模、多样化交通参与者
  2. 如何 配置 Traffic Manager 实现真实交通行为
  3. 如何 管理资源与仿真模式 确保稳定性

它是构建 城市场景自动驾驶测试 pipeline 的基石,特别适合需要 高保真、可扩展、可复现 交通流的工业级应用。

相关推荐
RPA机器人就选八爪鱼15 小时前
银行业流程自动化升级:RPA 机器人赋能金融数智转型
大数据·人工智能·机器人·自动化·rpa
创客匠人老蒋15 小时前
创客匠人:知识IP进阶之路,从“想做很多”到“只做一个爆品”
人工智能·创客匠人全球ip+ai高峰论坛·全球创始人ip+ai万人峰会
Winwoo15 小时前
AI Commit:拯救词穷,自动生成 Git Message
人工智能·程序员
花花Binki15 小时前
大模型你别再失忆了!你尔多隆吗?
人工智能
沛沛老爹15 小时前
Web开发者快速上手AI Agent:基于提示工程的旅游攻略系统实战
前端·人工智能·ai·agent·react·旅游攻略
小脉传媒GEO15 小时前
GEO优化数据统计系统DeepAnaX系统详细介绍:构建企业级AI数据智能分析平台
人工智能·信息可视化
Coovally AI模型快速验证15 小时前
是什么支撑L3自动驾驶落地?读懂AI驾驶与碰撞预测
人工智能·深度学习·目标检测·机器学习·计算机视觉·自动驾驶
大、男人15 小时前
FastMCP高级特性之Proxy Servers(代理服务)
人工智能·fastmcp
Java后端的Ai之路15 小时前
【分析式AI】-LightGBM算法命名解释
人工智能·算法·机器学习·aigc·分析式ai
战场小包15 小时前
构建低延迟智能语音Agent实践
人工智能·aigc·agent