<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{The uFldFlagManager Application}
\vspace{0.1in}
\labdate{Fall 2017}
\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=PavLab.UFLDFlagManager}
\wikidoc{bugz=uFldFlagManager}
\wikidoc{auth=mikerb@mit.edu}

%=================================================================
\section{Overview}
%=================================================================
\label{sec_flagmgr}

The \app{uFldFlagManager} is a shoreside manager used for marine
autonomy competitions where flags are involved. Flags are declared at
the outset, each with a position and a unique label. Vehicles have the
ability to grab a flag by posting a request. The flag may or not be
granted, but if granted, then the grabbing vehicle then owns the flag
and it cannot be grabbed by other vehicles.

\vspace{0.1in}
\begin{figure}[H]
  \centering 
  \includegraphics[width=0.55\textwidth]{figures/uftmgr_topology.png}
  \caption{{\bf Typical uFldFlagManager Topology:} The flag manager runs
    on the shoreside and handles requests from vehicles to grab flags
    at pre-defined locations provided to the flag manager through configuration
    upon startup.}
\label{fig_ufmgr_topology}
\end{figure}


%===========================================================
\section{Configuration Parameters for uFldFlagManager}
%===================================================================

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

\vspace{0.15in}
\begin{listing}{Configuration Parameters for \app{uFldFlagManager}}
\label{lst_params_ufmgr}
\renewcommand{\arraystretch}{1.1}
\begin{longtable}{rp{0.76\textwidth}} 

  \pvar{default\_flag\_range}: &amp; The default range of the flag
  if no range is specified. Default is 10 meters. Section
  \ref{sec_ufmgr_config_flags}. \\

  \pvar{near\_flag\_range\_buffer}: &amp; The distance, beyond the flag
  range, within which a \pvar{near\_post} event will occur. Default is
  2 meters. This compensates for latency between the event and user
  receipt of the event notice. \\

  \pvar{default\_flag\_type}: &amp; The default type of the rendered
  marker if no type is speciFied. Default is circle. Section
  \ref{sec_ufmgr_config_flags}. \\

  \pvar{default\_flag\_width}: &amp; The default width of the rendered
  marker if no width is specified. Default is 5 meters. Section
  \ref{sec_ufmgr_config_flags}. \\

  \pvar{flag}: &amp; A declaration of a flag, with ID and location
  information.  Section \ref{sec_ufmgr_config_flags}. \\

  \pvar{ungrabbed\_color}: &amp; The color of the posted marker when not
  grabbed by any vehicle. Default is \var{"red"}. Section
  \ref{sec_ufmgr_config_markers}. \\

  \pvar{grabbed\_color}: &amp; The color of the posted marker when grabbed
  by some vehicle. Default is \var{"white"}. Section
  \ref{sec_ufmgr_config_markers}. \\

  \pvar{flag\_follows\_vehicle}: &amp; If true, when a vehicle has a flag,
  the flag is rendered to be just behind the vehicle.  Default is
  \var{"true"}. Section \ref{sec_ufmgr_config_markers}. \\

  \pvar{poly\_edge\_size}: &amp; Sets the edge width of the polygon rendered
  around each flag. Default is 1. \\

  \pvar{poly\_edge\_size}: &amp; Sets the edge width of the polygon rendered
  around each flag. Default is 1. \\

  \pvar{poly\_vertex\_size}: &amp; Sets the vertex size of the polygon
  rendered around each flag. Default is 1. \\

  \pvar{poly\_edge\_color}: &amp; Sets the edge color of the polygon
  rendered around each flag. Default is grey50. \\

  \pvar{poly\_vertex\_color}: &amp; Sets the vertex color of the polygon
  rendered around each flag. Default is blue. \\

  \pvar{poly\_fill\_color}: &amp; Sets the fill color of the polygon
  rendered around each flag. Default is grey90. \\

  \pvar{grab\_post}: &amp; A MOOS variable and value posting to be made
  when a vehicle has successfully grabbed a flag. Section
  \ref{sec_ufmgr_event_postings}. \\

  \pvar{goal\_post}: &amp; A MOOS variable and value posting to be made
  when a vehicle has successfully scored, returned home with a
  flag. Section \ref{sec_ufmgr_event_postings}. \\

  \pvar{home\_post}: &amp; A MOOS variable and value posting to be made
  when a vehicle has returned home without a flag. Section
  \ref{sec_ufmgr_event_postings}. \\

  \pvar{lose\_post}: &amp; A MOOS variable and value posting to be made
  when a flag is reset prior to successfully returning home. Section
  \ref{sec_ufmgr_event_postings}. \\

  \pvar{near\_post}: &amp; A MOOS variable and value posting to be made
  when a vehicle comes within grabbing range of an enemy flag. Section
  \ref{sec_ufmgr_event_postings}. \\

  \pvar{away\_post}: &amp; A MOOS variable and value posting to be made
  when a vehicle leaves grabbing range of an enemy flag. Section
  \ref{sec_ufmgr_event_postings}. \\

  \pvar{deny\_post}: &amp; A MOOS variable and value posting to be made
  when a vehicle is unsuccessful in a flag grab attempt. Section
  \ref{sec_ufmgr_event_postings}. \\

