That script is derived from MissionSelector.lua in
https://github.com/ArduPilot/ardupilot/tree/master/libraries/AP_Scripting/applets
and the examples in https://github.com/ArduPilot/ardupilot/tree/master/libraries/AP_Scripting/examples
It is useful to switch between missions that are saved on SD-card.
The amount of missions is theoretically unlimited.
The switching can be done by switch or pushbutton.
Switching is allowed when:
- disarmed,
- in modes that are not mode-AUTO if they are activated by RC or GCS
- in mode-AUTO when the current mission is complete
This script is intended to use with yaapu-script in transmitter, because all info and warning messages of the script you can receive herein. If you can accept not receiving any feedback, the usecase with a multi-position-switch is possible also without yaapu-script. https://github.com/yaapu/FrskyTelemetryScript
CAUTION: Use this script AT YOUR OWN RISK
- add script-specific parameter-table _SM at still existing or first free table_key
- read parameter
SM_POSITIONS
(number of switch positions) - read parameter
SM_RC_OPTION
(selected scripting-option-switch in range 300..307) - find correct subdirectory for SITL or SD-card
- count available and check sufficient number of missions
- find channel for mission-switching according to parameter
SM_RC_OPTION
- Get RC input as selected and check if loading a mission is requested
- If loading is requested,
- check if changing the mission is allowed:
- the current Mode is non-AUTO and the ModeReason is RC, GCS or INITIALIZED or
- the current Mode is non-AUTO and the vehicle isn't armed or
- the Mission is completed
- check if changing the mission is allowed:
- If allowed, load corresponding Mission to FC:
-
Store the Missions
SM_Mission#0.waypoints, SM_Mission#1.waypoints
and so on in the subdir/missions
where the lua-script has to be placed (e.g. on SD-Card in '/APM/scripts/missions'). Make sure that the # of missions are starting at #0 and ascending with no gap. -
Put the Scripting-Option-Switch you decided to use (300..307) into the
SM_RC_OPTION
parameter -
Put the selected Scripting-Option-Switch (300..307) into the parameter
RCx_OPTION
of the RC-Channelx
of your choice. -
Put information about the selection-method you want to use for the missions into the
SM_POSITIONS
parameter:-
if <1 : no action (disable switching of missions)
-
if 1 : the selection is done by a pushbutton: short-push will go through the missions, long-push will load the mission
-
if >1 : the selection is done by a multi-position-switch with the amount of positions are given here
-
if using a multi-position-switch, the whole way of the corresponding RC-Channel is devided into regions e.g. for 6 missions:
Mission: #0 #1 #2 #3 #4 #5 Fraction 1/10 1/5 1/5 1/5 1/5 1/10 Threshold -100% -80% -40% 0% 40% 80% 100% - For easy calculation of input-steps it's recommended to set
RCx_MIN to 1000us, RCx_TRIM to 1500us and RCx_MAX to 2000us
- For easy calculation of input-steps it's recommended to set
-
-
restart the script (e.g. by restarting the FC)