UBC Sailbot

UBC Sailbot builds an autonomous sailboat called Polaris. I joined the team in September 2025 and work on the embedded side: the shared communication firmware that ties the subsystems together, and the PLRS-IMU heading sensor fusion system (covered on its own page).


Communication module firmware

The boat's subsystems (rudder controller, wingsail controller, sensor module, power distribution) each run on STM32U575 Nucleo boards. The communication module firmware is the shared codebase for all of them.

I started on this codebase in October 2025, learning the team's STM32CubeIDE workflow and the Nucleo hardware. My early work sessions were spent getting UART printing to work and debugging I2C and NMEA protocol issues with an Analog Discovery 3.

UART loopback test on the Analog Discovery 3 protocol analyzer:

UART loopback test

Debugging the wind sensor driver with GDB on the STM32:

GDB debugging session

Here is what I have contributed:


Repositories