0
点赞
收藏
分享

微信扫一扫

Win10配置Airsim环境并设置Python通信


前言

和朋友交流时,了解到微软开发了一个仿真环境叫Airsim,可以作为插件插入到虚幻引擎4中,进行汽车、无人机等实际环境的仿真。于是打算跟着​​知乎宁子安写的教程​​来配置一下环境。

Win10配置Airsim环境并设置Python通信_git

官方文档:​​https://microsoft.github.io/AirSim/​​​ 官方仓库:​​https://github.com/microsoft/AirSim​​

版本选择

经过了无数的试错,发现Airsim对版本的要求极高,如果不对应,会出现各种各样难以预料的错误。下面是需要用到的四款工具版本,配置时必须完全一样。并且,该仿真非常对内存和显卡要求很高,首先得保证自己的电脑能够跑得动虚幻引擎。

AirSim版本:v1.5.0 (2021年5月发布)
虚幻引擎版本:4.26.2
Visual Studio版本:Visual Studio Community 2019
Python版本:Python 3.7

我所用到的是Windows10操作系统,AirSim-windows版本可以去官方仓库的Releases中进行下载。

虚幻引擎安装首先需要自行下载Epic游戏商城,然后在商城的虚幻引擎库里进行安装。

Win10配置Airsim环境并设置Python通信_python_02


Visual Studio和Python想必是程序员的常用工具,怎么安装不做赘述。

配置步骤

准备好上面的必要的软件和工具后,开始正式配置。

Step1:克隆Airsim仓库并编译

首先使用​​git​​工具,将官方仓库克隆下来

git clone https://github.com/Microsoft/AirSim.git

之后,还要下载另一个汽车模型,后面会用到。
下载地址:​​​https://github.com/Microsoft/AirSim/releases/download/v1.2.0/car_assets.zip​​

下载好后,将 ​​car_assert.zip​​​ 的 ​​SUV​​​ 文件夹解压到 ​​Unreal\Plugins\AirSim\Content\VehicleAdv\​

然后打开VS的命令行工具​​Developer Command Prompt for VS 2019​

Win10配置Airsim环境并设置Python通信_无人机_03


输入指令·CD AirSim·进入到 AirSim文件夹中,继续输入指令:​​build.cmd​​,等待程序编译完毕,编译好之后会在 “AirSim\Unreal” 文件夹中生成 “Plugins” 文件夹,该文件夹就是Airsim的插件,可以在之后移植到其它虚幻项目中。

Step2:测试Block 环境

block环境是airsim自带嵌入的一个Unreal工程文件,可以测试Unreal和airsim是否安装配置成功。
同样在​​​Developer Command Prompt for VS 2019​​​中,进入到​​Airsim\Unreal\Environments\Blocks​​​文件夹下,输入​​update_from_git.bat​​​,运行完成之后,会生成​​Blocks.sln​​工程文件,双击打开此工程文件,会自动运行 Visual Studio 2019。

Win10配置Airsim环境并设置Python通信_github_04


在Visual Studio 2019中,将 “Block工程” 设为启动项目,编译选项设为 “DebugGame_Editor” 和 “Win64”,然后点击 “调试” -> “开始调试”,如下图所示,这时就会打开Unreal Engine。

Win10配置Airsim环境并设置Python通信_git_05


进入到Unreal Engine,可以看到Block的初始场景。同时如果配置顺利,可以看到右下方弹出提示:新插件可用。

Win10配置Airsim环境并设置Python通信_git_06

然后点击运行,会跳出一个提示框,如果选择是,会变成一辆可以操控的SUV。

Win10配置Airsim环境并设置Python通信_python_07


如果选择否,则变成一架不可操作的四旋无人机。

Win10配置Airsim环境并设置Python通信_git_08

正常显示,说明配置成功。

Step3:新场景测试

下面就下载一个新的UE项目,尝试将Airsim以插件的形式导入工程,这里以免费的山脉景观为例。

在示例中可以找到这个场景,下载并安装。

Win10配置Airsim环境并设置Python通信_虚幻引擎_09


下载好之后,可以看到该文件夹下有​​.uproject​​这个工程文件,双击打开,进入到虚幻引擎。

Win10配置Airsim环境并设置Python通信_github_10

