1. 仿真平台选型与搭建
做自动驾驶感知算法,最头疼的是什么?
我个人觉得,不是模型调参,也不是数据标注。而是——你辛辛苦苦写了个算法,结果上路一测,发现连个鬼影都识别不出来。真车上路测试,成本高、风险大,还受法规限制。
所以,仿真平台就成了咱们的「救命稻草」。今天这一章,我就带你把这根稻草变成一根「钢筋」。
1.1 主流仿真平台对比
市面上仿真平台不少,但真正能打的,其实就这几个。我挨个说说我的使用感受。
CARLA
CARLA 是目前最主流的自动驾驶仿真器。它基于虚幻引擎,画面逼真,传感器模型丰富。我在做多传感器融合项目时,就用的它。
优点很明显:开源、社区活跃、支持自定义地图和传感器。缺点嘛,就是资源消耗大,普通笔记本跑起来有点吃力。
SUMO
SUMO 是交通流仿真工具。它不擅长渲染画面,但擅长模拟车流、红绿灯、行人行为。说白了,它是个「交通规划师」。
我一般把 CARLA 和 SUMO 联合使用。CARLA 负责视觉,SUMO 负责交通逻辑。嗯,这个组合挺香的。
LGSVL
LGSVL 是 LG 推出的仿真器,后来被收购了。它和 Apollo 集成得很好。如果你用百度 Apollo 平台,LGSVL 是个不错的选择。
不过,我个人觉得它的社区活跃度不如 CARLA,文档也有点乱。但它的传感器模拟精度确实不错。
AirSim
AirSim 是微软出的,基于虚幻引擎。它最初是为无人机设计的,后来扩展到自动驾驶。画面质量很高,但更新频率变慢了。
我建议,如果你做无人机感知,可以选 AirSim。做自动驾驶,还是优先考虑 CARLA。
| 平台 | 主要特点 | 适用场景 | 我的评价 |
|---|---|---|---|
| CARLA | 开源、虚幻引擎、传感器丰富 | 感知算法验证、多传感器融合 | 首选,社区活跃 |
| SUMO | 交通流仿真、轻量级 | 交通规划、车流模拟 | 配合 CARLA 使用更佳 |
| LGSVL | 与 Apollo 集成、传感器精度高 | Apollo 平台开发 | 文档需完善 |
| AirSim | 画面逼真、无人机支持好 | 无人机感知、视觉算法 | 更新较慢 |
1.2 硬件在环(HIL)与软件在环(SIL)概念
这两个概念,说白了就是「仿真到什么程度」的问题。
软件在环(SIL)
SIL 就是纯软件仿真。你的算法跑在电脑上,传感器数据也是模拟的。没有真实硬件参与。
我刚开始做感知时,全用 SIL。好处是快,改个参数就能跑。坏处是,你永远不知道算法在真车上会出什么幺蛾子。
硬件在环(HIL)
HIL 就不一样了。它把真实的硬件(比如摄像头、雷达、控制器)接入仿真环境。传感器数据是模拟的,但算法跑在真实硬件上。
我曾经在 HIL 测试中发现,某个摄像头在低光照条件下,帧率会掉到 10fps。这在 SIL 里根本发现不了。你想想看,如果直接上车测试,后果不堪设想。
什么时候用 SIL,什么时候用 HIL?
- 算法开发阶段: 用 SIL。快速迭代,别被硬件拖慢节奏。
- 硬件选型阶段: 用 HIL。验证硬件性能,避免选型失误。
- 集成测试阶段: 先 SIL 再 HIL。确保逻辑没问题,再上硬件。
1.3 基于 Docker 的仿真环境一键部署
搭建仿真环境,最烦的是什么?
依赖冲突!
你装个 CARLA,要装虚幻引擎、Python 库、ROS 版本……搞不好还要和系统里的 CUDA 打架。我早期有个项目,光搭环境就花了三天。三天啊,兄弟们。
后来我学乖了,用 Docker。一次配置,到处运行。
Docker 镜像构建
我写了个 Dockerfile,把 CARLA、ROS、Python 依赖全打包进去。你只需要拉取镜像,一键启动。
# Dockerfile 示例
FROM nvidia/cuda:11.4.0-devel-ubuntu20.04
# 安装 CARLA
RUN apt-get update && apt-get install -y \
wget \
&& wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/CARLA_0.9.13.tar.gz \
&& tar -xzf CARLA_0.9.13.tar.gz -C /opt/
# 安装 ROS Noetic
RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' \
&& apt-get install -y ros-noetic-desktop-full
# 安装 Python 依赖
COPY requirements.txt /tmp/
RUN pip install -r /tmp/requirements.txt
CMD ["/bin/bash"]
一键启动脚本
我写了个 shell 脚本,拉取镜像、启动容器、挂载代码目录,一条命令搞定。
#!/bin/bash
# start_sim.sh
docker run -it --rm \
--gpus all \
-v $(pwd)/code:/workspace/code \
-p 2000-2002:2000-2002 \
carla-sim:0.9.13 \
/bin/bash
你只需要执行 ./start_sim.sh,环境就起来了。是不是很爽?
避坑指南
- GPU 直通: 别忘了加
--gpus all,否则 CARLA 跑不起来。 - 端口映射: CARLA 默认用 2000 端口。如果你同时跑多个实例,记得改端口。
- 数据持久化: 用
-v挂载目录,别把数据丢在容器里。容器一删,数据就没了。
好了,这一章的内容就到这里。仿真平台选型、SIL/HIL 概念、Docker 部署,这三块是后续所有章节的基础。你把这章吃透了,后面的路就好走了。
下一章,我们聊聊「传感器模型与数据生成」。到时候我会分享一些生成高质量标注数据的技巧,敬请期待。