• QGC GuidedActionController.qml模式和toolBarIndicators 解锁和构型切 控制流程解析


    解析GuidedActionController实现模式控制流程

     总结模式

    1. ​​​​​​​actionRTL
    2. actionLand
    3. actionTakeoff
    4. actionResumeMission、actionResumeMissionUploadFail
    5. actionResumeMissionUploadFail、actionContinueMission
    6. actionMVStartMission
    7. actionArm
    8. actionDisarm
    9. actionEmergencyStop
    10. actionChangeAlt
    11. actionGoto
    12. actionSetWaypoint
    13. actionOrbit
    14. actionLandAbort
    15. actionPause
    16. actionMVPause
    17. actionVtolTransitionToFwdFlight
    18. actionVtolTransitionToFwdFlight
    19. actionROI

    模式解析

    这块的模式控制通过不同的MAVLINK协议进行上传到机载端

    1.MAVLINK_MSG_ID_SET_MODE

    2.MAVLINK_MSG_ID_COMMAND_INT

    3.MAVLINK_MSG_ID_COMMAND_LONG

    4.MAVLINK_MSG_ID_MISSION_COUNT

    将所有模式切换根据协议不同进行分类

    1.使用MAVLINK_MSG_ID_SET_MODE:

    actionRTLactionLandactionStartMission、actionContinueMission、actionMVStartMission

    以RTL为例:

    CuideActionController-->executeAction()-->vehicle.cc.guideModeAction()-->firmwarePlugin->guideModeAction()-->_setFlightModeAndValidate()-->setFlightMode();

     

     

     

    2.MAVLINK_MSG_ID_COMMAND_INT:

    actionGoto、actionOrbit、actionROI

    以actionChangeAlt为例:

    CuideActionController-->executeAction()-->vehicle.cc.guidedModeChangeAltitude()-->firmwarePlugin->guidedModeChangeAltitude()-->vehicle->sendMavCommand

     

     

    3.MAVLINK_MSG_ID_COMMAND_LONG:

    actionEmergencyStop、actionChangeAlt、actionTakeoff、actionArm、actionDisarm、actionVtolTransitionToFwdFlight、actionVtolTransitionToFwdFlight、actionLandAbort、actionPause、actionMVPause、

    其中arm和Disarm流程一致,直接改变vehicle.armed的属性值,再通过Q_PROPERTY进行绑定,再触发setArmed和armedChanged;

     

    其他的模式流程相同,以Takeoff为例:

     
    

    4.MAVLINK_MSG_ID_MISSION_COUNT:

    actionResumeMission、actionResumeMissionUploadFail

     

     

     

     

    5.MAVLINK_MSG_ID_MISSION_SET_CURRENT:actionSetWaypoint

     解锁qml->ArmedIndicator.qml

    构型切换-> VtolModeIndicator.qml

    以解锁流程为例:

    实现以singal方式实现:

    在MainRootWindow.qml中创建singal;

    在FlightDisplayView.qml中使用Connnections与guideController进行连接;

    跳转confirmAction;

    再跳转到executeAction(),之后和GuideActionController中相同;

     

     

     

     

  • 相关阅读:
    CalBioreagents 绵羊抗α-2-HS糖蛋白 亲和纯化说明
    CMT2380F32模块开发4-UART例程
    宝塔安装rabbitMQ实战
    HTTP协议
    HashMap的基本使用
    vue 使用cnpm install 按钮node库 点击页面按钮没有任何反映
    react、vue动态form表单
    Linux命令(94)之tail
    拼多多API_根据关键词取商品列表
    MongoDB 简介和安装
  • 原文地址:https://blog.csdn.net/nieji3057/article/details/125520605