<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\documentclass[onecolumn,letterpaper,11pt]{article}

%=================================================================
\input{common_latex/common_latex_packages}
\input{common_latex/common_latex_definitions}
\input{common_latex/common_latex_help_format}
%=================================================================

\begin{document}

\begin{labcover}
\labtitle{uFldHazardMetric: Grading a HazardSet Report}
\vspace{0.1in}
\labdate{June 2018}
\vspace{0.1in}
\labauth{Michael Benjamin, mikerb@mit.edu}
\labauth{Department of Mechanical Engineering}
\labauth{MIT, Cambridge MA 02139}
\labtoc{small}
\end{labcover}

\wikidoc{file=IvPTools.UFldHazardMetric}
\wikidoc{bugz=uFldHazardMetric}
\wikidoc{auth=mikerb@mit.edu}

%=================================================================
\section{Overview}
%=================================================================
\label{sec_ufld_hmetric}
\index{uFldHazardMetric}

The \app{uFldHazardMetric} application is a utility for quickly
evaluating a hazardset report; a list of declared hazards and their
locations.  Evaluating a hazardset report against ground truth and a
reward structure is fairly straight-forward, but tedious. This tool
performs this operation automatically, and as a MOOS process with the
result posted both to the MOOSDB and viewable in the appcast output
of \app{uFldHazardMetric}.  Operation is comprised of a few simple
parts:

\begin{packed_enumerate}[3]
\item {\em Import a ground-truth hazard field}: A ground truth hazard
  field is a text file listing the location of hazards and hazard-like
  objects, and their locations. This file also typically includes a
  search region, a convex polygon containing all listed objects.  A
  \app{uFldHazardMetric} configuration parameter names the file.

\item {\em Import a reward structure}: A reward structure, consisting
  of penalties for missed hazards and false alarms, is imported as
  a set of \app{uFldHazardMetric} configuration parameter.

\item {\em Evaluate a hazardset report}: A hazardset report is received
  by MOOS mail and evaluated item by item against the ground truth
  and reward structure. The results are then posted and rendered. This
  step is repeated for each received report.
\end{packed_enumerate}

\vspace{0.1in}
\begin{figure}[H]
  \centering 
  \includegraphics[width=0.88\textwidth]{figures/uhme_overview.png}
  \caption{{\bf The uFldHazardMetric}: interacts with the on-board
    sensor and processes sensor information and generates a report,
    upon request, regarding the identification and location of
    hazards. The arrows indicate the key MOOS variables used for
    interacting with the sensor and generating reports.}
\label{fig_uhme_overview}
\end{figure}
\vspace{0.1in}

%=================================================================
\section{Using uFldHazardMetric}

Typical use of \app{uFldHazardMetric} has it situated in the shoreside
community, with hazardset reports shared from vehicles to the
shoreside, and evaluation results shown via the \app{uFldHazardMetric}
appcast output running on \app{pMarineViewer}. Full evaluation reports
are also logged to the shoreside log file for later reference. This
usage scenario with variations is described next. An example of this
usage is in the Jake Kasper example mission described in Section
\ref{sec_uhme_jake}.

%=================================================================
\subsection*{Typical Module Topology}

The typical module topology is shown in Figure \ref{fig_uhme_topology}
below. The \app{uFldHazardMetric} is situated in the shoreside MOOS
community. It does {\em not} interact with the \app{uFldHazardSensor}
directly, but they are typically both configured with the same ground
truth hazard file. \mvar{HAZARDSET\_REPORT} messages are assumed to
come from the vehicle. In the usage case below, they are produced by
\app{uFldHazardMgr}. But as the latter is simply a straw-man sensor
processing module, that could be replaced with something else
entirely. \mvar{HAZARDSET\_REPORT\_EVAL} messages may be shared back
to the vehicle, but this is likely not essential, as the typical
destination of an evaluation is the appcast output and the log file.

\vspace{0.1in}
\begin{figure}[H]
  \centering
  \includegraphics[width=0.7\textwidth]{figures/uhme_topology.png}
  \caption{{\bf Typical uFldHazardMetric Topology:} This module runs
    on the shoreside, alongside the hazard sensor typically, and
    receives hazazardset reports from the vehicle shared with the
    \mvvar{HAZARDSET\_REPORT} variable. Evaluations may be seen via
    the appcast output of \app{uFldHazardMetric}, or in the log file.}
