GitHub项目网址 https://github.com/microsoft/AirSim,官方安装教程页面 https://github.com/microsoft/AirSim/blob/master/docs/Unity.md
1. 下载及安装Unity3D
1.1 去Unity3D中国官网页面下载Unity3D https://unity.cn/releases/full/2019,页面下滑找到2019.3.12版本,AirSim版本是19.3.12版本,然后选择【从Hub下载】,Unity Hub是Unity 3D项目管理以及模块安装的管理器。
1.2 此时会下载Unity Hub,下载后安装,安装后会有一个指导安装Unity的界面(如果没有跳出来更好),没有2019.3.12版本可以选择的话就关闭Unity Hub,去官网下载,如果有该版本,则一直按照操作最后来到【Launch Unity】菜单,如下图,如果此时界面底部没有进度条则需关闭该窗口重新安装Unity。
1.3 重新去官网 https://unity.cn/releases/full/2019,下滑找到2019.3.12版本选择【从 Hub下载】,此时网页会弹出窗口问我们是否【打开Unity Hub】,打开Unity Hub。
1.4 此时来到Unity Hub下载安装Unity 3D的页面,如下图,勾选“Microsoft Visual Studio Community 2019”,“Universal Windows Platform Build Support”,“Windows Build Support”以及“简体中文”
1.5 此时点击安装会来到如下页面,我已经安装好了,所以这里以2018截图示例 ,该页面可以更改安装目录;第二个页面创建账户或有账户直接登录,而且此时可以看到界面底部有进度条,说明Unity 3D开始下载。
1.6 第三个页面是选择示例项目,因为这示例项目比较旧,我们安装的Unity版本较高,所以后面会报错,可以不选(我第一次安装选了卡丁车,所以你看看可不可以不选) ;接着来到最后一个页面,等待Unity下载完成,界面底部有进度条。
1.7 界面过程中会安装.Net FrameWork框架以及安装Visual Studio 2019,最后安装完成可以直接点击Launch Unity运行。
2. 下载及编译AirSim
2.1 去AirSim项目的GitHub网址 https://github.com/microsoft/AirSim 下载项目,然后解压到目录AirSIm。此时我们在【开始】菜单中打开 x64 Native Tools Command Prompt for VS 2019,输入图中命令进入到 D:\Soft\Unity3D\Project\AirSim\Unity 目录(换成你自己的目录),并且输入build.cmd对AirSim编译。
2.2 此时会遇到报错,没有则跳过此步,如下图所示,无法打开"stdio.h"和"float.h"等基本库文件。
解决方案:安装【使用C++的桌面开发】模块和【Windows10 SDK 10.0.18362】。【开始】菜单打开 Visual Studio Installer,点击“修改”。
勾选下图中的【使用C++的桌面开发】和【Windows 10 SDK 10.0.18362.0】版本模块,并点击右下角“修改”即可。安装完成后随便新建一个C++程序,此时右键工程打开属性,可以看到此时多了Windows 10.0.18362版本的选项
2.3 此时继续运行 build.cmd会遇到无法打开包括文件: “Eigen/Dense”,没有报错则跳过
解决方案:安装Eigen库,去Eigen官网 http://eigen.tuxfamily.org/index.php?title=Main_Page#Download 下载Eigen库,选择Eigen 3.3.7发行版本,并且在右边选择一种压缩包形式,比如zip。
下载解压后,将文件夹中的Eigen文件拷贝至 D:\Soft\Unity3D\Project\AirSim\AirLib\deps目录下(根据你自己的安装目录、工程目录更改),如下图,此时即可编译成功
2.4 此时重新运行build.cmd会报错,无法打开包括文件: “rpc/client.h”,没有报错则跳过。
解决方案: 去GitHub项目网址 https://github.com/rpclib/rpclib 下载rpclib库,解压后将include目录放在 D:\Soft\Unity3D\Project\AirSim\AirLib\deps\rpclib 目录下即可。
2.5 此时运行build.cmd还会报错,无法打开输入文件“rpc.lib”,没有报错则跳过。
解决方案:AirSim项目需要rpc.lib库,所以我们需要rpc.lib库。编译过程有点复杂,要是嫌麻烦,可以直接去我主页下载。
2.5.1 从cmake官网 https://cmake.org/download/下载cmake-3.17.5-win64-x64.msi版本的安装程序,下载后正常安装即可。
2.5.2 打开cmake, 选择要编译的源目录以及编译的输出文件存放目录(我这里新建了一个buildlib目录),如下图所示,然后依次点击【Configure】和【Generate】就可以在buildlib目录中看到编译生成的项目文件。
此时双击 rpc.sln打开rpc项目,右键【rpc】选择重新生成,注意编译类型及平台要和使用rpc.lib文件的项目一致,因为AirSim的编译类型是Release和x64平台,所以这里的选择也是如此。
编译完成后可在rpclib\buildlib\Release目录下看到生成的rpc.lib文件,如下图。
2.6 此时重新运行build.cmd即可成功编译,如下图。
2.7 打开Unity Hub,在【项目】菜单点击右边的【添加】,选择AirSim的UnityDemo文件夹导入示例项目
然后点击Unity 3D的左下界面的Project中Assets的Scenes ,双击SimModeSelector,然后点击【play】符号,再选择【Car Mode】即可加载一辆车,此时可通过键盘的AWSD键或者上下左右键控制车的运动,完成。
2.8 运行效果(转成GIF,模糊度有点高,意思一下)
2.9 运行python客户端python hello_car.py文件查看小车的速度、转向等参数报错
filename = os.path.join(tmp_dir, f"{idx}_{response.image_type}_{response_idx}") SyntaxError: invalid syntax
logging.error(f"Writing PNG file {filename} failed") SyntaxError: invalid syntax
解决方案:将字符串引号前的 f 去掉,可能是python不同版本导致的,我用的是python3.5。