Howard's Projects

Resume Home LinkedIn howard.li.2718@gmail.com


Thanks for checking out my projects!

Click on a project tab to learn more about it, and click on an image to zoom in!


Description: My capstone project, spanning the last two years of my Engineering Physics program. Currently, my team is in the second year of the project.

Building upon the work of previous Engineering Physics students, the purpose of the project is to vary the phase offsets of a grid of transducers, such that the resulting pressure field is capable of levitating small styrofoam beads.

In a team of four, I am the person primarily responsible for software-related tasks, such as writing scripts to control the transducer grid via keyboard and mouse inputs.

To efficiently solve for the phase offsets required to levitate beads, a phase-solving algorithm written in the Rust system language is employed. We also make use of Python and OpenCV for image and video processing.

For more details, please refer to our Github repository here.


Supporting image for Ultrasonic Levitation for Holographic Imaging.
Supporting image for Ultrasonic Levitation for Holographic Imaging.

Relevant Skills: Python, Rust, Phase Solver Algorithms, Blender, Soldering, Circuit/PCB Design, FPGA Design, Serial Communication.

Description: The final project of my introductory robotics course, completed as a group of five. We succesfully programmed an impedance controller for the Franka Emika 7-DOF robotic arm, as simulated in ROS.

Using our controller, the robot is capable of prescribing a set force with which to press upon objects in its working range, in both the normal and tangential directions. It does so by solving a second-order matrix ODE for the required angular rates of change in the arm's joints.

I was responsible for setting up the ROS environment in Linux (which proved to be somewhat non-trivial), as well as prescribing the robot end-effector orientation. I also assisted in writing and proofreading the final report.


Supporting image for Franka Emika Robot Impedance Controller.
Supporting image for Franka Emika Robot Impedance Controller.
Supporting image for Franka Emika Robot Impedance Controller.

Relevant Skills: ROS + Gazebo, Linux, Bash, Robot Kinematics/Dynamics (Trajectory/Force Control), Denavit-Hartenberg Parameters, Data Collection and Analysis (Python).

Description: An individual project, designing a website using the VitePress static site generator to host a blog dedicated to Japanese language acquisition.

Being an individual project, I was responsible for all tasks, including writing code, troubleshooting, writing the blog contents, preparing media files, and so on.

The blog can be accessed here, and the GitHub repository here.


Supporting image for Japanese Language-Learning Blog.
Supporting image for Japanese Language-Learning Blog.

Relevant Skills: HTML/CSS/JS, Vue.js, Vite + VitePress, Static Site Generation, Content Creation, Version Control, Frontend Development, UI/UX, Website Hosting.

Description: A pair-based project to program a robot capable of navigating a virtual environment in a Gazebo (physics) simulation. Emphasis was placed on the robot's ability to recognize and read letters on signs. To do this, we trained a convolutional neural network (CNN).

I implemented computer vision functionality, such as edge detection, color detection, and motion detection. I also worked with my partner to design a MVC GUI for testing purposes and to train a CNN for optical character recognition. The neural network was very consistent, correctly identifying letters over 99% of the time.

The robot is also able to drive autonomously thanks to its image processing capabilities (ability to detect road edges) and a PID control loop.

At an end-of-term robot competition, my partner and I placed 3rd out of ~20 teams.


Supporting image for Machine Learning Virtual Robot.
Supporting image for Machine Learning Virtual Robot.
Supporting image for Machine Learning Virtual Robot.

Relevant Skills: Python, Image Processing, Deep Learning, PID, CNNs, OpenCV, PyQt, NumPy, OCR, ROS + Gazebo, Linux, Bash.

Description: A team-based project to design a robot capable of following tape around a race track. This multi-disciplinary project includes mechanical and electrical engineering, software development, control theory, and so on.

I programmed a PID control loop and a signal convolution script for IR detection using the STM32 microprocessor and Arduino. I also worked with electrical lab equipment (oscilloscopes, function generators, etc.) to analyze electrical circuits.

In terms of hands-on skills, I became experienced working with wire crimps, soldering irons, laser cutters, and 3D printers.

Ultimately, our team's robot was able to drive significantly faster and more smoothly than most teams, and we were semi-finalists in a competition pitting all the robots against each other.


Supporting image for Autonomous Tape-Following Robot.
Supporting image for Autonomous Tape-Following Robot.
Supporting image for Autonomous Tape-Following Robot.

Relevant Skills: C/C++, Arduino, STM32 Microprocessor, CAD (Onshape), Signal Processing, Control Theory, Soldering, Wire Crimping, Circuit Design, Lab Equipment.

Description: In my microcomputers course, I designed the following FPGA designs as part of my laboratory work. For hardware, I used the DE0-CV FPGA board, and on the software side, I worked in Quartus and wrote code in the VDHL language.

Examples of projects completed include a 24-hour clock, scrolling digits display, and 8-bit calculator (the four basic operations, modulo, and square root).


Supporting image for FPGA Designs/Projects.
Supporting image for FPGA Designs/Projects.
Supporting image for FPGA Designs/Projects.

Relevant Skills: Low-Level Programming, FPGA Design, Quartus, VDHL, Assembly, I/O Processing.

Description: A research project, analyzing a topic in thermodynamics. This was the final project of my thermodynamics course, and was compiled into a presentation.

My research topic was on the numerical analysis of heat flow in high-purity copper wires.

I used SageMath (similar to MATLAB) to perform nonlinear regression on data extracted from graphs, and I also numerically solved a non-linear, second order ODE using the Runge-Kutta method to obtain the equilibrium temperature distribution.

