Ubuntu下安装UE和AirSim并使用UE4.27编译C++项目

Posted 小白代码进阶之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下安装UE和AirSim并使用UE4.27编译C++项目相关的知识,希望对你有一定的参考价值。

一、安装虚幻UnrealEngine4.27.2

1.1 从GitHub下载Source code(tar.gz)

下载地址:https://github.com/EpicGames/UnrealEngine/releases

1.2 安装UE

cd UnrealEngine
./Setup.sh
./GenerateProjectFiles.sh
make

二、安装AirSim

2.1 从GitHub下载AirSim 1.8.1-Linux Source code(tar.gz)

下载地址:https://github.com/microsoft/AirSim/releases

2.2 安装

在setup时,要下载一个压缩包,经常会失败,可从百度网盘下载

链接:https://pan.baidu.com/s/1ljUtlefo8gHzfsYmHad9Eg?pwd=eu2d
提取码:eu2d

用文本编辑器打开setup.sh,找到

wget  https://github.com/Microsoft/AirSim/releases/download/v1.2.0/car_assets.zip

替换成你路径下的该压缩包

cp path/car_assets.zip  car_assets.zip

运行

cd AirSim
./setup.sh
./build.sh

三、Ubuntu下UE4打开C++工程项目

用vscode打开你的C++工程项目project,选择左侧调试

在下拉选项中选择projectEditor DebugGame选项,进行编译

编译成功!

此时可将AirSim/Unreal/Environments/Blocks 文件夹进行编译 测试AirSim是否安装成功

四、将AirSim应用到自己的场景中

将AirSim/Unreal/Plugins文件夹复制,粘贴到自己的Project文件夹下

编辑project.uproject,添加AirSim相关内容使其看起来像这样


    "FileVersion": 3,
    "EngineAssociation": "4.27",
    "Category": "Samples",
    "Description": "",
    "Modules": [
        
            "Name": "LandscapeMountains",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "AdditionalDependencies": [
                "AirSim"
            ]
        
    ],
    "Plugins": [
        
            "Name": "AirSim",
            "Enabled": true
        
    ]

之后重新编译整个项目即可

打开UE后,找到窗口中的世界场景设置,选择游戏模式AirSimGameMode

运行即可

Ubuntu18.04搭建AirSim+ROS仿真环境

AIRSIM在UBuntu 18.04上构建的官网文档

一、安装UE4引擎

AIRSIM是依赖于UE4引擎实现的,因此在安装AIRSIM之前要安装UE4引擎。

1、获取UE4的github许可

在Ubuntu上安装UE4引擎需要从源文件进行编译,因此我们需要访问UE4的github仓库。但想要访问UE4的github仓库,我们就必须建立github与UE4许可的链接,否则直接访问UE4的github仓库时就会404 Not Found。

首先在虚幻4官网注册账号,注册好账号之后进入个人/CONNECTIONS/ACCUNTS中,选择GITHUB进行关联,关联好后会EPIC会发送邮件到github账号邮箱中邀请你加入开发团队,在github上接受邀请后即可获取UE4的github仓库访问许可。这个时候再进入UE4的github仓库就可以正常进入了。

2、安装UE4

根据AIRSIM官方文档推荐,我选择下载4.25版本的UE4(更具体的是4.25.3,这是4.25的最新版本)

下载文件后解压,打开终端,执行以下命令进行编译,注意编译期间会下载几十GB资源,且不要使用make -j指令加速

1.进入工程文件夹

cd UnrealEngine-4.25.4-release/

2.运行脚本,配置依赖环境

./Setup.sh
//运行成功输出信息
**********  SUCCESS ****************
Setup successful.

3.运行工程配置脚本

./GenerateProjectFiles.sh
//运行成功输出信息
Setting up Unreal Engine 4 project files...

Fixing inconsistent case in filenames.
Setting up Mono
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Writing project files... 100%
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Generating data for project indexing... 100%
Writing project files... 100%

4.编译UE4

make

报错如下

Using llvm-ar : /home/zhangman/UnrealEngine-4.25.4-release/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v16_clang-9.0.1-centos7/x86_64-unknown-linux-gnu/bin/llvm-ar
Using fast way to relink  circularly dependent libraries (no FixDeps).
------------------------------
ERROR: Cannot use an old toolchain (missing ToolchainVersion.txt file, assuming version earlier than v11)
Makefile:307: recipe for target 'CrashReportClient-Linux-Shipping' failed
make: *** [CrashReportClient-Linux-Shipping] Error 6

根据这篇博客使用如下命令解决,其中命令前后两个部分的v15_clang-8.0.1-centos7要替换成报错中显示的版本,我这里是v16_clang-9.0.1-centos7

echo "v15_clang-8.0.1-centos7" > Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v15_clang-8.0.1-centos7/ToolchainVersion.txt

二、安装AirSim

1.克隆仓库

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

这一步可能会遇见如下报错

error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败

这是由于墙限制了文件传输大小,运行如下命令即可解决

git config --global http.postBuffer 524288000

这个时候在运行git clone https://github.com/Microsoft/AirSim.git可能会报错

fatal: unable to access 'https://github.com/Microsoft/AirSim.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.

这时候需要讲上述命令中的https更改为git,即可成功克隆

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

这几个问题发生的原因还不清楚,只是实测这样的解决办法可行,有清楚的大佬还麻烦评论区告知

2.配置AirSim依赖环境

使用AirSim中的setup.sh来配置依赖环境

cd AirSim
./setup.sh

成功输出如下

************************************
AirSim setup completed successfully!
************************************

3.编译AirSim

编译AirSim有两种模式可以选择,release在编译过程中会优化代码使得AirSim达到最优性能,但如果后期要对AirSim进行二次开发时候会难以分析测试。debug则不会优化代码,但方便后期二次开发调试。

