• 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中相同;

     

     

     

     

  • 相关阅读:
    【iOS】UI学习(一)
    新闻稿写作的具体要求是什么?
    机器人制作开源方案 | 莲花灯
    『C语言进阶』程序环境和预处理
    Bert不完全手册8. 预训练不要停!Continue Pretraining
    14天学习训练营之 初识Pygame
    Java的Lambda表达式学习笔记:如何在lambda表达式中引用方法
    基于.NetCore开发博客项目 StarBlog - (29) 开发RSS订阅功能
    Java语言基础第五天
    js的同步异步
  • 原文地址:https://blog.csdn.net/nieji3057/article/details/125520605