AirSim/Cosys-AirSim 游戏开发(二)使用自定义场景
在实际的开发过程中很少会只用 AirSim 自带的 Blocks 场景,通常需要用到自定义的一些环境和模型,依托于强大的 UE 引擎可以较为逼真地完成场景渲染。这篇博客记录了如何从头开始导入一个自定义场景并加载 AirSim 插件。
【Note】:由于 UE Editor 和商店的版本迭代,有些按钮或工具位置会有变动,我这里使用的是 5.5.1
+ UE5
的组合。
核对以下软件版本:
- Windows 10;
- UE Launcher + UE5;
- Visual Studio 2022;
- AirSim / Cosys-AirSim;
当前所有操作都在Windows上完成,后面会介绍 PX4 和 MAVLINK 在不同设备上通讯。
因为我本身不是做 UE 的,只是工作中需要用到 UE,这篇博客是站在一个机器人算法工程师角度展开,因此部分内容可能不太专业,如果存在错误还请在评论区留言,我会在第一时间处理。
1. 从 Epic 商店中选择场景素材
虽然可以直接从浏览器的方式进入商店,但我个人习惯从本地的 Launcher 进入商店,可以少占用一个浏览器的收藏位。
启动 Epic Game Launcher
后按照顺序执行以下操作:
- 进入 “库” 标签页;
- 下拉到软件最下面找到 “Fab 库” 的位置;
- 点击黄色的 “请访问 Fab.com” 链接;
在 2025年06月05日 的在线商店长下面这个样子:
往下拉一些找到 Environments
标签,这个标签里都是可下载的环境,对于初学 AirSim 来说里面的免费资源足够折腾了。
进入页面后可以在上方的 Price
筛选器中勾选 Free
筛选出免费的场景素材:
这里以 Downtown West Modular Park
资源为例,选中并点击进去:
因为我已经将这个资源添加到我的库里了,所以页面右侧显示 “已添加”,如果你之前没有操作过应该可以看见 Add to My Library
按钮,点击并添加到自己的库中,然后刷新页面就可以看见 View in Launcher
按钮。
【Note】:在我写这篇博客的时候点击 View in Launcher
按钮只会自动打开 Epic Launcher,并不会自动添加到本地,需要点击 View in My Library
按钮后手动下载。
在弹出的 Epic Launcher 中有时候会自动刷新,如果你没看见新加的场景则可以手动刷新一下:
因为这里添加的是 素材 而不是 工程,所以我们需要自己新建一个工程并将这个素材添加到工程中。
2. 新建一个空白工程
在上一步的 Epic Launcher 中选择右上角的 启动 Unreal Engine 5.5.1
按钮先将UE引擎启动。
【Note】:这里每个人安装的 UE 引擎版本不一样因此可能会存在差异,但这一步的操作都是为了启动引擎创建新的工程。
在启动后按照下面的流程新建一个工程:
- 点击
SIMULATION
标签; - 选择一个存放工程的位置;
- 【可选】在
Project Name
中修改你的工程名,这里我偷懒就不修改了; - 点击
Create
创建工程;
创建工程按钮被点击后 UE 会进行一些基础元素的编译与构建,这一步会花费一点时间,然后自动弹出以下画面,到达这一步至少说明你的 UE 引擎都正常,没有缺少必要的库或文件。
3. 将场景添加到工程中
3.1 下载资源库场景
先将上面弹出的操作界面关闭,回到 Epic Launcher 中点击 添加到工程
按钮
在弹出的页面中按照以下顺序操作:
- 勾选
显示所有工程
; - 选择刚才创建的工程
MyProject
; - 如果你的引擎和我的一样是
UE 5.5.1
那么需要以兼容的形式运行,在选择版本
中选择一个版本号差距最小的; - 点击
添加到工程
;
确认后 Epic Launcher 会自动下载这个资源,等待下载完成即可:
下载完成后会自动打开新建的工程,这里建议先将下载好的资源备份一份,以免误操作导致损坏文件导致重新下载。位置就在你的工程目录下的 Content
文件夹中,以我的路径为例 C:\Users\Lucks\Desktop\AirSim-Self-Env\MyProject\Content
3.2 导入场景到操作界面中
返回到 UE Editor 中开始导入场景,按照下面的步骤依次操作:
- 打开 左下角 的资源抽屉
Content Drawer
; - 将左侧文件目录展开,这里使用的是
Downtown_West
; - 进入到
Maps
文件夹中; - 双击
Demo_Enviroment
等待场景加载完成;
【Note】:不同的资源文件在第3、4步可能存在文件选择差异,但只要是制作合规的场景都有 Level 标签。
通常情况下会自动递归加载需要的场景文件,如果你发现显示的不全可以手动进入 Sub-Level
文件加载一些其他场景,这个资源里的子文件中有不同的天空背景,感兴趣的可以多尝试下。
在场景正确加载后必须检查一下是否可用,点击上方绿色的 Play
按钮进入环境,想要退出的话点击 Esc
即可结束仿真。
3.3 设置工程默认关卡
在确认环境能正确加载并运行后 Ctrl
+ S
保存,此时如果你直接退出,然后再在 Launcher 中打开的话仍然显示的是空白场景,这是因为没有设置 默认关卡,按照下面的步骤设置默认关卡:
- 在上方工具栏中点击
Edit
,然后在下拉菜单栏中点击Project Settings
; - 弹出窗口的左侧选择
Maps & Models
; - 在 Default Maps 中的
Editor Starup Map
中选择 Demo_Enviroment 场景; - 在下面的
Game Default Map
中也选择 Demo_Enviroment 场景;
经过上述操作后下一次打开就是默认的这个场景了。
4. 创建空的 C++ 类
【Note】:有些工程自带一个空的 C++类 就不需要执行这一步,如果你的下拉菜单中 Generate Visual Studio Project
是灰色不可选中的,那么需要手动创建。这个类基本用不上,是为了引导 UE 生成 Visual Stuido 工程用的。
点击上方工具栏中的 Tools
,在下拉菜单中选择 New C++ Class
。
在弹出的页面中点击 Next
:
类名可以随意起,用默认也无所谓,点击 Create Class
:
等走完进度条后先不要打开编辑器,选择 No
即可:
此时你的 工程目录下应该会自动生成一个 MyProject,.sln
文件:
然后关闭 Editor 准备编译 AirSim 插件。
5. 编译 AirSim 插件
这里无论你使用的是 AirSim 还是 Cosys-AirSim 都需要先找到对应的插件位置,但好在两个库的结构基本一致,所以 UE 插件路径也相似。
5.1 复制 Plugins/AirSim 文件夹
我这里以我用的 Cosys-AirSim
为例,其 UE 插件位置在 C:\Users\Lucks\Desktop\Cosys-AirSim\Unreal\Plugins
:
然后前往你的工程目录,我这里是 C:\Users\Lucks\Desktop\AirSim-Self-Env\MyProject
,如果你的工程目录中有 Plugins
文件夹则直接进去并粘贴上一步复制的 AirSim 文件夹,如果没有就手动创建并复制进去。
5.2 编辑 MyProject.uproject 文件
回到你的工程目录中使用文本编辑器打开你的 MyProject.uproject
文件并进行编辑:
然后在 “Plugins” 元素中添加以下字段:
{"Name": "AirSim","Enabled": true
}
修改完成就保存并关闭。
5.3 生成 Visual Studio 工程文件
回到工程目录中,右键点击 MyProject.uproject
在弹出的菜单中选择 Generate Visual Studio project file
等待生成结束。
[可选] 6. 配置 Visual Studio 工程
如果你想要在这个工程上验证一下官方的无人机起降Demo可以按照下面的流程进行,官方 Demo 的核心是里面的一个 cpp 文件,执行了无人机起飞、运动几米、拍照、降落这几个动作。
在上面工程文件成功生成后就可以双击打开 MyProject.sln
启动 Visual Stuido:
6.1 新建一个空白工程
右键 Games
然后在 Add
中新建一个空白工程 New Project
:
在弹出的窗口中直接选择 Empty Project
就够用了,我这里给工程起名为 SelfDemo
:
6.2 复制 HelloSpawnedDrones.cpp 文件
前往你的 AirSim 或 Cosys-AirSim 的安装路径,找到 HelloSpawnedDrones.cpp
文件,这个文件就是用来生成一个可用的无人机入口,对于我而言这个文件在 C:\Users\Lucks\Desktop\Cosys-AirSim\HelloSpawnedDrones\HelloSpawnedDrones.cpp
然后将这个文件复制到刚才新建的空白工程目录下 Source\MyProject
文件夹中,对我而言就是在路径 C:\Users\Lucks\Desktop\AirSim-Self-Env\MyProject\SelfDemo
下
在 Visual Stduo 中将这个文件添加到项目中,浏览文件将其加入到编译队列里:
6.3 设置工程为启动项
右键新建的工程,并在弹出的菜单中选择 Set as Startup Project
。
然后就是传统的配置 Visual Stduio 项目步骤了。
6.4 添加包含目录
找到你刚才复制进来的 Plugins/AirSim
的插件文件夹,并将以下三个路径复制进去:
- Plugins\AirSim\Source\AirLib\include;
- Plugins\AirSim\Source\AirLib\deps\eigen3;
- Plugins\AirSim\Source\AirLib\deps\rpclib\include;
效果如下:
6.5 添加附加库目录
附加库目录需要根据当前编译条件修改,本质是下面三个路径:
- Plugins\AirSim\Source\AirLib\lib
- Plugins\AirSim\Source\AirLib\deps\rpclib\lib
- Plugins\AirSim\Source\AirLib\deps\MavLinkCom\lib
次数还需要手动修改路径末尾的信息,为上面的路径添加 $(Platform)\$(Configuration)
结尾,最终效果如下:
6.6 添加附加依赖项
添加附加依赖项基本和上面一致,将 *.lib
加上即可:
最终效果如下:
7. 编译工程
7.1 编译 Visual Studio 工程
以 Debug
+ x64
的组合编译工程 MyProject
:
如果编译有报错,大概率是 6.4
、6.5
、6.6
没有配置好,仔细检查路径是否正确。
如果确认上面的配置都没有问题,但仍然报错没有找到头文件,你需要去 MyProject
中查看是不是把 HelloSpawnedDrones.cpp
文件放到了工程里,这个文件应该在新建的项目中添加。
7.2 编译 UE 工程
双击打开 MyProject.uproject
然后点击确认即可。
等待 UE Editor 完全启动后在右上角点击 Settings
-> World Settings
:
在更新后的右边导航栏中选择 Game Mode 中的 Game Mode Override
-> AirSimGameMode
:
然后点击 Play 按钮就可以看见无人机生成了: