<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}

%===================================================================
% Include common packages, environments, counters etc
\input{common_latex/common_latex_packages}
\input{common_latex/common_latex_lab_format}
\input{common_latex/common_latex_definitions}
%===================================================================
\setcounter{tocdepth}{2}
%===================================================================

\begin{document}
\wikidoc{file=Lab.ClassRescue19}
\wikidoc{auth=mikerb@mit.edu}
\helplevelsubsec


%===================================================================
% Build the Cover Page in an environment style easy for wiki parsing
\begin{labcover}
\labtitle{Lab 19 - Autonomous Rescue Challenge }
\vspace{0.1in}
\labtitle{Participation in Automated Competitions }
\vspace{0.1in}
\labcourse{2.680 Unmanned Marine Vehicle Autonomy, Sensing and Communications}
\vspace{0.1in}
\labpng{0.55}{figures/rescue3.png}
\vspace{0.2in}
\labdate{April 29th 2025}
\vspace{0.1in}
\labauth{Michael Benjamin, mikerb@mit.edu}
\labauth{Department of Mechanical Engineering}
\labauth{MIT, Cambridge MA 02139}
\labsrc{project-pavlab/labdocs/lab\_class\_19\_auto\_comp}
\vspace{0.12in}
\labtoc{footnotesize}
\labtocdepth{2}
\end{labcover}

%====================================================================
% Add a blank page so first body page is on the right when doubleside
%\blankpage
%====================================================================
\newpage \section{Overview and Objectives}

In the 2025 we begin to support automated simulated competitions.
These competitions will be held offline, with no GUI, on a set of
servers. The goal is to run as many pairs of teams head-to-head,
with each competition starting with a randomly generated swim file. 
With 20 students, there are 190 possible unique head-to-head pairings,
\var{((n * (n-1))/2)}.

\vspace{0.1in}
\noindent
To start with, we will focus on the 1-1 rescue-rescue mission of Lab
15. An {\em entry} will be a 2.680 team implementation of their
\app{pGenRescue} app, found in their GitHub repo.

\vspace{0.1in}
\noindent
To gain a better insight into the performance of any teams' algorithm,
we compare it head-to-head with all other possible teams, and do so
for as many unique starting conditions as possible. Each competition
will have a randomly generated swim file and randomly generated starting
position 

%======================================================================
\section{The Short List of Steps to Participate}
%======================================================================

Joining the competition should be a short or zero step process described below.
Actually for about half the students now, the process are already running and
generating results.

%======================================================================
\subsection{Prepare your Code}

The competition structure pulls your GitHub \var{moos-ivp-extend} repo
and builds your codebase. Most of you are already pushing regularly to
GitHub. Your entry is comprised of your \app{pGenRescue} app. Make
sure that this app is compiling and running properly. This includes
{\em not} changing the MOOS variable (\mvar{SURVEY\_UPDATE}) that is
published by \app{pGenRescue} and is the \bvar{updates} parameter for
the \var{waypt\_survey} behavior.


%======================================================================
\subsection{Make it Available From Git}

The 2.680 student GitHub repos is already accessible by 2.680 staff since
the early weeks in the course (thank you!). However, they are accessible
to a particular person because (a) you made that person a collaborator to your
moos-ivp-extend tree, and (b) that person is credentialed on their machine
as that person. So things work fine if the test harness is running on that
one machine by that one person.

\vspace{0.1in}
\noindent
We would {\em like} to run our competitions on a cluster of PABLOs,
like the ones handed out in 2.680. These machines all have the same
\var{student2680} user account. This "user" is not credentialed on
GitHub and is not a collaborator to anyone's repo. But we would like
uncredentialed (anonymous) read-only access to your repos on our
staff test machines. To do this, we have placed one (private) half of
an ssh-key pair on our test pablo machines, and we need you to add the
other (public) half of the ssh-key pair as a "deploy key" for your
\var{moos-ivp-extend} tree. The public half of this key was provided
in the Piazza post. Please let us know when you have done this.


