1. 系统设置
1.1 下载CARLA排行榜包
-
下载打包的CARLA 排行榜版本。
-
将包解压到一个文件夹中,例如 CARLA。
在以下命令中,更改${CARLA_ROOT}
变量以对应于您的 CARLA 根文件夹。
- 为了使用 CARLA Python API,您需要在您喜欢的环境中安装一些依赖项。作为参考,对于conda,首先创建一个新环境:
conda create -n py37 python=3.7
conda activate py37
cd ${CARLA_ROOT} # Change ${CARLA_ROOT} for your CARLA root folderpip3 install -r PythonAPI/carla/requirements.txt
CARLA 排行榜版本基于 0.9.14 版本。它还具有即将发布的 0.9.14 版本的一些功能,例如新的大地图功能。因此,在使用API时请参考最新的文档。
1.2 获取排行榜和场景跑者
- 下载排行榜存储库Leaderboard-2.0 分支。
git clone -b leaderboard-2.0 --single-branch https://github.com/carla-simulator/leaderboard.git
在以下命令中,更改${LEADERBOARD_ROOT}
变量以对应于您的排行榜根文件夹。
- 安装所需的 Python 依赖项。
# Change ${LEADERBOARD_ROOT} for your Leaderboard root folder
pip3 install -r requirements.txt
- 下载 Scenario Runner 存储库排行榜-2.0 分支。
git clone -b leaderboard-2.0 --single-branch https://github.com/carla-simulator/scenario_runner.git
在以下命令中,将 更改为${SCENARIO_RUNNER_ROOT}
与您的 Scenario_Runner 根文件夹相对应。
- 使用相同的 Python 环境安装所需的 Python 依赖项。
cd ${SCENARIO_RUNNER_ROOT} # Change ${SCENARIO_RUNNER_ROOT} for your Scenario_Runner root folder
pip3 install -r requirements.txt
1.2.1 基于ROS的代理
首先,下载并安装适当的 ROS 或 ROS2 发行版。 Leaderboard 2.0 支持 ROS Melodic、ROS Noetic 和 ROS2 Foxy。然后,克隆并构建ROS或ROS2的 CARLA ROS 桥存储库。确保leaderboard-2.0
在克隆 CARLA ROS Bridge 存储库时指定分支:
git clone --recurse-submodules leaderboard-2.0 --single-branch https://github.com/carla-simulator/ros-bridge
1.3 定义环境变量
我们需要确保不同的模块可以找到彼此。
~/.bashrc
使用以下命令打开配置文件:
gedit ~/.bashrc
- 编辑您的
~/.bashrc
个人资料,添加以下定义。编辑后保存并关闭文件。
export CARLA_ROOT=PATH_TO_CARLA_ROOT //(carla 排行榜包解压路径)
export SCENARIO_RUNNER_ROOT=PATH_TO_SCENARIO_RUNNER //(SCENARIO 存放路径)
export LEADERBOARD_ROOT=PATH_TO_LEADERBOARD //(LEADERBOARD 存放路径)
export PYTHONPATH="${CARLA_ROOT}/PythonAPI/carla/":"${SCENARIO_RUNNER_ROOT}":"${LEADERBOARD_ROOT}":"${CARLA_ROOT}/PythonAPI/carla/dist/carla-0.9.13-py3.7-linux-x86_64.egg":${PYTHONPATH}
- 请记住
.bashrc
使用以下命令来使这些更改生效:
source ~/.bashrc
2. 创建带有排行榜的自治代理
2.1 排行榜的第一步
排行榜将负责运行您的自主代理,并评估其在多条路线的不同交通情况下的行为。为了更好地理解这个过程,让我们运行一个基本代理。
- 在一个终端中运行 CARLA 服务器。
cd ${CARLA_ROOT}
./CarlaUE4.sh -quality-level=Epic -world-port=2000 -resx=800 -resy=600
- 在另一个终端中,导航到
${LEADERBOARD_ROOT}
.虽然排行榜是使用 python 脚本运行的,但使用的参数数量可能会让使用终端直接执行此操作感到非常不舒服。因此,建议使用bash脚本:
touch test_run.sh
chmod +x test_run.sh
- 将以下代码粘贴到
test_run.sh
.这将设置一些用于参数化的环境变量,并运行run_evaluation.sh,它将使用这些变量作为leaderboard_evaluator.py
脚本的参数。
# Parameterization settings. These will be explained in 2.2. Now simply copy them to run the test.
export ROUTES=${LEADERBOARD_ROOT}/data/routes_devtest.xml
export REPETITIONS=1
export DEBUG_CHALLENGE=1
export TEAM_AGENT=${LEADERBOARD_ROOT}/leaderboard/autoagents/human_agent.py
export CHECKPOINT_ENDPOINT=${LEADERBOARD_ROOT}/results.json
export CHALLENGE_TRACK_CODENAME=SENSORS./scripts/run_evaluation.sh
- 运行脚本:
./test_run.sh
这将启动一个pygame窗口,让您可以选择手动控制代理。按照彩色航点指示的路线到达目的地。该脚本加载 Town 12 中的两条路线。
最终文件夹分布如下: