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


    前言

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

    在这里插入图片描述

    官方文档: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游戏商城,然后在商城的虚幻引擎库里进行安装。
    在这里插入图片描述
    Visual Studio和Python想必是程序员的常用工具,怎么安装不做赘述。

    配置步骤

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

    Step1:克隆Airsim仓库并编译

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

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

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

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

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

    在这里插入图片描述
    输入指令·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。

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

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

    在这里插入图片描述

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

    在这里插入图片描述
    如果选择否,则变成一架不可操作的四旋无人机

    在这里插入图片描述

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

    Step3:新场景测试

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

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

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

    在这里插入图片描述

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

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

    在这里插入图片描述
    这时候再用记事本打开mountain.uproject,修改内容如下:

    {
    	"FileVersion": 3,
    	"EngineAssociation": "4.26",
    	"Category": "Samples",
    	"Description": "",
    	"Modules": [
    		{
    			"Name": "mountain",
    			"Type": "Runtime",
    			"LoadingPhase": "Default"
    		}
    	],
    	"TargetPlatforms": [
    		"MacNoEditor",
    		"WindowsNoEditor"
    	],
    	"EpicSampleNameHash": "1226740271"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

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

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

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

    在Unreal编辑器,将游戏模式改成AirsimGameMode
    在这里插入图片描述
    之后再修改初始位置,这里只保留第一个。
    在这里插入图片描述
    然后点击运行,选择否,就可以看到无人机进入到场景中了。

    在这里插入图片描述

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

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

    setting.json

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

    改为

     {
       "SettingsVersion": 1.2,
       "SimMode": "ComputerVision"
     }
    
    • 1
    • 2
    • 3
    • 4

    修改完之后,进行保存。

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

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

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

    请添加图片描述

    Step4:设置Python关联

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

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

     pip install msgpack-rpc-python
     pip install airsim
    
    • 1
    • 2

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

     {
       "SettingsVersion": 1.2,
       "SimMode": "Multirotor"
     }
    
    • 1
    • 2
    • 3
    • 4

    新建一个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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

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

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

    在这里插入图片描述
    然后再运行py文件,注意必须先让虚幻环境运行起来再运行py文件。
    运行成功会输出以下内容
    在这里插入图片描述
    这时候就可以看到无人机先缓缓上升,然后落地。

    请添加图片描述

    至此,Airsim就配置完成。

  • 相关阅读:
    夏日炎炎玩转新加坡:盘点室内景点和夜游好去处
    Jenkins从配置到实践(2022尚硅谷Jenkins学习笔记)
    前后端分离 + 跨域 + 跨域的解决办法
    ElementUI之MessgageBox使用
    浅谈Oauth2.0授权
    element ui - el-table 表头筛选
    React函数组件和类组件生命周期比较
    网络安全(黑客)自学
    力扣--268丢失的数字(三种解法)
    无涯教程-JavaScript - LOOKUP函数
  • 原文地址:https://blog.csdn.net/qq1198768105/article/details/126450972