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