Robotics and Machine Learning

Safe Robust Learning for Lagrangian Systems

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.

Nuclear Power Plant Inspection Robot

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.

Autonomous Obstacle Course Traversal Robot

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.

Read My Lips

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.

CLI Tools


A tool to cut, copy, and paste files between directories from the command line.


A replacement for the interactive use of rm that backs up deleted files for a certain number of days and prompts the user before deleting multiple items.


Jump to previously-visited directories by name. If there are multiple matches, the user selects the correct absolute path from a list. A cousin of z with a more obvious directory-priority algorithm.


Predator Prey Simulation

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.