MOOS Applications & IvP Helm Behaviors Overview
We have developed a large body of software for the MIT Laboratory for Marine Sensing Systems (LAMSS) where the source code is within the self-titled project lamss. Much of this work uses the MOOS-IvP autonomy middleware and behavior-based control architecture.
MOOS is a publish / subscribe software infrastructure that provides communications and scheduling for a community of independent processes that collectively create the software necessary to run an autonomous system (robot). For more details on MOOS, please refer to P. Newman's website.
M. Benjamin has developed an autonomous helm (pHelmIvP) that uses multiobjective optimization for evaluating a set of behaviors that determine a vehicle's actions. For information on the IvP helm, refer to M. Benjamin's pages.
These modules are intended to run in a framework including a number of processes by other authors. So rather than a standalone project, I list a subset of the most complete and robust modules and their documentation largely as a service to my collaborators.
Introduction to MOOS @ LAMSS: summary paper on how to get started using MOOS in the MIT Laboratory for Marine Sensing Systems (recommended for new students).
List of contributed MOOS processes
uSimSoundVelocityMSEAS: interfaces to the MIT MSEAS dynamic ocean models (NetCDF format) and extracts the range-dependent sound speed profiles along a vertical plane between two locations, which are used as input to iBellhop for range-dependent ray tracing [actively maintained].
Acoustic communications / Command and control
documentation: See Goby documentation
pAcommsHandler: message queuing process and driver for the WHOI Micro-Modem [actively maintained].
iCommander: interface for commanding a vehicle through acoustic commands encoded by libdccl [deprecated; use goby liaison].
pGeneralCodec: highly configurable message encoder/decoder written primarily for acoustic communications. This process is mostly a MOOS interface to libdccl [deprecated; use pAcommsHandler].
pCTDCodec: encodes CTD samples to be sent by the WHOI Micro-Modem [deprecated; superceded by delta-difference encoding in DCCL in pAcommsHandler].
pAcommsPoller: topside (control computer) cycle initialization (polling) process for acoustic communications [deprecated; superceded by MAC in pAcommsHandler].
iMOOS2SQL: MOOS to geov interface. Parses appropriate MOOS variables into the MySQL database for use by geov. used to allow visualization of vehicles running MOOS in geov [actively maintained].
Interfaces & MOOS drivers
iSerialNMEA: serial GPS stream parser. Reads data from a serial port (or optionally an NMEA message in the MOOS database) and creates an AIS_REPORT. This process is handy for turning a ship's GPS feed into usable MOOS data [actively maintained].
iArduinoDIO: interfaces to an Arduino microcontroller board for digital IO [actively maintained].
iWebsite: interface between MOOS and a webserver running http and (if uploading is desired) ssh protocols. Allows for tasking of MOOS vehicles from a very remote site (through a file posted on a webserver by either a human or machine) [functional but not actively maintained].
iMseasBathy: interfaces to the MIT MSEAS dybnamic ocean models (NetCDF format) and extracts the bathymetry at a specified location [actively maintained].
pOctaverMIT: interfaces to Octave for executing Octave functions. This is a subset of pOctaver, originally written by Arjan Vermeij at CMRE, La Spezia, Italy [functional].
pClusterPriority: based on the locations of known collaboratoring vehicles and a list of targets, this process develops priority weights for the IvP helm behavior BHV_Attractor. This process with two behaviors (BHV_Attractor and BHV_RubberBand) forms the basis of the early work in cluster autonomy for target tracking mentioned on the research page [not robust, active research tool].
pCTDLogger: logs data from a SBE49 CTD instrument based on the data received by iCTDSBE49. This is a CTD we use on the kayaks [functional but not actively maintained].
pSoundSpeed: a quick prototype used to perform a three vehicle collaborative sound speed test in dabob bay. This process tasks the vehicles to their proper locations and initiates the center vehicle CTD cast and outer vehicle modem pings. See this talk for details [not robust, active research tool].
pEnvtGrad: determines the depth boundaries and maximum gradient depth of the thermocline, pycnocline, halocline, or acousticline based on vertical gradients in seawater properties, enabling adaptive 'cline tracking [actively maintained].
uTPB: allows playback of a MOOS alog file into a current MOOSDB. Similar to uPlayBack but written in ncurses. [functional but not actively maintained].
pCoroner: maintains a list of MOOS processes started and whether they are still alive (running). [actively maintained].
pFrontTrackMetrics: calculates performance metrics for adaptive AUV front tracking behaviors tested in virtual experiments [actively maintained].
List of contributed MOOS-IvP behaviors
BHV_AcommsDepth: [actively maintained].
BHV_FrontTrackNoBdry: [actively maintained].
BHV_FrontTrackHelix: [actively maintained].
BHV_FollowTheLeader: [actively maintained].
BHV_HorizontalHelix: [actively maintained].
BHV_SpiralOut: [actively maintained].
BHV_ToggleDepth: [actively maintained].