Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

K9-Subsystem

Author:
Christian Neukom
Date:
1/24/2005

Overview

The K9Subsystem module was created to support the IS demonstration. It includes power and task time models that are based on data collected by the K9 development team and an instrument placement failure model that has failure modes specified in the K9 user interface design.

Model Description

Power:
The following three loads are defined for the model according to data1 collected by the K9 team:

The model computes the sum of these loads according to the task the rover is executing and discharges the battery at that rate.

The model also supports variable loads according to a random distribution with the above means and the standard deviations listed below, which were obtained from the data collection by the K9 team. A new load is computed each time the rover starts to move or the instrument arm is placed.

Failure:
Failure can occur during the following stages of instrument placement:

Failure at each stage is determined through a random function that takes a probability as parameter. It is also possible for a user to interactively set the stage of failure. The default probabilities are listed below and can set by the user in a file2.

Task Time:
The task time of instrument placement varies depending on what stage of the task the failure occurs. The following three average times were measured by the K9 team for the various subtasks of instrument placemen:

The task time to the point of failure or success is the sum of the completed and/or attempted subtasks. Bellow is a list of task times according to the mode of failure or success:

Segmentation succeeded/failed 50 sec
Placement location determined succeeded/failed 60 sec
Placement succeeded/failed 216 sec

Usage

K9Subsystem RobotName [ [interactive] variablePower ]

Optional Parameters

No Parameters:
If the program is run without any optional parameter (e.g. K9Subsystem RobotName) the failure mode of the arm placement is statistically determined according to the probabilities defined in K9Subsystem/FailureData.txt

Interactive:
The optional parameter, "interactive", causes the program to pop up a window each time the model captures a placeInstrument interaction, which prompts the user to input the level of failure for that particular instrument placement task. The following failure options can be selected:

VariablePower:
The variablePower flag determines if the power consumption varies during idle, driving, and instrument placement tasks. If the variablePower parameter is not entered as a command line parameter, the power model uses the constant loads defined in the K9Constant.h file. If the flag is set, the power consumption for each task is determined by a random distribution function with mean and standard deviation defined in the K9Constant.h file.

API

The K9Subsystem publishes the following object classes and interactions:

The K9Subsystem subscribes to the following object classes and interactions:

In order for the K9Subsystem federate to run successfully in a simulation, it has to discover the following object instances:

where robotName is the name entered at the command line.

A federate that wants to use the K9Subsystem must discover the following object instances:

where robotName is the name entered at the command line.

Remark: Do to special requirement in the Conditional Exec, the return value is set to CMD_COMPLETED instead of COM_ERROR when the IPPlaceInstrument command fails.

GUI

The K9Subsystem component includes a small GUI that displays the load and the battery charge of the rover. Three indicators give information about the current activity of the rover, including idle, arm placement, and driving. The GUI also allows the user to set the battery charge (up to the capacity of the battery) to a new value.

K9Subsystem.jpg

K9-Subststem GUI panel

Test Program

For testing, run an RTI and the following three components:
MSF/components/K9Subsystem  roverName
MSF/components/test_K9Subsystem  roverName
MSF/components/manager/SimManager  3
The test program creates a WheeledLocomotor and a shell for discovering the InstrumentedArm instance published by the K9Subsystem. At 10 seconds simulation time, the test program sends a placeInstrument interaction and displays the status of the task. At 15 seconds simulation time, the moving flag is set to driving and reset again at time 26 seconds.

Files

Code and data of the K9Subsystem model reside in the MSF/component/K9Subsystem directory and include the following files:

I_PopupPanel.h			// Popup interface
I_SubsystemPanel.h		// GUI interface
K9Constants.h			// Constant definitions
K9Subsystem.cpp			// main program
InstrumentedArmImpl.cpp   	// Instrumented Arm model
InstrumentedArmImpl.h
PopupPanel.cpp			// User input GUI
PopupPanel.h
PopupPanel.fl			// FLTK design of K9Subsystem GUI
PowerMgr.cpp			// Power management model
PowerMgr.h
SubsystemPanel.cpp		// GUI of K9Subsystem
SubsystemPanel.h		// GUI of K9Subsystem 
SubsystemPanel.fl		// FLTK design of K9Subsystem GUI
makefile               
FailureData.txt			// Failure probabilities for instrument placement
K9SubsystemDoc.dox		// This document in doxygen format
test_K9Subsystem.cpp		// For testing the K9Subsystem

References

1. These constants are currently defined in the file, K9Constants.h, which is located 
in the K9Subsystem directory together with the source files.  It is our plan to define 
the model constants in a XML model description file in a later release of MSF.

2. Probabilities of failure are defined in the file FailureData.txt, which is located 
in the K9Subsystem directory. .  It is our plan to define these values in a XML model 
description file in a later release of MSF.

Generated on Thu Apr 7 18:21:16 2005 for MST API by  doxygen 1.4.1