\label{fig_uhme_topology}
\end{figure}

%=================================================================
\subsection{Required MOOS Variables Shared between MOOSDBs }

Using \app{uFldHazardMetric} requires certain information flowing
between the shoreside and vehicle communities as shown in Figure
\ref{fig_uhme_topology}. Sharing is done by \app{pShare}, but the
\app{pShare} configuration is handled dynamically using the
\app{uFldNodeBroker} and \app{uFldShoreBroker} applications. We
discuss here the necessary configuration entries for these two
applications.  From the vehicle to the shoreside, one variable needs
to be shared. The below line should appear in the
\app{uFldNodeBroker} configuration block on all vehicles.

\prevblue
\begin{verbatim}
  bridge =  src=HAZARDSET_REPORT      // in uFldNodeBroker config block
\end{verbatim}
\postverb

\noindent
This \mvar{HAZARDSET\_REPORT} variable constitutes the report generated
by \app{uFldHazardMetric} or a similar module running in the vehicle
generating a hazardset report.  The line may also be found in the
vehicle configuration for the Jake Kasper example mission discussed in
Section \ref{sec_uhme_jake}.

\pskip

Going in the other direction, from shoreside to vehicle, the below
line should appear in the \app{uFldShoreBroker} configuration block in
the shoreside MOOS community. See the documentation for
\app{uFldShoreBroker} for a discussion on the syntax.

\prevblue
\begin{verbatim}
  // Bridge from Shoreside to Vehicle - in uFldShore Broker configuration
  bridge =  src=HAZARDSET_REPORT_EVAL_$V, alias HAZARDSET_REPORT_EVAL
\end{verbatim}
\postverb

\noindent
It may not be the case that your vehicle is actually utilizing the
report evaluation, so the above may be optional. And certainly a
typical mission will need to share other variables besides these, but
from the perspective of \app{uFldHazardMetric}, these are the shares
to make sure are configured.  The above couple lines may also be
found in the shoreside configuration for the Jake Kasper example mission
discussed in Section \ref{sec_uhme_jake}.


%=================================================================
\subsection{The False-Alarm and Missed-Hazard Reward Structure}
\label{sec_uhme_penalty_pfa}

The primary metric for evaluating a hazardset report is based on penalties
assigned to missed hazards and false alarms. The penalties are set with
the parameters:

\prevblue
\begin{verbatim}
   penalty_missed_hazard = &lt;number&gt;    // The default is 100
   penalty_false_alarm   = &lt;number&gt;    // The default is 10
\end{verbatim}
\postverb

\noindent
With $k_1$ missed hazards and $k_2$ false alarms, the penalty is: 

$$penalty(k_1, k_2) = penalty_{_{MH}}(k_1) + penalty_{_{FA}}(k_2) $$

%=================================================================
\subsection{The Max-Time and Time-Overage Reward Structure}
\label{sec_uhme_penalty_time}

An optional additional metric may be applied which penalizes the
report if it is late, with additional potential penalties the longer
it is late. The time penalties are set with following parameters,
beginning with the \pvar{max\_time} parameter setting the point when a
report is considered {\em late}:

\prevblue
\begin{verbatim}
   max_time              = &lt;number&gt;  // seconds, default is 0
   penalty_max_time_over = &lt;number&gt;  // penalty units, default is 0
   penalty_max_time_rate = &lt;number&gt;  // penalty units, default is 0
\end{verbatim}
\postverb

\noindent
The \pvar{penalty\_max\_time\_over} parameter indicates the immediate
one-time penalty applied if the report is late at all. The
\pvar{penalty\_max\_time\_overage} penalty is applied for {\em each
  second} of time past the deadline. If \pvar{max\_time} is zero,
there is no mission time limit.

\pskip

\noindent
If $t$ is the amount of time over the max time:

\vspace{0.1in}
\small
\begin{align*}
penalty(k_1, k_2, t) &amp;= \begin{cases}
    penalty_{_{FA}}(k_1) + penalty_{_{MH}}(k_2)   &amp; t \leq 0 \\
    penalty_{_{FA}}(k_1) + penalty_{_{MH}}(k_2) + penalty_{_{TO}} + 
    penalty_{_{TR}}(t)  &amp; t &gt; 0 \\
  \end{cases}\\
\end{align*}
\normalsize
\vspace{0.1in}

