QGC代码解析之载具类别和多载具管理(六)

本文档涵盖 QGroundControl 中的核心飞行器表示和多飞行器管理系统。它解释了如何在应用程序中对单个飞行器进行建模和管理,以及如何协调多飞行器。有关任务规划和飞行模式的信息,请参阅任务规划系统。有关通信链路和协议的详细信息,请参阅核心架构

目的和架构概述

车辆类别和多车辆管理系统为 QGroundControl 中无人机、地面车辆及其他自主系统的表示和控制奠定了基础。该系统以车辆类别为中心Vehicle,封装了所有特定于车辆的状态、功能和通信,同时MultiVehicleManager协调多个车辆实例并管理主动车辆的选择。

核心组件架构

车型内部结构

该类Vehicle作为单个自动驾驶汽车的中心表示,继承自VehicleFactGroup提供对车辆遥测和状态数据的结构化访问。

车辆类组件图

车辆主要特性和状态

该类Vehicle公开了许多用于 QML 绑定和状态管理的属性:

房产类别关键属性目的
身份id,,firmwareTypevehicleType车辆识别
状态armed,,,flyinglandingguidedMode飞行状态追踪
位置coordinate,,homePositionarmedPosition位置管理
沟通messagesReceived,,messagesSentmessagesLost链路健康监控
功能flightModes,,guidedModeSupportedorbitModeSupported功能可用性

资料来源:src/车辆/车辆.h136-227 src/车辆/车辆.h254-286

多车辆管理

单例MultiVehicleManager协调多个车辆实例,提供统一的车辆选择和管理接口。

多车经理职责

车辆发现和创建过程

当收到 MAVLink 心跳消息时,飞行器发现过程开始:

车辆生命周期管理

车辆初始化序列

车辆初始化遵循结构化状态机方法:

车辆删除流程

当所有通信链路丢失时,车辆将被删除:

沟通管理

每辆车都有自己的VehicleLinkManager处理通信链路和 MAVLink 消息路由的装置:


飞行器通过结构化管道处理 MAVLink 消息:

固件插件集成

车辆系统与固件插件架构紧密集成,以处理特定于车辆的行为和功能。

固件插件关系

UI 集成和 QML 绑定

车辆系统公开了用于用户界面绑定和交互的广泛 QML 属性。

QML 属性架构


车辆状态绑定

关键车辆属性通过自动更改通知公开给 QML 绑定:

财产类型目的信号
armed布尔值车辆防抱死状态armedChanged
flying布尔值飞行状态flyingChanged
coordinateQGeoCoordinate当前位置coordinateChanged
flightModeQString当前飞行模式flightModeChanged
guidedModeSupported布尔值导模能力持续的
messagesSent单位沟通统计数据messagesSentChanged

资料来源:src/车辆/车辆.h136-227

这个综合车辆管理系统为 QGroundControl 中的所有车辆交互提供了基础,从最初的发现到持续的操作和控制。

Building wheel for quickjs (setup.py) ... error error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [12 lines of output] running bdist_wheel running build running build_py creating build\lib.win-amd64-cpython-313\quickjs copying quickjs\__init__.py -> build\lib.win-amd64-cpython-313\quickjs running build_ext building '_quickjs' extension creating build\temp.win-amd64-cpython-313\Release creating build\temp.win-amd64-cpython-313\Release\upstream-quickjs "D:\Visual Studio\Visual Studio 2022\Community\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DCONFIG_VERSION=\"2021-03-27\" -DCONFIG_BIGNUM -IE:\Python3\include -IE:\Python3\Include "-ID:\Visual Studio\Visual Studio 2022\Community\VC\Tools\MSVC\14.43.34808\include" "-ID:\Visual Studio\Visual Studio 2022\Community\VC\Tools\MSVC\14.43.34808\ATLMFC\include" "-ID:\Visual Studio\Visual Studio 2022\Community\VC\Auxiliary\VS\include" "-ID:\Windows Kits\10\include\10.0.22621.0\ucrt" "-ID:\Windows Kits\10\\include\10.0.22621.0\\um" "-ID:\Windows Kits\10\\include\10.0.22621.0\\shared" "-ID:\Windows Kits\10\\include\10.0.22621.0\\winrt" "-ID:\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" /Tcmodule.c /Fobuild\temp.win-amd64-cpython-313\Release\module.obj -Werror=incompatible-pointer-types cl: 命令行 error D8021 :无效的数值参数“/Werror=incompatible-pointer-types” error: command 'D:\\Visual Studio\\Visual Studio 2022\\Community\\VC\\Tools\\MSVC\\14.43.34808\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for quickjs Running setup.py clean for quickjs Failed to build quickjs ERROR: Failed to build installable wheels for some pyproject.toml based projects (quickjs)
03-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值