To design a technical slideshow, I leveraged my skills with LaTeX to create a set of Beamer (presentation document class) slides.


Supporting image for Numerical Heat Flow Simulation & Presentation.
Supporting image for Numerical Heat Flow Simulation & Presentation.

Relevant Skills: Thermodynamics, Numerical Methods, Non-linear Regression, Differential Equations, Technical Communication, SageMath, LaTeX, Beamer.

Description: Throughout my time at UBC, I have been a member of two student-run engineering design teams.

The first design team I was a part of was UBC Steel Bridge, whose annual goal is to design a 1:10 scale steel bridge. I was a member of the Drafting sub-team from 2021 to 2023—in 2022, UBC placed 2nd at the Canadian National Steel Bridge Competition.

During my time with UBC Steel Bridge, I worked with Autodesk AutoCAD and Inventor to create 3D models and drawings for bridge parts, also utilizing Microsoft Excel to calculate distances and part sizes using trigonometric formulae. I was able to integrate into the team well and contributed actively to design discussions.


Supporting image for Engineering Design Teams (UBC Steel Bridge).
Supporting image for Engineering Design Teams (UBC Steel Bridge).

The second is UBC Orbit, a satellite design team with plans to launch a CubeSat into space in 2027. I joined the Attitude and Orbit Control Systems (AOCS) sub-team in 2024, and am currently a member.

With UBC Orbit, I use our team's in-house Python physics simulation and my knowledge of kinematics and classical mechanics to help control the satellite's positioning. The project is very intricate, and I appreciate how everyone's work combines to form a whole that is more than the sum of its parts.


Supporting image for Engineering Design Teams (UBC Orbit).

Relevant Skills: Autodesk AutoCAD/Inventor, 3D Modelling, Engineering Drawings, Python, Zero-Gravity Physics Simulations, Rigid Body Dynamics.

Description: A team-based software project to create a multithreaded Java framework that interfaces with the X (Twitter) API to pull tweets and store them in a time-sensitive queue. Emphasis was placed on the importance of unit testing, which was done using the JUnit library.

I utilized Gradle as the main project build tool and worked with JUnit to perform blackbox/whitebox unit tests. I also made use of advanced Java data structures such as DelayQueue and ConcurrentHashMap.

By writing comprehensive unit tests, I was able to obtain over 90% code coverage.


Supporting image for X (Twitter) Pub-Sub Framework.
Supporting image for X (Twitter) Pub-Sub Framework.

Relevant Skills: Java, Gradle, JUnit, OOP, Multithreading, Network Programming, Unit Testing, Blackbox/Whitebox Tests, Backend Development.

Description: The final project of my experimental laboratory course.

The goal was to design a circuit capable of regulating the angular velocity of a servo motor. The velocity is printed to a 7-segment display and controlled using an error signal.

I handled lab tools including function generators, waveform analyzers, and DMMs to construct the entire circuit. I also worked with various circuit components, such as transistors, counters, potentiometers, DACs, diodes, capacitors, buffers, etc.

To make sure my work was both understandable and reproducible, I maintained well-documented lab notes. My experience with effective note-taking has since served me well in various endeavours (work, school, and so on).


Supporting image for Servo Motor Control Loop Circuit.
Supporting image for Servo Motor Control Loop Circuit.
Supporting image for Servo Motor Control Loop Circuit.

Relevant Skills: Lab Equipment, Circuit Wiring, Oscilloscopes, Technical Troubleshooting, Control Loops, Digital & Analog Circuit Components.

Description: A team-based effort to develop a visual novel using the Ren'Py game development framework.

Visual (or kinetic) novels are interactive story-driven experiences that blend engaging narratives with captivating visual art/audio and player-driven decision-making.

I led a three person team and was responsible for the programming, music, and background graphics. I was also partially responsible for the dialogue. Other team members worked on dialogue and character graphics.

I'd like to highlight the soundtrack in particular, which you can take a listen to here.


Supporting image for Interactive Visual (Kinetic) Novel.
Supporting image for Interactive Visual (Kinetic) Novel.

Relevant Skills: Software Development, Game Development (Python), Graphic Design, Image Editing, UI/UX, Creative Writing, Music Production

Description: I like to self-study various topics in math. To share my findings, as well as some of my original thoughts, I started a blog where I post about mathematical ideas, titled Romance on a Parabola.

My goal was to design it to appear similar to online math textbooks, so I used MathJax and the PreTeXt LaTeX library. It's a great opportunity for me to practice technical communication, and I also get to work with GitHub, XML, and HTML/CSS/JS.

The blog can be accessed here.

The final image is of a Julia set, which I rendered in the Windows Powershell command line (CLI).


Supporting image for Mathematics Blog.
Supporting image for Mathematics Blog.
Supporting image for Mathematics Blog.

Relevant Skills: Applied Mathematics, Technical Communication, Website Design, LaTeX + PreTeXt, MathJax, Software Development.

Description: My favorite creative hobby is scoring and producing music.

I am proficient in the use of musical notation software, e.g. MuseScore, Finale. I am also experienced with producing music in digital audio workstations such as REAPER and FL Studio.

I use industry standard tools, including Kontakt 7, Ozone 10, Synthesizer V, and Xfer OTT, among others.

As for genres, I write music in a variety of styles: pop, orchestral, piano solo, ... Please check out my work via YouTube.


Supporting image for Musical Composition & Production.
Supporting image for Musical Composition & Production.
Supporting image for Musical Composition & Production.

Relevant Skills: Songwriting, Music Mixing + Mastering, Video Editing, Musical Notation + Scoring, Orchestration, MuseScore, REAPER, FL Studio, VST/VST3.