1. CARLA与SUMO联调中的典型问题解析
第一次把CARLA和SUMO联调的时候,我盯着屏幕上的报错信息发了半小时呆。明明按照官方文档一步步操作,为什么SUMO生成的NPC车辆在CARLA里就是获取不到速度信息?这个问题困扰了我整整两天,最后发现是车辆ID的映射关系搞错了。
1.1 速度信息获取异常排查
CARLA和SUMO的车辆ID体系完全不同。新手最容易犯的错误就是直接用CARLA的world.get_actors()获取车辆ID传给SUMO的接口。实测下来,正确的做法应该是:
# 错误示范(会导致速度获取失败)
carla_actors = world.get_actors()
for actor in carla_actors:
sumo_speed = traci.vehicle.getSpeed(actor.id) # 这里会报错
# 正确操作(从SUMO端获取车辆ID)
sumo_vehicle_ids = traci.vehicle.getIDList()
for vid in sumo_vehicle_ids:
speed = traci.vehicle.getSpeed(vid) # 这才是正确的调用方式
这个坑的根源在于:CARLA端只负责车辆的位置变换(transform),真正的运动逻辑是在SUMO端计算的。所以必须通过SUMO的TraCI接口获取速度数据,而不是反过来。
1.2 同步机制配置要点
在runsync.py这个同步脚本里,有个关键参数经常被忽略:
# 同步时间步长(单位:秒)
sync_step_length = 0.05
# 必须确保CARLA和SUMO使用相同的步长
traci.simulationStep()
world.tick()
我遇到过最诡异的问题是:当步长设置大于0.1秒时,SUMO生成的车辆会在CAR
455




被折叠的 条评论
为什么被折叠?



