<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\section{Lab Assignment}

\subsection{Problem Statement}


Power consumption is a critical issue for the deployment of
underwater vehicles for long-time surveillance in the open
ocean. Acoustic communication is the only feasible approach to
maintaining connectivity with other underwater nodes and the
operators, but each transmission require significant power. A common
way of conserving power is to use directional sources and
receivers. Thus, instead of transmitting sound in all directions from
a point source,  the use of a vertical source array allows for
steering the transmitted energy into a directional, conical beam of
finite width, which, if properly designed, can reduce the power
consumption by a couple of orders of magnitude. The same approach is
also used for active sonars for target detection and tracking. 

The use of directional beams obviously requires that the autonomy
system is capable of predicting how a particular directional beam of
sound is propagating through the environment, and more importantly
solve the inverse problem of determining the vertical transmission
angle that will make the sound beam reach the collaborator or the
target of interest. The creation of a MOOS process that performes this
task is the goal of this Lab assignment.

Because of the strong diffraction associated with the depth-dependence
of the sound speed,  there will often be cases where a direct path
does not exist for the sound to propagate undistorted to and from the
collaborator and in such cases it will be necessary to move the platform
to a location which is more favorable, and obviously you want to
minimize the amount of power you use for such maneuvers.

This Lab will develop a MOOS process which will determine whether a
path exists, and if it does, computes the vertical steering angle to
be used for the acoustic transmitter. If a direct path does not exist,
your application shall instead compute a location from which the
vehicle will be able to send a communication package to the
collaborator.
 
\subsection{MOOS Process pCommunicationAngle}

The process you will write and demonstrate shall use the navigation
information available for the collaborator to compute and publish to
the MOOSDB a current estimate of the vertical transmission angle to be
used for the communication transmission. Only direct paths will in
general be reliable for communication, i.e. paths reflected from the
surface or the seabed will not be useful. Therefore the process must contain a
check for a direct path existing.

In the case a direct path does not exist, you must compute a location
which will allow communication, and report it to the MOOSDB, e.g. for
use by the platform autonomy..

\subsection{Configuration Parameters}

The process shall be configured for an environment with a linear sound
speed profile and arbitrary depth, through the following configuration
parameters,

\vspace{0.15in}
\begin{listing}{Configuration Parameters}
\label{lst_config_params}
\renewcommand{\arraystretch}{1.1}
\begin{longtable}{rp{0.76\textwidth}} 
  \pvar{surface\_sound\_speed} &amp; Sound speed in m/s at the sea surface \\

  \pvar{sound\_speed\_gradient} &amp; Sound speed gradient with depth, in
  (m/s)/m. \\

  \pvar{water\_depth} &amp; Water depth in meters. \\

  \pvar{time\_interval} &amp; Time interval in seconds between
  estimates. \\

\end{longtable}
\end{listing}


\subsection{MOOSDB Subscriptions}

The process shall subscribe to the following MOOS variables, all of
which contain values of \var{double}:

\begin{packed_itemize}[2]
\item \mvar{VEHICLE\_NAME}: Name of the ownship platform
\item \mvar{COLLABORATOR\_NAME}: Name of collaborator, referred to as
  'collaborator' in the following.
\item \mvar{NAV\_X}: ownship East location in in local metric coordinates. 
\item \mvar{NAV\_Y}: ownship North location in in local metric coordinates. 
\item \mvar{NAV\_DEPTH}: ownship depth in meters. 
\item \mvar{NAV\_HEADING}: ownship heading in degrees.
\item \mvar{NAV\_SPEED}: ownship speed in meters/second. 
\item \mvar{'collaborator'\_NAV\_X}: collaborator East location in in
  local metric coordinates
\item \mvar{'collaborator'\_NAV\_Y}: collaborator North location in in
  local metric coordinates.
\item \mvar{'collaborator'\_NAV\_DEPTH}: collaborator depth in meters.
\item \mvar{'collaborator'\_NAV\_HEADING}: collaborator heading in degrees. 
\item \mvar{'collaborator'\_NAV\_SPEED}: collaborator speed in
  meters/second.
\end{packed_itemize}

\subsection{MOOSDB Publications}

The process shall publish the following variable to the MOOSDB:

\begin{packed_itemize}[2]

\item \mvar{ACOUSTIC\_PATH}: String containing your answer, and your
  email for identifation, in the format \var{elev\_angle=xxx.x,
    transmission\_loss=yyy.y,id=user@mit.edu}.

\item \mvar{CONNECTIVITY\_LOCATION}: String containing the location to
  which to transit at curent speed for achieving connectivity. If a
  path currently exists, the location is obviously the current
  location. The format should be:
  \var{x=xxx.xxx,y=yyy.yyy,depth=ddd.d,id=user@mit.edu}.
\end{packed_itemize}

Note: In case no direct path exists, the published values in
\mvar{ACOUSTIC\_PATH} must be specified as \var{NaN}.


\subsection{Testing and Demonstration}

A simulated MOOS community named {\em Spermwhale} for an underwater
vehicle operating in the deep ocean will be provided for testing and
demonstration of your process:

\vspace{0.2in}
\begin{tabular}{ll}
Server &amp; oceanai.mit.edu \\
Port &amp; 9011
\end{tabular}
\vspace{0.2in}

\noindent
You should give your process a unique name during execution,
e.g. \app{pCommunicationAngle\_userid} to avoid interferrence with
other student's processes.

\pskip
\noindent
The environmental parameters are as follows:

\vspace{0.2in}
\begin{tabular}{ll}
  \pvar{surface\_sound\_speed} &amp; 1480 m/s \\
  \pvar{sound\_speed\_gradient} &amp; 0.016 (m/s)/m \\
  \pvar{water\_depth} &amp; 6000 m
\end{tabular}
\vspace{0.2in}

\noindent
You may check your solution by comparing the reference solution,
published in the MOOS variables:

\vspace{0.2in}
\begin{tabular}{l}
\mvar{ACOUSTIC\_PATH\_REF} \\
\mvar{CONNECTIVITY\_LOCATION\_REF}
\end{tabular}
\vspace{0.2in}

\noindent
You may use \app{uXMS} to check these variables together with the ones you
are publishing, using the command

\vspace{0.1in}
\begin{consoleverb}
 $ uXMS pCommunicationAngle.moos ELEV_ANGLE ELEV_ANGLE_REF
\end{consoleverb}
\vspace{0.1in}

\noindent
Note that you need to make your comparison in real time, since the
vehicles are moving.


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