CARLA 是一款基于虚幻引擎的自动驾驶模拟器。本页面介绍了如何安装 CARLA 并将其与 RAMN 配合使用。尽管我们仅在 Windows 系统上测试了相关脚本,但稍作调整后也应在 Linux 系统上可用。请注意,该模拟器要求您配备性能足够强大的 GPU。

CARLA 是一个独立于 RAMN 的项目,因此有关 CARLA 的问题请参考其官方文档。
请按照以下步骤在 Windows 上安装 CARLA:
从其 Github 仓库下载并解压 CARLA 的最新版本。我们测试的最新版本是 Release 0.9.15。
通过启动 CarlaUE4.exe(或 CarlaUnreal.exe)来检查模拟器是否正常运行,该文件通常位于 WindowsNoEditor 文件夹中。这可能需要您通过 Microsoft 的 SmartScreen 对应用程序进行批准。如果打开了 3D 视图,您可以关闭模拟器并进入下一步。如果出现错误消息,请安装最新版本的 Windows DirectX。
从 Python 软件基金会的网页安装最新版本的 Python 3.8(较新的 CARLA 版本才可使用 3.12 等后续 Python 版本)。 请勾选“将 python.exe 添加到 PATH”选项 。我们测试的最新版本是 3.8.10。如果您不确定应该下载哪个文件,可以尝试选择 “Windows 安装程序(64 位)”。
通过打开命令提示符(按 Windows+R 并输入“cmd”)并执行以下命令来安装 CARLA 的 pythonAPI:
如果您也想运行自动驾驶示例,请执行以下命令:
pip3 install shapely networkx
尝试 CARLA 的 manual_control.py 和 automatic_control.py 示例。首先,执行 CarlaUE4.exe(或 CarlaUnreal.exe),并保持窗口打开;这就是您的 CARLA 服务器。然后,在 PythonAPI/examples 中打开一个命令提示符(在 Windows 资源管理器中打开该文件夹,并在地址栏输入“cmd”),并尝试第一个示例:
您应该能够使用键盘上的 WASD 键手动控制车辆。如果遇到问题,请参阅下面的说明。
您还可以通过以下方式验证自动驾驶算法是否正常工作:
您应该能够看到自动驾驶算法正在运行。
如果您在使用最新版 CARLA 时遇到问题,请尝试使用以下选项运行:
如果这样仍无法解决问题,请尝试下载较早版本的 CARLA。RAMN 脚本应与 0.9.12 版本兼容。如果选择这样做,您还需要安装对应版本的 CARLA Python API,例如通过以下命令:
近期发布的 CARLA 版本可能无法通过 pip 获取其 Python API。如果您使用的是最新版 CARLA,应直接从 PythonAPI/carla/dist 文件夹安装其 Python API,例如通过以下命令:
至此,您应该已经拥有一个可正常运行的环境来体验 CARLA。如果在此步骤之前遇到任何问题,则表明您的 CARLA 安装存在问题,而非 RAMN 的问题。请参考 CARLA 的快速入门指南以获取支持。
如果您需要,可以按照此处说明下载额外的资源(地图等)。此外,您还可以按照此页面的说明修改 CARLA 的默认设置(天气等)。
如果您尚未完成,首先需要安装 RAMN 的脚本:
在您的计算机上下载 RAMN 代码库 (选择“代码”>“下载 ZIP”)。
在 RAMN/scripts 文件夹中打开命令提示符(您可以通过在 Windows 资源管理器中打开该文件夹,并在地址栏中输入“cmd”来实现),然后执行:
打开 RAMN/script/settings/CARLA_PATH.txt 并将其内容替换为计算机上 CARLAUE4.exe(或 CarlaUnreal.exe) 所在文件夹的路径。
(可选)使用您首选的设置(分辨率等)修改 0_CARLA_SERVER_start.bat。有关 CARLA 选项的更多信息,请参阅 CARLA 的文档 。通过 -quality-level=Epic(最佳画质)或 -quality-level=Low(最佳性能)指定图形质量。通过 -windowed -ResX=N -ResY=N 指定服务器的分辨率。
(可选)修改 CarlaSettings.ini 以编辑默认设置(天气等)
(可选)修改 1_CARLA_SERVER_config.bat 以提供快捷方式,根据需要执行 CARLA 的 config.py(例如,用于加载特定地图 )。
首先,启动一个 CARLA 服务器:
0_CARLA_SERVER_start.bat。1_CARLA_SERVER_config.bat 以更新服务器的配置。每个会话只需启动一台服务器即可。只要窗口保持活动状态,您便可以执行以下脚本。例如,您可以执行基本的 RAMN 示例:
2_CARLA_RAMN_manual_serial.bat 以将 RAMN 连接到 CARLA,并使用 RAMN 的控制装置手动驾驶车辆。3_CARLA_RAMN_auto_serial.bat 以将 RAMN 连接到 CARLA 的自动驾驶算法。如果出现错误,请确认您的 RAMN 串口未被其他应用程序占用。
当您使用自动驾驶算法时,控制指令将由 RAMN 决定。如果物理控制装置处于中立位置(例如,刹车和油门电位器位于底部位置),则将应用来自 CARLA 自动驾驶算法的指令。否则,将应用物理控制装置的指令。
在使用自动驾驶算法时,如果方向盘未居中,“检查发动机”指示灯将亮起,提示您当前 RAMN 正在忽略 CARLA 对方向盘的指令,并改用模拟控制。如果在您将方向盘回正后指示灯仍未熄灭,可能是因为需要使用不同的固件重新刷新板卡(参见固件刷写)。
您也可以通过 CAN 适配器(内置或外置)而非 USB 串口连接 CARLA 与 RAMN。具体操作如下:
4_CARLA_RAMN_manual_CAN.bat 以将 RAMN 连接到 CARLA,并手动驾驶车辆。5_CARLA_RAMN_auto_CAN.bat 以将 RAMN 与 CARLA 连接,并加载自动驾驶算法。CAN 脚本的功能较少,性能通常也比串行脚本差,因此除非有特定的使用场景,否则应避免使用它们。
在使用 CARLA 脚本时,RAMN 的串口将无法供其他应用程序使用。如果您希望与 CAN 总线进行交互,建议您连接一个外部 CAN 适配器。在 Linux 系统上,您可以使用 vcand 脚本来复用串口,并在 CARLA 脚本运行时仍能监控 CAN 总线。
RAMN 的 CAN 消息被分为“命令”和“控制”两类:
如果自动驾驶算法处于关闭状态,许多命令消息将不会出现,因此你会观察到较少的 CAN 消息。
默认情况下,ECU 会监听命令 CAN 消息,并立即将其作为控制 CAN 消息执行,除非相关控制未处于中立位置(即刹车和油门为 0%,方向盘位于中间位置)。例如,如果一条命令 CAN 消息指示“刹车 50%”,而物理电位器显示为 0%,那么控制 CAN 消息将显示“刹车 50%”。然而,如果一条命令 CAN 消息指示“刹车 0%”,但物理电位器显示“刹车 100%”,则控制 CAN 消息将显示“刹车 100%”。
ECU 还可以被重新编程以实现控制回路,例如比例-积分-微分控制器(PID)。RAMN 的 GitHub 仓库中提供了一个 PID 控制的示例 。