AIRSIM在UBuntu 18.04上構(gòu)建的官網(wǎng)文檔
一、安裝UE4引擎
AIRSIM是依賴(lài)于UE4引擎實(shí)現(xiàn)的,因此在安裝AIRSIM之前要安裝UE4引擎。
1、獲取UE4的github許可
在Ubuntu上安裝UE4引擎需要從源文件進(jìn)行編譯,因此我們需要訪問(wèn)UE4的github倉(cāng)庫(kù)。但想要訪問(wèn)UE4的github倉(cāng)庫(kù),我們就必須建立github與UE4許可的鏈接,否則直接訪問(wèn)UE4的github倉(cāng)庫(kù)時(shí)就會(huì)404 Not Found。
首先在虛幻4官網(wǎng)注冊(cè)賬號(hào),注冊(cè)好賬號(hào)之后進(jìn)入個(gè)人/CONNECTIONS/ACCUNTS中,選擇GITHUB進(jìn)行關(guān)聯(lián),關(guān)聯(lián)好后會(huì)EPIC會(huì)發(fā)送郵件到github賬號(hào)郵箱中邀請(qǐng)你加入開(kāi)發(fā)團(tuán)隊(duì),在github上接受邀請(qǐng)后即可獲取UE4的github倉(cāng)庫(kù)訪問(wèn)許可。這個(gè)時(shí)候再進(jìn)入U(xiǎn)E4的github倉(cāng)庫(kù)就可以正常進(jìn)入了。
2、安裝UE4
根據(jù)AIRSIM官方文檔推薦,我選擇下載4.25版本的UE4(更具體的是4.25.3,這是4.25的最新版本)
下載文件后解壓,打開(kāi)終端,執(zhí)行以下命令進(jìn)行編譯,注意編譯期間會(huì)下載幾十GB資源,且不要使用make -j指令加速
1.進(jìn)入工程文件夾
cd UnrealEngine-4.25.4-release/
2.運(yùn)行腳本,配置依賴(lài)環(huán)境
./Setup.sh
//運(yùn)行成功輸出信息
********** SUCCESS ****************
Setup successful.
3.運(yùn)行工程配置腳本
./GenerateProjectFiles.sh
//運(yùn)行成功輸出信息
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
報(bào)錯(cuò)如下
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
根據(jù)這篇博客使用如下命令解決,其中命令前后兩個(gè)部分的v15_clang-8.0.1-centos7要替換成報(bào)錯(cuò)中顯示的版本,我這里是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.克隆倉(cāng)庫(kù)
git clone https://github.com/Microsoft/AirSim.git
這一步可能會(huì)遇見(jiàn)如下報(bào)錯(cuò)
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
fatal: 過(guò)早的文件結(jié)束符(EOF)
fatal: index-pack 失敗
這是由于墻限制了文件傳輸大小,運(yùn)行如下命令即可解決
git config --global http.postBuffer 524288000
這個(gè)時(shí)候在運(yùn)行git clone https://github.com/Microsoft/AirSim.git
可能會(huì)報(bào)錯(cuò)
fatal: unable to access 'https://github.com/Microsoft/AirSim.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
這時(shí)候需要講上述命令中的https更改為git,即可成功克隆
git clone git://github.com/Microsoft/AirSim.git
這幾個(gè)問(wèn)題發(fā)生的原因還不清楚,只是實(shí)測(cè)這樣的解決辦法可行,有清楚的大佬還麻煩評(píng)論區(qū)告知
2.配置AirSim依賴(lài)環(huán)境
使用AirSim中的setup.sh來(lái)配置依賴(lài)環(huán)境
cd AirSim
./setup.sh
成功輸出如下
************************************
AirSim setup completed successfully!
************************************
3.編譯AirSim
編譯AirSim有兩種模式可以選擇,release在編譯過(guò)程中會(huì)優(yōu)化代碼使得AirSim達(dá)到最優(yōu)性能,但如果后期要對(duì)AirSim進(jìn)行二次開(kāi)發(fā)時(shí)候會(huì)難以分析測(cè)試。debug則不會(huì)優(yōu)化代碼,但方便后期二次開(kāi)發(fā)調(diào)試。
./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聯(lián)合測(cè)試
1、車(chē)輛仿真測(cè)試
1.開(kāi)啟UE4引擎
cd UnrealEngine-4.25.4-release/Engine/Binaries/Linux
./UE4Editor
2.打開(kāi)AirSim項(xiàng)目
點(diǎn)擊界面中的更多,選擇/AirSim/Unreal/Environments/Blocks/下面的Blocks uproject工程文件,點(diǎn)擊打開(kāi)項(xiàng)目。首次打來(lái)會(huì)提示The project was made with a different version of the Unreal Engine
,要求進(jìn)行轉(zhuǎn)換,點(diǎn)擊Convert in-place(原位轉(zhuǎn)換)來(lái)進(jìn)行項(xiàng)目轉(zhuǎn)換,轉(zhuǎn)換完成后,UE4會(huì)重新加載,進(jìn)入到項(xiàng)目仿真頁(yè)面中
3.仿真驗(yàn)證
點(diǎn)擊運(yùn)行,出現(xiàn)提示選擇yes為車(chē)輛仿真,選擇no為無(wú)人機(jī)仿真
,這里選擇yes,仿真項(xiàng)目中會(huì)出現(xiàn)一輛車(chē),按上下左右鍵可以控制起運(yùn)行,即運(yùn)行正常。
2、無(wú)人機(jī)仿真測(cè)試
1.打開(kāi)AirSim無(wú)人機(jī)仿真界面
同上,當(dāng)提示選擇yes為車(chē)輛仿真,選擇no為無(wú)人機(jī)仿真
時(shí)選擇no,界面出現(xiàn)四旋翼無(wú)人機(jī)一臺(tái)
2.運(yùn)行無(wú)人機(jī)控制腳本
官方提供的測(cè)試控制腳本需要在Python3的環(huán)境下運(yùn)行,如果Ubuntu中安裝了ROS,其自帶版本是Python2.7,因此我這里使用了conda為AIRSIM創(chuàng)建了一個(gè)新環(huán)境
conda create --name AIRSIM python=3.6
conda activate AIRSIM
安裝兩個(gè)依賴(lài)
pip install opencv-python
pip install msgpack-rpc-python
運(yùn)行無(wú)人機(jī)控制腳本
cd ~/AirSim/PythonClient/multirotor
python hello_drone.py
無(wú)人機(jī)成功起飛,終端輸出控制信息
...
'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功能包測(cè)試
1、編譯AIRSIM
官方文檔中需要編譯AIRSIM,但我們前面安裝AIRSIM的時(shí)候已經(jīng)編譯過(guò)了,因此我認(rèn)為這一步應(yīng)該不是必要的,但還是按照官方來(lái)吧
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,但其默認(rèn)版本仍是7,因此后面編譯的時(shí)候應(yīng)手動(dòng)指明起版本
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.更新環(huán)境變量
source devel/setup.bash
4.測(cè)試
更新環(huán)境變量后運(yùn)行
roslaunch airsim_ros_pkgs airsim_node.launch
不報(bào)錯(cuò)
roslaunch airsim_ros_pkgs rviz.launch
不報(bào)錯(cuò),正確打開(kāi)rviz,則說(shuō)明編譯成功
五、UE4+AIRSIM+ROS聯(lián)合運(yùn)行
1.拷貝setting文件
這一步應(yīng)該是AIRSIM在運(yùn)行仿真的時(shí)候,只會(huì)從Documents/AirSim路徑下讀取settings.json文件作為仿真配置,因此我們需要講AIRSIM提供的測(cè)試配置文件拷貝到該路徑下
cd AirSim/ros/src/airsim_tutorial_pkgs/settings
cp front_stereo_and_center_mono.json ~/Documents/AirSim/settings.json
2.使用UE4運(yùn)行AIRSIM仿真環(huán)境
cd UnrealEngine-4.25.4-release/Engine/Binaries/Linux/
./UE4Editor
選擇AIRSIM工程文件運(yùn)行,由于我們的配置文件是針對(duì)無(wú)人機(jī)的,因此我們選擇無(wú)人機(jī)仿真頁(yè)面
3.開(kāi)啟AIRSIM的node節(jié)點(diǎn)
打開(kāi)新終端
cd AirSim/ros
source devel/setup.bash
roslaunch airsim_ros_pkgs airsim_node.launch
4.運(yùn)行無(wú)人機(jī)控制節(jié)點(diǎn)
打開(kāi)新終端
cd AirSim/ros
source devel/setup.bash
roslaunch airsim_tutorial_pkgs front_stereo_and_center_mono.launch
rviz中正常顯示無(wú)人機(jī)傳感器數(shù)據(jù),測(cè)試成功
六、仿真配置
1、更改仿真環(huán)境
AIRSim已經(jīng)為我們搭建了一些仿真環(huán)境,我們可以到其網(wǎng)站下載
下載好后解壓,以AIRSIMNH環(huán)境為例,進(jìn)入如下路徑運(yùn)行仿真環(huán)境
cd AirSimNH/LinuxNoEditor
./AirSimNH.sh
然后參照第五節(jié)中的3小節(jié)和4小節(jié)即可完成新仿真環(huán)境中的傳感器數(shù)據(jù)獲取
2、更改仿真模型車(chē)輛或飛機(jī)參數(shù)
請(qǐng)更改~/Documents/AirSim
路徑下的settings.json文件,注意文件名需要保持為settings.json,AIRSIM在進(jìn)行仿真的時(shí)候默認(rèn)從該文件加載仿真車(chē)輛或飛機(jī)參數(shù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-404297.html
具體修改方法見(jiàn)[官方文檔](文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-404297.html
到了這里,關(guān)于Ubuntu18.04搭建AirSim+ROS仿真環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!