This page addresses the concept of having a script of pre-arranged pokes to the MOOSDB. This may be useful for a number of reasons besides debugging. The primary tool described here is the uTimerScript MOOS application. It is capable of (a) scripted pokes at a pre-defined times after launch, (b) pokes times specified to fall randomly within an specified interval, (c) pokes having numerical values falling with a uniformly random interval, and several other features including conditioning the running of the script based on other MOOS variables.
Where to get more information:
- uTimerScript: The MOOS-IvP Autonomy Tools Users Manual. just uTimerScript (PDF). full document (PDF - 10.2MB).
Basic uTimerScript Usage
uTimerScript is configured with its own block in the MOOS configuration file. The general format is below. The primary entries are the events themselves, defined by a MOOS variable, value, and time or time-range when the event is to occur. There are many options for configuring the script. These options are described in the IvP Helm Documentation and MOOS Documentation, but a quick look at the options can be seen by typing "uTimerScript—example" on the command line.
ProcessConfig = uTimerScript { event = var=, val=, time= event = var=, val=, time= ... event = var=, val=, time= [OPTIONS] }
Further options exist beyond the vanilla launch configuration described above, including (a) the ability to launch a given app under an aliased name, (b) specifying command-line arguments to app at launch time and more. See the MOOS documentation.
A Simple Example with uTimerScript
The below mission file contains a uTimerScript script for repeatedly posting the variable 'COUNTER_A' with values 1–10 in ascending order roughly once every half second. The last event in the script is posted at time chosen from a random five second interval.
// (wget http://oceanai.mit.edu/2.S998/examples/utscript.moos) ServerHost = localhost ServerPort = 9000 Community = alpha ProcessConfig = ANTLER { MSBetweenLaunches = 200 Run = MOOSDB @ NewConsole = false Run = uXMS @ NewConsole = true Run = uTimerScript @ NewConsole = false } ProcessConfig = uXMS { VAR = COUNTER_A, DB_CLIENTS, DB_UPTIME COLOR_MAP = COUNTER_A, red HISTORY_VAR = COUNTER_A } ProcessConfig = uTimerScript { paused = false event = var=COUNTER_A, val=1, time=0.5 event = var=COUNTER_A, val=2, time=1.0 event = var=COUNTER_A, val=3, time=1.5 event = var=COUNTER_A, val=4, time=2.0 event = var=COUNTER_A, val=5, time=2.5 event = var=COUNTER_A, val=6, time=3.0 event = var=COUNTER_A, val=7, time=3.5 event = var=COUNTER_A, val=8, time=4.0 event = var=COUNTER_A, val=9, time=4.5 event = var=COUNTER_A, val=10, time=5:10 reset_max = nolimit reset_time = all-posted }
The mission may be launched from the command-line with:
$ pAntler utscript.moos
This should open a new console window for uXMS displaying the variables COUNTER_A variable repeatedly incrementing from 1 to 10. Note that reaching 10 happens somewhere between 0.5 and 5.5 seconds after reaching 9.