\end{longtable}
\end{listing}
  

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

An example MOOS configuration block can be obtained by entering the
following from the command-line: 

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

\vspace{0.15in}
\begin{listing}{Example configuration of the \app{uFldFlagManager} application}
\label{ufmgr_econfig}
\footnotesize
\begin{verbatim}
 1  =============================================================== 
 2  uFldFlagManager Example MOOS Configuration                      
 3  ===============================================================
 4                         
 5  ProcessConfig = uFldFlagManager      
 6  {          
 7    AppTick   = 4 
 8    CommsTick = 4  
 9                                         
10    default_flag_width = 3        // Default (in meters)
11    default_flag_type  = circle   // Default is circle            
12    default_flag_range = 10       // Default (in meters) 
13
14    flag = x=60, y=-30,  label=one, range=15
15    flag = x=60, y=-170, label=two                                
16 
17    ungrabbed_color = red         // Default is red
18    grabbed_color   = white       // Default is white
19
20    grab_post = var=SAY_MOOS, sval={say={$VNAME has $FLAG flag}}  
21    lose_post = var=SAY_MOOS, sval={say={$FLAG flag is reset}}    
22    near_post = var=SAY_MOOS, sval={file=sounds/shipbell.wav}     
23    away_post = var=SAY_MOOS, sval={file=sounds/buzzer.wav}       
24    deny_post = var=SAY_MOOS, sval={file=sounds/sf-no-soup.wav}   
25  }                    
\end{verbatim}
\end{listing}
\normalsize
  
%===================================================================
\section{Publications and Subscriptions of uFldFlagManager}
%===================================================================
\label{sec_ufmgr_interface}

The interface for \app{uFldFlagManager}, 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}
 $ uFldFlagManager --interface or -i
\end{consoleverb}
\vspace{0.05in}

%===================================================================
\subsection{Variables Published by uFldFlagManager}
\label{sec_ufmgr_pubs}

The only output of \app{uFldFlagManager} is: 

\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_ufmgr_appcast}.

\item \mvar{FLAG\_GRAB\_REPORT}: Shows the result of an incoming flag
  grab request. Section \ref{sec_ufmgr_reports}.

\item \mvar{FLAG\_SUMMARY}: A summary of all known flags, positions
  and whether the flag has been grabbed and by whom. Updated any time
  a single flag has had its state altered. Section
  \ref{sec_ufmgr_summary}.

\item \mvar{VIEW\_MARKER}: A geometric object for rendering a flag at
  its configured location and current grab state. Section
  \ref{sec_ufmgr_markers}.

\end{packed_itemize}

%===================================================================
\subsection{Variables Subscribed for by uFldFlagManager}
\label{sec_ufmgr_subs}

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

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

\item \mvar{FLAG\_GRAB\_REQUEST}: A request from a vehicle to make a
  grab for any and all flags within grab range. Section
  \ref{sec_ufmgr_grabs}.
\item \mvar{FLAG\_RESET}: A request to reset some or all flags back to the
  ungrabbed state. Section \ref{sec_ufmgr_flag_reset}.
\item \mvar{NODE\_REPORT}: A report, usually in a steady stream, from
  a vehicle indicating its current position and other vehicle
  states. Section \ref{sec_ufmgr_node_reports}.
