QGC二次开发实战指南(一):从零构建自定义地面站界面

qgc航线设置 阅读详情

1. 为什么需要自定义QGC地面站界面

第一次接触QGroundControl(简称QGC)时,我就被它强大的功能震撼到了。但用久了发现,标准界面虽然全面,却不一定适合所有场景。比如做物流无人机监控时,那些飞行参数密密麻麻挤在一起,真正需要的配送状态却要翻好几层菜单才能看到。

这就像给你一辆跑车,却要你每天用它来送快递——不是不能用,就是不太顺手。这时候二次开发的价值就体现出来了:我们可以把QGC改造成专属于自己业务的"快递车"。

QT和QML这对组合是QGC界面开发的核心。QT负责底层逻辑,像发动机一样提供动力;QML则是车身设计,决定了用户看到的每一个仪表盘和按钮。两者通过MAVLink协议与无人机通信,就像方向盘和轮胎的连接。

2. 开发环境搭建实战

记得我第一次搭环境时,被各种依赖关系折腾得够呛。后来发现用Ubuntu 20.04最省事,QT版本建议用5.15.2——这是QGC官方测试最充分的组合。

装完基础系统后,这几个包必不可少:

sudo apt-get install build-essential git cmake
sudo apt-get install libssl-dev libsdl2-dev

克隆QGC源码时要注意分支选择。4.2.x系列最稳定,适合新手入门:

git clone --recursive https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
git checkout Stable_V4.2

编译时有个小技巧:用-j参数能大幅加快速度。我的16核机器上这样配置:

mkdir build
cd build
cmake .. -G Ninja
ninja -j16

3. 创建你的第一个自定义界面

我们从最简单的开始——做个物流监控仪表盘。先在src目录下新建LogisticsDashboard文件夹,然后创建三个关键文件:

  1. LogisticsDashboard.h:C++头文件
  2. LogisticsDashboard.cpp:业务逻辑实现
  3. LogisticsDashboard.qml:界面设计

在.pro项目文件中添加新模块:

SOURCES += \
    src/LogisticsDashboard/LogisticsDashboard.cpp

HEADERS += \
    src/LogisticsDashboard/LogisticsDashboard.h

QML文件可以先从模仿开始。下面这段代码创建了一个带物流状态的圆形指示器:

import QtQuick 2.11
import QGroundControl.Controls 1.0

Item {
    width: 200
    height: 200
    
    Rectangle {
        anchors.centerIn: parent
        width: 150
        height: 150
        radius: 75
        color: deliveryStatus === 1 ? "green" : "red"
        
        QGCLabel {
            anchors.centerIn: parent
            text: deliveryStatus === 1 ? "配送中" : "待命"
        }
    }
}

4. 实现数据绑定与交互

光有界面还不够,要让数据动起来。在C++类中定义可绑定属性:

