Lab 1 - Overview and Machine Setup

- Goal - Make sure everyone has a suitable development machine for the course on Day 1
- Goal - All students able to build and run the course software on Day 1
- Overview of the Course Web Pages and Support
- Overview of Setting up Development Environment for MacBook Users
- Getting Started with the Command Line
- Downloading, Building, Running the Course software


- Structure of a Program
- Command Line Arguments
- Variables and Data Types
- Control Structures (if-else, while-loop, for-loop)
- Simple Classes
- Derived Classes


- MOOS Preliminaries: MOOS vs. MOOS-IvP, the MOOS Architecture
- Launching, Scoping, and Poking the MOOSDB
- Launching a Mission with pAntler
- Scripted Pokes the to the MOOSDB
- A Simple Example with pXRelayTest
- Modify the pXRelayTest Code

Lab 4 - Introduction to MOOS Programming

- The MOOS Application Structure (Iterate, OnNewMail, OnStartUp Methods)
- The MOOS Message Structure
- Getting Started with Software Version Control
- Downloading and Building the moos-ivp-extend tree
- Build Your First MOOS App - An Odometry App

Lab 5 - Introduction to Helm Autonomy

- The Basic Helm Structure
- The High-Level Helm State - Putting the Helm into Drive
- Launching the Alpha Autonomy Mission
- Understanding the Helm During the Alpha Mission Execution
- Methods in pMarineViewer for Controlling a Mission
- Assignments: Modify the Alpha Mission to Accept a User Return Point
- Assignments: Build the Single Double Loiter Bravo Missions
- Hand-in Assignment: A Double Loiter Bravo Mission with Periodic Surfacing

Lab 6 - (Pre-Lab) Simulation of Multi-Vehicle Deployments

- The Shoreside and Vehicle(s) Topology
- Introduction to pShare via the xrelay mission
- Converting the Alpha Mission to use a Shoreside / Vehicle Topology

Lab 6 - Simulation of Multi-Vehicle Deployments

- Converting the Alpha Mission to a Two-Vehicle Mission with pShare
- Using the uField Toolbox to Ease pShare Configuration

Lab 7 - Distributed Traveling Salesman

- Visit points are generated by a Shoreside script generating random vertices
- A new Shoreside MOOS app is to be written to partition visit points and assign to vehicles
- A new vehicle MOOS app is to be written to accept visit points and generate a vehicle path
- A vehicle mission is designed with behaviors to handle an incoming tour of visit points
- The vehicle will periodically return home to refuel, and then resume the tour until finish.

Lab 8 - Multi-Machine TSP with Replanning

- Run a simple baseline double-loiter mission over multiple machines
- Extend the Lab 09 Distributed TSP mission with re-planning
- Run the Distributed TSP mission over multiple machines

Lab 9 - Introduction to Constrained Inter-Vehicle Messaging

- Introduction to the uField Toolbox Inter-Vehicle Messaging Apps
- Implement basic messaging in a two-vehicle example
- Range-limited inter-vehicle messaging
- Recovering from an messaging out-of-range situation
Lab 10 - Introduction to Writing Behaviors for the IvP Helm

- Adding a New Behavior with the GenBehavior Script
- Adding a New Behavior to your Third-party Build System
- Building your First Behavior - The Alpha Range Pulse Mission
- Building your Second Behavior - The Alpha ZigLeg Mission
Lab 11 - Introduction to the PABLO Payload Autonomy Computer

- Introduce the Payload Autonomy Paradigm.
- Introduce the PABLO as a hardware platform for payload autonomy.
- Access the PABLO from your laptop.
- Access the PABLO from your laptop using SSH keys.
- Download your course code (moos-ivp-extend) tree onto your PABLO.
- Coordinate shared access to you course code on the the PABLO.

Lab 12 - Payload Autonomy on an M300 Unmanned Surface Vehicle

- Introducing the Marine Autonomy Lab at the MIT Sailing Pavilion
- Introducing the Clearpath Robotics Heron M300 vehicles
- Understanding the computer network environment at the Pavilion
- Editing the alpha_heron mission to run on actual hardware

Lab 13 - Autonomous Rescue Challenge - Part 1

- overview of the autonomous rescue lab
- Access and run the lab baseline mission
- Understand swimmer files and alert messaging structure
- Implement basic rescue path planning

Lab 14 - Autonomous Rescue Challenge - Part 2

- Conduct the basline rescue mission on a single Heron
- Demonstrate adaptive replanning

Lab 15 - Autonomous Rescue Challenge - Part 3

- Demonstrate handling of added and dropped new swimmers
- Begin working with the two-vehicle competition in simulation
- Optimize path planning based on adversarial actions

Lab 16 - Autonomous Rescue Challenge - Part 4

- Run the adaptive re-planning mission on the water

Lab 17 - Autonomous Rescue Challenge - Part 5

- Expand to two-vehicles per team, with one rescue and one scout vehicle
- Create your own Scout behavior
- In-water competition


Retired Labs
(Retired) - Autonomous Collaborative Search Part I

- Introduction to the Autonomous Collaborative Search challenge problem
- Obtain, understand and modify the baseline mission
- Assignment: Add inter-vehicle messaging to share search reports
- Assignment (optional): Add adaptive path planning
- Assignment (optional): Modify search and reporting using Classification results

(Retired) - Autonomous Collaborative Search Part II

- Continue the Autonomous Collaborative Search Challenge Problem
- Make use of the classification component of the Hazard Sensor
- Implement probability/certainty reasoning to your mission structure
- Implement risk/reward reasoning based on sensor certainty and competition metrics
- Implement path re-planning to improve your mission effectiveness
(Retired) - Collaborative Autonomous Front Estimation

- Front estimation first using a static pre-determined mission
- Behavior-writing for adaptive sampling and front estimation
- Simulated Annealing for front estimation
- In-water exercises in autonomous collaborative front estimation


- Migration of single-vehicle simulation to multi-vehicle field tests
- Proper operation on the river - OpRegion and CollisionAvoidance behaviors
- Sharing sensor information between vehicles for front estimation
- Preparing for the final in-water competition
