当前位置: 首页 > AI > 文章内容页

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探

时间:2025-07-29    作者:游乐小编    

本文介绍基于飞桨和AirSim的自动驾驶强化学习项目。先阐述项目背景,说明自动驾驶研究及虚拟环境的重要性;接着详述环境配置步骤,包括模拟器、AirSim插件安装等;还介绍了运行方式、强化学习基本概念及AirSim_Paddle平台,为相关研究提供参考。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网

基于飞桨和Airsim的自动驾驶强化学习初探

一、项目背景

近年来,在工业4.0、物联网和虚拟现实等的高速发展下,自动驾驶逐渐成为汽车行业的研究热点,期望汽车可以根据当前道路状态获得动作策略,进而自动行驶到目标点。 当然,真实道路下的实验固然重要,但受限于成本、安全性等因素,当前作为算法验证手段。而算法开发则通常在虚拟环境中进行。微软开源了基于虚幻4引擎的一款用于模拟自动驾驶的工具AirSim。

本项目基于飞桨强化学习模块PARL,构建Airsim虚拟环境下的自动驾驶强化学习开发环境。

二、环境配置

运行本项目的硬件配置为Invidia GTX 1050Ti,在对应的anaconda中提前配置好了python3.7和paddlepaddle,建立了环境paddle_env。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

2.1模拟器安装

(1)安装Epic Game launcher;

(2)在launch中安装Unreal Engine 4.27.2(此处强烈建议选择此版本!否则后面会有问题);

(3)在Samples中安装地图Landscape Mountains。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

2.2编译AirSim插件

(1)下载VS Studio2019,组件选择使用C++的桌面开发和Windows 10 SDK(10.0.18362.0);

(2)在“运行”-> cmd中,切换至本机的D盘,下载AirSim源代码;

$ git clone https://github.com/Microsoft/AirSim.git

(3)打开菜单VS Studio 2019下的Developer Command Prompt for VS 2019,在项目根目录(本文中为D:AirSim,后续采用$ProjectRoot表示)中输入命令:build.cmd;

(4)检查插件目录:$ProjectRootUnrealPlugins 看插件是否生成。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

2.3 确认VS 2019环境配置

(1)启动Developer Command Prompt for VS 2019,在$ProjectRootUnrealEnvironmentsBlocks目录下输入命令:update_from_git.bat;

(2)在弹出窗口选择当前版本,关联当前引擎;

(3)进入文件夹双击Blocks.sln, VS2019自动启动;

(4)将编译选项设置为:DebugGame_Editor + Win64,右键Blocks选择“设为启动项目”,点击菜单“调试”–>“开始调试”,虚幻编辑器启动;

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

(5)点击“运行”,选择“YES”可看到汽车出现在环境中;选择“NO”则出现四旋翼无人机。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网 【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

2.4 配置Visual Studio 2019 + LandscapeMountains

(1)进入文件夹(D:Unreal EngineLandscapeMountains),打开文件LandscapeMountains.uproject,选择用当前Unreal版本打开;

(2)在“文件->新建C++类”,触发编译VS 2019项目LandscapeMountains.sln;

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

(3)将先前编译好的Unreal/Plusins复制到文件夹中;

(4)关闭所有相关项目,重新打开文件LandscapeMountains.uproject,提示AirSim需要重新构建,点击确定;

(5)用文本编辑器编辑文件LandscapeMountains.uproject,如下修改:

{"FileVersion": 3,"EngineAssociation": "4.27","Category": "Samples","Description": "","Modules": [    {        "Name": "LandscapeMountains",        "Type": "Runtime",        "LoadingPhase": "Default",                                            "AdditionalDependencies": [                                                    "AirSim"                                             ]    }],"TargetPlatforms": [    "MacNoEditor",    "WindowsNoEditor"],            "Plugins": [                   {                         "Name": "AirSim",                         "Enabled": true                   }            ],"EpicSampleNameHash": "1226740271"
       

}

(6)用文本编辑器编辑ConfigDefaultGame.ini,如下修改

[/Script/EngineSettings.GeneralProjectSettings]Description=Description=A showcase of the Landscape and foliage tools, featuring a heightmap and layers imported from World Machine..ProjectID=2F9E755244BE3FD42C78DA99BE9702D5ProjectName=Landscape Mountains Showcase+MapsToCook=(FilePath="/AirSim/AirSimAssets")
       

(7)保存并关闭所有相关窗口后,右键文件LandscapeMountains.uproject,点击Generate Visual Studio Project Files ; (8)双击LandscapeMountains.sln,打开VS 2019,将其“设为启动项目”,编译选项设置为“DebugGame Editor”和“Win64”,点击开始调试(F5)。程序会自动打开Unreal编辑器;

