\documentclass[onecolumn,letterpaper,11pt]{article}

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

% some very useful LaTeX packages include:
%\usepackage[lined,boxed]{}
%\usepackage{color, tabularx, amsfonts, here, verbatim, graphicx}
%\usepackage{listings, tabularx, amsfonts, moreverb}
%\usepackage{cite, graphicx, psfrag, subfigure, lastpage}
%\usepackage{array, amsmath, fancyhdr, url, array, colortbl}  
%\usepackage[footnotesize]{caption}

%\definecolor{menublue}{rgb}{0.22,0.38,0.71}
%\usepackage[colorlinks=true,linkcolor=black,urlcolor=menublue]{hyperref}

\setlength{\textwidth}{6.5in}      \setlength{\textheight}{8.5in}
\setlength{\topmargin}{-0.25in}    \setlength{\evensidemargin}{0.1in}
\setlength{\oddsidemargin}{0.1in}  \setlength{\parskip}{0pt}

\pagestyle{plain}

\begin{document}

\begin{center}
\vspace{0.15in}

\begin{Large}
%{\sc MIT 2.680}

\vspace{0.025in} {\sc Introduction to Adaptive and Collaborative
  Marine Autonomy with MOOS-IvP}
       
\vspace{0.025in}
{\sc Nov 17-21, 2025}
\vspace{0.025in}
{\sc University of Pisa}

\end{Large}
\end{center}

\vspace{0.1in}
\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}

\vspace{0.04in}
\noindent
Michael R. Benjamin, mikerb@mit.edu \newline
Mohamed Saad Ibn Seddik, ms.ibnseddik@gmail.com \newline
MIT Department of Mechanical Engineering \newline
\noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}
\vspace{0.04in}

