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:
just uTimerScript (PDF).
full document (PDF - 10.2MB).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.
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.