📌 测试用例
PythonAPI/examples/invertedai_traffic.py
CARLA 与 InvertedAI 的联合仿真系统(Co-simulation),用于:
- 利用 InvertedAI 云服务生成高真实感交通流
- 在 CARLA 中渲染并同步这些智能体的行为
- 支持车辆 + 行人混合交通、交通灯联动、路径规划
适用于 大规模城市级自动驾驶仿真、行为预测验证、V2X 场景生成。
一家提供 云原生交通仿真 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 同步
-
交通灯状态:
pythontraffic_lights_states = assign_iai_traffic_lights_from_carla(...)- 将 CARLA 交通灯状态(红/黄/绿)映射到 InvertedAI ID
- 每帧更新,确保 AI 车辆遵守信号灯
-
行人状态(非 IAI 控制):
pythonstate, 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 集成的案例,展示了:
- 如何 扩展 CARLA 原生交通能力 至城市级规模
- 如何 融合云服务 AI 与本地渲染引擎
- 如何 实现高保真、可扩展、可复现 的混合仿真
💡 核心价值 :
利用 InvertedAI 的 真实驾驶行为模型 ,弥补 CARLA TrafficManager 在 复杂交互场景(如无保护左转、密集车流)中的不足,为自动驾驶系统提供更严苛的测试环境。