%======================================================================
\subsection{Note the Competition Assumptions}

Note that the competition harness will only pull your repo to build
and retain your version of \app{pGenRescue}. The competition will be
run from the current version of the \var{lab\_14\_rescue\_baseline}
mission cloned onto our test machine(s). If you have any other
modifications to the mission in your own local test preparation, this
will not be carried over to our test machine(s). If you have a custom
parameter block for your \app{pGenRescue}, it will not be used in the
competition. To account for this, we recommend that your \app{pGenRescue}
have default parameter settings, in the code, e.g., constructor, to be
set the way you wish for competing.


%======================================================================
\section{How the Competition is Run}
%======================================================================

The below info is FYI. We will likely expound on this as this phase of
2.680 is further developed.

\vspace{0.1in}
\noindent
The competitions are designed to be run on a set of one or more test
machines. Our compute cluster has 100+ nodes, but even a single powerful
laptop can run about 500+ missions overnight. There are two phases run
on each machine, a setup phase and a competition phase:

\vspace{0.1in}
\noindent
The setup phase:

\begin{packed_itemize}
\item All student git repos are cloned and built on the test machine.
\item A file is generated, one line per student entry, containing the
  full path name of the \app{pGenRescue} app.
\item This file is placed in the local copy of
  \var{lab\_14\_rescue\_baseline} mission folder.
\end{packed_itemize}

\vspace{0.1in}
\noindent
The competition phase:

\begin{packed_itemize}
\item A script is run to repeatedly run a random competition N times
\item Each mission/competition is seeded with a randomly generated swim
  file, random starting position, and random choice of two \app{pGenRescue}
  choices from the file generated in the setup phase.
\item The mission is launched and automatically exits when the competition
  is completed. An app called \app{pMissionEval} will generate a single
  results line in a file called \var{results.txt} in the mission folder.
\end{packed_itemize}

\vspace{0.1in}
\noindent
The post-competition phase:

\begin{packed_itemize}
\item If multiple test machines are in use, the entries of the
  \var{results.txt} file are merged into single file.
\item A separate app parses the results file and generates a set
  of web pages linked from the 2.680 website.
\end{packed_itemize}


%======================================================================
\newpage \section{How the Results will be Disemminated }
%======================================================================

%======================================================================
\subsection{Win-Loss Results}

The competition results will be posted and linked from the 2.680 lab page,
alongside the other Rescue Lab links. We anticipate this will be available
by May 2nd, 2025. There will be three results levels:

\begin{packed_itemize}
\item Your sorted/ranked overall W-L record relative to other competitors
\item Your sorted/ranked W-L record per competitor
\item Your results, for each competition, selected by competitor. 
\end{packed_itemize}

\noindent
This starting page will also be available through the link:

\vspace{0.1in}
\noindent
\urlx{https://oceanai.mit.edu/2680/compete25}

%======================================================================
\subsection{Competition Data Set Logs}

In the last level, each competition will have a mission hash. The goal is
ensure that the alogs for each competition are archived on the class server
and you will be able to run:

\vspace{0.1in}
\begin{consoleverb}
 $ alogview 250428-2036H-WIDE-STOP
\end{consoleverb}
\vspace{0.1in}

\noindent
When invoked with a single mission hash, \app{alogview} will interpret this
as a request to the class server to fetch the archived data, uncompress, and
load the alog files for the shoreside and vehicles for viewing in alogview.
This is not currently fully implemented yet. 50-50 chance it will be finished
before the end of the class. 







%======================================================================
%\newpage \section{Frequently Asked Questions}
%======================================================================

%If I have problems, where to I send questions

%How can I submit multiple entries to help me try my code
%How can I make sure my pGenRescue config params are used
%What if I want to run other apps like uTimerScript or some other utility I wrote

\end{document}

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