class LogisticsDashboard : public QObject
{
    Q_OBJECT
    Q_PROPERTY(int deliveryStatus READ deliveryStatus WRITE setDeliveryStatus NOTIFY deliveryStatusChanged)
    
public:
    int deliveryStatus() const { return _status; }
    void setDeliveryStatus
QGC地面站二次开发(二)QGC 界面自定义和修改 QGC地面站二次开发(一)QGC 界面自定义和修改 阅读详情

相关推荐

QGC地面站二次开发(一)地面站介绍以及软件框架(1)地面站使用介绍和接口介绍

QGC地面站二次开发(一)地面站介绍以及软件框架(1)地面站使用介绍和接口介绍

Neil_Chris的博客 2万+

P2:聊一聊QGC地面站和Mission Planner地面站

QGC地面站和Mission Planner地面站

m0_53394161的博客 4162

Ubuntu16.04之QGC地面站安装

Ubuntu16.04之QGC地面站安装 没有地面站的系统不是完整的系统。 可以实现与仿真环境的通信 Ubuntu的QGC地面站配置过程如下: 首先下载QGC,下面提供各个版本,我安装的是3.5.2版本,太新的版本打开提示报错: https://github.com/mavlink/qgroundcontrol/releases 下载这两个包,其中AppImage可以不用下载 下载完成后解压ta...

爆炒小肥牛 6248

QGC地面站小白安装与简单实用

QGC二次开发 电脑:联想拯救者Lenovo R720,在电脑上安装虚拟机——>在虚拟机中安装UBuntu系统——>在Ubuntu中安装QGC以及Qt编译器。 1 安装VMware Workstation Pro以及UBuntu系统 1 下载 先在百度网盘上下载Ubuntu18.04-desktop-amd64.iso映像文件以及VMware Workstation Pro15.5.0rar压缩包。 1.1 VMware下载 接下来安装操作步骤进行安装,在点击安装之后会有许可证,其密钥是UY75

lcy990417的博客 8676

QGC地面站二次开发实战:自定义MAVLink消息的可视化与交互设计

本文详细介绍了QGC地面站二次开发中自定义MAVLink消息的可视化与交互设计实践。通过解析MAVLink消息处理机制,指导开发者从飞控端消息定义到QGC端界面集成的完整流程,涵盖消息解析、QML控件开发及性能优化技巧,帮助实现无人机数据的定制化监控与交互。

z2a3b4c5d的博客 623

QGC二次开发入门教程[项目代码]

本文详细介绍了QGroundControl(QGC)二次开发的入门教程,包括课程大纲、软件名称和图标修改、官方中文版BUG修复、汉化、商标修改、信号与槽的添加、QML与C++交互、MAVLINK的解析与发送、地图更换、自定义MAVLINK消息添加、主工具栏自定义图标添加、自定义MAVLINK数据解析与显示、多机轨迹同时显示以及在地图上画点等内容。教程提供了详细的步骤和代码示例,适合具备少量C++和QT基础的开发者学习。此外,还提供了修改后的QGC源码、开发环境配置的虚拟机以及独家汉化版QGC的下载链接,方便开发者快速上手。

YOLOv5轻量化实战:从Ghost模块到工业级部署的完整指南

本文详细介绍了YOLOv5轻量化实战,重点解析了Ghost模块在工业检测中的应用及其优化策略。通过Ghost卷积技术,模型参数量和GFLOPs显著降低,同时保持高精度,适用于实时性要求严格的工业场景。文章还提供了从模型优化到TensorRT加速的完整部署指南,助力开发者实现高效工业级应用。

weixin_28223453的博客 483

DSP配置I2C通讯(非IO口软件模拟时序)

dsp即数字信号处理器,是一种广泛应用的嵌入式处理器,主要应用是实时快速地实现各种数字信号处理算法,目前,国际主要的dsp供应商是ti公司,其tms32系列产品占据了dsp市场近一半的份额,本文以TMS320F28377D为例,使用ti公司dsp开发工具ccs10.1配置i2c模块。 写这篇文章的缘由,因为市面上很多DSP其实内部是具有硬件I2C接口的,但由于网络上大部分资料和例程都是利用IO口模拟I2C时序进而实现I2C通讯的。给很多想学习硬件I2C通讯的小伙伴带来了困难。 下面先介绍一下配置步骤 1.E

weixin_44387442的博客 5537

2024年全国大学生信息安全竞赛安徽省赛网络系统建设与运维赛项-网络构建真题

该网络工程方案主要包含基础配置、有线网络、无线网络、出口网络、运维配置和SDN网络六个部分。基础配置包括设备接口设置、SSH服务开启和SNMP功能配置。有线网络部分重点部署VLAN、MSTP、VRRP和OSPF协议,实现网络冗余和负载均衡。无线网络规划了AP点位、信号覆盖和用户接入策略,包括SSID配置、频段优化和安全认证。出口网络配置了NAT转换、VPN隧道和流量审计功能。运维方面搭建了监控平台实时监测设备状态。SDN网络部分通过控制器实现流量管控。整个方案实现了多业务隔离、高可用性网络架构和

weixin_42221934的博客 1169

MC33PT2000控制详解一:PT2000 Dev Studio工具的使用

MC33PT2000共可控制6个高低端(如控制6个高压喷油器),1个高低端(如控制高压油泵)和DC-DC模块(如升压到65V).

m0_69929716的博客 1339

室内无线传播损耗分析与传播模型验证课程设计

室内无线传播损耗分析与传播模型验证课程设计

a_zxswer的博客 180

基于STM32L4XX、HAL库的RTL8201F 以太网收发器(PHY)驱动程序设计

define PHY_RESET_DELAY 1000 // PHY复位延迟(ms)#define PHY_AUTONEGO_DELAY 3000 // 自动协商延迟(ms)/* 检查PHY ID (RTL8201F的ID为0x001CC816) *//* 系统时钟配置,确保ETH有50MHz时钟 *//* 初始化CPU, AHB和APB总线时钟 */

zhusl6688的博客 785

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1106

手把手教你学 MATLAB 实战训练(6.5):基础实战实例

MATLAB 是一款强大的数学软件,广泛应用于工程计算、信号处理、控制系统设计、图像处理等领域。学习 MATLAB 不仅可以提高你的编程技能,还能帮助你解决实际的数学和工程问题。下面我将通过几个实战训练实例来教你如何使用 MATLAB。

xiaoheshang_123的博客 363

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 第五节:深入理解STM32定时器中断与PWM生成(CubeMX实战)
下一篇: 告别Arduino!用VSCode+ESP-IDF给零知ESP32开发AI语音项目,效率翻倍指南
孤灯苦狗
博客等级 码龄10年 47粉丝 1534原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值