一、概述
因为需要使用到Windows系统下的UE5和插件AirSIm进行研究,所以在Windows环境下进行配置。但又因为需要使用到ros进行操作,所以,在通过对诸多资源进行考察过后,因为UE5+plugins AirSim已经配置成功。只需要考虑跟ROS的通信以及使用即可。在ROS的官方网站上进行浏览过后,发现主要有两种方式,一种是直接在Windows系统上安装ROS2进行操作;另外一种是在Windows上构建Linux子系统的方式,通过wsl通信来做到两种系统之间的交互问题。
最后通过分析,先进行在Windows系统上对Linux子系统搭建的方式进行尝试。安装ROS在Ubuntu上的便捷程度要远低于Windows,同时,之前更多的操作都是基于Ubuntu上ROS操作系统。
二、具体安装过程
(一)主要参考
1.概述
详细操作步骤是参考这篇博客实现的,大致是按照这篇博客上的内容来操作的。中间出现了一些别的报错,将其修正后,发现可以正常运行。
【番外】【Airsim in Windows & ROS in WSL2-Ubuntu20.04】环境配置大全_ros安装 20.04 wsl-CSDN博客文章浏览阅读1.8k次,点赞20次,收藏35次。AirSim的使用着实是一件麻烦事,我的配置过程可谓是坎坷重重。原因在于AirSim对于电脑要求较高,所以即使我手头有一个Interl mini PC,但是由于没有独立显卡,也没有办法实现在Ubuntu环境下使用AirSim。而电脑又不太想装双系统,并且在VMware虚拟机里面没有办法使用电脑的独立显卡,因此也不能使用AirSim。_ros安装 20.04 wslhttps://blog.csdn.net/Gorege__Hu/article/details/135363194?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-2-135363194-blog-133937812.235%5Ev43%5Epc_blog_bottom_relevance_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-2-135363194-blog-133937812.235%5Ev43%5Epc_blog_bottom_relevance_base1&utm_relevant_index=3
2.配置
Windows11系统,虚幻引擎使用UE5.3,Ubuntu使用版本为20.04,所使用ROS的版本为noetic。
(二)WSL2的安装
1.方式一
WSL2的安装主要有两种方式,一种是安装安装官方网站的方式来安装,通过命令行来安装,使用管理员权限进入终端。在终端中输入下面代码即可。
wsl --install
Install WSL | Microsoft LearnInstall Windows Subsystem for Linux with the command, wsl --install. Use a Bash terminal on your Windows machine run by your preferred Linux distribution - Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine, and more are available.https://learn.microsoft.com/en-us/windows/wsl/install 需要特别注意的是,需要使用管理员权限进入终端。使用cmd或者powershell都可以。下面是使用powershell进入终端的方法。
如果是使用cmd进入终端的话,可以在c盘下面C:/Windows/System32/这个路径下面,找到cmd.exe程序,用管理员权限运行。
C:/Windows/System32/
在终端中输入命令后,等待即可,要是出现长时间没有反应的情况,即终端中没有其余显示,一直卡住,这个时候,将终端关闭重启电脑,再进行安装。
2.方式二
最后采用的方法是这种,这种方式更为简便。
如图所示,打开Windows系统的设置,找到——启用或关闭Windows功能这个,如图所示。
在出现的框中选择如图所示的这两项。这两项勾选上之后,会有提示需要重启电脑,再次打开电脑后即可配置完成。
这种方法更为简单。
(三)Ubuntu子系统的下载和安装
直接在微软的应用里面下载即可,由于电脑上的微软应用我一直打不开,这里我就在网页上进行下载。如图所示。
将20.04.6 LTS下载下来即可。
之后直接进行安装即可,安装会默认安装到C盘下面,在安装的提示中并没有出现可以修改位置的命令,需要参考其他博客,我这里就直接将其先安装到C盘下面了。
安装过程中会出现终端提示,需要我们输入Ubuntu程序的用户的姓名和密码,这个可以根据自己的想法来着设置。
如图所示,显示安装完成。
之后可以随时点开进行必要的操作。安装完成的Ubuntu系统仅仅只有一个终端可以进行操作,桌面这些需要额外进行安装。
(四) 一些软件安装提示
可以参考这篇博客,安装一些可供图形化编辑的软件。但仅仅安装这些可能还无法启动ROS中rviz和gazebo,之后会详细介绍如何操作。
Windows如何优雅的运行ROS2/linux - 古月居Windows如何优雅的运行ROS2/linux前言在ROS/ROS2开发过程中,大家普遍使用到的分布式开发方法都是基于虚拟机/双系统进行,本质上是希望基于Ubuntu良好的生态环境进行,但是两种方式各有各自的好处,也有各自的弊端,例如虚拟机很大而且并不能运行GPU;又比如双系统会导致个人数据碎片化(如想在ubuntu下使用微信/qq/word);基于一系列的理由了,笔者想在windowshttps://www.guyuehome.com/46574
(五)安装ROS
在Ubuntu20.04下面安装ROS可以参考B站这个up主的讲解。里面有视频下面有链接文档,直接复制里面的命令行操作更为简单。网络上安装ROS的操作资源有非常多。
【Autolabor初级教程】ROS机器人入门_哔哩哔哩_bilibili【Autolabor初级教程】ROS机器人入门共计367条视频,包括:001导论_Chapter1-ROS概述与环境搭建、002ROS诞生背景_Chapter1-ROS概述与环境搭建、003ROS概念_Chapter1-ROS概述与环境搭建等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?spm_id_from=333.999.0.0&vd_source=7bc99a661281559747708cbae463b6d6 如果出现无法下载的情况发生,可以参考这篇博客添加清华源或者阿里源。
ubuntu20.04换源_更换ubuntu 20.04源-CSDN博客文章浏览阅读216次,点赞4次,收藏5次。因为电脑没有接入外网,导致使用更新命令时候,一些外网的资源无法访问导致的。同时,国外的源下载速度过于缓慢,需要我们更换为国内的源进行后续尝试。_更换ubuntu 20.04源https://blog.csdn.net/GFCLJY/article/details/140161932 安装完成ROS之后,直接在终端中输入下面命令,即可安装vscode并启动
code .
(六)配置通讯链接
配置Ubuntu与Windows进行通信链接的方式,详细参考这篇博客
【番外】【Airsim in Windows & ROS in WSL2-Ubuntu20.04】环境配置大全_ros安装 20.04 wsl-CSDN博客文章浏览阅读1.8k次,点赞20次,收藏35次。AirSim的使用着实是一件麻烦事,我的配置过程可谓是坎坷重重。原因在于AirSim对于电脑要求较高,所以即使我手头有一个Interl mini PC,但是由于没有独立显卡,也没有办法实现在Ubuntu环境下使用AirSim。而电脑又不太想装双系统,并且在VMware虚拟机里面没有办法使用电脑的独立显卡,因此也不能使用AirSim。_ros安装 20.04 wslhttps://blog.csdn.net/Gorege__Hu/article/details/135363194?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-2-135363194-blog-133937812.235%5Ev43%5Epc_blog_bottom_relevance_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-2-135363194-blog-133937812.235%5Ev43%5Epc_blog_bottom_relevance_base1&utm_relevant_index=3 其操作步骤为,首先在Windows下面打开刚才下载的Ubuntu系统,之后再打开cmd命令行窗口,在终端中输入下面代码。
ipconfig
如图所示。需要重点关注IPv4地址。
接下来需要在Ubuntu系统中,进行编辑。vim的使用方法可以上网查询,点击i键可以进行插入;点击esc键,会退出插入编辑;输入:wq(需要有冒号),可以退出并保存。
vim ~/.bashrc
将下面内容复制到这个文件最后。
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.23.160.1:0.0
如图所示。需要注意的是最后的ip地址一定要是自己的地址,同时需要注意带上0:0
(七)Ubuntu20.04安装AirSim
1.概述
这部分可以完全按照官方网站的操作流程来,中间基本没有遇到任何的报错。
2.安装过程
下面是官网的安装步骤
ROS: AirSim ROS Wrapper - AirSimhttps://microsoft.github.io/AirSim/airsim_ros_pkgs/ 首先在终端中输入下面命令。检查gcc编译的版本,看看是不是8。
gcc --version
如果gcc的编译器版本不是8的话,需要执行下面的命令。第一个命令是安装版本为8的编译器。第二个是确定版本。
sudo apt-get install gcc-8 g++-8
gcc-8 --version
接下来安装tf2变换和mavros,在终端中输入如下的命令。
sudo apt-get install ros-noetic-tf2-sensor-msgs ros-noetic-tf2-geometry-msgs ros-noetic-mavros*
安装caktin bools工具,在终端中输入如下的命令。有可能提示需要安装python3,按照终端中提示安装即可。
sudo apt-get install python-catkin-tools
3.编译过程
在终端中依次输入下面命令。第一行命令克隆可能会失败,需要多试几次才可以。
git clone https://github.com/Microsoft/AirSim.git
cd AirSim
./setup.sh
./build.sh
构建成功之后,在终端中输入下面的命令。
cd ros
catkin build # or catkin_make
因为刚安装的Ubuntu系统,环境没有遭到过污染所以安装过程中到这里,编译都没有报错。
(八)如何启动rviz
1.概述
如果没有安装一些依赖和软件的话,直接在终端中启动roscore,再尝试启动rviz是会报错的,错误出在qt上面。最开始不知道这个,在网络上查询了一段时候后,发现是可视化方面没有弄。按照下面这个参考博客的方法是可以运行可视化桌面显示的。这里不再多叙述了,只讲述一些自己在操作过程中的不同地方,可能会对别人有点帮助。
2.方式一
【番外】【Airsim in Windows & ROS in WSL2-Ubuntu20.04】环境配置大全_ros安装 20.04 wsl-CSDN博客文章浏览阅读1.8k次,点赞20次,收藏35次。AirSim的使用着实是一件麻烦事,我的配置过程可谓是坎坷重重。原因在于AirSim对于电脑要求较高,所以即使我手头有一个Interl mini PC,但是由于没有独立显卡,也没有办法实现在Ubuntu环境下使用AirSim。而电脑又不太想装双系统,并且在VMware虚拟机里面没有办法使用电脑的独立显卡,因此也不能使用AirSim。_ros安装 20.04 wslhttps://blog.csdn.net/Gorege__Hu/article/details/135363194?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-2-135363194-blog-133937812.235%5Ev43%5Epc_blog_bottom_relevance_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-2-135363194-blog-133937812.235%5Ev43%5Epc_blog_bottom_relevance_base1&utm_relevant_index=3 但可能会遇到问题,我跟他的设置有所不同,因为,我按照他的操作方式是运行不出来的。后来知道原因了。
可能需要的改进地方如下。这个参数感觉可以不设置,也没有太大问题,具体还需要根据自己电脑来看。
假如运行下面的命令。可能会显示不出来
startxfce4
需要提升用户权限。可以正常显示出来。
sudo startxfce4
效果如图所示。
假如这个时候再启动rviz,是可以显示出来的。
但这个桌面有个问题,就是不太好用。假如你打开终端后会发现位置不是Ubuntu的位置,还得重新设置,很麻烦。
3.方式二
这里可以参考这个链接安装Ubuntu的原本的桌面,看着舒服点。
WSL2 Ubuntu+gnome图形界面的安装血泪史(亲测有效)_wsl2图形化界面-CSDN博客文章浏览阅读2.3w次,点赞44次,收藏174次。这边已经升级为WSL2,官方资料说明其可以使用windows下的显卡驱动,嗯就很香~,言归正传,看看如何配置WSL2 Ubuntu+gnome图形界面。网上的参考资料基本没说清楚是用真linux还是虚拟机下的ubuntu,这点我绕了很多的弯路,也尝试了大部分比较靠谱的资料最后均无法实现!这边又有一个大坑,很多人在这边发现屏幕还是黑屏,我来来回回试了30多次吧,均也是这种情况,这时候可以去看看是不是VcXsrv被防火墙给拦截了。首先打开windows应用商店,输入ubuntu,这边我下载的是。_wsl2图形化界面https://blog.csdn.net/weixin_44478077/article/details/128723158?spm=1001.2014.3001.5506
大致操作是这样的。
(1)gnome图形界面的配置
sudo apt update
sudo apt install git
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
其余步骤照着操作即可,需要检测wsl的版本是不是2.
(2)不一样的地方
博客中有这样的命令输入,个人认为可以不输入。
sudo service dbus restart
除此之外,如图所示。直接在终端中输入下面的命令可能不起作用,跟上面一样的解决思路,提高用户权限。在终端中中输入如下的命令
sudo gnome-session
即可启动。效果如图所示。原本风格。
三、联合测试
(一)测试过程记录
首先在Windows系统下启动UE5中配置好AirSim的项目。如图所示,需要启动这个。因为在ROS上的代码还有些问题,以这个为示例,之后会讲述原因和修改方法。
在Ubuntu上首先启动vscode,方便一点。
如图所示。可以看出来终端显示的路径位置不对,在这个地方是无法启动ros的,需要我们更改路径。
在终端中输入如下命令即可。
cd ~
新建一个终端,在终端中输入如下命令。
source ./devel/setup.bash
roslaunch airsim_ros_pkgs airsim_node.launch output:=screen host:=$WSL_HOST_IP
效果如下所示。
再新建一个终端在里面输入如下的命令。
source ./devel/setup.bash
roslaunch airsim_ros_pkgs rviz.launch
命令都需要在ros工作空间下进行。
效果如下所示。
(二)遇到问题
在实际运行过程中,我遇到了这个问题,之后在github的问答中找到了解答的答案,链接如下。
roslaunch ERROR when I use WSL of ubuntu18.04 and WIN11 · Issue #4863 · microsoft/AirSim · GitHubBug report AirSim Version/#commit:latest UE/Unity version:4.27.2 autopilot version: ROS version:Melodic OS Version:Win11 and WSL of ubuntu18.04 What's the issue you encountered? My computer's WSL and WIN11 have successfully communicated,...https://github.com/microsoft/AirSim/issues/4863 具体问题出现在simmode_name没有正确设置上面。具体问题在AirLib/include/common/AirSimSettings.hpp文件下面,如图所示。
解决方法,在里面查找 load()函数,手动添加即可。如图所示。
这样即可解决报错。