Skip to content

Latest commit

 

History

History
69 lines (47 loc) · 3.34 KB

SM_SwitchMission.md

File metadata and controls

69 lines (47 loc) · 3.34 KB

SM_SwitchMission.lua - ArduPilot Lua script

GENERAL:

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

HOW IT WORKS:

Initialization:

  • 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

Running:

  • 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
  • If allowed, load corresponding Mission to FC:

HOW TO USE:

  1. 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.

  2. Put the Scripting-Option-Switch you decided to use (300..307) into the SM_RC_OPTION parameter

  3. Put the selected Scripting-Option-Switch (300..307) into the parameter RCx_OPTION of the RC-Channel x of your choice.

  4. 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

  5. restart the script (e.g. by restarting the FC)