【前言(可省略不看)】
AirSim的使用著實(shí)是一件麻煩事,我的配置過(guò)程可謂是坎坷重重。原因在于AirSim對(duì)于電腦要求較高,所以即使我手頭有一個(gè)Interl mini PC,但是由于沒有獨(dú)立顯卡,也沒有辦法實(shí)現(xiàn)在Ubuntu環(huán)境下使用AirSim。而電腦又不太想裝雙系統(tǒng),并且在VMware虛擬機(jī)里面沒有辦法使用電腦的獨(dú)立顯卡,因此也不能使用AirSim。
所以我的方法是:在Windows上部署WSL2子系統(tǒng),在WSL2上面安裝Ubuntu系統(tǒng)(實(shí)際上WSL2就是一個(gè)虛擬機(jī),但是它是由windows開發(fā)的一個(gè)基于windows的子系統(tǒng),各種環(huán)境以及接口比vmware虛擬機(jī)要來(lái)的方便多了,也正因?yàn)槿绱耍瑆sl2中可以使用到電腦的顯卡資源),在Ubuntu上面運(yùn)行ros程序,在windows上面運(yùn)行airsim仿真,兩者通過(guò)airsim官方給出的airsim-ros-wrapper內(nèi)置的網(wǎng)絡(luò)通信進(jìn)行通信溝通,從而實(shí)現(xiàn)曲線救國(guó),也是不太傷害電腦并且運(yùn)行效果還不錯(cuò)的一種方案。
整體的安裝流程如下:
我的環(huán)境版本如下:
windows10-wsl2-ubuntu20.04-ros noetic
1.在windows上面部署好UE4+AirSim聯(lián)合仿真環(huán)境
具體配置方法看我上一篇文章:【番外】在Windows安裝Airsim/UE4踩坑合集
2.在windows上面部署wsl2系統(tǒng)以及在wsl2上面部署ubuntu系統(tǒng)
一種辦法是按照官方給出的方法,從頭開始一步一步做,是比較省事的:
官方步驟:Windows系統(tǒng)安裝WSL2
但是這個(gè)帶來(lái)的問(wèn)題是,官方這種方法只能將wsl2系統(tǒng)安裝在C盤,也就是之后的ubuntu也要在C盤,那么之后想在WSL2上面裝一些軟件之類的或者安裝包之類的,內(nèi)存就會(huì)受很大限制,所以可以按照這位博主的操作安裝到其他盤:
Win10自定義路徑位置安裝WSL2 (Ubuntu 20.04) 并配置CUDA
3.安裝好ubuntu系統(tǒng)之后,目前只能在命令行操作,所以又需要安裝圖形界面
可以按照這個(gè)UP的步驟來(lái):
WSL2 Ubuntu+gnome圖形界面的安裝血淚史(親測(cè)有效)
按照他的步驟做完第三步和第四步就可以。
但是做完之后會(huì)發(fā)現(xiàn)gnome這個(gè)框架之下rviz打開后一般會(huì)卡死或者閃退。如果沒有rviz需求的同學(xué)就可以這樣不管了,但是如果要用rviz的話,就需要解決這個(gè)問(wèn)題。
我的方法是換成Xfce4桌面環(huán)境。
這里插一句,這些東西之間是什么關(guān)系:
Xfce4和gnome都是一種桌面環(huán)境框架,是一種安裝在wsl里面的為了顯示ubuntu桌面的框架。而安裝的VcXsrv 是一個(gè)顯示軟件,用于將Xfce4和gnome傳輸出來(lái)的顯示信息顯示在該軟件上。所以無(wú)論wsl里面裝的是gnome還是Xfce4,外部都用VcXsrv軟件進(jìn)行顯示。
方法:
終端輸入:
sudo apt-get install xfce4
中間會(huì)跳出一個(gè)頁(yè)面問(wèn)你選擇什么管理器,隨便選哪個(gè)都行。我選擇的是第一個(gè)。
我們需要知道本機(jī)地址,在powershell或者cmd中輸入
ipconfig
此時(shí)有兩種選擇,將圖像傳輸回WSL的虛擬地址或是直接的本機(jī)地址。如下是虛擬地址的版本,本機(jī)地址也是取相應(yīng)的IPv4地址即可。
我們需要在.bashrc文件中添加一行輸出地址. (在Ubuntu下輸入)
echo "export DISPLAY=172.21.16.1:0.0" >> ~/.bashrc
其中 “172.21.16.1” 就是你剛剛得到的ipv4地址,不要忘記寫后面的 :0.0
如果要修改這個(gè)IP參數(shù)的話,需要修改 ~/.bashrc 文件,有很多種可以在Terminal中編輯文件的方法,比如筆者使用的vim。
如果沒有vim可以先安裝vim。
sudo apt-get install vim
安裝結(jié)束后就就可以打開了,輸入
vim ~/.bashrc
按 i 進(jìn)入編輯模式。
修改之后按下 Esc 在輸入 :wq 就可以保存回到Terminal里。
其他vim的指令可以查閱: Linux vi/vim | 菜鳥教程 (runoob.com)
之后重新載入一下這個(gè)文件 (這個(gè)指令后面會(huì)用到很多次,因?yàn)檫@樣就不需要重新打開個(gè)新的Terminal了)
source ~/.bashrc
之后,在VcXsrv啟動(dòng)的狀態(tài)下,在終端運(yùn)行如下代碼啟動(dòng)桌面:
startxfce4
然后運(yùn)行g(shù)azebo和rviz發(fā)現(xiàn)閃退的問(wèn)題解決了。
如果無(wú)法正確輸出并顯示類似如下提示,可以添加 -ac 參數(shù)到 Xlaunch中
我的Xlaunch配置是這樣的:
之后保存就可以彈出VcXsrv窗口了。
但是還有新的問(wèn)題,那就是兩個(gè)軟件中間都是黑屏的,沒有任何顯示,沒有網(wǎng)格,也沒有灰色的背景,并且會(huì)在運(yùn)行時(shí)有如下的報(bào)錯(cuò):
原因是:
windows端沒有配置使得獨(dú)立顯卡可以作用于wsl2系統(tǒng)中,所以wsl2系統(tǒng)中所有需要圖形渲染的軟件都沒有辦法正常使用。解決方法是打開windows端獨(dú)立顯卡對(duì)于wsl2的權(quán)限:
WSL2 設(shè)置使用獨(dú)顯
之后就正常顯示了。
如果還是有顯示問(wèn)題,嘗試將下面兩個(gè)代碼加入你的bashrc文件中:
export LIBGL_ALWAYS_SOFTWARE=1
export LIBGL_ALWAYS_INDIRECT=0
是開啟硬件加速和直接渲染。之后應(yīng)該就沒有問(wèn)題了。
4.在WSL2-Ubuntu系統(tǒng)中安裝ros系統(tǒng)
這一步老生常談了,沒什么問(wèn)題,就不展開了。
5.在WSL2-Ubuntu系統(tǒng)中部署airsim:
參考官方文檔:How to run Airsim on Windows and ROS wrapper on WSL
如果不想每次進(jìn)入終端都輸入一次export WSL_HOST_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
,就把他加到你的bashrc文件中去。
題外話:這里如果你想用雙機(jī)配置。即:一臺(tái)電腦是windows-ue4-airsim仿真,一臺(tái)電腦是ubuntu-ros作為控制,那么此處你在ubuntu系統(tǒng)上的操作就類似于wsl的操作,也就是在運(yùn)行之前加一句:
export WSL_HOST_IP=127.0.0.1
即可。其中的IP地址是你的windows端電腦的IP,要保證兩臺(tái)電腦運(yùn)行在同一個(gè)局域網(wǎng)之下并且可以ping通。理論上來(lái)說(shuō)是沒問(wèn)題的。但是我這樣試過(guò)了,沒有成功,如果有大佬做成功了也麻煩踢我一下謝謝。
6.運(yùn)行demo步驟
1.在windows端打開LandscapeMountains.sln
工程文件,并且點(diǎn)擊"開始調(diào)試",在UE4啟動(dòng)之后,點(diǎn)擊開始仿真,則此時(shí)airsim插件已經(jīng)開始運(yùn)行,已經(jīng)打開windows端的 41451 端口,并監(jiān)聽這個(gè)端口的需求。
你可以在開始仿真之后在cmd中運(yùn)行如下命令,查看是否如此:
netstat -ano | findstr 端口號(hào)
比如該情境中我們輸入:
netstat -ano | findstr 41451
可以看到:
顯示處于listening狀態(tài),也就是監(jiān)聽狀態(tài)。
2.打開wsl2-Ubuntu系統(tǒng)
輸入startxfce4
打開GUI界面
確保bashrc文件像我這樣配置好(最后一行的IP一定要寫你自己的IP):
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export XDG_SESSION_TYPE=x11
export LIBGL_ALWAYS_SOFTWARE=1
export WSL_HOST_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
source /opt/ros/noetic/setup.bash
export LIBGL_ALWAYS_INDIRECT=0
export DISPLAY=172.21.16.1:0.0
打開終端
進(jìn)入根目錄:
cd ~
進(jìn)入AirSim工作空間:
cd AirSim/
cd ros
運(yùn)行:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-827398.html
source devel/setup.bash
roslaunch airsim_ros_pkgs airsim_node.launch output:=screen host:=$WSL_HOST_IP
roslaunch airsim_ros_pkgs rviz.launch
成功運(yùn)行界面如下:
WSL端:
UE4端:
可以查看一下現(xiàn)有的rostopic:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-827398.html
到了這里,關(guān)于【番外】【Airsim in Windows & ROS in WSL2-Ubuntu20.04】環(huán)境配置大全的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!