Robotics and AI

We present a novel learning control method for Lagrangian systems that combines ideas from robust control with Gaussian process regression (GPR). The main idea is to use GPR to learn an upper bound on the uncertainty in the system online, which is then used in a robust controller. We prove that the learned upper bound is correct with high probability. Further, we verify the approach experimentally on a 6 degree-of-freedom UR10 industrial manipulator.

A mobile robot capable of navigating the boiler room of a nuclear power plant and autonomously performing pipe thickness measurements and collection of other relevant data. Engineering Capstone project. I focused largely on the software systems, particularly the vision system and interface to the robot arm.

A mobile robot that autonomously traverses an obstacle course, including ascending and descending a ramp and locating a variable end point. Developed as part of the MTE 380 design project course at the University of Waterloo. I worked primarily on the robot's software, including the signal processing, movement, and state machine.

An LSTM-based neural network architecture designed to perform lip-reading. Achieved an average accuracy of 86.30% when reading the lips of a known speaker.


A web-based simulation of flocking birds being hunted by predators.

A curses-based version of Conway's Game of Life that allows for multiple species of cell, written in Python.

A simulation of bodies with gravitational attraction and elastic collisions in two dimensions.

A collection of fractals including the dragon curve, Sierpinski triangle, Mandelbrot set, and Koch snowflake.