ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Win11下Carla自动驾驶仿真环境搭建与Python 3.7配置指南

Win11下Carla自动驾驶仿真环境搭建与Python 3.7配置指南 1. 为什么要在Win11上折腾Carla仿真如果你正在做自动驾驶相关的算法验证、感知模块调试或者单纯想找个能跑通的仿真平台练手Carla大概率是你绕不开的一个选项。它是一个开源的自动驾驶仿真器基于Unreal Engine构建能提供城市道路、天气变化、动态交通流、多种传感器数据摄像头、激光雷达、毫米波雷达、GPS、IMU等并且开放了Python API方便你写脚本控制车辆、采集数据、跑强化学习。但问题也恰恰出在这里Carla的安装和配置对新手来说并不友好。官方文档写得比较简略很多步骤默认你已经具备了相当的环境配置经验。而在Win11这个相对较新的系统上还会遇到一些特有的坑比如Python版本兼容性、Visual Studio运行库缺失、显卡驱动与Vulkan的配合、路径中包含空格导致编译失败等等。我前后在三台不同配置的Win11机器上部署过Carla从轻薄本到带独显的台式机都试过踩过的坑包括但不限于Python 3.8装完发现Carla的egg文件不认、pip安装依赖时卡在某个包编译失败、运行示例脚本时提示找不到carla模块、仿真器启动后黑屏或者直接闪退。这些问题在搜索引擎上往往找不到直接答案需要自己一点点排查。这篇文章的目标很明确让你在Win11上从零开始用Python 3.7把Carla跑起来并且能顺利运行官方示例。我会把每个步骤背后的原因讲清楚把可能遇到的坑提前标出来让你少走弯路。文章适合有一定Python基础、但对Carla完全陌生、想在本地快速搭建仿真环境的读者。如果你之前没接触过自动驾驶仿真也没关系我会从最基础的概念开始讲。2. 动手之前先把这些概念理清楚2.1 Carla的版本选择与Python版本的对应关系Carla的版本迭代比较快不同版本对Python的要求不一样。截至我写这篇文章时比较稳定的版本是0.9.13、0.9.14和0.9.15。其中0.9.13和0.9.14官方推荐Python 3.70.9.15开始支持Python 3.8。但实际测试下来Python 3.7的兼容性最好很多预编译的egg文件和依赖包都是针对3.7构建的。如果你用Python 3.9或更高版本大概率会在安装carla模块时遇到问题因为官方提供的.egg文件只覆盖到特定版本。所以我的建议是老老实实用Python 3.7不要图新。你可以单独装一个Python 3.7的环境不影响你系统里已有的其他Python版本。这里有个细节需要注意Carla的Python API是通过一个.egg文件提供的这个文件本质上是一个打包好的Python模块。你需要把它添加到Python的搜索路径中或者直接安装到你的环境里。官方推荐的方式是设置PYTHONPATH环境变量但更稳妥的做法是用easy-install或者直接把egg文件放到site-packages目录下。2.2 显卡与VulkanCarla运行的硬性门槛Carla基于Unreal Engine 4而UE4在Windows上渲染依赖DirectX 11或Vulkan。Carla官方推荐使用Vulkan因为它在多线程渲染和性能上表现更好。这就意味着你的显卡必须支持Vulkan 1.1以上。NVIDIA显卡从GTX 600系列开始支持VulkanAMD从GCN架构开始支持Intel核显从HD 500系列开始支持。但支持不等于能用你还需要安装最新的显卡驱动。我遇到过一台机器显卡是GTX 1050 Ti驱动是Windows自动安装的旧版本结果Carla启动时报Vulkan初始化失败。更新到最新驱动后问题解决。另外如果你的机器是双显卡比如笔记本的Intel核显NVIDIA独显需要确保Carla使用的是独显。可以在NVIDIA控制面板里把Carla的可执行文件设置为“高性能NVIDIA处理器”。否则可能会出现仿真器能启动但画面卡顿、传感器数据异常的情况。2.3 磁盘空间与路径命名容易被忽视的细节Carla的完整包解压后大约15-20GB加上Python环境和后续可能安装的依赖建议预留至少30GB的SSD空间。机械硬盘也能跑但加载地图和资源时会明显慢很多。路径命名是个大坑。Carla的很多脚本和配置文件里硬编码了路径分隔符和空格处理逻辑如果你的安装路径中包含空格或中文字符极有可能导致编译失败或运行时找不到文件。比如C:\Program Files\Carla这种路径空格会让某些命令行工具解析出错。我的建议是直接放在根目录下比如C:\Carla或者D:\Carla路径全英文、无空格。3. Win11环境准备从Python到运行库的完整清单3.1 Python 3.7的安装与多版本共存Win11自带的Microsoft Store里可以装Python但我不推荐用Store版本因为它的路径管理和权限控制比较特殊容易和Carla的脚本冲突。直接去Python官网下载3.7.9的安装包3.7系列的最后一个版本选择“Windows x86-64 executable installer”。安装时务必勾选“Add Python 3.7 to PATH”这样你可以在命令行里直接调用python3.7。如果你系统里已经有其他Python版本比如3.10或3.11它们会共存但你需要用python3.7来明确指定版本。可以用py -3.7来启动这是Windows的Python启动器提供的功能。安装完成后打开命令提示符输入python3.7 --version确认输出是Python 3.7.9。然后升级pippython3.7 -m pip install --upgrade pip。这一步很重要旧版pip在安装某些依赖时会有问题。3.2 Visual Studio运行库与Build ToolsCarla的Python API依赖一些C编译的扩展模块虽然官方提供了预编译的egg文件但某些依赖包比如numpy、pygame在安装时可能需要编译。为了避免“Microsoft Visual C 14.0 is required”这类错误建议提前安装Visual Studio Build Tools。不需要装完整的Visual Studio IDE只需要在Build Tools安装器里勾选“C 生成工具”和“Windows 10 SDK”Win11也兼容。安装完成后重启一次系统确保环境变量生效。另外Win11默认可能没有安装.NET Framework 3.5某些旧版工具会依赖它。可以在“启用或关闭Windows功能”里勾选.NET Framework 3.5让系统自动下载安装。3.3 显卡驱动与Vulkan运行时去NVIDIA或AMD官网下载最新驱动不要用Windows自动更新的版本。安装时选择“自定义安装”勾选“执行清洁安装”避免旧驱动残留。安装完成后下载一个Vulkan SDK或者用vulkaninfo工具检查Vulkan支持情况。简单的方法是运行Carla自带的CarlaUE4.exe如果能正常启动并看到城市画面说明Vulkan没问题。如果报错可以尝试在Carla的启动参数里加上-opengl强制使用OpenGL但性能会差一些。3.4 环境变量配置PYTHONPATH与PATH假设你把Carla解压到了C:\CarlaPython API的egg文件在C:\Carla\PythonAPI\carla\dist\carla-0.9.13-py3.7-win-amd64.egg。你需要把这个egg文件的路径添加到PYTHONPATH环境变量中。具体操作右键“此电脑”-属性-高级系统设置-环境变量在“用户变量”或“系统变量”里新建一个PYTHONPATH值为egg文件的完整路径。如果已经有PYTHONPATH用分号分隔追加。同时把Python 3.7的安装目录和Scripts目录添加到PATH中确保python3.7和pip3.7可以在任意位置调用。配置完成后打开一个新的命令提示符必须新开否则环境变量不生效输入python3.7 -c import carla如果没有报错说明配置成功。4. Carla服务端与Python客户端的联调实操4.1 下载与解压Carla发布包去Carla的GitHub Releases页面下载对应版本的Windows包。文件名类似CARLA_0.9.13.zip大小约5GB。下载完成后解压到C:\Carla。解压后目录结构如下C:\Carla\ ├── CarlaUE4.exe ├── Engine\ ├── PythonAPI\ │ ├── carla\ │ │ ├── dist\ │ │ │ └── carla-0.9.13-py3.7-win-amd64.egg │ │ └── ... │ └── examples\ └── ...先双击CarlaUE4.exe看看能不能正常启动。第一次启动会加载资源可能需要几分钟屏幕会显示一个城市全景。如果闪退检查显卡驱动和Vulkan支持。4.2 安装Python客户端依赖Carla的Python API依赖一些第三方库比如numpy、pygame、matplotlib等。官方在PythonAPI\carla\requirements.txt里列出了所有依赖。用以下命令安装python3.7 -m pip install -r C:\Carla\PythonAPI\carla\requirements.txt如果下载速度慢可以加上国内镜像源python3.7 -m pip install -r C:\Carla\PythonAPI\carla\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple安装过程中如果遇到某个包编译失败比如pygame可以尝试先安装预编译的wheel文件。去https://www.lfd.uci.edu/~gohlke/pythonlibs/搜索对应的包下载cp37-win_amd64版本的whl文件然后用pip install xxx.whl本地安装。4.3 运行第一个示例脚本Carla官方提供了很多示例脚本位于PythonAPI\examples\目录下。最简单的入门脚本是generate_traffic.py它会生成一些随机行驶的车辆和行人。但在此之前先跑一个更基础的tutorial.py它演示了如何连接服务器、生成车辆、添加传感器。启动Carla服务端CarlaUE4.exe然后在另一个命令行窗口运行python3.7 C:\Carla\PythonAPI\examples\tutorial.py如果一切正常你应该能看到Carla窗口里出现一辆车并且命令行里打印出传感器数据。如果报错ModuleNotFoundError: No module named carla说明PYTHONPATH没配置好或者egg文件路径不对。4.4 常见报错与排查思路报错1ImportError: DLL load failed这通常是因为缺少Visual C运行库。安装最新的VC Redistributablex64版本重启后再试。报错2RuntimeError: Unable to find the serverCarla服务端没启动或者端口被占用。默认端口是2000可以在启动Carla时用-carla-port2001指定其他端口然后在Python脚本里用carla.Client(localhost, 2001)连接。报错3AssertionError: Vulkan is not supported显卡驱动太旧或者显卡本身不支持Vulkan。更新驱动或者换一台支持Vulkan的机器。报错4ModuleNotFoundError: No module named carlaPYTHONPATH没设置对或者egg文件版本和Python版本不匹配。确认egg文件名里的py3.7和你的Python版本一致。5. 让仿真跑得更稳性能调优与实用技巧5.1 降低渲染质量提升帧率Carla默认的渲染质量比较高对显卡压力大。如果帧率太低可以在启动Carla时加上-quality-levelLow参数CarlaUE4.exe -quality-levelLow或者在Python脚本里设置settings world.get_settings() settings.quality_level carla.QualityLevel.Low world.apply_settings(settings)Low模式下阴影、反射、抗锯齿都会关闭帧率能提升不少适合跑算法验证而不是视觉展示。5.2 使用异步模式与固定时间步长默认情况下Carla以可变时间步长运行仿真速度和真实时间不完全对应。如果你要做强化学习或者需要可复现的实验建议开启同步模式并设置固定时间步长settings world.get_settings() settings.synchronous_mode True settings.fixed_delta_seconds 0.05 # 20 FPS world.apply_settings(settings)同步模式下仿真会等待所有客户端完成当前帧的计算后再推进适合多传感器数据采集。但要注意同步模式下如果某个客户端卡住整个仿真都会暂停。5.3 传感器数据的采集与保存Carla的传感器数据可以通过回调函数实时获取。以摄像头为例def camera_callback(image): image.save_to_disk(output/%06d.png % image.frame) camera_bp blueprint_library.find(sensor.camera.rgb) camera world.spawn_actor(camera_bp, transform, attach_tovehicle) camera.listen(camera_callback)保存大量图片时建议用SSD并且定期清理旧数据。激光雷达的数据量更大可以用numpy保存为.npy文件比PNG压缩效率高。5.4 多开Carla实例的注意事项如果你需要同时跑多个仿真比如对比不同算法可以启动多个Carla实例但每个实例要用不同的端口和GPU。用-carla-port2000和-carla-port2001区分并且在Python脚本里指定对应的端口。但要注意多个实例同时渲染会抢占GPU资源建议在显存充足的机器上操作。6. 那些官方文档没写的踩坑记录6.1 Win11自动更新导致驱动回滚Win11的自动更新有时候会偷偷把显卡驱动换成旧版本导致Carla突然跑不起来。我遇到过两次一次是Vulkan初始化失败一次是画面花屏。解决办法是在“设备安装设置”里关闭自动下载制造商应用或者用组策略禁止驱动更新。更彻底的方法是暂停系统更新但这不是长久之计建议定期检查驱动版本。6.2 路径中的空格引发的血案前面提过路径不要有空格但还有一个隐蔽的坑Windows的用户目录默认是C:\Users\你的名字如果名字里有空格或中文某些Python包在安装时会因为路径解析问题失败。解决办法是创建一个新的本地用户名字用纯英文或者把Python环境和Carla都放在非用户目录下。6.3 防火墙拦截本地连接Carla服务端和Python客户端通过本地网络通信Windows防火墙可能会拦截。第一次运行时系统会弹出防火墙提示务必勾选“专用网络”和“公用网络”都允许。如果之前误点了“取消”可以去防火墙设置里手动添加CarlaUE4.exe和python3.7.exe的入站规则。6.4 Python 3.7的pip源问题Python 3.7已经停止维护默认的pip源可能不再提供某些旧版本包的下载。如果遇到Could not find a version that satisfies the requirement可以尝试指定版本号或者换用其他镜像源。比如pip install numpy1.21.6这个版本在3.7上比较稳定。6.5 仿真器启动后黑屏但进程还在这种情况通常是显卡驱动和Vulkan的兼容性问题。可以尝试在Carla启动参数里加上-windowed -ResX800 -ResY600用窗口模式和小分辨率启动。如果还是黑屏试试-opengl强制OpenGL模式。另外某些远程桌面软件会干扰Vulkan渲染如果你在远程连接下操作建议直接在本地显示器上运行。7. 从跑通到用好下一步可以做什么环境跑通只是第一步。接下来你可以基于Carla做很多事情用Python脚本控制车辆沿预定路线行驶采集摄像头和激光雷达数据做感知算法训练搭建强化学习环境让AI自己学开车或者用ScenarioRunner跑一些标准测试场景。我个人的经验是先把官方示例都跑一遍理解每个脚本的作用然后基于tutorial.py改出自己的控制逻辑。Carla的Python API文档比较全但有些细节需要看源码才能明白。遇到问题多去GitHub的Issues里搜大部分坑别人已经踩过了。最后分享一个小技巧把常用的启动命令写成.bat文件比如echo off set PYTHONPATHC:\Carla\PythonAPI\carla\dist\carla-0.9.13-py3.7-win-amd64.egg start C:\Carla\CarlaUE4.exe -quality-levelLow -carla-port2000 timeout /t 10 python3.7 C:\Carla\PythonAPI\examples\tutorial.py这样每次调试不用重复敲命令效率会高很多。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进