参照http://blog.csdn.net/u011860814/article/details/60469441一文就可以成功地搭建unreal上的airsim项目。我跑了一个car simulation的项目,没有接入外设,是纯模拟的,具体效果如上图。
微软的这套airsim框架已经开源,可以在github上找到:https://github.com/Microsoft/AirSim,它原本是一个无人机的项目,最近又开放了无人车的版本,可以直接使用它的api,也可以作为unreal插件进行无人机/车的模拟。直接使用接口可以适用于各种平台,灵活性也比较大,但是上手难度也相对高一些。
我在本地编译并测试跑了几个项目,首先要注意的是,需要手动在我的文档(windows平台)下建一个AirSim文件夹,并在AirSim文件夹里建一个settings.json文件,来填写一些配置参数,代码里会读取该文件,如果不存在的话就会出错,具体怎么填写可以参照https://github.com/Microsoft/AirSim/blob/master/docs/settings.md (这里提供的默认json漏了一个逗号,如果直接复制的话记得把这个逗号补好,否则还是会报错)。
数据传输是通过rpc实现的,所以我们可以先执行DroneServer,运行一个本地服务器,然后再执行HelloCar/HelloDrone这两个工程,这时候再接入外设,应该就能看到效果了(不知道为什么,这里服务器和客户端提供的默认端口不一样,所以一开始一直连不上服务器,这里查了很久bug。要注意在代码里保证改成一致的,再重新编译运行),DroneShell工程类似于一个cmd命令窗口,可以改一些参数。AirLibUnitTests作为一个单元测试项目,其实可以很好地展现计算机中模拟无人车/机时,一些api的使用方法,可以仔细读一读。
当然我的重点主要是这个框架在Unreal中的应用,所以现在把官方文档翻译一遍。
unreal_blocks.md
为airsim搭建有障碍物的环境
在Unreal/Environments/Blocks文件夹里包含了一个含障碍物的轻量级环境,这意味着它只包含了最基础的功能,但是性能较好。
现在,我们快速搭建一下这个环境,把它跑起来。
Windows
1.确保你安装了Unreal,并且已经编译了AirSim.
2.进入AirSim\Unreal\Environments\Blocks文件夹,并且运行update_from_git.bat批处理文件。
3.双击编译生成的.sln文件来打开Visual Studio 2015 Update3或者更新的版本。
4.保证Blocks工程为当前激活的工程,build设置为DebugGame_Editor,Win64,按下F5来执行。
5.点击unreal 编辑器里的播放按钮看到效果。
修改代码并重新编译
对于Windows系统而言,你只需要修改vs中的代码,按f5重新运行即可。在AirSim\Unreal\Enviroments\Blocks文件夹下有一些批处理文件,可以使你执行同步代码。清理等操作。
选择你的载具:无人车或是无人机
默认选择的是无人机,你可以容易的改成无人车,并使用所有sirsim的语法糖,详情可见using_car.md。
using_car.md
如何在airsim中使用无人车
airsim中默认选择的是无人机,如果你想要使用车的话,只需要在settings.json中设置SimMode,如下:
{
"SettingsVersion": 1.0,
"SimMode": "Car"
}
现在,当你重启airsim,你就会看到车自动生成了。
手动驾驶
请使用键盘上的方向键来手动驾驶。按住空格来刹车。在手动驾驶模式,档被设置为“自动”
使用API
通过调用不同语言的客户端API,包括C++,Python,你可以控制车辆/获取状态和图像。详情可见APIs.doc。
改变视角
默认状态下,相机会在车的后方追踪车,你可以按下F键来获取第一人称视角,再按/来回到俯视视角。更多快捷键可按F1来获取。
相机
默认情况下包含了三个相机:中间的,左边的和右边的。你可以通过选择相机的id0,1,2来获得对应方向的图像。
unreal_custenv.md
创建并设置Unreal环境
这一页包含了使用airsim来设置Unreal环境的完整教程。unreal商店包含了一些可用的环境,你可以在短短几分钟内上手。同样,也可以使用
turbosquid.com
, cgitrader.com等网站上提供的环境素材,但是这要花费更多的精力。此外,这里还有一些免费的资源可用:
free environments
接下来我们使用Unreal商店里的一个叫landscape mountain的免费环境。
1.保证你已经有了unreal引擎,并且编译了airsim
2.在unreal启动器学习一栏找到资源并下载。
3.打开LandscapeMountains.uproject,它将会启动unreal编辑器。
4.在文件菜单选择新建C++类,类的类型设为默认的none,再点击下一步,点击新建class。我们需要这么做是因为Unreal在工程中至少需要有一个源文件。接下来会自动编译并打开visual studio项目。
5.进入你的airsim文件夹,把unreal\plugins文件夹复制到LandscapeMountains文件夹的根目录下。这样你的工程就有了一个airsim的插件。
6.编辑LandscapeMountains.uproject,如下:
{
"FileVersion": 3,
"EngineAssociation": "4.16",
"Category": "Samples",
"Description": "",
"Modules": [
{
"Name": "LandscapeMountains",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"AirSim"
]
}
],
"TargetPlatforms": [
"MacNoEditor",
"WindowsNoEditor"
],
"Plugins": [
{
"Name": "AirSim",
"Enabled": true
}
]
}
7.关闭visual studio和unreal editor,并右键LandscapeMountains.uproject,选择Generate visual studio project files。这一步将检测你的所有插件和源文件并生成.sln文件。
提示:如果找不到这个选项,可以重启电脑,使得Unreal扩展生效。还是不行的话就在Unreal工程的文件菜单选择刷心vs project。
8.再次打开LandscapeMountains.sln,保证编译条件为:DebugGame Editor , Win64
9.点击F5来执行,这将启动Unreal Editor。Unreal Editor允许你编辑环境,资源,以及其他游戏相关的设置。你想要在你的环境中做的第一件事情就是设置PlayerStart对象。在LandscapeMountains的环境中,PlayerStart对象已经存在了,你可以在世界大纲视图找到它。确保你的位置设置为如图所示,这是airsim插件创建和放置载具的地方。如果太高载具会在你输入随机行为的时候立即坠落。
10.在如下的窗口/世界设置,把GameMode Override设置为AirSimGameMode:
11.确保你已经保存了工程,然后点击播放按钮。
恭喜你,现在你已经可以在你的Unreal环境中使用airsim了。