2. 仿真平台选型:主流仿真平台对比

做自动驾驶感知算法仿真,第一步就是选平台。说实话,这步选错了,后面全白干。我见过不少团队,花三个月搭好环境,结果发现传感器模型不准,或者场景编辑器太弱,最后只能推倒重来。今天我就把几个主流平台掰开揉碎讲清楚。

2.1 四大主流仿真平台概览

目前工业界和学术界用得最多的,就是这四个:CARLASUMOLGSVLAirSim。它们各有各的脾气,咱们一个一个说。

平台 定位 渲染引擎 传感器仿真 开源情况
CARLA 城市自动驾驶仿真 Unreal Engine 4 摄像头、激光雷达、毫米波雷达、GPS/IMU 完全开源
SUMO 交通流仿真 无(2D微观交通) 无传感器模型 完全开源
LGSVL 自动驾驶全栈仿真 Unity 摄像头、激光雷达、毫米波雷达、超声波 开源(已停止维护)
AirSim 无人机/机器人仿真 Unreal Engine 4 摄像头、激光雷达、IMU、深度相机 完全开源

核心观点:没有最好的平台,只有最合适的平台。选型的关键,是看你的算法要解决什么问题。

2.2 CARLA:感知算法验证的首选

我个人最常用的就是CARLA。为什么?因为它对感知算法的支持最完整。

CARLA基于Unreal Engine 4,渲染质量在开源平台里算第一梯队。它的传感器模型很丰富,尤其是激光雷达,支持64线、32线、16线,还能模拟光束的衰减和噪声。我在做3D目标检测时,就靠CARLA生成的数据来训练模型,效果跟真实数据差距不大。

举个例子,你想验证一个多传感器融合算法:

# CARLA中配置传感器
camera_bp = blueprint_library.find('sensor.camera.rgb')
camera_bp.set_attribute('image_size_x', '1920')
camera_bp.set_attribute('image_size_y', '1080')
camera_bp.set_attribute('fov', '90')

lidar_bp = blueprint_library.find('sensor.lidar.ray_cast')
lidar_bp.set_attribute('channels', '64')
lidar_bp.set_attribute('range', '100')
lidar_bp.set_attribute('points_per_second', '1000000')

嗯,这里要注意:CARLA的传感器数据是同步发布的,但实际硬件会有延迟。所以你在做真值对齐时,最好加一个时间戳补偿模块。我曾经因为这个疏忽,导致融合算法在实车上表现很差,排查了两天才发现问题。

2.3 SUMO:交通流仿真的利器

SUMO跟其他三个平台不太一样。它不做传感器仿真,也不渲染画面。它的核心能力是交通流仿真

说白了,SUMO就是模拟车流怎么走、红绿灯怎么变、行人怎么过马路。它生成的轨迹数据,可以作为CARLA等平台的输入,用来驱动场景中的动态物体。

我习惯把SUMO和CARLA搭配使用。SUMO负责生成交通流,CARLA负责渲染和传感器仿真。这样分工明确,各取所长。

# SUMO生成交通流示例
<routes>
    <vType id="car" accel="2.0" decel="4.5" sigma="0.5" length="4.5" maxSpeed="15.0"/>
    <flow id="flow1" type="car" begin="0" end="100" number="50" from="edge1" to="edge2"/>
</routes>

小技巧:用SUMO生成复杂交通场景时,建议先画好路网,再定义车流。路网越精细,仿真越真实。我一般会用OpenStreetMap导出真实地图,再导入SUMO做微调。

2.4 LGSVL:曾经的王者,现在的遗憾

LGSVL曾经是我最看好的平台。它基于Unity,渲染效果不错,而且支持Apollo和Autoware的对接。我在2020年用它做过一个完整的感知算法验证项目,从数据采集到模型部署,一条龙搞定。

但可惜的是,LGSVL在2022年停止了维护。现在虽然还能用,但新功能不会有了,Bug也没人修了。如果你是新项目,我不建议再选LGSVL。除非你手头有现成的场景和资产,不想迁移。

避坑指南:我曾经因为LGSVL的激光雷达模型有Bug,导致点云数据出现大量离群点。排查了三天才发现是平台问题。所以用LGSVL时,一定要先做传感器标定验证。

2.5 AirSim:无人机感知的专属选择

AirSim是微软开源的,主要面向无人机和机器人。它的传感器模型很全,尤其是深度相机和IMU,精度很高。如果你做的是无人机避障或者SLAM,AirSim是首选。

不过,AirSim对城市道路场景的支持不如CARLA。它的地图编辑器比较简陋,很难生成复杂的交通场景。所以做自动驾驶感知的话,AirSim更适合作为辅助平台,用来验证特定传感器(比如深度相机)的算法。

2.6 选型依据与适用场景

说了这么多,到底怎么选?我总结了一个决策流程,你可以参考:

开始选型 需要传感器仿真吗? 不需要 需要 SUMO(交通流仿真) 主要应用场景? 城市道路 vs 无人机/机器人 城市道路 无人机/机器人 CARLA(首选) AirSim(首选)

这个图是我自己总结的,你照着走基本不会错。我再补充几个关键点:

  • 做感知算法验证:首选CARLA。传感器模型全,场景丰富,社区活跃。
  • 做交通流预测:用SUMO。它生成的轨迹数据可以直接喂给CARLA。
  • 做无人机感知:用AirSim。深度相机和IMU的精度很高。
  • 做全栈仿真:以前推荐LGSVL,现在建议用CARLA+SUMO组合。

我的建议:如果你刚开始做感知算法仿真,直接上CARLA。它学习曲线虽然陡一点,但功能最全,踩坑最少。我带的实习生,一般两周就能上手。

2.7 选型避坑指南

最后,分享几个我踩过的坑:

  1. 别只看渲染效果。有些平台画面很漂亮,但传感器模型不准。你想想看,算法在仿真里跑得飞起,一上实车就崩,那多尴尬。
  2. 注意平台维护状态。LGSVL就是前车之鉴。选平台时,看看GitHub的更新频率,社区活跃度。
  3. 考虑硬件兼容性。CARLA对GPU要求高,AirSim对内存要求高。我曾经在笔记本上跑CARLA,卡得怀疑人生。
  4. 别忘了接口扩展性。你的算法可能需要对接ROS、Apollo或者其他框架。选平台时,先确认它支持哪些接口。

嗯,以上就是我对仿真平台选型的全部经验。说白了,选平台就像选工具,顺手最重要。别盲目追求功能多,也别贪图便宜选个半成品。适合你的,才是最好的。


专注资料整理