参照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
修改代码并重新编译
对于Windows系统而言,你只需要修改vs中的代码,按f5重新运行即可。在AirSim\Unreal\Enviroments\Blocks文件夹下有一些批处理文件,可以使你执行同步代码。清理等操作。选择你的载具:无人车或是无人机
{
"SettingsVersion": 1.0,
"SimMode": "Car"
}
现在,当你重启airsim,你就会看到车自动生成了。
手动驾驶
使用API
改变视角
相机
{
"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文件。