Goby3 Course

To celebrate the release of the third version of the Goby Underwater Autonomy Project (Goby3), Dr. Toby Schneider offered a one week technical course on its use. If you missed the original presentation (March 8-11, 2021), the full course can be taken independently at any point. The recorded lectures are available below (with written lecture notes and slides also available), and the entire series of homework assignments can be worked.

This course is provided free of charge, thanks to our sponsors.


Day 1 (Monday, March 8): Overview

  • Lecture: Overview of the Goby3 project as a whole, explore some existing and potential applications, and lay down the groundwork for the rest of the week’s technical sessions.
  • Homework assignment. Download, setup, and update the course Virtual Machine. Run the multi-vehicle missions that we will explore the rest of the week.
Lecture: Day 1

Day 2 (Tuesday, March 9): Technical I: Communications

  • Lecture: Hands-on with nested publish/subscribe in Goby3, from interthread to intervehicle layers. A look into DCCL and Protobuf marshalling schemes. Understanding the Goby intervehicle comms implementation.
  • Homework assignment. Create a command message from the topside to the USV. Add a health monitoring process to the USV that is reported topside.

Day 3 (Wednesday, March 10): Technical II: Autonomy

  • Lecture: Integration of Goby3 as a higher level autonomy architecture via the extensible frontseat interface. Interfacing with MOOS-IvP (IvP Helm) autonomy.
  • Homework assignment. Develop a simple “helm” application and use it to control the vehicle through goby_frontseat_interface. At the end of the mission, command the AUVs to recover.

Day 4 (Thursday, March 11): Technical III: Sensors

  • Lecture: I/O framework for interfacing with sensors (serial, TCP, UDP, CAN). Some Goby3 approaches to managing sensor drivers and data parsing. Brief look at future directions for Goby3.
  • Homework assignment. Finalize a CTD simulator we started in class, and use it to publish data from the simulated AUVs to the USV.

Day 1 is less heavily focused on detailed technical material, and thus is suitable for engineers and managers with a wider range of backgrounds. Days 2-4 is more “hands-on” technical, which means the following background is helpful:

  • Modern C++ (up to and including C++14). The more general C++ experience you have, the more you will likely gain from the course. That said, the C++ features that you are directly exposed to in this course are not advanced, and Goby3 is intended to be used by beginner and intermediate programmers. If your experience is mostly with older versions of C++ (e.g. C++03), you may want to read up on lambdas, constexpr, and auto ahead of this course.
  • General marine robotics/autonomy and oceanographic engineering experience are helpful.

Tier 1

Tier 3

Raytheon Technologies