\noindent
The search duration clock re-starts each time \app{uFldHazardMetric}
receives incoming mail on the variable \mvar{HAZARD\_SEARCH\_START},
regardless of the variable's value. Typically this variable is posted
upon vehicle deployment as is done in the Jake Kasper example
mission. (Hint: see how \pvar{button\_one} is configured for
\app{pMarineViewer} in the Jake Kasper mission.)

%=================================================================
\subsection{Raw and Normalized Scores}
\label{sec_uhme_penalty_norm}

Past experience has shown that people appreciate a normalized score. A
goal of zero (no penalties, perfect score) is somehow not as
motivating as striving for 100\% on a scale of zero to 100. A
normalized score is derived from considering the worst possible score if each 
object in the hazard file were reported wrong. The score may be worse
than this if the report is late and there are late penalties, but time is not
used for the purposes of normalizing. 

\pskip

If $j_1$ and $j_2$ are the actual number of hazards and benign objects
taken from ground truth in the hazard file, the worst score (without
applying overtime penalties) is:

\vspace{0.07in}
$$maxpenalty(j_1, j_2) = penalty_{_{MH}}(j_1) + penalty_{_{FA}}(j_2) $$

\vspace{0.07in}
\noindent
The normalized score is then:

\vspace{0.07in}
$$score(k_1, k_2, t) = \frac{maxpenalty(j_1, j_2) - penalty(k_1, k_2,t)}{maxpenalty(j_1, j_2)}$$

\vspace{0.07in}
\noindent 
If $penalty(k_1, k_2, t)$ is actually greater than $maxpenalty(j_1, j_2)$ due to 
lateness, resulting in a negative score, the normalized score is clipped to zero.

%=================================================================
\subsection{The Report Evaluation Format}
\label{sec_uhme_report}

The evaluation of the hazardset report has two formats, a terse and
and verbose form. The terse form, \mvar{HAZARDSET\_EVAL}, fully
explains the score, the metrics, and the components of the submitted
report responsible for the score.  It may looks something like the
example below from the Jake Kasper example mission:

\prevgreen
\begin{verbatim}
   HAZARDSET_EVAL =  vname=jake,               report_name=BillandJoe,
                     total_score=675,          norm_score=37.5,
                     score_missed_hazards=500, score_false_alarms=175,
                     score_time_overage=0,     total_objects=10,
                     total_time=1284.91,       received_time=1314.05,
                     start_time=29.14,         missed_hazards=5,
                     correct_hazards=5,        false_alarms=5,
                     penalty_false_alarm=35,   penalty_missed_hazard=100,
                     penalty_max_time_over=100, penalty_max_time_rate=0.05,
                     max_time=1800
\end{verbatim}
\postverb

\noindent
The full evaluation, \mvar{HAZARDSET\_EVAL\_FULL} provides all the
details about which hazards were declared and missed, and which benign
objects were false alarms.  It may look something like the example
below from the Jake Kasper example mission:

\prevgreen
\begin{verbatim}
   HAZARDSET_EVAL_FULL = (Everything in the normal report),object_report={
                         label=01,truth=hazard,report=hazard#
                         label=02,truth=hazard,report=nothing,penalty=100#
                         label=03,truth=hazard,report=hazard#
                         label=04,truth=hazard,report=nothing,penalty=100#
                         ...
                         label=15,truth=benign,report=hazard,penalty=35#
                         label=16,truth=benign,report=hazard,penalty=35#
                         label=17,truth=benign,report=nothing#
                         label=18,truth=benign,report=hazard,penalty=35} 
\end{verbatim}
\postverb

\noindent
The latter perhaps may be simply used for forensics, or perhaps if further clarity 
is needed in how a scoring was applied.

%=================================================================
\subsection{Publishing the Mission Evaluation Parameters}
\label{sec_uhme_params_post}

Upon startup, the mission parameters are published by
\app{uFldHazardMetric} on the shoreside and sent to each of the
vehicles. Presumably this is to allow designers of the behavior
autonomy to automatically adapt their mission to metrics that may not
be known until mission launch time.  The format of this message may
look something like:

\prevgreen
\begin{verbatim}
UHZ_MISSION_PARAMS = penalty_missed_hazard=100,               
                     penalty_false_alarm=35,
                     max_time=600, 
                     penalty_max_time_over=200,                         
                     penalty_max_time_rate=0.45,                        
                     search_region = pts={-150,-75:-150,-50:40,-50:40,-75}
\end{verbatim}
\postverb


