第一章:课程导论与基础环境搭建

大家好,欢迎来到这门实战课。我是你们的老朋友,一个在自动驾驶仿真领域摸爬滚打了好几年的工程师。

今天咱们聊点实在的——CARLA与SUMO联合仿真。说实话,我第一次接触这个组合的时候,心里也犯嘀咕:一个搞高保真视觉的,一个搞交通流的,这俩能玩到一块去?后来真做起来才发现,这简直是天作之合。

1.1 为什么需要联合仿真?

先说说背景。你想想看,自动驾驶测试最头疼的是什么?是场景不够丰富,还是成本太高?其实都有。

纯CARLA仿真,场景逼真,但交通流逻辑简单。你让100辆车在路口乱窜,它可能就卡死了。纯SUMO仿真呢?交通流模型一流,但画面嘛……嗯,你懂的,跟看电路图似的。

联合仿真就是把两者的优势结合起来:CARLA负责“看”,SUMO负责“想”。CARLA渲染出逼真的城市环境,SUMO在后台控制每辆车的行驶逻辑。这样你测试的算法,既能看到红绿灯,又能遇到真实的拥堵和加塞。

核心价值:用更低的成本,跑出更接近真实世界的测试场景。我在项目里遇到过,单靠CARLA自带的交通管理器,死活复现不出早晚高峰的拥堵模式。后来接上SUMO,十分钟就搞定了。

1.2 应用场景一览

联合仿真能做什么?我简单列几个,你感受一下:

  • 交通流压力测试:在密集车流中测试你的规划算法会不会“死机”。
  • V2X场景模拟:模拟多车协同,比如编队行驶、交叉口协作。
  • 边缘场景复现:把真实路测中遇到的“鬼探头”、“加塞”搬到仿真里反复测试。
  • 算法闭环验证:从感知到决策,再到控制,全链路跑通。

说白了,这套组合拳打好了,你的算法在路测前就能暴露80%的问题。我个人习惯是,新算法先跑1000小时联合仿真,再上实车。效果嘛,谁用谁知道。

1.3 环境搭建:Ubuntu系统配置

好,理论说完了,咱们动手。环境搭建是第一步,也是坑最多的一步。我建议你直接用Ubuntu 20.04,别问为什么,问就是兼容性最好。18.04也行,但有些依赖要手动折腾。

避坑指南:我曾经在Ubuntu 22.04上折腾了三天,结果CARLA的某个旧版本死活编译不过。后来老老实实换回20.04,半小时搞定。所以,别跟版本过不去。

系统安装我就不啰嗦了,重点说几个关键配置:

  1. 显卡驱动:NVIDIA用户建议装470或525版本。用nvidia-smi检查一下。
  2. CUDA与cuDNN:CARLA 0.9.13以上版本对CUDA要求不高,但建议装11.6以上。
  3. 系统依赖:运行以下命令安装基础包:
sudo apt-get update
sudo apt-get install -y build-essential cmake git python3-dev
sudo apt-get install -y libpng-dev libjpeg-dev libtiff-dev
sudo apt-get install -y libboost-all-dev libeigen3-dev

嗯,这里要注意,libboost-all-dev这个包比较大,网速慢的话可以只装需要的子模块。但我建议一步到位,省得后面缺依赖报错。

1.4 Python环境与依赖安装

Python环境我推荐用Anaconda管理。为什么?因为隔离性好,项目之间不打架。我见过太多人因为pip乱装包,最后系统Python环境崩了。

创建虚拟环境:

conda create -n carla_sumo python=3.8
conda activate carla_sumo

然后安装核心依赖:

pip install numpy scipy matplotlib
pip install opencv-python pillow
pip install shapely  # 这个后面做坐标转换会用到
pip install networkx  # SUMO路网处理

个人经验:shapely这个库,我第一次用的时候没注意版本,结果坐标转换一直报错。后来发现是1.8.0版本有个bug,降到1.7.1就正常了。所以,遇到奇怪的问题,先看看版本对不对。

接下来是CARLA和SUMO的Python接口:

  • CARLA客户端:在CARLA安装目录的PythonAPI/carla/dist/下找到carla-0.9.13-py3.8-linux-x86_64.egg,用pip安装:pip install carla-0.9.13-py3.8-linux-x86_64.egg
  • SUMO接口:安装traci库:pip install traci。注意,SUMO本身需要单独安装,Python接口只是通信桥梁。

最后验证一下环境:

python -c "import carla; print('CARLA version:', carla.__version__)"
python -c "import traci; print('TraCI imported successfully')"

如果没报错,恭喜你,基础环境搭好了。如果报错,别慌,八成是路径问题。检查一下PYTHONPATH环境变量有没有指向CARLA的PythonAPI目录。

1.5 本章小结

这一章我们聊了联合仿真的价值、应用场景,也亲手搭好了环境。说实话,环境搭建是最枯燥的部分,但也是最重要的。我见过太多人卡在这一步就放弃了,挺可惜的。

下一章,我们会真正启动CARLA和SUMO,让它们“对话”起来。到时候你会发现,前面所有的折腾都是值得的。

嗯,今天就到这儿。有问题随时交流,咱们下章见。