用无声之翼翱翔海丰县

寂静之翼》(Silent Wings)是一款专门针对风帆飞机的模拟器。尽管现在已经有些过时,但截至 2019 年 4 月,它仍然提供了一些最精确的帆船飞行模拟,以及与之相关的大气现象细节,如热生命周期、热升力和脊升力在地形上的分布、它们对天气的依赖性等。这使其成为测试自主翱翔各个方面的绝佳工具。


概述

本文档介绍如何使用 Silent Wings 运行 ArduPlane 软件在环(SITL)仿真。无论您是在为特定类型的升力(如热升力)开发翱翔控制器,还是在开发越野帆机导航策略,您都会发现在仿真中测试您的方法非常有用。对于远距离导航来说尤其如此,因为在开放世界中对其进行评估既困难又昂贵。SITL 测试允许您将 ArduPlane 代码编译成一个特殊的二进制文件,该二进制文件可以在您的普通计算机上运行,接收来自在同一或不同计算机上运行的模拟器的传感器数据,并将输入发送回模拟器以控制模拟帆机。

以下说明已在 Windows 10 上进行了测试。


先决条件

  • 安装 寂静之翼 和至少一个 风光包 . 您可以使用为期两周的演示版来试用这些说明。我们建议从挪威风光包开始;我们的示例任务使用的是弗里亚-利勒哈默尔-斯塔莫恩地图。

  • 配置 Silent Wings 以远程发送传感器数据和接收控制输入。 为此,请打开 %USERPROFILE%\AppData\Local\VirtualStore\Program 文件 (x86)\Silent Wings\Silent Wings\data\options.dat 并将其中的 "UDP 输出协议 "和 "远程控制协议 "部分替换为

    #---------------------
    # UDP 输出协议
    #---------------------
    使用输出 UDP      = 
    输出 UDP 协议 = 二进制
    输出 UDP 地址  = 本地主机
    输出 UDP 端口     = 6060
    输出 UDP 速率     = 90
    
    #-------------------------
    # 远程控制协议
    #-------------------------
    使用远程控制  = 
    远程控制端口 = 6070
    远程控制模式 = UDP
    

    另外,设置

    刷新屏幕     = 60
    

    请注意,在 C:\Program 文件 (x86)\Silent Wings\Silent Wings\data.这不是我们需要的。

    output_udp_rate = 90 的值对 screen_refresh = 60 很有效。在调整后者时,可能还需要调整前者,以便更流畅地控制。

  • 安装 Mission Planner地面站, 地面控制站(GCS)软件。 其他 ArduPilot GCS 软件也可以使用。

  • 构建 ArduPlane 的 SITL 版本。 为此,首先 按此处所述安装和配置 Cygwin.就翱翔 SITL 而言,您不需要执行翱翔 SITL 中的步骤。 在 Cygwin 中设置目录/路径安装所需的 Python 软件包 但做了也无妨。那就做吧:

    1. 打开 Cygwin 终端(如果已经打开,则重新打开)。

    2. 如果您已经拥有 ArduPilot 的源代码,只需在 Cygwin 终端切换到本地 ArduPilot 代码库的根目录即可。这些说明假定 ArduPilot 目录。

      如果您还没有 ArduPilot 的源代码,可以通过在 Cygwin 中运行以下命令序列来获取:

      git 复制 --递归-子模块 https://github./ArduPilot/ardupilot.git
      CD ardupilot
      
    3. 运行

      ./waf 清洁
      ./waf 配置 --官方 坐标
      ./waf 飞机
      


