自动驾驶—CARLA仿真(17)invertedai_traffic demo

📌 测试用例

PythonAPI/examples/invertedai_traffic.py

CARLA 与 InvertedAI 的联合仿真系统(Co-simulation),用于:

  1. 利用 InvertedAI 云服务生成高真实感交通流
  2. 在 CARLA 中渲染并同步这些智能体的行为
  3. 支持车辆 + 行人混合交通、交通灯联动、路径规划

适用于 大规模城市级自动驾驶仿真、行为预测验证、V2X 场景生成

💡 InvertedAI

一家提供 云原生交通仿真 API 的公司,其模型基于真实世界驾驶数据训练,能生成比 CARLA TrafficManager 更真实的车辆行为。

免费额度有限!


🔑 主要模块解析

1. InvertedAI 初始化流程
python 复制代码
# 1. 获取地图区域信息
location_info_response = iai.location_info(location=args.location)

# 2. 划分初始化区域(四叉树)
regions = iai.get_regions_default(...)

# 3. 调用 large_initialize 生成初始智能体
response = iai.large_initialize(
    location=args.location,
    regions=regions,
    traffic_light_state_history=[traffic_lights_states],
    ...
)
  • large_initialize
    • 在指定地理区域(如 carla:Town10HD)生成 50+ 辆车 的初始状态
    • 考虑 交通灯状态车辆间相对位置
    • 返回每个智能体的 AgentState(位置/朝向/速度)和 AgentProperties(尺寸/类型)

✅ 解决了 CARLA 原生 spawn 点不足的问题,支持 任意位置生成车辆


2. CARLA-InvertedAI 双向同步机制
(1) CARLA → InvertedAI 同步
  • 交通灯状态

    python 复制代码
    traffic_lights_states = assign_iai_traffic_lights_from_carla(...)
    • 将 CARLA 交通灯状态(红/黄/绿)映射到 InvertedAI ID
    • 每帧更新,确保 AI 车辆遵守信号灯
  • 行人状态(非 IAI 控制):

    python 复制代码
    state, properties = initialize_iai_agent(actor, "pedestrian")
    response.agent_states[agent_id] = state  # 反馈行人位置给 IAI
    • CARLA 控制的行人位置实时同步到 InvertedAI
    • 避免 IAI 车辆与行人碰撞
(2) InvertedAI → CARLA 同步
python 复制代码
def update_transforms(iai2carla, response):
    for agent_id in iai2carla.keys():
        if agentdict["is_iai"]:
            agent = response.agent_states[agent_id]
            actor.set_transform(transform_iai_to_carla(agent))
  • 每帧将 InvertedAI 计算的 新位姿 应用到 CARLA 车辆
  • 关键设置actor.set_simulate_physics(False)
    → 禁用 CARLA 物理引擎,完全由 IAI 控制运动

3. 动态路径规划(Waypoint System)
python 复制代码
def get_next_waypoints(carla_map, agent_states, waypoints, args):
    # 1. 检查是否需要新航点
    if distance_to_waypoint <= detection_threshold or >= max_distance_away:
        # 2. 从 CARLA 路网获取下一个航点
        wp = carla_map.get_waypoint(agent_location)
        next_wp = random.choice(wp.next(args.iai_waypoint_distance))
        return [next_wp.x, next_wp.y]
  • 解决 IAI 无全局路径问题
    InvertedAI 只提供局部行为,本脚本通过 CARLA 路网补充 长距离导航
  • 参数控制
    • --iai-waypoint-distance=15:航点间隔 15 米
    • --iai-max-distance-away=20:偏离超 20 米则重规划

✅ 实现 InvertedAI 行为 + CARLA 导航 的混合控制。


4. 混合交通参与者管理
类型 控制方 生成方式
IAI 车辆 InvertedAI 云服务 large_initialize + large_drive
CARLA 行人 CARLA 内置 AI controller.ai.walker
Hero 车 用户(可选) 第一辆生成的车辆
  • 行人特殊处理
    • 仅由 CARLA 控制(不调用 IAI)
    • 但位置同步给 IAI 避障
  • Hero 车
    • 通过 --hero 参数指定
    • 自动设置第三人称视角跟随

5. 高级配置与日志
  • API 参数
    • --api-model=bI5p:指定 InvertedAI 模型版本
    • --iai-async=True:异步调用 API 提升性能
  • 数据记录
    • --record:启用 CARLA 录制(.log 文件)
    • --iai-log:导出 InvertedAI 专用日志(.json),支持可视化回放

🌐 系统架构图

复制代码
+------------------+       +---------------------+
|   InvertedAI     |<----->|      CARLA          |
|  (Cloud Service) |  API  |  (Local Simulator)  |
+------------------+       +----------+----------+
        ↑                             ↑
        | 同步交通灯状态              | 同步行人位置
        | 下发车辆位姿                | 上报路网信息
        ↓                             ↓
+------------------+       +---------------------+
|  Real-world      |       |  Rendering &        |
|  Driving Data    |       |  Physics (Disabled) |
+------------------+       +---------------------+

✅ 总结

该脚本是 CARLA 与商业级交通仿真 API 集成的案例,展示了:

  1. 如何 扩展 CARLA 原生交通能力 至城市级规模
  2. 如何 融合云服务 AI 与本地渲染引擎
  3. 如何 实现高保真、可扩展、可复现 的混合仿真

💡 核心价值

利用 InvertedAI 的 真实驾驶行为模型 ,弥补 CARLA TrafficManager 在 复杂交互场景(如无保护左转、密集车流)中的不足,为自动驾驶系统提供更严苛的测试环境。

相关推荐
Swift社区2 小时前
LeetCode 451 - 根据字符出现频率排序
算法·leetcode·ssh
还不秃顶的计科生2 小时前
图像拼接匹配match
人工智能·深度学习
老周聊架构2 小时前
架构火花 | 提示词工程在AI时代下的思考
人工智能·架构·提示词工程
Abona2 小时前
智能移动设备全品类核心方案对比及量产趋势调研报告
机器人·自动驾驶·无人机
AI营销先锋2 小时前
原圈科技赋能AI市场舆情分析,推动企业智能化决策变革
大数据·人工智能
小草cys2 小时前
BERT 和 Transformer 的关系
人工智能·bert·transformer
浔川python社2 小时前
C++小程序编写系列(2)
c++·算法·图论
十铭忘2 小时前
SAM2跟踪的理解10——mask decoder
人工智能·深度学习·计算机视觉
老蒋新思维2 小时前
创客匠人观察:知识IP的下一站——与AI智能体共生的“人机协同”模式
大数据·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人