%=================================================================
\section{Configuration Parameters of uFldHazardMetric}
%=================================================================
\index{uFldHazardMetric!Configuration Parameters}
\index{Configuration Parameters!uFldHazardMetric}

The following parameters are defined for \app{uFldHazardMetric}. A more
detailed description is provided in other parts of this
section. Parameters having default values are indicated so.

\vspace{0.15in}
\begin{listing}{Configuration Parameters for \app{uFldHazardMetric}}
\label{lst_uhme_params}
\renewcommand{\arraystretch}{1.1}
\begin{longtable}{rp{0.69\textwidth}} 

  \pvar{penalty\_missed\_hazard}: &amp; The penalty for a missed
  hazard. The default is 100. Section \ref{sec_uhme_penalty_pfa}. \\

  \pvar{penalty\_false\_alarm}: &amp; The penalty for a false alarm. 
  The default is 10. Section \ref{sec_uhme_penalty_pfa}.  \\

  \pvar{penalty\_max\_time\_over}: &amp; The penalty for submitting a
  report late. The default is zero. Section
  \ref{sec_uhme_penalty_time}. \\

  \pvar{penalty\_max\_time\_overage}: &amp; The penalty for submitting a
  late report, applied to every second it is late. The default is
  zero. Section \ref{sec_uhme_penalty_time}. \\

  \pvar{max\_time}: &amp; The time after which a submitted report is
  considered late. The default is zero, indicating there is no time
  limit. Section \ref{sec_uhme_penalty_pfa}. \\

  \pvar{hazard\_file}: &amp; The name of a hazard file naming the ground
  truth hazard field. \\

\end{longtable}
\end{listing}

%=================================================================
\subsection*{An Example MOOS Configuration Block}

To see an example MOOS configuration block, enter the following from
the command-line:

\vspace{0.1in}
\begin{consoleverb}
 $ uFldHazardMetric --example or -e
\end{consoleverb}
\vspace{0.1in}

\noindent
This will show the output shown in Listing \ref{lst_uhme_econfig} below.

\vspace{0.25in}
\begin{listing}{Example configuration of the \app{uFldHazardMetric} application}
\label{lst_uhme_econfig}
\footnotesize
\begin{verbatim}
  1  =============================================================== 
  2  uFldHazardMetric Example MOOS Configuration                     
  3  =============================================================== 
  4                                                                  
  5  ProcessConfig = uFldHazardMetric                                
  6  {                                                               
  7    AppTick   = 4                                                 
  8    CommsTick = 4                                                 
  9                                                                  
 10    penalty_missed_hazard = 100   // default                     
 11    penalty_false_alarm   = 10    // default                     
 12    penalty_max_time_over = 0     // default                     
 13    penalty_max_time_rate = 0     // default                     
 14                                                                  
 15    max_time      = 0             // default (no time limit)         
 16    hazard_file   = hazards.txt                                   
 17  }                                                          
\end{verbatim}
\end{listing}
\normalsize
 
%=================================================================
\section{Publications and Subscriptions for uFldHazardMetric}
%=================================================================
\index{uFldHazardMetric!Publications and Subscriptions}
\index{Publications and Subscriptions!uFldHazardMetric}
\label{sec_uhme_interface}

The interface for \app{uFldHazardMetric}, in terms of publications and
subscriptions, is described below. This same information may also be
obtained from the terminal with:

\vspace{0.1in}
\begin{consoleverb}
 $ uFldHazardMetric --interface or -i
\end{consoleverb}
\vspace{0.05in}

%=================================================================
\subsection{Variables Published by uFldHazardMetric}
\label{sec_uhme_pubs}

\begin{packed_itemize}[2]
\item \mvar{APPCAST}: Contains an appcast report identical to the
  terminal output. Appcasts are posted only after an appcast request
  is received from an appcast viewing utility. Section
  \ref{sec_uhme_appcast}

\item \mvar{HAZARDSET\_EVAL}: The shorter version of a hazardset report
  evaluation. Section \ref{sec_uhme_report}.

\item \mvar{HAZARDSET\_EVAL\_FULL}: The longer version of a hazardset report
  evaluation. Section \ref{sec_uhme_report}.

\item \mvar{HAZARDSET\_EVAL\_&lt;VNAME&gt;}: The shorter version of a
  hazardset report evaluation. The vehicle from which the report was
  received is appended to the evaluation so it may be shared only
  back to that vehicle. Section \ref{sec_uhme_report}.