运行 Silent Wings SITL

  1. 发射无声之翼 无声的翅膀 飞行计划器 部分,在 飞机 选项卡选择一个帆板。请注意,每个帆板模型都有不同的特征,ArduPlane 需要该模型的参数(.param)文件才能了解这些特征。我们提供了一个 Rolladen-Schneider LS-8b 参数文件这就是我们推荐的起步帆船。

    设置天气和空中交通状况 天气交通 标签页。在 地点 选项卡,选择地图和起始位置,并记下其 GPS 坐标、高度和航向。启动 SITL 时需要这些信息。然后点击 现在就飞 按钮。游戏将以暂停状态开始。请暂时保持暂停状态。

    ./_images/silent_wings_setup.png


  2. 启动 ArduPlane SITL。 为此,请打开 Cygwin64 终端,切换到 ArduPilot 软件源的根目录,然后运行

    构建/坐标/箱柜/arduplane --模型 无声翼 --首页 <;纬度>;,<;>;,<;选一>;,<;打呵欠>;
    

    例如

    构建/坐标/箱柜/arduplane --模型 无声翼 --首页 60.8805696600,11.6695970300,216,145
    

    给你 <lat>;long>; 是您在启动 Silent Wings 时记下的起始位置的经纬度,如果纬度是南纬或西经,则加上"-"号。 但是,"<alt> "应该是起始位置的地形海拔高度,即使您选择在空中起始。 要确定它,请将任务开始时您在 "静默之翼 "窗口左上角看到的高度(为 MSL)减去您之前记下的起始高度(为 AGL)。结果就是 alt>; 您需要将其传递给 SITL。因此,请注意上面截图中的任务、 alt>; =216,而不是 800。 <偏航/航向>; 是您为 "静默之翼 "任务选择的初始航向。

    提示

    我们建议起始地点的地形海拔高度接近于零,因为如果模拟飞行器的高度低于起始地点的海拔高度,ArduPlane 的 SITL 版本偶尔会出现怪异行为。 alt>;.

    此时,SITL 应在等待与地面控制站(Mission Planner地面站)的连接:

    ./_images/sitl_waiting.png


  3. 启动Mission Planner地面站,连接操纵杆,然后 在Mission Planner地面站中设置操纵杆 来配置其滚轴、俯仰轴和偏航轴(Silent Wings 将忽略其他轴)。

    提示

    不幸的是,Mission Planner地面站关闭后似乎会忘记操纵杆的设置,因此每次重启Mission Planner地面站或重新连接操纵杆时都必须重新执行此步骤。另外,您也可以尝试使用键盘控制飞机。


  4. 让Mission Planner地面站与 Silent Wings 和 ArduPlane SITL 建立连接。 为此,请在Mission Planner地面站右上角选择 TCP,点击 连接在弹出的窗口中输入运行 Silent Wings 的 IP 地址(如果在同一台机器上,则为 127.0.0.1),并在下一个窗口中输入 5760 作为端口号。等到 连接 Mavlink 窗口会消失,所有参数都会复制过来,Mission Planner地面站 HUD 中的所有校准信息也会消失。您应该看到Mission Planner地面站的 HUD 报告说 GPS 已锁定,空速传感器读取的值约为 0。

    现在,ArduPlane 就可以在 Silent Wings 中控制飞机了。

    ./_images/MP_connected.png


  5. 通过Mission Planner地面站将所选静音翼帆板的参数文件载入 ArduPlane。 (只有第一次在 Silent Wings 中飞行特定的帆船模型时才需要执行此步骤)。 为此,请访问Mission Planner地面站的 配置/飞行稳定调整 选项卡,选择 完整参数列表 点击左侧的 从文件加载 右侧,找到参数文件,然后单击 写参数 右侧。之后,在 Cygwin64 终端中终止 ArduPlane SITL,关闭 Mission Planner,并重复步骤 2 和 4。

    ../_images/loading_params_instr.png


  6. 如果需要,可在Mission Planner地面站中加载任务。 为此,请访问Mission Planner地面站的 飞行计划 选项卡,点击 加载 WP 文件 右侧,找到任务文件,然后单击 编写 WP.我们为 挪威斯塔莫恩附近的试验任务.

    ../_images/loading_mission_instr.png


  7. 开始飞行 现在,一切准备就绪,可以开始飞行了。在 Silent Wings 窗口中,点击 "p "键取消模拟。您应该会看到Mission Planner地面站 HUD 中的空速、高度和 AHRS 读数与 Silent Wings 右上角和左上角的读数非常接近。要让 Silent Wings 的帆船跟随载入的任务飞行,请将飞行模式切换为 载具 在Mission Planner地面站中。

    ../_images/flying.png


衷心感谢 萨姆-泰伯 和 Silent Wings 的 Thomas Sevaldrud 在此功能开发过程中提供的帮助,以及 杰克-朗格朗 宾夕法尼亚州立大学提供了宝贵的见解。