Windows10下Airsim+PX4(WSL2)+MAVROS仿真环境搭建

2023-05-16

一、Windows10下WSL2安装

1.1 WSL2的安装与配置

首先在Windows10下启用WSL,以管理员身份打开 PowerShell 工具并运行以下命令

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

然后启用虚拟机平台,继续运行以下命令,运行完成后重启电脑

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

以管理员身份打开 PowerShell,然后运行以下命令以将 WSL 2 设置为 WSL 的默认版本

wsl --set-default-version 2

在Microsoft Store中选择一个Ubuntu发行版进行安装,然后在开始菜单中打开此Ubuntu系统进行初始化配置。
最后在powershell中执行以下命令以检查Ubuntu的WSL版本及状态。

wsl --list --verbose

1.2 WSL2可视化

WSL2可视化使用VcXsrv实现xfce4图形界面+声音传输的方案,具体见参考文档。
首先安装VcXsrv软件,下载地址,安装完成后启动软件,然后按照如下的设置进行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

**注意:**需要允许此应用通过系统防火墙。
**注意:**有些人说他们遇到了像 Rviz 这样的 OpenGL 应用程序的问题。如果这样做,请尝试在 WSL2 终端中设置环境变量 LIBGL_ALWAYS_INDIRECT=0(您可以添加export LIBGL_ALWAYS_INDIRECT=0.bashrc文件末尾)。

然后在WSL2终端中执行以下代码

sudo apt update
sudo apt install x11-apps

如果防火墙没有进行设置,则以管理员身份打开 PowerShell 并运行:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

现在打开 WSL2 并运行

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0

然后执行测试

xeyes

二、Windows10下Airsim环境搭建

参考官方文档即可。
需要注意的是在编译Airsim后,Block环境中并没有生成.sln文件需要导航到文件夹AirSim\Unreal\Environments\Blocks并运行update_from_git.bat
确保Blocksproject 是启动项目,构建配置设置为DebugGame_EditorWin64,然后执行下图操作后再按F5运行。
在这里插入图片描述

三、WSL2下PX4环境搭建

与在Ubuntu18.04下搭建PX4环境相同,参考官方文档即可,如果子模块缺失多试几次就好,换不同的国外线路,我成功的线路为香港VIP-Azure。

四、Airsim与PX4相关配置

在WSL2中使用的PX4与Airsim连接需要知道彼此IP,相关配置见官方文档。
首先在Powershell中执行

ipconfig

可以看到返回的WSL2的IPv4地址,此地址172.30.32.1是 WSL2可用于访问Windows主机的地址。
在这里插入图片描述

**注意:**从这个PX4 变更请求 (与 v1.12.0-beta1 或更新版本相关)开始,SITL 模式下的 PX4 现在可以连接到不同(远程)IP地址上的AirSim。要启用此功能,请确保您拥有包含此修复程序的 PX4 版本。

然后在WSL2终端中输入以下命令,其中IP地址是刚刚我们获取到的WSL2可用于访问Windows主机的地址。

export PX4_SIM_HOST_ADDR=172.30.32.1

现在在 linux 端运行ip address show并复制eth0 inet地址,它应该类似于172.30.32.1,这是Windows需要知道的地址才能找到PX4。
在这里插入图片描述

最后编辑Airsim的仿真配置文件C:\Users\Username\Documents\AirSim\settings.json
其中ControlIp是WSL2的eth0 inet地址,LocalHostIp是WSL2可用于访问Windows主机的地址,下面给出了一个设置文件示例。

