【番外】【Airsim in Windows ROS in WSL2-Ubuntu20.04】环境配置大全

【番外】【Airsim in Windows &ROS in WSL2-Ubuntu20.04】环境配置大全

  • 【前言(可省略不看)】
  • 1.在windows上面部署好UE4+AirSim联合仿真环境
  • 2.在windows上面部署wsl2系统以及在wsl2上面部署ubuntu系统
  • 3.安装好ubuntu系统之后,目前只能在命令行操作,所以又需要安装图形界面
  • 4.在WSL2-Ubuntu系统中安装ros系统
  • 5.在WSL2-Ubuntu系统中部署airsim:
  • 6.运行demo步骤

【前言(可省略不看)】

AirSim的使用着实是一件麻烦事,我的配置过程可谓是坎坷重重。原因在于AirSim对于电脑要求较高,所以即使我手头有一个Interl mini PC,但是由于没有独立显卡,也没有办法实现在Ubuntu环境下使用AirSim。而电脑又不太想装双系统,并且在VMware虚拟机里面没有办法使用电脑的独立显卡,因此也不能使用AirSim。
所以我的方法是:在Windows上部署WSL2子系统,在WSL2上面安装Ubuntu系统(实际上WSL2就是一个虚拟机,但是它是由windows开发的一个基于windows的子系统,各种环境以及接口比vmware虚拟机要来的方便多了,也正因为如此,wsl2中可以使用到电脑的显卡资源),在Ubuntu上面运行ros程序,在windows上面运行airsim仿真,两者通过airsim官方给出的airsim-ros-wrapper内置的网络通信进行通信沟通,从而实现曲线救国,也是不太伤害电脑并且运行效果还不错的一种方案。
整体的安装流程如下:
我的环境版本如下:

windows10-wsl2-ubuntu20.04-ros noetic

1.在windows上面部署好UE4+AirSim联合仿真环境

具体配置方法看我上一篇文章:【番外】在Windows安装Airsim/UE4踩坑合集

2.在windows上面部署wsl2系统以及在wsl2上面部署ubuntu系统

一种办法是按照官方给出的方法,从头开始一步一步做,是比较省事的:
官方步骤:Windows系统安装WSL2
但是这个带来的问题是,官方这种方法只能将wsl2系统安装在C盘,也就是之后的ubuntu也要在C盘,那么之后想在WSL2上面装一些软件之类的或者安装包之类的,内存就会受很大限制,所以可以按照这位博主的操作安装到其他盘:
Win10自定义路径位置安装WSL2 (Ubuntu 20.04) 并配置CUDA

3.安装好ubuntu系统之后,目前只能在命令行操作,所以又需要安装图形界面

可以按照这个UP的步骤来:
WSL2 Ubuntu+gnome图形界面的安装血泪史(亲测有效)
按照他的步骤做完第三步和第四步就可以。
但是做完之后会发现gnome这个框架之下rviz打开后一般会卡死或者闪退。如果没有rviz需求的同学就可以这样不管了,但是如果要用rviz的话,就需要解决这个问题。
我的方法是换成Xfce4桌面环境。

这里插一句,这些东西之间是什么关系:
Xfce4和gnome都是一种桌面环境框架,是一种安装在wsl里面的为了显示ubuntu桌面的框架。而安装的VcXsrv 是一个显示软件,用于将Xfce4和gnome传输出来的显示信息显示在该软件上。所以无论wsl里面装的是gnome还是Xfce4,外部都用VcXsrv软件进行显示。

方法:
终端输入:

sudo apt-get install xfce4 

中间会跳出一个页面问你选择什么管理器,随便选哪个都行。我选择的是第一个。
在这里插入图片描述
我们需要知道本机地址,在powershell或者cmd中输入

ipconfig

此时有两种选择,将图像传输回WSL的虚拟地址或是直接的本机地址。如下是虚拟地址的版本,本机地址也是取相应的IPv4地址即可。
在这里插入图片描述
我们需要在.bashrc文件中添加一行输出地址. (在Ubuntu下输入)

echo "export DISPLAY=172.21.16.1:0.0" >> ~/.bashrc

其中 “172.21.16.1” 就是你刚刚得到的ipv4地址,不要忘记写后面的 :0.0

如果要修改这个IP参数的话,需要修改 ~/.bashrc 文件,有很多种可以在Terminal中编辑文件的方法,比如笔者使用的vim。

如果没有vim可以先安装vim。

sudo apt-get install vim

安装结束后就就可以打开了,输入

vim ~/.bashrc

按 i 进入编辑模式。

修改之后按下 Esc 在输入 :wq 就可以保存回到Terminal里。

其他vim的指令可以查阅: Linux vi/vim | 菜鸟教程 (runoob.com)

之后重新载入一下这个文件 (这个指令后面会用到很多次,因为这样就不需要重新打开个新的Terminal了)

