Microsoft AirSim 开发(一)平台的搭建

来源:互联网 发布:淘宝店铺介绍文艺句子 编辑:程序博客网 时间:2024/05/18 11:19

*强调内容*3月7号更新 微软去除了对boost库的依赖,并将rpclib添加至源码,跳过原文的这两步即可

2月16号,微软开源了基于虚幻引擎的一款用于模拟无人机飞行的工具AirSim。通过该工具,用户可以用在虚幻引擎下模拟无人机的飞行并进行数据采集。非常适合做视觉定位算法的测试(毕竟算法出错炸个机就是几百块钱,多么痛的领悟)。由于项目才开源不久,相关资料少的可怜,自己捣鼓了两天也算是编译通过了,在这里分享一下搭建过程(Windows10 + VS2015)。

1.配置需求

Intel Core i7 or equivalent PC with 32GB of RAM and a SSD and GPU with at least 4GB of RAM. Large environments in Unreal requires a lot of RAM and a beefy GPU card. The typical computer hardware we use for development purposes usually have 6 to 12 cores and graphics card such as NVidia TitanX or NVidia GTX 1080 with 32GB to 64GB RAM and fast SSD. See why fast SSD.

这是官方对电脑要求的描述。简单来说,虚幻4引擎十分强大,对硬件配置要求较高,AirSim在此环境下模拟,配置要求自然不低。不过笔者经过测试,E3+960还是可以轻松运行的。

除了电脑,还需要准备一个遥控器和接收机,以及飞行控制板(pixhawk or pixhawk mini),这里官方支持使用手柄替代,不过笔者没有做过测试,就不深入讨论了。

2.虚幻引擎安装

从 虚幻4官网 注册并下载引擎客户端,添加4.14.3版本的引擎

引擎版本选择4.14.3

同时也需要下载一个场景。笔者选用了和官方教程中相同的山脉景观(其实是原来下载过了,不用耗时间下载~)

选择山脉景观

然后虚幻引擎这边就可以暂时搁置一下,进行下一步。

2.配置eigen

eigen是开源的C++矩阵计算工具。这里由于篇幅我们不展开讨论eigen。只关注如何配置。首先下载eigen ,新建一个文件夹,命名为eigen,并设置环境变量 EIGEN_ROOT 指向该文件夹。

EIGEN_ROOT

将下载后的ZIP文件解压到该文件夹并重命名为eigen3。 这样eigen的配置就结束了。

3.配置Boost

Boost库是一个可移植、提供源代码的C++库。这里由于篇幅我们也不展开讨论Boost。只关注如何配置。首先下载Boost 并将其解压,设置环境变量 BOOST_ROOT 指向解压后的文件夹。

BOOST_ROOT

打开 VS2015 x64 Native Command Prompt 如图

这里写图片描述

输入 cd %BOOST_ROOT% 进入Boost目录,然后运行 bootstrap.bat

 Native Command Prompt 操作

随后运行b2 variant=debug,release link=static runtime-link=shared threading=multi address-model=64

运行

然后大概需要等待20分钟(视机器配置而定)

运行结果

配置成功。

3.在vs2015中获取AirSim源码

好了,做了这么多准备工作了,该接触AirSim了。打开Visual Studio,在团队资源管理器中点击克隆(自行安装github组件),URL输入https://github.com/Microsoft/AirSim,设置好工程目录点击克隆。

克隆源码

克隆成功

这个就是AirSim的源码。
按下 win+R 运行cmd,进入你的工程目录,运行build.cmd。安照官方的教程,如果完整执行上面所有步骤,此处应该会构建成功。但是我们使用他人开源程序时,往往在编译这一步都会遇到各种问题,以至于最终放弃。不过不要心急,这是由于每个人的系统环境不一样导致的。笔者在这里也遇到了不少麻烦。第一次运行是报错 ‘MSBuild’不是内部或外部命令,也不是可运行的程序。这个问题非常好解决,问题是MSBuild所在的目录未添加至环境变量所导致的,找到根目录,添加到path路径下即可。

path路径

随后编译还出现了缺少 rpc_error.h 的错误,这里应该是源代码缺少组件的问题,在https://github.com/rpclib/rpclib下载工程文件,然后再vs中添加即可包含目录即可

rpc_error.h

随后笔者遇到了一个很棘手的问题,如图

问题

这个是由于在使用他人工程时encoding不一致所导致的。在百度上搜索解决方案,尝试打开half.h并以utf-8重新储存但是仍然出错。最后不得已求助Chris大佬。

Chris大佬的回复

这里Chris发现是由于eigen的版权声明部分使用了非UTF-8编码的双引号,替换即可,同时也意外的发现vs2015的一个小BUG,就是以UTF-8重新储存文件时似乎对注释不起作用。

万恶之源

Bug

至此我们再执行build.cmd 便可顺利编译代码。这里由于之前成功编译过,所以都跳过了。

成功编译

4.对PIXHAWK进行更新

国内目前pix都使用mission planner刷apm固件,AirSim官方使用PIX原生固件进行测试,我们也将pixhawk固件进行更新,下载 qgroundcontrol,连接pix,可以参照网上教程进行更新以及校准。
Install the PX4 firmware v1.4.4 from github. The later releases have a bug that we are working with PX4 team to fix. See this initial firmware setup video that shows up to install new firmware.
官方这里测试的是 1.44版本,笔者测试了最新版本,暂时没有发现异常,可放心使用。这里有一点比较重要,机架选择时要选择HIL Quadrocopter X ,这是一个用于模拟的机架类型。

HIL Quadrocopter X

5.在虚幻4中建立工程。

新建一个C++工程,注意名字不能有中文

新工程

将刚刚编译好的Plugins文件夹(../Unreal/Plugins)考到我们新建工程的根目录下,然后我们需要将之前下载的场景导入该工程。 复制LandscapeMountains文件夹中的DerivedDataCache至新建工程文件夹目录,将Content文件夹中的Assets和Maps也复制到新工程的Content文件夹中。然后
打开新工程文件Config文件夹下的DefaultEngine.ini,将场景工程中DefaultEngine.ini不同的内容复制过来。

DefaultEngine.ini

最后,我们打开新建工程根目录下的.uproject文件,将代码修改如下:

  {    "FileVersion": 3,    "EngineAssociation": "4.14",    "Category": "",    "Description": "",    "Modules": [        {            "Name": "airsim",            "Type": "Runtime",            "LoadingPhase": "Default",            "AdditionalDependencies": [                "AirSim"            ]        }    ],    "Plugins": [        {            "Name": "AirSim",            "Enabled": true        }    ]} 

其中“Name”为你项目的名称
然后在用虚幻打开我们刚刚修改的工程文件,刷新vs项目

刷新vs项目

然后再世界设置中将Game Mode设置为SimGameMode

设置

最后将原工程中的player start删至一个,并将其放置到水平地面上。

player start

将PIX通过USB连接电脑,打开遥控,点击播放。享受你的模拟飞行之旅吧~

成功

笔者目前只做到了这一步,后续将在该平台上调试笔者的视觉定位程序。本篇博客多数内容与官方教程相同,https://github.com/Microsoft/AirSim 大家可以参照着看。

2 0
原创粉丝点击