./build.sh #普通release编译
./build.sh --debug #to build in debug mode

成功输出如下

==================================================================
 AirSim plugin is built! Here's how to build Unreal project.
==================================================================
If you are using Blocks environment, its already updated.
If you are using your own environment, update plugin using,
rsync -a --delete Unreal/Plugins path/to/MyUnrealProject

For help see:
https://github.com/Microsoft/AirSim/blob/master/docs/build_linux.md
==================================================================

三、UE + AirSim联合测试

1、车辆仿真测试

1.开启UE4引擎

cd UnrealEngine-4.25.4-release/Engine/Binaries/Linux
./UE4Editor

2.打开AirSim项目

点击界面中的更多,选择/AirSim/Unreal/Environments/Blocks/下面的Blocks uproject工程文件,点击打开项目。首次打来会提示The project was made with a different version of the Unreal Engine,要求进行转换,点击Convert in-place(原位转换)来进行项目转换,转换完成后,UE4会重新加载,进入到项目仿真页面中

3.仿真验证

点击运行,出现提示选择yes为车辆仿真,选择no为无人机仿真,这里选择yes,仿真项目中会出现一辆车,按上下左右键可以控制起运行,即运行正常。

2、无人机仿真测试

1.打开AirSim无人机仿真界面

同上,当提示选择yes为车辆仿真,选择no为无人机仿真时选择no,界面出现四旋翼无人机一台

2.运行无人机控制脚本

官方提供的测试控制脚本需要在Python3的环境下运行,如果Ubuntu中安装了ROS,其自带版本是Python2.7,因此我这里使用了conda为AIRSIM创建了一个新环境

conda create --name AIRSIM python=3.6
conda activate AIRSIM

安装两个依赖

pip install opencv-python
pip install msgpack-rpc-python

运行无人机控制脚本

cd ~/AirSim/PythonClient/multirotor
python hello_drone.py 

无人机成功起飞,终端输出控制信息

...
    'velocity': <Vector3r>    'x_val': 0.0,
    'y_val': 0.0,
    'z_val': 0.0,
    'is_valid': True,
    'time_stamp': 1640574634647096064
Press any key to takeoff

四、AIRSIM的ROS功能包测试

1、编译AIRSIM

官方文档中需要编译AIRSIM,但我们前面安装AIRSIM的时候已经编译过了,因此我认为这一步应该不是必要的,但还是按照官方来吧

cd AirSim;
./setup.sh;
./build.sh --debug

2、编译AIRSIM的ROS包

1.安装GCC-8和G+±8

sudo apt install gcc-8
sudo apt install g++-8

注意,虽然我们安装了gcc-8和g++ -8,但其默认版本仍是7,因此后面编译的时候应手动指明起版本

2.编译ROS包

cd ros
catkin build -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8

成功输出

[build] Summary: All 3 packages succeeded!                                     
[build]   Ignored:   None.                                                     
[build]   Warnings:  1 packages succeeded with warnings.                       
[build]   Abandoned: None.                                                     
[build]   Failed:    None.                                                     
[build] Runtime: 48.6 seconds total.                                           
[build] Note: Workspace packages have changed, please re-source setup files to use them.

3.更新环境变量

source devel/setup.bash

4.测试

更新环境变量后运行

roslaunch airsim_ros_pkgs airsim_node.launch

不报错

roslaunch airsim_ros_pkgs rviz.launch

不报错,正确打开rviz,则说明编译成功

五、UE4+AIRSIM+ROS联合运行

1.拷贝setting文件

这一步应该是AIRSIM在运行仿真的时候,只会从Documents/AirSim路径下读取settings.json文件作为仿真配置,因此我们需要讲AIRSIM提供的测试配置文件拷贝到该路径下

cd AirSim/ros/src/airsim_tutorial_pkgs/settings
cp front_stereo_and_center_mono.json ~/Documents/AirSim/settings.json

2.使用UE4运行AIRSIM仿真环境

cd UnrealEngine-4.25.4-release/Engine/Binaries/Linux/
./UE4Editor

选择AIRSIM工程文件运行,由于我们的配置文件是针对无人机的,因此我们选择无人机仿真页面

3.开启AIRSIM的node节点

打开新终端

cd AirSim/ros
source devel/setup.bash
roslaunch airsim_ros_pkgs airsim_node.launch

4.运行无人机控制节点

打开新终端

cd AirSim/ros
source devel/setup.bash
roslaunch airsim_tutorial_pkgs front_stereo_and_center_mono.launch

rviz中正常显示无人机传感器数据,测试成功

六、仿真配置

1、更改仿真环境

AIRSim已经为我们搭建了一些仿真环境,我们可以到其网站下载

下载好后解压,以AIRSIMNH环境为例,进入如下路径运行仿真环境

cd AirSimNH/LinuxNoEditor
./AirSimNH.sh

然后参照第五节中的3小节和4小节即可完成新仿真环境中的传感器数据获取

2、更改仿真模型车辆或飞机参数

请更改~/Documents/AirSim路径下的settings.json文件,注意文件名需要保持为settings.json,AIRSIM在进行仿真的时候默认从该文件加载仿真车辆或飞机参数。

具体修改方法见[官方文档](

以上是关于Ubuntu下安装UE和AirSim并使用UE4.27编译C++项目的主要内容,如果未能解决你的问题,请参考以下文章

Windows11安装UE4+Airsim

基于UE4 的AirSim虚拟仿真

零基础同学的福利,带你走进Airsim 的大门

技术分享 | Airsim初探-用游戏引擎做仿真

UE4入门软件安装教程

UE4 打包详细流程