QGC二次开发---多机一键切换飞行模式

本文详细介绍了在QGroundControl中如何实现多架无人机的一键切换飞行模式功能。首先,通过前端按钮触发后端函数,然后利用MultiVehicleManager类获取所有载具对象并遍历,调用Vehicle类的setFlightMode()方法设置飞行模式为‘Stabilized’。在QML前端,使用Q_INVOKABLE使得多机控制函数能在前端页面直接调用。
摘要由CSDN通过智能技术生成

1、实现思路

  1. 首先在通过前端页面的按钮或其他控件出发后端函数
  2. 其次后端函数应该获取已连接所有载具对象
  3. 再调用载具对象类对飞行模式设置的函数
  4. 返回切换结果(根据情况添加)

 

2、多机控制

2.1 QGC源码多机管理

在源码中有MultiVehicleManager这个类,负责管理多架载具的对象,其中声明了私有属性_vehicles来存放多架载具的类对象。可以通过循环的方式获取载具对象,进行相应的控制。

2.2 QGC载具控制

在源码中Vehicle类管理了一架载具的所有数据、以及相应的指令控制。其中包括设置飞行模式函数setFlightMode()。

2.3QGC前端页面

在源码FlightDisplayView.qml文件中,以及将多机载具控制对象MultiVehicleManager注册到前端页面,我们只需要使用Q_INVOKABLE关键字,即可在前端出发多机控制的函数。

3、实现代码

3.1 MultiVehicleManager.h

class MultiVehicleManager : public QGCTool
{
    Q_OBJECT

public:
    MultiVehicleManager(QGCApplication* app, QGCToolbox* toolbox); 
/*一键切换增稳*/
    Q_INVOKABLE void allToStabilized();
}

3.2 MultiVehicleManager.cc

void MultiVehicleManager::allToStabilized()
{
    /*遍历_vehicles列表*/
    for (int i=0; i< _vehicles.count(); i++) {
        Vehicle* vehicle = qobject_cast<Vehicle*>(_vehicles[i]);
        /*调用vehicle->setFlightMode函数*/
        vehicle->setFlightMode(tr("Stabilized"));
    }
}

3.3 FlightDisplayView.qml

{
    name:               qsTr("一键增稳"),
    iconSource:         "/res/action.svg",
    buttonVisible:      _anyActionAvailable,
    action:             -2
}
onClicked: {
                if(index === 0) {
                    checklistDropPanel.open()
                } else {
                    guidedActionsController.closeAll()
                    var action = model[index].action
                    if (action === -1) {
                        guidedActionList.model   = _actionModel
                        guidedActionList.visible = true
                    } else if(action === -2)
                    {
                        QGroundControl.multiVehicleManager.vehicles.allToStabilized()
                    }
                    else {
                        _guidedController.confirmAction(action)
                    }
                }

            }

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值