(9)在右上窗口搜索“PlayerStart”对象,点击,右下角为详细信息,删除其他Player Start[00 - 99],并在主窗口中把它移动到一条路上;

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

(10)点击菜单“窗口” –> 世界场景设置 在右下角“详细”页签旁边打开World Settings。在World Settings里面选中的“游戏模式”–> “游戏模式重载”选中选项:“AirSimGameMode”;

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

(11)点击菜单中“保存所有”,点击“运行”,可启动自动驾驶环境。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

2.5检查学习环境配置

(1)在Anaconda环境中,确认python、paddle、pip都已正确安装;

(2)安装下面几个库:

# 安装Unreal和python之间的通讯协议pip install msgpack-rpc-python# 安装airsim的python库pip install airsim==1.6.0  (版本推荐)# 安装gym库pip install gym==0.18.0(版本推荐)# 安装parl库pip install parl
       

接下来,就可以愉快的开车了!

三、运行

首先,依照2.4(11)开启驾驶环境,随后开始开车!

3.1键盘控制

在环境中,可以采用方向键体验山地赛车的乐趣~

3.2 python脚本汽车控制

在Anaconda中启动VS Code,打开文件夹(D:AirSimPythonClientcar),运行hello_car.py,可见汽车在脚本的控制下分别进行向前、向前+右转、向后+右转的顺序运动。证明可通过python脚本控制虚拟环境中的汽车,前面的环境配置是无误的。

3.3强化学习训练

在Anaconda中启动VS Code,打开文件夹(D:AirSim_PaddleAirSim_Paddle),运行train.py,可看到在虚拟环境中进行的强化学习自动运行循环,并在VS终端中反馈每个循环的loss值。

四、强化学习平台简介

4.1强化学习基本概念

强化学习是机器学习领域之一,受到行为心理学的启发,主要关注智能体如何在环境中采取不同的行动,以最大限度地提高累积奖励。

强化学习主要由智能体(Agent)、环境(Environment)、状态(State)、动作(Action)、奖励(Reward)组成。智能体执行了某个动作后,环境将会转换到一个新的状态,对于该新的状态环境会给出奖励信号(正奖励或者负奖励)。随后,智能体根据新的状态和环境反馈的奖励,按照一定的策略执行新的动作。上述过程为智能体和环境通过状态、动作、奖励进行交互的方式。因此,强化学习算法的开发主要为对以上五部分的定义,以及通过算法(algorithms)对动作进行更新,进而形成完整的策略(Policy)。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

最初的强化学习方法为Q-Learning,其采用Q表格的形式定义离散的动作空间,但对于高维度、连续的空间会难以进行。DeepMind采用深度学习替代Q表格,开发出深度强化学习算法DQN。随后,研究者开发出ReplayMemory机制,从记录的经验池中随机选取采样进行梯度下降,可以极大地提升数据利用率,减少连续样本的相关性和方差,稳定和改善DQN的收敛性能。

经过研究者们的进一步开发,对DQN出现了多种变体。DeepMind对这些变体的特性进行了集成,形成了RainBow算法,效果惊人!采用的特性包括:

·Double DQN

·Prioritized experience replay

·Dueling network architecture

·Multi-step bootstrap

·Distributional DQN

·Noisy DQN

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

4.2 AirSim_Paddle简介

AirSim_Paddle为gym格式下,调用parl在AirSim虚拟环境中进行强化学习训练的标准格式包。其中,airgym文件夹下包含各类环境,airsim_env.py为类的头文件,预定义了状态空间、动作空间、奖励函数计算方法和环境重置等函数,car_env.py中为自动驾驶汽车详细环境设置,drone_env.py为四旋翼无人机详细环境设置。

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

强化学习中智能体需要包含以下结构:模型(model)、算法(algoritihm)和代理(agent)。

在外部文件夹中,model.py构建了前向网络,输入为当前的环境状态(state);算法,根据定义和损失函数更新模型;agent.py为负责算法与环境的交互,在交互过程中把生成的数据提供给 Algorithm 来更新模型( Model ),也就是数据和算法的交互一般定义在这里。

train.py为主程序,用于模型的训练,飞桨集成了多种经典的RL算法,可以通过以下语句进行引入:

【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网 【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探 - 游乐网        

热门推荐

更多

热门文章

更多

首页  返回顶部

本站所有软件都由网友上传,如有侵犯您的版权,请发邮件youleyoucom@outlook.com