\end{packed_itemize}

%===================================================================
\section{Configuration of uFldFlagManager}
%===================================================================
\label{sec_ufmgr_config}

%===================================================================
\subsection{Basic Flag Configuration}
\label{sec_ufmgr_config_flags}

Flags are configured minimally with a location, and a unique label.
For example:

\vspace{0.1in}
\begin{fileverb}
  flag = x=60, y=-30,  label=one
  flag = x=60, y=-170, label=two  
\end{fileverb}
\vspace{0.1in}

\noindent
If a flag configuration is provided with a non-unique label, the flag
will not be loaded, and a configuration warning will be posted in the
terminal or appcasting output:

\vspace{0.1in}
\begin{consoleverb}
  Flag with duplicate label: one
\end{consoleverb}
\vspace{0.1in}

\noindent
If a flag configuration is provided with no label, the flag will not
be loaded, and a configuration warning will be posted in the terminal
or appcasting output:

\vspace{0.1in}
\begin{consoleverb}
  Flag with missing label: x=1, y=2
\end{consoleverb}

%===================================================================
\subsection{Configuring the Grabbed and UnGrabbed Colors}
\label{sec_ufmgr_config_markers}

Each flag is rendered by a marker configured with the \pvar{flag}
parameter. For example:

\vspace{0.1in}
\begin{fileverb}
  flag = x=60, y=-30,  label=one, color=blue
  flag = x=60, y=-170, label=two  
\end{fileverb}
\vspace{0.1in}

\noindent
If the color is not specified, it will default to the value given
by the parametr \pvar{ungrabbed\_color}.

\vspace{0.1in}
\noindent
When the flag has been grabbed, one of two things will happen. By
default, the flag will follow the vehicle, keeping its original
color, unless the parameter \pvar{flag\_follows\_vehicle} is set
to false. The default is true. If the flag does not follow the
vehicle, a grabbed flag will change color to the value specified
in the \pvar{grabbed\_color} parameter. This value by default is
white.



%===================================================================
\subsection{Optional Flag Configuration Parameters}
\label{sec_ufmgr_opt_config}

Flags may be additionally configured with the following optional
parameters:

