Select Page

Up until this semester, I was the software, electrical, and integration lead for Olin Aquatic Robotic Systems, a club attempting to build an autonomous sailboat. It was a massively over-scoped project (which has since been significantly down-scoped), but we learned a lot, so it wasn’t a complete loss.

As the software and electrical lead, I was responsible for mapping out those systems at a high level and assigning tasks to people. The architecture of the system was supposed to end up like so:

The last architecture diagram I made while a member of OARS. We were definitely biting off more than we could chew, but it gave plenty of people interesting things to work on.

The boat ran ROS on a Raspberry Pi (though we had purchased an NVIDIA Jetson TX2 for the next boat), and ROS nodes were written in Python.

One of my contributions to the project was a web app for monitoring the boat. A ROS node subscribed to various topics, forwarded that data to a Node.js server using WebSockets, and then a React web client received that data and displayed it. It plotted the boat’s location on a map, showed its heading, and allowed the user to change various control parameters. It was never used out in the field (due to a lack of field testing), but it did work.

My React web app showed the location of the boat and allowed the user to control various parameters.

The code can be found in this GitHub repo, and the web app can be found running on Heroku here.