\item \mvar{HAZARDSET\_EVAL\_&lt;VNAME&gt;}: The longer version of a
  hazardset report evaluation. The vehicle from which the report was
  received is appended to the evaluation so it may be shared only
  back to that vehicle. Section \ref{sec_uhme_report}.

\item \mvar{HAZARD\_SEARCH\_SCORE}: The normalized score reported in
  \var{HAZARDSET\_EVAL} published as a single numerical value.

\item \mvar{UHZ\_MISSION\_PARAMS}: A list of the mission parameters used
  for scoring a submitted \mvar{HAZARD\_REPORT}.

\item \mvar{VIEW\_POLYGON}: A polygon rendering the search area as
  defined in the hazard file. 

\end{packed_itemize}

%=================================================================
\subsection{Variables Subscribed for by uFldHazardMetric}
\label{sec_uhme_subs}

The \app{uFldHazardMetric} application will subscribe for the following
four MOOS variables:

\begin{packed_itemize}
\item \mvar{APPCAST\_REQ}: A request to generate and post a new
  apppcast report, with reporting criteria, and expiration.

\item \mvar{HAZARDSET\_REPORT}: An incoming hazardset report. See the
  \app{uFldHazardSensor} documentation.
 
\item \mvar{HAZARD\_SEARCH\_START}: An indication that the clock used
  to apply time limits and penalties is to be restarted.  Section
  \ref{sec_uhme_penalty_time}.


\end{packed_itemize}

%=================================================================
\subsection*{Command Line Usage of uFldHazardMetric}
\label{sec_uhme_cmdline}
\index{Command Line Usage!uFldHazardMetric}
\index{uFldHazardMetric!Command Line Usage}

The \app{uFldHazardMetric} application is typically launched as a part
of a batch of processes by pAntler, but may also be launched from the
command line by the user.  To see command-line options enter the
following from the command-line:

\vspace{0.1in}
\begin{consoleverb}
 $ uFldHazardMetric --help or -h
\end{consoleverb}
\vspace{0.1in}

\noindent
This will show the output shown in Listing \ref{lst_uhme_usage} below.

\vspace{0.1in}
\begin{listing}{Command line usage for \app{uFldHazardMetric}}
\label{lst_uhme_usage}
\footnotesize
\begin{verbatim}
  1  ==========================================================
  2  Usage: uFldHazardMetric file.moos [OPTIONS]               
  3  ==========================================================
  4                                                            
  5  Options:                                                  
  6    --alias=&lt;ProcessName&gt;                                
  7        Launch uFldHazardMetric with the given process name. 
  8    --example, -e                                           
  9        Display example MOOS configuration block.           
 10    --help, -h                                              
 11        Display this help message.                          
 12    --interface, -i                                         
 13        Display MOOS publications and subscriptions.        
 14    --version,-v                                            
 15        Display release version of uFldHazardMetric.        
\end{verbatim}
\end{listing}
\normalsize
 
%=================================================================
\section{Terminal and AppCast Output}
%=================================================================
\label{sec_uhme_appcast}

