新闻中心

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

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

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

【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)检查插件目录:$ProjectRoot\Unreal\Plugins\ 看插件是否生成。

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

2.3 确认VS 2019环境配置

(1)启动Developer Command Prompt for VS 2019,在$ProjectRoot\Unreal\Environments\Blocks目录下输入命令: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 Engine\LandscapeMountains),打开文件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)用文本编辑器编辑Config\DefaultGame.ini,如下修改

[/Script/EngineSettings.GeneralProjectSettings]
Description=
Description=A showcase of the Landscape and foliage tools, featuring a heightmap and layers imported from World Machine..
ProjectID=2F9E755244BE3FD42C78DA99BE9702D5
ProjectName=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],并在主窗口中把它移动到一条路上;

Motiff妙多 Motiff妙多

Motiff妙多是一款AI驱动的界面设计工具,定位为“AI时代设计工具”

Motiff妙多 334 查看详情 Motiff妙多

【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:\AirSim\PythonClient\car),运行hello_car.py,可见汽车在脚本的控制下分别进行向前、向前+右转、向后+右转的顺序运动。证明可通过python脚本控制虚拟环境中的汽车,前面的环境配置是无误的。

3.3强化学习训练

在Anaconda中启动VS Code,打开文件夹(D:\AirSim_Paddle\AirSim_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的自动驾驶强化学习初探 -        

以上就是【AI达人特训营】基于飞桨和Airsim的自动驾驶强化学习初探的详细内容,更多请关注其它相关文章!


# bootstrap  # python  # python脚本  # 模拟器  # 热点  # c++  # ai  # 工具  # windows  # git  # 上海推广联盟网站  # 廊坊seo搜索栏分析  # 商家短信营销推广  # 萝岗医院网站建设  # 平邑网站优化价格  # 北京外贸网站推广方法  # 抖音如何广告营销推广  # 推广引流营销模式有哪些  # 管理学院网站建设方案  # 深圳seo快速霸屏推广  # 官网  # 设置为  # 双击  # 并在  # 右键  # 设为  # 编辑器  # 一言  # 达人  # 中文网  # udio 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: 市盈率负值是什么意思  电瓶车的power是什么意思  如何知道固态硬盘  j*a中如何创建列表数组  youtube受限模式是什么_youtube受限模式是什么意思  输入命令如何换行  没网环境如何安装typescript  单片机怎么进行排序操作  华硕k20ce怎么装win7  命令控制台如何执行sql文件  单片机怎么判定高电平  j*a怎么让数组倒换  阿里云盘的会员怎么用  苹果16更新了哪些软件  光猫power灯一直闪是什么意思  市盈率为负值是什么意思  云淡风轻什么意思  j*a 怎么清空数组元素  excel中datediff函数怎么用  awful是什么意思  为什么用typescript  ai如何重复使用上一命令  手机全功能type-c接口是什么意思  win7怎么关闭360壁纸屏保  焊机上power灯闪是什么意思  如何查看bash内置的命令  市盈率市净率是什么意思  j*a怎么声明byte数组  多少毫安的充电宝可以带上飞机  为什么有的夸克带电  51单片机怎么连接端口  如何创建sql命令  春运抢票需要什么软件抢  如何安装大华固态硬盘  j*a怎么用数组缓存  如何查看网站域名解析  夸克网盘是什么都有吗  hen是什么意思  typescript解决了什么  j*a数组求和怎么算  typescript多久能学会  哪些库是typescript  如何进入cmd命令行  怎么打印数组j*a  sql isnull函数如何使用  固态硬盘如何外接  对象数组怎么用j*a  如何选购ssd固态硬盘  汽车上power是什么意思  typescript怎么写多个构造方法 

搜索