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仿真环境
一、安装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++项目的主要内容,如果未能解决你的问题,请参考以下文章