source ~/.bashrc 

之后,在VcXsrv启动的状态下,在终端运行如下代码启动桌面:

startxfce4 

然后运行gazebo和rviz发现闪退的问题解决了。

如果无法正确输出并显示类似如下提示,可以添加 -ac 参数到 Xlaunch中

在这里插入图片描述
我的Xlaunch配置是这样的:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后保存就可以弹出VcXsrv窗口了。
但是还有新的问题,那就是两个软件中间都是黑屏的,没有任何显示,没有网格,也没有灰色的背景,并且会在运行时有如下的报错:

原因是:
windows端没有配置使得独立显卡可以作用于wsl2系统中,所以wsl2系统中所有需要图形渲染的软件都没有办法正常使用。解决方法是打开windows端独立显卡对于wsl2的权限:
WSL2 设置使用独显
之后就正常显示了。

如果还是有显示问题,尝试将下面两个代码加入你的bashrc文件中:

export LIBGL_ALWAYS_SOFTWARE=1
export LIBGL_ALWAYS_INDIRECT=0

是开启硬件加速和直接渲染。之后应该就没有问题了。

4.在WSL2-Ubuntu系统中安装ros系统

这一步老生常谈了,没什么问题,就不展开了。

5.在WSL2-Ubuntu系统中部署airsim:

参考官方文档:How to run Airsim on Windows and ROS wrapper on WSL
如果不想每次进入终端都输入一次export WSL_HOST_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'),就把他加到你的bashrc文件中去。

题外话:这里如果你想用双机配置。即:一台电脑是windows-ue4-airsim仿真,一台电脑是ubuntu-ros作为控制,那么此处你在ubuntu系统上的操作就类似于wsl的操作,也就是在运行之前加一句:export WSL_HOST_IP=127.0.0.1即可。其中的IP地址是你的windows端电脑的IP,要保证两台电脑运行在同一个局域网之下并且可以ping通。理论上来说是没问题的。但是我这样试过了,没有成功,如果有大佬做成功了也麻烦踢我一下谢谢。

6.运行demo步骤

1.在windows端打开LandscapeMountains.sln工程文件,并且点击"开始调试",在UE4启动之后,点击开始仿真,则此时airsim插件已经开始运行,已经打开windows端的 41451 端口,并监听这个端口的需求。
你可以在开始仿真之后在cmd中运行如下命令,查看是否如此:

netstat -ano | findstr 端口号

比如该情境中我们输入:

netstat -ano | findstr 41451 

可以看到:
在这里插入图片描述
显示处于listening状态,也就是监听状态。
2.打开wsl2-Ubuntu系统
输入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

打开终端
进入根目录:

cd ~

进入AirSim工作空间:

cd AirSim/
cd ros

运行:

source devel/setup.bash
roslaunch airsim_ros_pkgs airsim_node.launch output:=screen host:=$WSL_HOST_IP
roslaunch airsim_ros_pkgs rviz.launch

成功运行界面如下:
WSL端:
在这里插入图片描述
UE4端:
在这里插入图片描述
可以查看一下现有的rostopic:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/290265.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Multipath多路径管理基础介绍与安装配置使用

0x00 前言简述 Q:什么是Multipath多路径? 答:Multipath I/O 电脑储存技术,指利用两个以上的路径同时在CPU与储存设备之间传送讯号,以达到侦错与强化效能的目的。 简单的说当服务器到某一存储设备有多条路径时,每条路径都会识别为一个单独的…

清风数学建模-数学规划模型

内容:数学规划模型(cab aeqbeq lbub) 一.题型类型 1.线性规划linprog 2.非线性规划 fmincon 3.整数规划 intlinprog 4.(0-1规划)(特殊的线性整数规划)intlinprog 5.多目标规划 linprog 标…

[DevOps-05] Jenkins实现CI/CD操作

一、简要说明 基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成 基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 二、准备Springboot工程 1、IDEA新建工程 2、填写项目工程信息 3、选择Springboot版本…

【数据结构】数组实现队列(详细版)

目录 队列的定义 普通顺序队列的劣势——与链队列相比 顺序队列实现方法: 一、动态增长队列 1、初始化队列 2、元素入队 3、判断队列是否为空 4、元素出队 5、获取队首元素 6、获取队尾元素 7、获取队列元素个数 8、销毁队列 总结: 动态增长队列…

配网故障定位技术的研究与实现:提高配网运行效率的必要手段

随着电力系统的不断发展,配电网作为电力系统的重要组成部分,其安全性和稳定性对于整个电力系统的运行具有重要意义。然而,配电网在运行过程中,由于各种原因导致的故障事件时有发生,严重影响了配网的运行效率和供电质量…

【单片机 TB作品】节拍器,电子音乐节拍器,51单片机,Proteus仿真

