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

一、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地面站的连接设置如下图所示
在这里插入图片描述

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
W10的WSL(SubSystem for Linux)功能可以让Windows系统下安装一个兼容Linux境,其中包括Ubuntu,提供给开发者更为便捷的开发境。本文将介绍搭建WSL Ubuntu开发境的详细步骤。 首先,需要在Windows 10系统中启用WSL功能。具体操作为:进入“控制面板”-“程序”-“启用或关闭Windows功能”-勾选“适用于Linux的Windows子系统”并应用更改。 搭建WSL Ubuntu境,也分为几个步骤。首先,在Microsoft store搜索Ubuntu并下载安装。安装完成后打开,系统会提示输入用户名和密码,这里输入的是为Ubuntu配置的用户名和密码。接着,建议及时更新系统,输入以下指令: ``` sudo apt update sudo apt upgrade ``` 之后就可以开始搭建境了,可以根据需要安装和配置如下开发境: 1. 安装python开发境 输入以下指令: ``` sudo apt install python3 sudo apt install python3-pip ``` 2. 安装java开发境 输入以下指令: ``` sudo apt install default-jre sudo apt install default-jdk ``` 3. 安装node.js境 输入以下指令: ``` curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs ``` 4. 安装vscode以及其它开发工具 在Windows系统中下载安装vscode,然后打开,按Ctrl+Shift+P调出命令面板,输入“WSL: 打开新的终端”,就可以在Ubuntu中打开vscode,实现兼容开发。 总结起来,搭建WSL的Ubuntu开发境需要在Windows系统中启用WSL功能,下载安装Ubuntu,配置境并安装开发工具。相比于直接在Windows系统中搭建开发境,WSL Ubuntu更能提升开发效率,同时在Windows和Linux之间切换也更加方便,对于需要同时开发两个系统的开发者来说是一个不错的选择。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值