%\noindent
%\renewcommand{\arraystretch}{1.2}
%\begin{minipage}[]{1\textwidth}
%\begin{tabular}{p{1.2in}l}
%      
%Lectures:       &  T-R 130-230pm, NE45-202 \\
%Labs:           &  T-R 930-1230pm, NE45-202 \\
%Lab Material:   &  {\tt http://oceanai.mit.edu/ivpman/labs} \\
%Stellar site:   &  {\tt http://stellar.mit.edu/S/course/2/sp18/2.680} \\
%Class Website:  &  {\tt http://oceanai.mit.edu/2.680} \\
%Instructors:    &  Michael Benjamin, Henrik Schmidt \\
%Office Hours:   &  Wednesday 2-4pm, 32-220, or by appointment \\
%Contact Info:   &  mikerb@mit.edu, henrik@mit.edu
%  \end{tabular}
%\end{minipage}

%========================================================================
\section{About This Course}
%========================================================================

This short intensive course provides a introduction to the emerging
field of marine autonomy, using the MIT open-source MOOS-IvP software
framework. Participants will learn the fundamentals of decision making
for autonomous control of a single marine platform and teams of
platforms.  This course is conducted with examples and exercises in
simulation. We will present variations of marine autonomy problems and
missions often found on marine robots, and discuss why certain
approaches to autonomy are more appropriate than others depending on
the mission. The concept of robot middleware software is introduced
along with basic and advanced methods for engaging with the software
at run time through low-level injection and scoping methods as well as
through a command-and-control (C2) interface.  Decision-making with a
behavior-based architecture is presented, along with methods for
action selection for behavior reconciliation, including the use of
multi-objective optimization used in the MIT software stack.  Students
will then be introduced to methods for constructing autonomous
capabilities using the behavior building block for switching modes
based on mission milestones, sensed events or C2 messages. Finally,
collaborative multi-vehicle autonomy is introduced through the core
topics of inter-vehicle messaging, decentralized decision-making and
the use of multi-vehicle protocol-based autonomy. The class will
culminate by covering the mechanics of construction of new
applications and applying an application to an autonomy mission.

%========================================================================
\section{Learning Objectives}
%========================================================================

\paragraph{High-level learning objectives. Understand:}

\begin{packed_itemize}
\item \pvar{Core Decision Layers}: The difference between: Planning, Autonomy
  and Control.

\item \pvar{Collaboration paradigms}: The types of multi-vehicle
  collaboration: co-fielded, protocol-based, consensus-based, and the
  assumptions about inter-vehicle messaging in each.

\item \pvar{Core architectures}: (a) field control, (b) robot
  middleware, (c) behavior-based decision-making, (d)
  front-seat/backseat or payload architecture.
  
\item \pvar{Full life-cycle mission phases}: The major phases of
  marine robot operation: (a) mission planning, (b) mission launching,
  (c) mission operation, (d) post-mission analysis, and the tools
  associated with each.

\item \pvar{Mission structures}: The difference between time-linear or
  sequentially scripted missions and open-ended mode based autonomy
  missions.
\end{packed_itemize}

  

\paragraph{Component level learning objectives:}

\begin{packed_itemize}

\item \pvar{Primary robot system components}: Be able to identify and
  understand the jobs and roles of core software modules comprising an
  autonomous marine vehicle including, external sensing, sensor
  fusion, on-board health sensing, path planning, autonomy, control,
  C2 communications, inter-vehicle communications

\item \pvar{Robot middleware}: the construction of complex software systems
  through asynchronous distinct software modules. Inter-process
  communication, serialization and deserialization of messages.

\item \pvar{Autonomy software community}: Understand how a MOOS
  community, a MOOSDB and set of connected MOOS applications,
  comprises the distinct components of an autonomous marine vehicle
  software stack.

\item {Simulation}: Understand (a) the difference between the
  rendering of vehicles and simulation of physical motion, (b) which
  modules replace a simulator on a physical vehicles, (c) how to
  launch multiple simulated vehicles on a single computer, over
  a collection of computers if running a distributed simulation.

\item \pvar{Data injecting and scoping}: Understand (a) the software
  tools and options for injecting (poking or writing) data into a live
  software community, (b) scoping (reading or visualizing) data values
  and changes in a live community. 

\item \pvar{Scipting}
  
\item \pvar{Basic C2 (command and control)}: Learn how to interact
  with a deployed vehicle or vehicles through a GUI-based module, and
  how to configure C2 to suit a new set of mission objectives.

\item \pvar{Mission planning and launching}: Understand the core parts of
  mission specification, launch-time mission file configuration,
  and the role of shell scripting in complex mission launches.
  
\item \pvar{Behavior-Architectures}: How decision-making can be
  comprised of the influence of distinct behaviors. The advantages of
  a behavior-based architecture in terms of decoupled software
  development.  A historical account of behavior-based approaches.

\item \pvar{Action Selection}: The role of action-selection for behavior
  reconciliation and the pros and cons of the several available
  options.

\item \pvar{Multi-objective Optimization}: Understand the key concepts of
  multi-objective decision making, including the role of value functions,
  pareto optimality, and the application of multi-objective optimization
  to behavior-based architectures through the use of interval programming
  (IvP).

\item \pvar{Mission modes and structures}: Understand how mission modes are
  used for identifying relevant behaviors to accomplish the goals of the
  mission mode. 

\item \pvar{Dynamic behavior modification}: How and why one can
  dynamically modify a behavior at run-time. Understand the difference
  and similarity between mission-planning behavior configuration and
  run-time behavior configuration.

\item \pvar{Behavior events}: Understand how behaviors maintain their own
  unique internal state representation of the world and how they can
  regard certain state changes as events. How behavior can be configured
  to generate/post information upon these events that affect other aspects
  of the autonomy system. Undertand certain states an events that are
  available to all behaviors, and discern them from states and events that
  unique to a particular behavior.

\item \pvar{Core behaviors}: Be familiar with certain core behaviors commonly
  found in most missions, such as waypoint following, obstacle and
  collision avoidance etc.

\item \pvar{Mission Planning}: Understand the methods and role of mission
  planning, in terms of application and behavior configuration as well
  as specification of spatial coordinates. How to look for and address
  mistakes in mission configuration in the pre-launch and launch
  phases.

 
\item \pvar{Multi-vehicle autonomy}: How the operation of a single vehicle
  generalizes to two or many vehicles. How mission launching and C2
  generalizes to handle multiple vehicles, and how information is passed
  between vehicle MOOS communities and to/from vehicles to C2.

\item \pvar{Inter-vehicle messaging}: Understand how inter-vehicle message
  are composed, routed and received between vehicles. The inherent
  limits of inter-vehicle messages in terms of range, frequency and
  bandwidth limits.  Understand the different communication modalities
  available for platform types (surface or underwater) and operation
  area (near-shore or open water).

\item \pvar{Collision and obstacle avoidance}: Understand the
  differences between avoiding stationary obstacles and moving
  contacts, the information that is needed for each and how this is
  generally obtained, and how this is handled in a behavior-based
  architecture.

\item \pvar{Behavior spawning}: Extend the notion of a behavior-based
  architecture with a fixed set of behaviors created at the time of
  launch, to the operation of the architecture where behaviors are
  spawned upon events, to handled an ephemeral event, and subsequently
  destroyed. The contact manager and obstacle managers will also be
  introduced.

\item \pvar{Core contact-behaviors}: Be familiar with certain core
  behaviors commonly found in all contact missions, e.g., collision
  avoidance, convoying, intercepting, formation keeping etc.

\item \pvar{Voronoi-based missions}: Understand the concept of a
  protocol-based collaborative autonomy method, where coordination can
  be achieved with only limited, local and periodic inter-vehicle
  position communications.

\item \pvar{Consensus-based missions}: Understand how richer inter-vehicle
  messaging, beyond sharing or position information, can be used by
  groups of vehicles to achieve a consensus of action. Basic inter-vehicle
  auctions and simple missions using auctions. 

\item \pvar{Post-mission analysis tools}: Learn how to use generated mission
  log files to post-process, replay and analyze prior missions. Learn
  the GUI based methods and CLI methods, and which situations are
  suitable for each tool.

\item \pvar{Extending MOOS-IvP}: Obtain a template software tree from Github
  for user creation of MOOS apps and helm behaviors. Understand the
  basic structure of the software and build environment and how to
  augment your system shell environment to use new modules. 
  
\item \pvar{MOOS app development}: Learn how to develop a new MOOS application
  from scratch, using an app template. Understand the basics of mail
  handling, data processing and publishing of results. 

\end{packed_itemize}

%========================================================================
\section{Class Mechanics}
%========================================================================

This course will be taught over five days, with the fifth day being
primarily a final lab challenge problem. Each of the five days will be
comprised of two half-day sessions, roughly 3-3.5 hours each. Each
session begins by introducing new slide material for about an 45
minutes, followed by a lab preview discussion, followed by a two hour
self-contained lab.

\vspace{0.1in}
\noindent
The lab exercises require either a Linux or MacOS system provided by
each participant. Guidance will be provided on how to download and
install the MOOS-IvP autonomy software and autonomy tools on
participant laptops. External network connectivity is strongly
preferred to allow for downloading of course material, labs and lab
solutions. 

%========================================================================
\section{Schedule}
%========================================================================

The mini-course is comprised of ten sessions. Each session is
approximately 3-3.5 hours with the first 45-60 minutes being a slide
discussion, followed by a 2-3 hour self-contained set of lab
exercises. The labs are structured to build upon previous labs, but
are also structured to be doable even if the prior labs were not
totally completed. Likewise, if participants are moving faster than
normal, additional challenge exercises are provided for each lab.

%========================================================================
\subsection{Session 1: Overview of Marine Autonomy and Setup of Lab Sim Tools}

\subsubsection*{Lecture}
\input{common/lecture_01}
\subsubsection*{Lab}
\input{common/lab_01}




%========================================================================
\subsection{Session 2: MOOS Middleware }

\subsubsection*{Lecture}
\input{common/lecture_02}
\subsubsection*{Lab}
\input{common/lab_02}


%========================================================================
\subsection{Session 3: Helm Autonomy}

\subsubsection*{Lecture}
\input{common/lecture_03}
\subsubsection*{Lab}
\input{common/lab_03}


%========================================================================
\subsection{Session 4: Behaviors Generally and Specifically}

\subsubsection*{Lecture}
\input{common/lecture_04}
\subsubsection*{Lab}
\input{common/lab_04}


%========================================================================
\subsection{Session 5: Multi-Vehicle Operations}

\subsubsection*{Lecture}
\input{common/lecture_05}
\subsubsection*{Lab}
\input{common/lab_05}

%========================================================================
\subsection{Session 6: Inter-vehicle Messaging}

\subsubsection*{Lecture}
\input{common/lecture_06}
\subsubsection*{Lab}
\input{common/lab_06}

%========================================================================
\subsection{Session 7: Writing MOOS App Extensions}

\subsubsection*{Lecture}
\input{common/lecture_07}
\subsubsection*{Lab}
\input{common/lab_07}

%========================================================================
\subsection{Session 8: Analyzing and Debugging MOOS Apps}

\subsubsection*{Lecture}
\input{common/lecture_08}
\subsubsection*{Lab}
\input{common/lab_08}

%========================================================================
\subsection{Session 9: Final Challenge Problem Part One}

\subsubsection*{Lecture}
\input{common/lecture_09}
\subsubsection*{Lab}
\input{common/lab_09}

%========================================================================
\subsection{Session 10: Final Challenge Problem Part Two}

\subsubsection*{Lecture}
\input{common/lecture_10}
\subsubsection*{Lab}
\input{common/lab_10}


\end{document}