节拍器的使用可以使练琴者正确掌握乐曲的速度,从而使音 乐练习达到事半功倍的效果。本课题基于单片机设计具有声光晋 示的电子乐器节拍器,充分利用单片机的定时和中断系统,通过 C语言程序设计,控制外部相关硬件电路,实现对音乐速,度 40~120次/分钟范围内连续可调,节拍114、 2/4…

解决sublime中文符号乱码问题

效果图 原来 后来 问题不是出自encode文件编码,而是win10的字体问题。 解决方法 配置: { "font_face":"Microsoft Yahei", "dpi_scale": 1.0 } 参考自 Sublime 输入中文显示方框问号乱码_sublime中文问号-CSDN博…

学习调整echarts中toolbox位置toolBox工具栏属性

学习调整echarts中toolbox位置toolBox工具栏属性 toolbox工具栏属性介绍示例代码代码参数说明 toolbox工具栏属性介绍 参考网址:https://echarts.apache.org/zh/option.html#tooltip 属性类型说明toolbox.showbooleanboolean 默认值为true,是否显示工具…

Matlab进阶绘图第37期—多色悬浮柱状图

多色悬浮柱状图是一种特殊的柱状图。 与常规柱状图相比,多色悬浮柱状图可以通过悬浮的矩形展示最小值到最大值的范围(或其他范围表达),并通过颜色进行美化/区分/附加信息。 本文使用自己制作的Floatingbar小工具进行多色悬浮柱状…

Oracle database 12cRAC异地恢复至单机

环境 rac 环境 byoradbrac Oracle12.1.0.2 系统版本:Red Hat Enterprise Linux Server release 6.5 软件版本:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1:172.17.38.44 byoradb2:172.17.38.4…

Kotlin采集美团商家信息 同行竞争价格监控

“南方小土豆”挤爆哈尔滨旅游市场,一个冬天让哈尔滨火出了圈,让全国观众看见了不一样的逆向旅游热,虽说我心驰神往,但是无奈加班敲代码,连休息的时间都没有。前段时间我通过用java写了一个美团爬虫程序,今…

智慧工厂:科技与制造融合创新之路

随着科技的迅猛发展,智慧工厂成为制造业领域的热门话题。智慧工厂利用先进的技术和智能化系统,以提高生产效率、降低成本、增强产品质量和灵活性为目标,正在引领着未来制造业的发展。 智慧工厂的核心是数字化和自动化生产,相较于传…

Spark基础解析(一)

1、 Spark概述 1.1 什么是Spark 1.2Spark内置模块 Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义…

基于SSM的校园快递管理系统

目录 前言 开发环境以及工具 项目功能介绍 学生: 管理员: 详细设计 获取源码 前言 本项目是一个基于IDEA和Java语言开发的基于SSM的校园快递管理系统应用。应用包含学生端和管理员端等多个功能模块。 欢迎使用我们的校园快递管理系统!我…

前端push.js桌面通知库

push.js 官网&#xff1a;https://pushjs.org/ 安装 1,npm 安装方式 npm install push.js --save 2,script引入方式 <script src"https://cdnjs.cloudflare.com/ajax/libs/push.js/0.0.11/push.min.js"></script> 使用 1&#xff0c;获取用户许可…

2024年 快速搭建自己AI Gemini API 搭建完整

先看下效果 体验效果 Gemini 前言 12月7日消息&#xff0c;谷歌12月6日宣布推出其认为规模最大、功能最强大的人工智能模型Gemini。Gemini将包括三种不同的套件&#xff1a;Gemini Ultra&#xff0c;Gemini Pro和Gemini Nano。 谷歌表示&#xff0c;该公司备受期待的人工智能…

2024年【煤炭生产经营单位(安全生产管理人员)】证考试及煤炭生产经营单位(安全生产管理人员)模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 煤炭生产经营单位&#xff08;安全生产管理人员&#xff09;证考试是安全生产模拟考试一点通总题库中生成的一套煤炭生产经营单位&#xff08;安全生产管理人员&#xff09;模拟考试题&#xff0c;安全生产模拟考试一…

Spark二、Spark技术栈之Spark Core

Spark Core spark核心&#xff1a;包括RDD、RDD算子、RDD的持久化/缓存、累加器和广播变量 学习链接&#xff1a;https://mp.weixin.qq.com/s/caCk3mM5iXy0FaXCLkDwYQ 一、 RDD 1.1 为什么要有RDD 在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘中&#xff0c;…

力扣hot100 翻转二叉树 递归

&#x1f468;‍&#x1f3eb; 题目地址 &#x1f60b; AC code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNod…

Unity 基于UDP实现本地时间与网络时间校验 防客户端修改日期作弊

新建一个Unity GameObject 挂上NTPComponent脚本 时间校验 源码 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.Networking; using System.Text; using System.Net.Sockets; using System.Net; using Sys…