解析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:
actionRTL、actionLand、actionStartMission、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中相同;