4、启动CARLA:命令行启动、Python脚本启动、配置图形化界面、常见启动问题排查

好,到了真正让CARLA跑起来的时候了。

说实话,我第一次启动CARLA时也踩了不少坑。明明装好了,双击却没反应,或者报一堆看不懂的错。后来才发现,启动方式其实有好几种,每种适用场景不同。今天我把它们捋清楚,你照着做就行。

4.1 命令行启动——最基础的方式

我个人习惯用命令行启动CARLA。为啥?因为能看到实时日志,出问题能第一时间定位。

打开终端(Windows用PowerShell或CMD,Linux用bash),进入CARLA的根目录:

# Linux/Mac
cd ~/CARLA_0.9.15

# Windows
cd C:\CARLA_0.9.15

然后直接运行:

# Linux
./CarlaUE4.sh

# Windows
CarlaUE4.exe

嗯,就这么简单。你会看到一个3D窗口弹出来,里面是CARLA的默认地图Town01。

小技巧: 我第一次启动时窗口一闪就没了,后来发现是显卡驱动问题。如果你也遇到类似情况,先试试加上 -opengl 参数强制用OpenGL渲染。

常用的启动参数我整理了一下:

参数 作用 示例
-quality-level=Low 低画质模式,适合配置低的机器 ./CarlaUE4.sh -quality-level=Low
-RenderOffScreen 无窗口模式,只在后台渲染 ./CarlaUE4.sh -RenderOffScreen
-carla-rpc-port=2000 指定RPC端口,默认是2000 ./CarlaUE4.sh -carla-rpc-port=2000
-fps=10 限制帧率,节省资源 ./CarlaUE4.sh -fps=10
注意: 如果你在服务器上跑,没有显示器,一定要加 -RenderOffScreen。我曾经忘了加,结果程序一直报错说找不到显示设备。

4.2 Python脚本启动——自动化必备

命令行启动适合手动测试。但做仿真时,你肯定希望用脚本一键搞定。CARLA提供了Python API,可以让你在代码里控制启动流程。

先装好Python客户端库:

pip install carla

然后写个启动脚本:

import carla
import time

# 连接CARLA服务端
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)

# 加载地图
world = client.load_world('Town03')

# 设置天气
weather = carla.WeatherParameters(
    cloudiness=30.0,
    precipitation=0.0,
    sun_altitude_angle=70.0
)
world.set_weather(weather)

print(f"地图加载完成: {world.get_map().name}")
print("CARLA已启动,可以开始仿真了")

运行前,你得先确保CARLA服务端已经跑起来了。说白了,就是先执行 CarlaUE4.sh 或 CarlaUE4.exe,然后再跑这个Python脚本。

核心逻辑: CARLA是客户端-服务端架构。服务端负责渲染和物理计算,客户端通过RPC发指令。所以服务端必须先启动。

我一般在项目里写个 start_carla.py,里面封装好启动逻辑。比如自动检测服务端是否在运行,不在的话就自动启动:

import subprocess
import carla
import time

def start_carla():
    try:
        client = carla.Client('localhost', 2000)
        client.set_timeout(2.0)
        client.ping()
        print("CARLA服务端已在运行")
    except:
        print("启动CARLA服务端...")
        # Linux
        subprocess.Popen(['./CarlaUE4.sh', '-RenderOffScreen'])
        # Windows 用下面这行
        # subprocess.Popen(['CarlaUE4.exe', '-RenderOffScreen'])
        time.sleep(5)  # 等它启动

if __name__ == '__main__':
    start_carla()

4.3 配置图形化界面——调参数更方便

CARLA的图形界面其实挺强大的。你可以在设置里调整渲染质量、分辨率、是否显示FPS等。

启动后,按 Esc 键打开设置菜单。里面有几个关键选项:

  • Graphics Quality:从Low到Epic,我建议开发时用Low,跑正式仿真再用High
  • Resolution:分辨率调低点能省不少显存
  • VSync:垂直同步,开了能防止画面撕裂,但会增加延迟

如果你想在代码里控制这些设置,可以用Python:

settings = world.get_settings()
settings.synchronous_mode = True  # 同步模式
settings.fixed_delta_seconds = 0.05  # 固定步长20Hz
world.apply_settings(settings)
我的经验: 做强化学习训练时,一定要开同步模式。不然你发一个动作,下一帧还没更新,时序就乱了。我因为这个坑浪费了两天时间。

4.4 常见启动问题排查

启动CARLA时,你可能会遇到各种问题。我把最常见的几个列出来,你直接对照排查。

问题 原因 解决方法
窗口一闪就关闭 显卡驱动不兼容或缺少依赖 加 -opengl 参数启动;更新显卡驱动
Python连接超时 服务端没启动或端口被占用 检查服务端是否运行;换端口 -carla-rpc-port=2001
地图加载失败 地图文件损坏或路径不对 重新安装CARLA;用 client.get_available_maps() 查看可用地图
帧率极低 显卡性能不足或画质太高 降低画质 -quality-level=Low;限制帧率 -fps=20
报错 libcarla.so 找不到 环境变量没设置 把CARLA的 PythonAPI/carla/dist/ 路径加到 PYTHONPATH
避坑指南: 我曾经在Windows上遇到一个诡异问题——启动后黑屏但有声音。折腾了半天,发现是Windows的显卡调度策略问题。解决方法:在显卡控制面板里,把CarlaUE4.exe设为「高性能」模式。

还有一个常见问题:端口冲突。如果你同时跑多个CARLA实例,记得每个实例用不同的端口:

# 实例1
./CarlaUE4.sh -carla-rpc-port=2000

# 实例2
./CarlaUE4.sh -carla-rpc-port=2001

Python连接时也要对应:

client1 = carla.Client('localhost', 2000)
client2 = carla.Client('localhost', 2001)

知识体系总览

下面这张图帮你理清启动CARLA的完整流程:

CARLA启动流程总览 选择启动方式 命令行启动 | Python脚本启动 | 图形化界面启动 配置启动参数 -quality-level=Low | -RenderOffScreen | -carla-rpc-port=2000 -fps=10 | -opengl | 同步模式设置 启动执行 服务端启动 → 客户端连接 → 地图加载 → 环境就绪 常见问题排查 窗口闪退 | 连接超时 | 地图加载失败 | 帧率过低 显卡驱动 | 端口冲突 | 环境变量 | 同步模式 客户端-服务端 架构

启动CARLA其实就这几步。选好方式,配好参数,跑起来,有问题就查表。熟练之后,整个过程也就十几秒的事。

好了,去试试吧。让CARLA跑起来,你就能看到那个熟悉的小镇了。

可可精品资料库