[AirSim in Unreal] 在Unreal中使用无人机/无人车


        参照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了。

猜你喜欢

转载自blog.csdn.net/ZJU_fish1996/article/details/78984828