Electrical/Software Subteams — Year 1, Semester 2 Schedule (Spring 2018)

Here’s an overview of what Electrical and Software hope to accomplish this semester!

With Damn Yankee successfully revived, rechristened “Git Boat,” running on ROS, and controllable via RC, it is now time to make it autonomous! Whether you’re new to OARS Software or a returning member, it’s going to be a great semester, replete with actual sailing on full-sized boats with the Wellesley Sailing Club (once the weather permits)!

For those new and unfamiliar with the current goals of OARS, we are currently working on a multi-year plan to design and build a boat capable of autonomously sailing across the Atlantic Ocean. This current year is focused on making a boat sail autonomously in nearby Lake Waban. Next year, we will begin sailing in the Charles or the Massachusetts Bay, starting small and gradually working up to larger distances and rougher waters.

We’re currently on track to achieve this year’s goal of sailing across Lake Waban. We’ve broken up our work into four phases. Phases I and II were completed last semester, and Phases III and IV await us this coming semester. (For a recap of what we accomplished last semester, see the section at the end.)

Phase III Software Goals

From the period of late January to early March, we will be working on the following tasks:

1. Control the boat

The boat should be able to maintain a given tack (direction of sail), as well as change that tack by tacking or jibing. Early testing will likely have to be done in the Babson pool.

Inputs:

  • Position relative to next waypoint
  • Orientation relative to next waypoint
  • Current wind speed
  • Current wind direction

Outputs:

  • The boat moves in the desired direction

2. Plan paths

Given a starting position and a desired end position, plan a path to get there. This path should specify/include any necessary tacks or jibes.

Inputs:

  • Starting GPS coordinates
  • Goal GPS coordinates
  • Wind direction and speed
  • Maximum acceptable deviation from straight-line path(?)
  • Constraints:
  • Geographic (shoreline)
  • Obstacles in water (probably not initially, but eventually)

Output:

  • A list of waypoints to pass to the navigation system

3. Navigate via waypoints

This task ties the functionality of the two aforementioned tasks together. Given a list of waypoints, we will need to determine the desired boat heading to navigate from one to the next. Once one waypoint is reached (and it will need to determine when that happens), it should progress to directing the boat toward the next waypoint.

Input:

  • List of waypoints

Output:

  • Desired current boat heading

4. Begin development of web-based control panel

In order to monitor our boat’s status and current thinking, we will want some sort of control/systems overview panel. Making it web-based will allow it to be accessible on any device, which will be especially important when we launch the boat on multi-month missions.

It will require:

  • A web server (probably Node.js) listening for status publications
  • A ROS node for publishing boat information to the server and saving in some database (probably MongoDB)
  • A web app (probably React) for displaying the information collected by the server

Phase IV

From March through May, we will integrate what we developed in Phase III, test it on Lake Waban, and fine-tune and debug as needed. Depending on Mechanical’s status with our new boat, Hawsepiper, we may also being developing code to control a wing sail.

Phase V and Beyond

Our next boat, Hawsepiper, will likely be outfitted with an NVIDIA Jetson TX2 computer, specially designed for embedded AI and machine learning. With that, and once we know the basics of autonomous sailing, we can think about getting the boat to perfect its sailing techniques with machine learning.

Phase I and II Recap

Last semester, OARS reconditioned Damn Yankee, a sailboat created by OARS a few years ago. Everything was done with National Instruments’ LabVIEW, which is proprietary and (reportedly) a pain to use for a boat. Mechanical fixed the boat up physically, Electrical rewired the motors, and Software switched everything over to Python and ROS. At then end of the semester, we were able to “sail” it in the Babson pool.