17.3 环境准备
在开始编写程序代码之前需要完成环境准备的工作,这是项目开发的重要一步,它确保了你的代码能够在特定的环境中顺利运行。
1. 安装依赖项
确保在系统中安装了项目所需的所有依赖项,包括Python、PyTorch、Carla等。本项目需要的具体以来项目可以查看文件requirements.txt,然后使用pip或conda安装所需的软件包。
2. 准备Carla模拟环境
CARLA(Car Learning to Act)是一种用于自动驾驶系统开发和仿真测试的强大开源仿真平台,以MIT许可证发布,允许开发人员免费使用、修改和分发它。Carla模拟环境的主要特点如下:
- 逼真的仿真环境:CARLA提供了一个高度逼真的城市环境,其中包括多种道路、车辆、行人、交通标志和灯光条件。这使得开发人员可以在仿真环境中测试自动驾驶算法,而不必在现实世界中进行昂贵和潜在危险的实验。
- 传感器模拟:CARLA支持多种传感器,包括激光雷达、摄像头、毫米波雷达和GPS,可以在仿真中生成传感器数据。这对于自动驾驶系统的感知和决策组件的开发至关重要。
- 高度可定制性:CARLA允许用户配置仿真环境,包括车辆、道路、交通流和气象条件。这种可定制性使研究人员能够模拟各种交通和天气情况,以测试自动驾驶系统的鲁棒性。
- 强化学习和机器学习:CARLA支持强化学习和机器学习实验,开发人员可以使用CARLA中的数据来训练和测试自动驾驶算法,这对于自动驾驶系统的智能决策部分非常有帮助。
- 多平台支持:CARLA可以在Linux、Windows和macOS等多个操作系统上运行,提供了跨平台的灵活性。
17.4 配置文件
编写文件configuration/config.py,用于存储程序的各种参数和设置信息,包括自动驾驶的模拟环境的各种参数。整个项目将根据这些配置信息和自定义的自动驾驶算法进行模型训练和测试,开发者可以根据不同的应用和需求,自行修改这些设置,以便可以更好地适应自己的项目。
# Environment(环境设置)
WORLD_PORT = 2000 # 模拟器端口
WORLD_HOST = 'localhost' # 模拟器主机地址
TICK = 0.05 # 模拟器的时间步长
TRAIN_MAP = 'Town01' # 训练时使用的地图
TEST_MAP = 'Town02' # 测试时使用的地图
# Camera(摄像头设置)
CAM_HEIGHT = 256 # 摄像头图像的高度
CAM_WIDTH = 256 # 摄像头图像的宽度
CAM_FOV = 120 # 摄像头的视场角
CAM_POS_X = 2.1 # 摄像头的位置坐标X
CAM_POS_Y = 0.0 # 摄像头的位置坐标Y
CAM_POS_Z = 1.0 # 摄像头的位置坐标Z
CAM_PITCH = 10.0 # 摄像头的俯仰角
CAM_YAW = 0.0 # 摄像头的偏航角
CAM_ROLL = 0.0 # 摄像头的翻滚角
# Ego Vehicle(自主驾驶车辆设置)
EGO_BP = 'vehicle.tesla.model3' # 自主驾驶车辆的蓝图名称
# Exo Vehicles(外部车辆设置)
EXO_BP = ['vehicle.tesla.model3', 'vehicle.ford.mustang', 'vehicle.dodge.charger_2020', 'vehicle.bmw.grandtourer'] # 外部车辆的蓝图名称列表
# Weather(天气设置)
TRAIN_WEATHER = ['ClearNoon', 'ClearSunset', 'WetNoon', 'HardRainNoon'] # 训练时使用的天气条件
TEST_WEATHER = ['CloudyNoon', 'SoftRainSunset'] # 测试时使用的天气条件
# Autoencoder(自动编码器设置)
AE_DATASET_FILE = '../autoencoderData/dataset.pkl' # 自动编码器使用的数据集文件路径
AE_VAL_SIZE = 0.2 # 验证集大小
AE_IMG_SIZE = 'default' # 图像大小
AE_NORM_INPUT = True # 是否对输入进行归一化
AE_EMB_SIZE = 256 # 嵌入大小
AE_BATCH_SIZE = 32 # 批处理大小
AE_EPOCHS = 200 # 训练轮次
AE_LR = 1e-3 # 学习率
AE_DIRPATH = '../AEModel' # 自动编码器模型保存路径
AE_SPLIT = None # 数据拆分
AE_PRETRAINED = '../autoencodersEntrenados/0/model.ckpt' # 预训练模型文件路径
AE_MODEL = 'AutoencoderSEM' # 自动编码器模型类型
AE_LOW_SEM = True # 是否使用低级语义特征
AE_USE_IMG_AS_OUTPUT = False # 是否将图像用作输出
AE_ADDITIONAL_DATA = True # 是否使用额外数据
# Expert data(专家数据设置)
EXPERT_DATA_FOLDER = '../datosExperto/withExoVehicles' # 专家数据文件夹路径
# Agent Training(代理训练设置)
AGENT_FOLDER = '../agents/ddpgColDeductiveRoute2' # 代理模型文件夹路径
TRAIN_EPISODES = 340 # 训练的轮次
ROUTE_ID = 2 # 路线ID
USE_EXO_VEHICLES = True # 是否使用外部车辆
# DDPG Training(DDPG训练设置)
DDPG_USE_EXPERT_DATA = True # 是否使用专家数据
DDPG_EXPERT_DATA_FILE = '../datosExperto/withExoVehicles/Route_2.pkl' # 专家数据文件路径
DDPG_PRETRAIN_STEPS = 500 # 预训练步数
DDPG_USE_ENV_MODEL = True # 是否使用环境模型
DDPG_ENV_STEPS = 10 # 环境步数
DDPG_BATCH_SIZE = 64 # 批处理大小
DDPG_NB_UPDATES = 5 # 更新次数
DDPG_NOISE_SIGMA = 0.2 # 噪声标准差
DDPG_SCH_STEPS = 5 # 计划步数
# SAC Training(SAC训练设置)
SAC_BATCH_SIZE = 64 # 批处理大小
SAC_NB_UPDATES = 50 # 更新次数
SAC_ALPHA = 0.2 # SAC算法中的α参数
SAC_SCH_STEPS = 100 # 计划步数
对上述代码的具体说明如下:
(1)环境设置
- WORLD_PORT 和 WORLD_HOST:CARLA模拟器的端口和主机地址。
- TICK:模拟器的时间步长。
- TRAIN_MAP 和 TEST_MAP:训练和测试时使用的地图。
(2)摄像头设置
- CAM_HEIGHT 和 CAM_WIDTH:摄像头图像的高度和宽度。
- CAM_FOV:摄像头的视场角。
- CAM_POS_X、CAM_POS_Y 和 CAM_POS_Z:摄像头的位置坐标。
- CAM_PITCH、CAM_YAW 和 CAM_ROLL:摄像头的姿态。
(3)自主驾驶车辆设置
- EGO_BP:自主驾驶车辆的蓝图名称。
(4)外部车辆设置
- EXO_BP:外部车辆的蓝图名称列表。
(5)天气设置:
- TRAIN_WEATHER 和 TEST_WEATHER:训练和测试时使用的天气条件。
(6)自动编码器设置
- AE_DATASET_FILE:自动编码器使用的数据集文件路径。
- AE_VAL_SIZE:验证集大小。
- AE_IMG_SIZE:图像大小。
- AE_NORM_INPUT:是否对输入进行归一化。
- AE_EMB_SIZE:嵌入大小。
- AE_BATCH_SIZE:批处理大小。
- AE_EPOCHS:训练轮数。
- AE_LR:学习率。
- AE_DIRPATH:自动编码器模型保存路径。
- AE_SPLIT:数据拆分。
- AE_PRETRAINED:预训练模型文件路径。
- AE_MODEL:自动编码器模型类型。
- AE_LOW_SEM:是否使用低级语义特征。
- AE_USE_IMG_AS_OUTPUT:是否将图像用作输出。
- AE_ADDITIONAL_DATA:是否使用额外数据。
(7)专家数据设置
- EXPERT_DATA_FOLDER:专家数据文件夹路径。
(8)代理训练设置
- AGENT_FOLDER:代理模型文件夹路径。
- TRAIN_EPISODES:训练的轮次。
- ROUTE_ID:路线ID。
- USE_EXO_VEHICLES:是否使用外部车辆。
(9)DDPG训练设置
- DDPG_USE_EXPERT_DATA:是否使用专家数据。
- DDPG_EXPERT_DATA_FILE:专家数据文件路径。
- DDPG_PRETRAIN_STEPS:预训练步数。
- DDPG_USE_ENV_MODEL:是否使用环境模型。
- DDPG_ENV_STEPS:环境步数。
- DDPG_BATCH_SIZE:批处理大小。
- DDPG_NB_UPDATES:更新次数。
- DDPG_NOISE_SIGMA:噪声标准差。
- DDPG_SCH_STEPS:计划步数。
(10)SAC训练设置
- SAC_BATCH_SIZE:批处理大小。
- SAC_NB_UPDATES:更新次数。
- SAC_ALPHA:SAC算法中的α参数。
- SAC_SCH_STEPS:计划步数。