Carla 自动驾驶挑战赛 搭建环境

1. 系统设置

1.1 下载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 folder

pip3 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。然后,克隆并构建ROSROS2的 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 中的两条路线。

最终文件夹分布如下:

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
强化学习是一种机器学习方法,它通过试错来学习如何在特定环境中采取行动以最大化奖励。CARLA是一个开源的自动驾驶仿真平台,可以用于测试和评估自动驾驶算法。下面是使用强化学习在CARLA中实现自动驾驶的一些步骤: 1. 安装CARLA和Python API ```shell # 安装CARLA wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/CARLA_0.9.11.tar.gz tar -xvf CARLA_0.9.11.tar.gz # 安装Python API pip install pygame numpy networkx scipy matplotlib git clone https://github.com/carla-simulator/carla.git cd carla/PythonAPI/carla/dist easy_install carla-0.9.11-py3.7-linux-x86_64.egg ``` 2. 创建CARLA环境 ```python import carla # 连接到CARLA服务器 client = carla.Client('localhost', 2000) client.set_timeout(10.0) # 获取CARLA世界 world = client.get_world() # 设置天气和时间 weather = carla.WeatherParameters(cloudiness=10.0, precipitation=10.0, sun_altitude_angle=70.0) world.set_weather(weather) world.set_sun_position(carla.Location(x=0.0, y=0.0, z=0.0)) # 创建车辆和摄像头 blueprint_library = world.get_blueprint_library() vehicle_bp = blueprint_library.filter('vehicle.tesla.model3')[0] spawn_point = carla.Transform(carla.Location(x=50.0, y=0.0, z=2.0), carla.Rotation(yaw=180.0)) vehicle = world.spawn_actor(vehicle_bp, spawn_point) camera_bp = blueprint_library.find('sensor.camera.rgb') camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4)) camera = world.spawn_actor(camera_bp, camera_transform, attach_to=vehicle) ``` 3. 实现强化学习算法 这里我们以Deep Q-Network (DQN)为例,使用Keras实现神经网络。 ```python import keras from keras.models import Sequential from keras.layers import Dense, Flatten from keras.optimizers import Adam class DQNAgent: def __init__(self, state_size, action_size): self.state_size = state_size self.action_size = action_size self.memory = deque(maxlen=2000) self.gamma = 0.95 self.epsilon = 1.0 self.epsilon_min = 0.01 self.epsilon_decay = 0.995 self.learning_rate = 0.001 self.model = self._build_model() def _build_model(self): model = Sequential() model.add(Flatten(input_shape=(1,) + self.state_size)) model.add(Dense(24, activation='relu')) model.add(Dense(24, activation='relu')) model.add(Dense(self.action_size, activation='linear')) model.compile(loss='mse', optimizer=Adam(lr=self.learning_rate)) return model def remember(self, state, action, reward, next_state, done): self.memory.append((state, action, reward, next_state, done)) def act(self, state): if np.random.rand() <= self.epsilon: return random.randrange(self.action_size) act_values = self.model.predict(state) return np.argmax(act_values[0]) def replay(self, batch_size): minibatch = random.sample(self.memory, batch_size) for state, action, reward, next_state, done in minibatch: target = reward if not done: target = (reward + self.gamma * np.amax(self.model.predict(next_state)[0])) target_f = self.model.predict(state) target_f[0][action] = target self.model.fit(state, target_f, epochs=1, verbose=0) if self.epsilon > self.epsilon_min: self.epsilon *= self.epsilon_decay # 初始化DQNAgent state_size = (800, 600, 3) action_size = 3 agent = DQNAgent(state_size, action_size) # 训练DQNAgent for e in range(EPISODES): state = env.reset() state = np.reshape(state, [1, 1] + list(state_size)) for time in range(500): action = agent.act(state) next_state, reward, done, _ = env.step(action) next_state = np.reshape(next_state, [1, 1] + list(state_size)) agent.remember(state, action, reward, next_state, done) state = next_state if done: break if len(agent.memory) > batch_size: agent.replay(batch_size) ``` 4. 运行CARLA仿真 ```shell ./CarlaUE4.sh -windowed -carla-server -benchmark -fps=20 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫回首�

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值