Skip to content

FlightGear 仿真

WARNING

此仿真器由社区提供支持和维护(详见社区支持的仿真器)。 它可能与当前版本的PX4兼容,也可能不兼容。

有关核心开发团队支持的开发环境和工具的信息,请参阅工具链安装

FlightGear 是一款具备强大 飞行动力学模型(FDM)引擎 的飞行仿真器。 这使得 FlightGear 能够在各种气象条件下模拟旋翼飞行器(这也是 ThunderFly s.r.o. 最初开发此桥接器的原因)。

本文档介绍了 FlightGear 在软件在环(SITL)仿真中的单飞行器使用方法。 有关多飞行器使用的信息,请参阅:使用 FlightGear 进行多飞行器仿真

支持的飞行器类型: 旋翼机、飞机、漫游车。

Mermaid 流程图

INFO

有关仿真器、仿真环境和仿真配置(例如支持的飞行器类型)的一般信息,请参阅仿真

安装(Ubuntu Linux)

INFO

以下安装说明已在 Ubuntu 18.04 系统上测试通过。

  1. 安装常规的 Ubuntu LTS / Debian Linux 开发环境

  2. 安装 FlightGear:

    sh
    sudo add-apt-repository ppa:saiarcot895/flightgear
    sudo apt update
    sudo apt install flightgear

    此操作将从 PAA 软件源安装最新稳定版的 FlightGear 以及 FGdata 软件包。

    TIP

    对于某些模型(例如带有电动引擎的模型),可能需要使用具备最新特性的每日构建版本。 可使用 每日构建 PPA 进行安装。

:::

  1. 检查是否能够运行 FlightGear:

    sh
    fgfs --launcher
  2. 为 FlightGear 安装目录下的 Protocols 文件夹设置写入权限:

    sh
    sudo chmod a+w /usr/share/games/flightgear/Protocol

    设置权限是必需的,因为 PX4-FlightGear 桥接器会将通信定义文件放置在此处。

更多安装说明可在 FlightGear 维基 上找到。

运行仿真

通过启动 PX4 SITL 并指定所需的机架配置来运行仿真。

最简单的方法是在 PX4 PX4-Autopilot 代码仓库的根目录下打开终端,并针对所需目标调用 make 命令。 例如,要启动飞机仿真:

sh
cd /path/to/PX4-Autopilot
make px4_sitl_nolockstep flightgear_rascal

支持的飞行器及其对应的 make 命令如下所列(点击链接可查看飞行器图片)。

飞行器命令
标准飞机make px4_sitl_nolockstep flightgear_rascal
阿克曼车辆(无人地面车辆/漫游车)make px4_sitl_nolockstep flightgear_tf-r1
旋翼机make px4_sitl_nolockstep flightgear_tf-g1

上述命令将启动带有完整用户界面的单飞行器仿真。 QGroundControl 应该能够自动连接到仿真飞行器。

INFO

要查看所有 FlightGear 构建目标的完整列表(高亮显示),请运行:

sh
make px4_sitl_nolockstep list_vmd_make_targets | grep flightgear_

更多信息请参阅:FlightGear 飞行器(其中包含有关“不支持”的飞行器以及添加新飞行器的信息)。

INFO

如果出现构建错误,安装文件和代码 指南是一个有用的参考。

让飞行器起飞

上述 make 命令会先构建 PX4,然后与 FlightGear 仿真器一起运行。

PX4 启动后,将显示如下的 PX4 shell 界面。 你必须按回车键才能获得命令提示符。

sh
______  __   __    ___
| ___ \ \ \ / /   /   |
| |_/ /  \ V /   / /| |
|  __/   /   \  / /_| |
| |     / /^\ \ \___  |
\_|     \/   \/     |_/

px4 starting.

INFO  [px4] Calling startup script: /bin/sh etc/init.d-posix/rcS 0
INFO  [param] selected parameter default file eeprom/parameters_1034
I'm Mavlink to FlightGear Bridge
Target Bridge Freq: 200, send data every step: 1
4
  5   -1
  7   -1
  2   1
  4   1
[param] Loaded: eeprom/parameters_1034
INFO  [dataman] Unknown restart, data manager file './dataman' size is 11798680 bytes
INFO  [simulator] Waiting for simulator to accept connection on TCP port 4560
INFO  [simulator] Simulator connected on TCP port 4560.
INFO  [commander] LED: open /dev/led0 failed (22)
INFO  [commander] Mission #3 loaded, 9 WPs, curr: 8
INFO  [mavlink] mode: Normal, data rate: 4000000 B/s on udp port 18570 remote port 14550
INFO  [airspeed_selector] No airspeed sensor detected. Switch to non-airspeed mode.
INFO  [mavlink] mode: Onboard, data rate: 4000000 B/s on udp port 14580 remote port 14540
INFO  [mavlink] mode: Onboard, data rate: 4000 B/s on udp port 14280 remote port 14030
INFO  [logger] logger started (mode=all)
INFO  [logger] Start file log (type: full)
INFO  [logger] Opened full log file: ./log/2020-04-28/22_03_36.ulg
INFO  [mavlink] MAVLink only on localhost (set param MAV_{i}_BROADCAST = 1 to enable network)
INFO  [px4] Startup script returned successfully
pxh> StatsHandler::StatsHandler() Setting up GL2 compatible shaders
Now checking for plug-in osgPlugins-3.4.1/osgdb_nvtt.so
PX4 Communicator: PX4 Connected.

pxh>

控制台将在 PX4 加载特定机架的初始化和参数文件、等待(并连接到)仿真器时输出状态信息。 当出现 [ecl/EKF] commencing GPS fusion 的信息打印时,飞行器即可解锁。 此时,你应该会看到一个显示飞行器的 FlightGear 窗口。

INFO

你可以通过按 Ctrl+V 来更改视图。

FlightGear 用户界面

你可以通过输入以下命令让飞行器起飞:

sh
pxh> commander takeoff

使用/配置选项

你可以通过以下环境变量调整你的 FlightGear 安装/设置:

  • FG_BINARY - 要运行的 FlightGear 二进制文件的绝对路径。(可以是 AppImage 文件)
  • FG_MODELS_DIR - 包含手动下载的飞行器模型的文件夹的绝对路径,这些模型将用于仿真。
  • FG_ARGS_EX - 任何额外的 FlightGear 参数。

显示帧率

在 FlightGear 中,你可以通过 视图 > 视图选项 > 显示帧率 来启用帧率显示。

设置自定义起飞位置

可以使用额外的变量来设置 SITL FlightGear 中的起飞位置。 设置该变量将覆盖默认的起飞位置。

可以设置的变量如下:--airport--runway--offset-distance。 其他选项可在 FlightGear 维基 上找到。

例如:

sh
FG_ARGS_EX="--airport=PHNL"  make px4_sitl_nolockstep flightgear_rascal

上述示例将在 檀香山国际机场 启动仿真。

使用游戏手柄

通过 QGroundControl 支持使用游戏手柄和拇指摇杆(此处为设置说明)。

应该在 FlightGear 中禁用游戏手柄输入,否则 FG 游戏手柄输入和 PX4 命令之间会出现“竞争条件”。

扩展和定制

要扩展或定制仿真接口,请编辑 Tools/simulation/flightgear/flightgear_bridge 文件夹中的文件。 代码可在 Github 上的 PX4-FlightGear-Bridge 代码仓库 中找到。

更多信息