解析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
根据协议对所有模式切换进行分类
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中相同;