UBC Sailbot - Software Engineer

Project Overview

Our student design team was working on an 18 ft autonomous sailbot to travel from Vancouver, BC to Maui, HI. As part of the team, I have had a chance to work on various electro-mechanical systems and software development as we prepare the boat for launch.

The team was also working on our next project, a vessel for data collection for research applications. For this project, I was working on on the network systems of our boat.

Network Systems

For our next vessel, we are continuing to use ROS to communicate across various software modules on the boat. I was working towards implementing solutions for recieving data a sensor on the boat, parsing this data and then forwarding the information to other parts of our ROS network.

My work with the network systems team has given me a better understanding of how CAN greatly simplified communication between distributed computers within a system. I have also learned more about the ROS framework and how it can be used to speed up development of complex systems.

Rudder System

The rudder system consists of 2 motors, 2 motor controllers, the rudders themselves, microcontrollers and rotary encoders. The rudders of the boat work in combination with the sails to control the direction of the boat. I worked on the implementation of the rudder acutation control in C on an STM 32 based microcontroller that is running a Real Time OS - ChibiOS. The boat employs CAN to communicate across systems. The rudder recieves an angular position via CAN and engages the motor to reach the position, as defined by the rotoary encoder. I implemented a PID acutation algorithm that achieved 20% greater angular accuracy, matched the speed of the two rudders and increased overall speed by 15%.

Other Projects

Autonomous Treasure Retrieval Robot

A robot designed to navigate an obstacle course while retrieving objects for 2022 Annual Engineering Physics Robotics Competition

Learn more

2nd Place - Autonomous Driving Competition

I worked to train a rover to drive around a simulated road while detecting license plates of nearby vehicles, avoiding pedestrians and other moving vehicles.

Learn more