The \app{uFldHazardMetric} application produces some useful
information to the terminal and identical content through
appcasting. An example is shown in Listing \ref{lst_uhme_appcast}
below.  On line 2, the name of the local community, typically the
shoreside community, is listed on the left. On the right,
\var{"0/0(5429)} indicates there are no configuration or run warnings,
and the current iteration of \app{uFldHazardMetric} is 5429. Lines 4-6
show the name of the ground truth hazard file and the number of
hazards and benign objects. Lines 8-13 convey the requested and
prevailing configuration settings for evaluating incoming reports.

\vspace{0.1in}
\begin{listing}{Example \app{uFldHazardMetric} console output}
\label{lst_uhme_appcast}
\footnotesize
\begin{verbatim}
  1  ===================================================================
  2  uFldHazardMetric shoreside                                0/0(5429)
  3  ===================================================================
  4  Hazard File: (hazards.txt)
  5       Hazard: 10
  6       Benign: 8
  7    
  8  Reward Structure:
  9      Penalty Missed Hazard: 100
 10        Penalty False Alarm: 35
 11      Penalty Max Time Over: 100
 12      Penalty Max Time Rate: 0.05
 13                   Max Time: 1800
 14   
 15  ==========================================
 16  Received Reports: 6
 17  Elapsed Time:     1285.76
 18  ==========================================
 19  Report    Total    Time      Time     Raw    Norm 
 20  Name      Reports  Received  Elapsed  Score  Score
 21  --------  -------  --------  -------  -----  -----
 22  Sarah     6        1351.97   1278.28  675    37.5 
 23   
 24  ==========================================
 25  Most Recent Report: (jake/Sarah)
 26            total_score: 675 (37.5)
 27   score_missed_hazards: 500 (5)
 28     score_false_alarms: 175 (5)
 29     score_time_overage: 0 (0)
 30  --------------------- 
 31       objects reported: 10
 32        correct_hazards: 5 (of 10)
 33   
 34  ===================================================================
 35  Most Recent Events (7):
 36  ===================================================================
 37  [1351.97]: Received valid report from: jake
 38  [1347.46]: Received valid report from: jake
 39  [1181.93]: Received valid report from: jake
 40  [1178.42]: Received valid report from: jake
 41  [641.28]: Received valid report from: jake
 42  [631.76]: Received valid report from: jake
 43  [0.00]: Reading hazards.txt: Objects read: 18
\end{verbatim}
\end{listing}
\normalsize

\noindent 
Lines 15-22 provide a summary of reports received so far, perhaps from
multiple vehicles. Line 16 shows the number of received reports total
from {\em all} vehicles, and line 17 shows the elapsed time since the
receipt of \mvar{HAZARD\_SEARCH\_START} as discussed in Section
\ref{sec_uhme_penalty_time}. Beginning with line 19, for each vehicle
the total reports received are shown, plus information about the last
received report from that vehicle. The last four columns show (a) the
time the report was received, (b) the elapsed time for the report since
the latest timer reset, (c) the raw score as discussed in Sections 
\ref{sec_uhme_penalty_pfa}  and \ref{sec_uhme_penalty_time}, and (d) the
normalized score as discussed in Section \ref{sec_uhme_penalty_norm}.

\pskip

Lines 24-32 dive into more detail about the latest report received from 
any vehicle. Line 25 shows the name of the report which may consist of
both a vehicle name and additional report name. The total raw and normalized
score is shown next on line 26, with the justification for the score
shown next in lines 27-32. Following this block of output, events are 
shown starting here on line 34. In this case most events simply report the
arrival of new reports, but other events may indicate anomalous activities
such as the arrival of an empty report. 

%=================================================================
\section{The Jake Kasper Example Mission Using uFldHazardMetric}
%=================================================================
\label{sec_uhme_jake}

The {\em Jake Kasper} mission is distributed with the MOOS-IvP source
code and contains a ready example of the \app{uFldHazardMetric}
application, configured with a hazard field in an included text file.
Assuming the reader has downloaded the source code available at
\var{www.moos-ivp.org} and successfully built the code, the {\em Jake
  Kasper} mission may be launched by:

\vspace{0.2in} 
\begin{consoleverb}
 $ cd moos-ivp/ivp/missions-2680/lab_10_jake_kasper_baseline/
 $ ./launch.sh 12
\end{consoleverb}
\normalsize    
\vspace{0.2in} 

\noindent
The argument, 12, in the line above will launch the simulation in
\var{12x} real time.  Once this launches, the \app{pMarineViewer} GUI
application should launch and the mission may be initiated by hitting
the \var{DEPLOY\_ALL} button. Shortly thereafter, two vehicles named
\var{jake} and \var{kasper} will begin simple lawnmower patterns over
half of the search region each, as shown in Figure \ref{fig_uhme_jake}
below.

\vspace{0.1in}
\begin{figure}[H]
  \centering 
  \includegraphics[width=0.99\textwidth]{figures/ufhz_jake_basic.png}
  \caption{{\bf uFldHazardMetric in the Jake Kasper example mission}: The
    output of uFldHazardMetric is shown in the appcast panel in the
    lower left after a hazardset report has been received and
    evaluated.}
\label{fig_uhme_jake}
\end{figure}
\vspace{0.1in}

Any time after the vehicle has been deployed, the user may request the
generation of a hazardset report. The \var{REQ\_REPORT} button sends a
\mvar{HAZARDSET\_REQUEST} message to the vehicles, each running
\app{uFldHazardMgr}. Repeated requests result in updated reports. The 
overall score of the reports tends higher as the mission progresses and 
more hazards are detected.


\end{document}

</pre></body></html>