为了能够使用Visual Studio 编译.sln文件,我们需要创建自己的类,因为Unreal要求至少有一个源文件。具体步骤是:点击左上角的文件,选择新建C++类,父类选择无,所以直接点击下一步;命名和路径都是默认就好了,直接点击创建类。这时Unreal会自动编译C++代码,然后会自动打开Visual Studio。到此 Landscape Mountain环境就下载安装好了。

然后,将​​AirSim\Unreal\Plugins​​​这个文件夹和之前Block中的一些工具一起复制到​​mountain​​文件夹中,如下图所示:

Win10配置Airsim环境并设置Python通信_虚幻引擎_11


这时候再用记事本打开​​mountain.uproject​​,修改内容如下:

{
"FileVersion": 3,
"EngineAssociation": "4.26",
"Category": "Samples",
"Description": "",
"Modules": [
{
"Name": "mountain",
"Type": "Runtime",
"LoadingPhase": "Default"
}
],
"TargetPlatforms": [
"MacNoEditor",
"WindowsNoEditor"
],
"EpicSampleNameHash": "1226740271"
}

然后右键点击​​mountain.uproject​​​选择​​Generate Visual Studio project files​

之后,双击打开​​mountain.sln​​,会自动打开 Visual Studio,选择编译选项为 DebugGame Editor 和 Win64,同时确保mountain为启动项目。

用鼠标点击​​本地windows调试器​​,这时会打开 Unreal 编辑器。这时Unreal就已经能够识别airsim插件了。

在Unreal编辑器,将游戏模式改成​​AirsimGameMode​

Win10配置Airsim环境并设置Python通信_虚幻引擎_12


之后再修改初始位置,这里只保留第一个。

Win10配置Airsim环境并设置Python通信_无人机_13


然后点击运行,选择否,就可以看到无人机进入到场景中了。

Win10配置Airsim环境并设置Python通信_无人机_14

下面可以修改控制模式,将视角转变成无人机的第一人称。

在C:\用户{用户名}\文档\下面新建AirSim文件夹, 在新建的 AirSim 文件夹中新建 settings.json文件。如果运行过airsim的话,应该会默认创建这个文件夹和文件的,如果没有,则需要手动创建。将 settings.json 文件修改为如下所示:

setting.json

{
"SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
"SettingsVersion": 1.2
}

改为

{
"SettingsVersion": 1.2,
"SimMode": "ComputerVision"
}

修改完之后,进行保存。

再次在编辑器中点击运行,这时就可以用键盘来控制视角了。

  • 上下左右按键:控制前后左右移动
  • PgUp、PgDn:控制上下移动
  • w、s按键:控制俯仰
  • a、d按键:控制偏航

合适地操控运镜,可以呈现大片既视感。

Win10配置Airsim环境并设置Python通信_虚幻引擎_15

Step4:设置Python关联

最后需要尝试将python和Airsim进行关联,通过python API来控制无人机。

python和pycharm的安装不作赘述,主要需要安装两个库文件。

-rpc-python
pip install airsim

安装好之后,重新修改之前设置的​​setting.json​​,改为

{
"SettingsVersion": 1.2,
"SimMode": "Multirotor"
}

新建一个Python文件,输入以下内容:

import airsim

# connect to the AirSim simulator
client = airsim.MultirotorClient()
client.confirmConnection()

# get control
client.enableApiControl(True)

# unlock
client.armDisarm(True)

# Async methods returns Future. Call join() to wait for task to complete.
client.takeoffAsync().join()
client.landAsync().join()

# lock
client.armDisarm(False)

# release control
client.enableApiControl(False)

当 AirSim 开始仿真的时候,会打开 41451 端口,并监听这个端口的需求。python 程序使用 msgpack serialization 格式向这个端口发送 RPC 包,就可以与AirSim进行通信了。

这时候再运行仿真环境,可以看到无人机不受控制得下落。

Win10配置Airsim环境并设置Python通信_虚幻引擎_16


然后再运行py文件,注意必须先让虚幻环境运行起来再运行py文件。

运行成功会输出以下内容

Win10配置Airsim环境并设置Python通信_无人机_17


这时候就可以看到无人机先缓缓上升,然后落地。

Win10配置Airsim环境并设置Python通信_github_18

至此,Airsim就配置完成。


举报

相关推荐

0 条评论