{
  "SettingsVersion": 1.2,
  "SimMode": "Multirotor",
  "ClockType": "SteppableClock",
  "Vehicles": {
    "PX4": {
      "VehicleType": "PX4Multirotor",
      "UseSerial": false,
      "LockStep": true,
      "UseTcp": true,
      "TcpPort": 4560,
      "ControlIp": "172.30.43.71",
      "ControlPortLocal": 14540,
      "ControlPortRemote": 14580,
      "LocalHostIp": "172.30.32.1",
      "Cameras": {
        "FrontLeft": {
          "X": 0.50,
          "Y": -0.06,
          "Z": 0.10,
          "Pitch": 0.0,
          "Roll": 0.0,
          "Yaw": 0.0,
          "CaptureSettings": [
            {
              "ImageType": 0,
              "Width": 752,
              "Height": 480,
              "FOV_Degrees": 90
            }
          ]
        },
        "FrontRight": {
          "X": 0.50,
          "Y": 0.06,
          "Z": 0.10,
          "Pitch": 0.0,
          "Roll": 0.0,
          "Yaw": 0.0,
          "CaptureSettings": [
            {
              "ImageType": 0,
              "Width": 752,
              "Height": 480,
              "FOV_Degrees": 90
            }
          ]
        }
      },
      "Sensors": {
        "Barometer": {
          "SensorType": 1,
          "Enabled": true,
          "PressureFactorSigma": 0.0001825
        }
      },
      "Parameters": {
        "NAV_RCL_ACT": 0,
        "NAV_DLL_ACT": 0,
        "COM_OBL_ACT": 1,
        "LPE_LAT": 47.641468,
        "LPE_LON": -122.140165
      }
    }
  },
  "SubWindows": [
    {
      "WindowID": 1,
      "CameraName": "FrontLeft",
      "ImageType": 0,
      "VehicleName": "PX4",
      "Visible": true
    },
    {
      "WindowID": 2,
      "CameraName": "FrontRight",
      "ImageType": 0,
      "VehicleName": "PX4",
      "Visible": true
    }
  ]
}

五、使用ROS

5.1 安装ROS

ROS的安装步骤与Ubuntu18.04系统下相同,见官方文档。
需要注意的是在rosdep update步骤需要访问境外服务器,很容易卡住,下面参考rosdep update 超时失败2021最新解决方法进行了解决。

  1. 首先修改rosdep下载资源的脚本文件:/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py,把以下行添加到脚本中的download_rosdep_data()函数中,以应用代理服务
url="https://ghproxy.com/"+url

/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行 把“https://ghproxy.com/”添加到网址前

  1. 然后用同样的方法修改/usr/lib/python2.7/dist-packages/rosdistro/init.py里面的DEFAULT_INDEX_URL参数,如下
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
  1. 以下2个文件中也使用了“raw.githubusercontent.com”网址,同样的方法把“https://ghproxy.com/”添加到网址前
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py	39行
/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 68119
  1. 最后在 /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 的第204行添加如下代码
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url

/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 36行 把“https://ghproxy.com/”添加到网址前

5.2 Airsim的ROS wrapper

参考官方文档即可。
在~/.bashrc中添加

export WSL_HOST_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')

然后运行如下命令即可

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

5.3 Mavros

Mavros的安装见官方文档即可。

**注意:**源码安装的时候,需要将在ROS安装过程中更改的代理服务器相关设置还原。

首先启动PX4软件在环仿真

make px4_sitl_default none_iris

在终端中找到PX4中有关Mavlink消息转发的输出,如下图所示,记住端口号
在这里插入图片描述

然后在新的终端中执行下面的命令,这里接收的Mavlink消息是Normal,127.0.0.1是localhost(本地仿真用),可更改为remote ip

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14580"

最后测试Mavros是否与PX4在环仿真正确连接

rostopic echo /mavros/state

如果连接成功,则返回的connected状态为True,然后我们就可以愉快地使用ros进行无人机的仿真了。
在这里插入图片描述

5.4 通过Mavros向QGC地面站转发Mavlink消息

在终端中执行如下命令,其中gcs的IP地址填写WSL2可用于访问Windows主机的地址,可在powershell中使用ipconfig查看。

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14580" gcs_url:="udp://@172.30.32.1:14550"

QGC地面站的连接设置如下图所示
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows10下Airsim+PX4(WSL2)+MAVROS仿真环境搭建 的相关文章

