解析GuidedActionController实现模式控制流程

- actionRTL
- actionLand
- actionTakeoff
- actionResumeMission、actionResumeMissionUploadFail
- actionResumeMissionUploadFail、actionContinueMission
- actionMVStartMission
- actionArm
- actionDisarm
- actionEmergencyStop
- actionChangeAlt
- actionGoto
- actionSetWaypoint
- actionOrbit
- actionLandAbort
- actionPause
- actionMVPause
- actionVtolTransitionToFwdFlight
- actionVtolTransitionToFwdFlight
- 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
将所有模式切换根据协议不同进行分类
以RTL为例:
CuideActionController-->executeAction()-->vehicle.cc.guideModeAction()-->firmwarePlugin->guideModeAction()-->_setFlightModeAndValidate()-->setFlightMode();





以actionChangeAlt为例:
CuideActionController-->executeAction()-->vehicle.cc.guidedModeChangeAltitude()-->firmwarePlugin->guidedModeChangeAltitude()-->vehicle->sendMavCommand



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



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





5.MAVLINK_MSG_ID_MISSION_SET_CURRENT:actionSetWaypoint



解锁qml->ArmedIndicator.qml
构型切换-> VtolModeIndicator.qml
以解锁流程为例:
实现以singal方式实现:
在MainRootWindow.qml中创建singal;
在FlightDisplayView.qml中使用Connnections与guideController进行连接;
跳转confirmAction;
再跳转到executeAction(),之后和GuideActionController中相同;