\begin{packed_itemize}[1]
  \item \var{range}: The \var{range} parameter indicates the maximum
    distance between the flag and a vehicle beyond which a flag grab
    request will be rejected. The default is 10 meters.

  \item \var{type}: The \var{type} parameter refers to the shape of
    the rendered flag. Legal values are {\em circle, triangle, square,
      efield, gateway, diamond}. See Figure
    \ref{fig_ufmgr_markers}. The default is "circle".

  \item \var{width}: The \var{width} parameter determines the width of
    the {\em rendered} flag, in meters. It has no bearing on flag
    capturing otherwise. In terms of the range between a vehicle and
    flag the flag is treated as point-object.  The default is 5
    meters.

  \item \var{color}: The \var{color} parameter affects the color of
    the rendered flag. When a flag type has two colors (marker types
    {\em efield} and {\em gateway}, it only affects one of the
    colors. The default is red. This refers to the "ungrabbed"
    color. The "grabbed" color cannot be modified. See Section
    \ref{sec_ufmgr_grabs} for more on grabbing and colors.
\end{packed_itemize}

\vspace{0.1in}
\noindent
Here are some examples:

\vspace{0.1in}
\begin{fileverb}
  flag = x=60, y=-30,  label=one, range=20, type=triangle, width=11
  flag = x=60, y=-170, label=two, color=gree, width=11
\end{fileverb}
\vspace{0.1in}

\noindent
Here are the supported marker shapes:

\vspace{0.1in}
\begin{figure}[H]
  \centering 
  \includegraphics[width=0.55\textwidth]{figures/markers.png}
  \caption{{\bf Supported Marker Types:} Any of these types may be
    used to render the flags in the flag manager.}
\label{fig_ufmgr_markers}
\end{figure}



%===================================================================
\subsection{Changing the Default Values of Optional Parameters}


It may be convenient, in cases of many flags to be configured, to
simply change the default values globally for the optional parameters.
The following \app{uFldFlagManager} parameters allow this:

\vspace{0.1in}
\begin{fileverb}
  default_flag_width = 4          // Default is 5
  default_flag_range = 12         // Default is 10
  default_flag_color = beige      // Default is white
  default_flag_type  = diamond    // Default is circle
\end{fileverb}
\vspace{0.1in}

\noindent
The flag color refers to the "ungrabbed" color of the flag. The
"grabbed" cannot be overridden and is determined by the
\pvar{grabbed\_color} parameter.



%===================================================================
\section{Operation of uFldFlagManager}
%===================================================================
\label{sec_ufmgr_op}


%===================================================================
\subsection{Handling Node Reports}
\label{sec_ufmgr_node_reports}

The flag manager needs to know both the flag positions and the
vehicle positions. The former is provided via the configuration file,
the latter is derived from node reports, in the \mvar{NODE\_REPORT}
MOOS variable.  An example node report:

\prevgreen
\begin{verbatim}
  NODE_REPORT = NAME=alpha,X=16.79,Y=-16.55,SPD=1.98,HDG=120.75,DEP=0,LAT=43.82515342,
                LON=-70.33018799,TYPE=kayak,MODE=MODE@ACTIVE:SURVEYING,ALLSTOP=clear,
                INDEX=102,YAW=-0.5367054,TIME=7250613964.12,LENGTH=3
\end{verbatim}
\postverb

\noindent
Typically this variable is generated locally on the vehicle as
\mvar{NODE\_REPORT\_LOCAL} by the \app{pNodeReporter} application and
shared to the shoreside via the \app{pShare} application. In the
shoreside community, the variable is renamed to \mvar{NODE\_REPORT}.
In some simple example missions, having only a single MOOS community
serving both the vehicle and the viewer, you may only see
\mvar{NODE\_REPORT\_LOCAL}.



%===================================================================
\subsection{Handling Flag Grab Requests}
\label{sec_ufmgr_grabs}

A flag grab request is handled through the receipt of the MOOS
variable \mvar{FLAG\_GRAB\_REQUEST}. This variable is typically
generated by one of the field nodes, e.g., robots, and sent by
\app{pShare} to the shoreside MOOS community in which
\app{uFldFlagManager} is running. The format of this variable simply
contains the name of the grabbing vehicle:

\prevgreen
\begin{verbatim}
  FLAG_GRAB_REQUEST = vname=henry
\end{verbatim}
\postverb

\noindent
Upon this request, a couple checks are performed. First, the vehicle
name is checked against the {\em community} associated with the
incoming message. This is to ensure that one vehicle cannot make a
flag grab request on behalf of another vehicle. Typically the vehicle
(MOOS) community and the vehicle name are configured to be the same.

\pskip
The second check performed is the range (linear distance) between the
requesting vehicle and the flag location. Each flag has a range
associated with it, provided in the configuration block (Section
\ref{sec_ufmgr_opt_config}). If the vehicle is not within this range,
the flag grab is rejected. If {\em multiple} flags are within range of
the vehicle when the request is made, all flags are considered to be
grabbed by the vehicle. Note: this may change, perhaps with a
configuration option to only grab the closest.

\pskip
When a flag is grabbed, the rendered color will change to the color
specified in the \pvar{grabbed\_color} parameter, which has the
default value of white.

%===================================================================
\subsection{Handling Flag Resets}
\label{sec_ufmgr_flag_reset}

Once a flag has been grabbed by a vehicle, it is possible to {\em
  reset} the flag, i.e., return it to the state where is is not
associated/grabbed by any vehicle. This is done through the
\mvar{FLAG\_RESET} variable. When the flag manager receives this
variable, flags may be set in one of three ways. First, a flag may be
reset by naming a particular flag label, resulting in only that flag
being reset. For example:

\prevgreen
\begin{verbatim}
 FLAG_RESET = label=one
\end{verbatim}
\postverb

\noindent
Second, flag(s) may be reset by naming a particular vehicle and releasing
all flags held by that vehicle:

\prevgreen
\begin{verbatim}
 FLAG_RESET = vname=henry
\end{verbatim}
\postverb

\noindent
Lastly, the complete list of flags can be reset by posting
\msvar{FLAG\_RESET=all}.

%===================================================================
\subsection{Posting Flag Grab Reports}
\label{sec_ufmgr_reports}

Each time a flag grab request has been received
(\mvar{FLAG\_GRAB\_REQUEST}), a report is compiled and posted to the
MOOS variable \mvar{FLAG\_GRAB\_REPORT}. Typically this variable is
shared back out to at least the requesting vehicle, to inform the
vehicle of the result of its request. The variable has the form:

\prevgreen
\begin{verbatim}
  FLAG_GRAB_REPORT = grabbed=one,grabbed=seven
  FLAG_GRAB_REPORT = nothing_grabbed
\end{verbatim}
\postverb

%===================================================================
\subsection{Posting Flag Grab Summary Reports}
\label{sec_ufmgr_summary}

A flag summary is posted upon application start-up and each time the
status of a flag is changed. The summary is posted to the
\mvar{FLAG\_SUMMARY} variable. For example:

\prevgreen
\begin{verbatim}
 FLAG_SUMMARY = x=2,y=-4,width=5,range=10,type=circle,label=three #
                x=4,y=27,width=5,range=10,type=circle,owner=alpha,label=two #
                x=7,y=23,width=8,range=10,type=square,owner=alpha,label=one 
\end{verbatim}
\postverb

\noindent
If a flag does not indicate an owner, then the flag is currently "ungrabbed".


%===================================================================
\subsection{Posting Flag Markers}
\label{sec_ufmgr_markers}

The flag manager publishes to the MOOS variable \mvar{VIEW\_MARKER} to
indicate the location and status of flags it is managing. Markers are
object types known to the \app{pMarineViewer} app and their rendering
can be turned on and off and resized within the viewer.  Each marker
is published once upon startup, and re-published whenever it changes
state between {\em ungrabbed} and {\em grabbed}. An example posting
will look something like:

\prevgreen
\begin{verbatim}
  VIEW_MARKER = x=147,y=-43,width=5,range=10.00,primary_color=red,
                secondary_color=black,type=circle,label=five"
\end{verbatim}
\postverb

%===================================================================
\subsection{User-Configurable Event Postings}
\label{sec_ufmgr_event_postings}

The flag manager may be configured to make one or more MOOS posting
tied to one of several events:

\begin{packed_itemize}
\item When a flag has been grabbed (with the \pvar{grab\_post}
  parameter)
\item When a flag has been reset, i.e., a vehicle loses control of the
  enemy flag, (with the \pvar{lose\_post} parameter)
\item When a vehicle comes comes sufficiently {\em near}, i.e., within
  grabbing range of, an enemy flag to enable grabbing (with the
  \pvar{near\_post} parameter)
\item When a vehicle leaves, i.e., {\em goes away} from, the grabbing
  range of an enemy flag (with the \pvar{away\_post} parameter)
\item When a flag grab request has been denied (with the
  \pvar{deny\_post} parameter)
\item When a goal has been scored, i.e., a flag has successfully be
  returned to home base (with the \pvar{goal\_post} parameter)
\end{packed_itemize}

\vspace{0.1in}
\noindent
Each of these postings has a set of macros available in either the
MOOS variable or the value being posted to the MOOS variable.

%-------------------------------------------------------------------
\subsubsection{Macros Available in MOOS Variable Names}

The following macros are available, as part of the MOOS variable name
used in an event posting:

\begin{packed_itemize}
  \item \var{\$VNAME}: the name of the vehicle involved in the event.
  \item \var{\$UP\_VNAME}: the upper case name of the vehicle involved
    in the event.
  \item \var{\$FLAG}: the name of the flag involved in the event.
  \item \var{\$VTEAM}: the name of the team involved in the event.
  \item \var{\$UP\_VTEAM}: the upper case name of the team involved
    in the event.
\end{packed_itemize}

\vspace{0.1in}
\noindent
The following are valid examples:

\begin{fileverb}
  grab_post = var=FLAG_GRAB_STATE_$UP_VNAME, sval={grabbed}
  deny_post = var=FLAG_DENY_INDEX_$UP_VNAME, dval=22     
  away_post = var=LEAVING_$FLAG, sval={true}     
\end{fileverb}


%-------------------------------------------------------------------
\subsubsection{Macros Available in MOOS Variable Values}

The following additional macros are available, as part of the MOOS
variable message in an event posting:

\begin{packed_itemize}
\item \var{\$REASON}: the reason, if there exists one, involved in the
  event. 
\item \var{\$TIME}: the current time (as string value) when the event
  occurred.
\end{packed_itemize}

\vspace{0.1in}
\noindent
The following are valid examples:

\begin{fileverb}
  grab_post = var=SAY_MOOS, sval={say={$VNAME has $FLAG flag}}  
  lose_post = var=SAY_MOOS, sval={say={$FLAG flag is reset}}    
  near_post = var=SAY_MOOS, sval={file=sounds/shipbell.wav}     
  away_post = var=SAY_MOOS, sval={file=sounds/buzzer.wav}       
  deny_post = var=SAY_MOOS, sval={file=sounds/sf-no-soup.wav}   
\end{fileverb}


%===================================================================
\section{Terminal and AppCast Output}
%===================================================================
\label{sec_ufmgr_appcast}

The \app{uFldFlagManager} application produces some useful information
to the terminal on every iteration of the application. An example is
shown in Listing \ref{lst_ufmgr_appcast} below. This application is
also appcast enabled, meaning its reports are published to the MOOSDB
and viewable from any \app{uMAC} application or
\app{pMarineViewer}. The counter on the end of line 2 is incremented
on each iteration of \app{uFldFlagManager}, and serves a bit as a
heartbeat indicator.  The \var{"0/0"} also on line 2 indicates there
are no configuration or run warnings detected.

\pskip

\noindent
The output in the below example comes from the example described in
Section \ref{sec_ufmgr_example}.

\vspace{0.1in}
\begin{listing}{Example terminal or appcast output for \app{uFldFlagManager}}
\label{lst_ufmgr_appcast}
\footnotesize
\begin{verbatim}
  1  ===================================================================
  2  uFldFlagManager alpha                                      0/0(447)
  3  ===================================================================
  4  Configuration Summary: 
  5  ======================================
  6    default_flag_range: 10
  7    default_flag_width: 5
  8    default_flag_type:  circle
  9  
 10  Node Report Summary
 11  ======================================
 12          Total Received: 451
 13                   ALPHA: 451       (0.0)
 14  
 15  Vehicle Summary
 16  ======================================
 17  VName  Grabs  Flags  InFlagZone
 18  -----  -----  -----  ----------
 19  ALPHA  2      2      false 
 20  
 21  Flag Summary
 22  ======================================
 23  Flag   Range  Owner  Spec                                                                                
 24  -----  -----  -----  --------------------------------------------------------------
 25  five   10            x=147,y=-43,width=5,range=10,type=circle,label=five 
 26  four   40            x=183,y=-93,width=5,range=40,type=circle,label=four 
 27  three  10            x=152,y=-164,width=5,range=10,type=circle,label=three
 28  two    10     alpha  x=64,y=-157,width=5,range=10,type=circle,owner=alpha,label=two
 29  one    10     alpha  x=57,y=-43,width=10,range=10,type=square,owner=alpha,label=one
\end{verbatim}
\end{listing}
\normalsize
\vspace{0.1in}

\noindent
The first few lines (6-8) show the configuration settings for
\app{uFldFlagManager}.  The status of \app{uFldFlagManager} is shown
in Lines 10-29. The first status block, lines 10-13, simply confirm
the number of node reports received in total and from each vehicle.
The second status block, lines 15-19, indicate the number of flag grab
requests received from each vehicle, and the total number flags
successfully granted to to each vehicle. The latter number represents
the total number of granted flags {\em ever}. So if flags are reset,
it's possible that this number could be greater than the total number
of flags in the flag manager. The last column in this block indicates
whether the vehicle presently is within striking distance of an enemy
flag. The last status block, lines 21-29,
summarizes both the flag configuration and the status of each flag,
under the {\em owner} column.

%=====================================================================
\section{A Simple Example}
\label{sec_ufmgr_example}

The \var{s1\_alpha\_ufmgr} example mission distributed with
moos-ivp-pavlab provides a simple working example. More explanation to
come...


\end{document}

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