随机推荐

  • golang获取windows系统有线活跃网卡及IP配置

    代码 span class token keyword package span network span class token keyword import span span class token punctuation span
  • !!!Chapter 2 The Physical Layer

    2 1 The Theoretical Basis for Data Communication Fourier Analysis Any reasonably behaved periodic function g t with peri
  • 启动golang项目编译的exe可执行文件获取windows管理员权限(UAC)

    背景 xff1a go代码启动以后里面涉及到修改ip地址等操作 xff0c 需要管理员权限 打包好的exe文件双击执行默认是没有管理员权限的 xff0c 那么修改ip就会提示需要管理员权限 解决方法1 xff1a 右键以管理员权限运行exe
  • k8s外部访问pod内部容器的端口-NodePort

    一 如何从外部网络访问 Kubernetes的Pod IP和Cluster IP都只能在集群内部访问 xff0c 而我们通常需要从外部网络上访问集群中的某些服务 xff0c Kubernetes提供了下述几种方式来为集群提供外部流量入口 二
  • python断点下载文件

    使用pytohn编码实现文件的断点下载 span class token keyword import span os span class token keyword import span json span class token k
  • 异常检测(1)—初识异常检测

    1 概念 异常一般是指与标准值 xff08 预期值 xff09 有偏离的样本点 xff0c 也就是跟绝大部分数据 长的不一样 异常往往是 有价值 的事情 xff0c 我们对异常的成因感兴趣 2 类别 有监督 xff1a 数据集有标签无监督
  • 【git】在GitHub上下载历史版本

    GitHub上的项目很多都是从简单到复杂 xff0c 一点点迭代的 当我们需要看懂别人的代码时 xff0c 按照别人commit的历史版本一步一步跟踪 xff0c 或许是个好办法 这时候我们就要用到下载历史版本功能了 1 git clone
  • 实时操作系统UCOS学习笔记1----UCOSII简介

    前面我们所有的实验都是跑的裸机程序 xff08 裸奔 xff09 xff0c 从本章开始 xff0c 我们开始介绍UCOSII xff08 实时多任务操作系统内核 xff09 UCOSII简介 UCOSII的前身是UCOS xff0c 最早
  • 欢聚时代YY/测试实习面试

    去到YY大楼 xff0c 虽然在番禺但是附近很多楼在施工中了 大楼就在万达后面 前台登记 xff0c 小姐姐会让你出示邀请邮件 xff0c 然后直接上去就行了 达到楼层 xff0c 二维码签到 然后找地方坐一下等待面试 一轮是技术面 xff
  • 基于卡尔曼滤波的气压计高度解算

    ax ay az为归一化的加速度数据 1代表重力加速度 gx gy gz 为加速度数据 单位rad s altitude为气压计测量得到的海拔数据 欧拉角 float pitch roll yaw 世界坐标系下机体加速度 float ax
  • Kali安装Xfce4

    Kali安装Xface4 一 配置kali源并更新二 解决报错1 签名无效2 依赖报错 三 安装xfce4 一 配置kali源并更新 此处使用的是gedit编辑器 xff0c gedit etc apt sources list xff0c
  • 串口转WIFI的工作方式理解

    串口无线 AP xff08 COM AP xff09 串口无线 STA xff08 COM STA xff09 和 串口无线 AP 43 STA xff08 COM AP 43 STA xff09 3 个模式 串口WIFI模块是基于Uart
  • 典型环节的频率特性(建议收藏)

    自控笔记 5 3典型环节频率特性 控制系统种类繁多 xff0c 传递函数复杂 xff0c 但任何形式的传递函数都是由有限的典型环节组成 因此 xff0c 掌握典型环节的频率特性是使用频域法分析系统的基础 如下表所示 xff0c 构成系统的最
  • 【WINAPI】CreateSemaphore_信号量

    WINAPI CreateSemaphore 信号量 1 注册信号量函数1 1 参数1 2 返回值 2 释放信号量函数2 1 参数2 2 返回值 3 WaitForSingleObject3 2 参数3 3 返回值 4 例子4 1 运行结果
  • MAVROS二次开发(一)MAVROS的安装

    MAVROS二次开发 一 MAVROS的安装 1 参考网址 https dev px4 io v1 10 en ros mavros installation html https github com mavlink mavros tre
  • MAVROS二次开发(二)(三)添加自定义消息

    MAVROS二次开发 二 MAVROS消息添加 1 自定义rostopic消息 路径 xff1a catkin ws src mavros mavros msgs msg 自定义消息文件名称 xff1a CrawlControlStatus
  • MAVROS二次开发(四)添加消息处理插件

    MAVROS二次开发 四 添加消息处理插件 mavros插件所在路径 xff1a catkin ws src mavros mavros src plugins 1 自定义消息处理插件的编写 参考代码 xff1a catkin ws src
  • MAVROS二次开发(五)进行测试

    MAVROS二次开发 五 进行测试 1 测试环境 PX4 xff1a v1 10 1 xff08 含自定义mavlink消息收发 xff09 ROS xff1a KineticUbuntu xff1a 16 04LTSQGC xff1a S
  • ROS2+PX4开发环境配置

    一 ROS2安装 Ubuntu18 04的ros2版本 xff1a Eloquent 参考网址 xff1a https docs ros org en eloquent Installation Linux Install Debians
  • Windows10下Airsim+PX4(WSL2)+MAVROS仿真环境搭建

    一 Windows10下WSL2安装 1 1 WSL2的安装与配置 首先在Windows10下启用WSL xff0c 以管理员身份打开 PowerShell 工具并运行以下命令 dism span class token punctuati