LRAUV  revA
Mission Scripting Requirements

Simple operations must be simple to "code"

  • "code" may mean writing a script or using a gui to create bytecode, etc.
  • Important, but subjective requirement.

Allow specification of constants in the Mission that are stored in the Slate

In mission, function arguments must be specified by name

  • Since values can only be passed through readers and writers (which must be named), this is pretty well enforced.

In mission, function arguments must have intrinsic units

  • i.e., meter(9), celsius(12), etc.
  • Enforced through the definition of DataValue: a value associated with a unit.

Allow creation of more complex behaviors by combining simpler behaviors

  • Achieved - for example, one could combine a temperature-controlled DepthEnvelope behavior with a YoYo behavior to achieve a temperature-controlled YoYo

Must be possible to develop new commands and behaviors without recompiling code.

  • Allowed though Scripting
  • Todo:
    fix and test Scripting

Allow mission stacks, commands, and behaviors to be started and stopped based on observations or system state

  • i.e., GPS fixes to keep vehicle on track, uploads to keep ground personnel aware of status
  • Enabled through When, While, and Until mission clauses (see MissionItem)

Allow for branching in mission

  • While there is no "If/Then/Else" syntax yet, the desired effect can be achieved reactively via When and While mission clauses (see MissionItem), or imperatively by embedding the clauses in a sequential stack that wraps each branch.

Allow for looping in mission

  • Enabled through Repeat mission clause (see MissionItem)

Mission language must be human readable

  • Implemented through an API that leverages the Lua scripting language

Mission language must machine readable.

  • Implemented through an API that leverages the Lua scripting language

Mission language must enable strong type checking

  • Scripting API makes it hard to specify the wrong parameter for a behavior/command

Mission language must enable unit checking.

  • Units must be specified for all DataValues passed to behaviors and commands