← Work / Projects

Engineering lead · UWaterloo Formula Electric · 2017

Formula Electric (FSAE)

Back at school after Embark, I became engineering lead of the University of Waterloo’s Formula Electric team for the 2018 car. I led the vehicle architecture, the controls and battery teams, and a push toward data-driven design and a healthier team culture.

Role
Engineering / product lead
Period
May – Nov 2017, then consulting
Led
Vehicle architecture · control algorithms · accumulator (battery)
Tools
Matlab · Atlassian Confluence
The University of Waterloo Formula Electric car
UWaterloo Formula Electric
~2 s
Per lap simulation, fast enough to sweep design parameters in batches
$1,000
Commercial tire-fitting tool replaced with my own Matlab script
3 teams
Architecture, controls and battery pack, led at once
20 → 50
Team members, with annual sponsorship tripled

Overview

When I returned to school after running Embark, I joined the Formula Electric team and quickly became engineering and product lead for the new season. With too few subteam leads, I also led the control-algorithms and accumulator (battery pack) teams while leading the 2018 car’s architecture and design. That meant building simulation tools so every area could make data-driven decisions.

After eight months I stepped back to focus on other priorities, and kept consulting for the team where needed.

Team culture

Running a startup had taught me a lot about building an effective organization, and I pushed to change how the team worked. I built a Confluence wiki and a culture of continuous documentation so knowledge carried over year to year, and set up project outlines and deadlines there so leads could hand well-defined projects to students each term.

Screenshot of the team’s Confluence wiki: the accumulator space, open on its cell-selection page of design constraints
Team wiki: the accumulator space

I also worked on how the team ran meetings, mentored newer members and resolved conflict. Over the season the team grew from 20 to 50 members, and annual sponsorship tripled.

Lap-time simulator

Choosing the 2018 architecture meant understanding trade-offs like power-to-weight, battery capacity against mass, and aero cost against performance. Existing simulators were too simplified and couldn’t evaluate torque vectoring with independent motors per wheel. Most ignored weight transfer, which decides when each tire loses traction.

So I wrote one in Matlab: a point mass limited by a friction ellipse, driven through a track of arcs and straights, accelerating and braking at the theoretical limits while aero drag and downforce change with speed. At about two seconds per lap, we could sweep parameters in batches and build trade-off maps to decide where to spend effort.

The plots below show one simulated lap, coloured by velocity and by acceleration.

Matlab plot of a simulated lap on a winding track, the line shaded green by velocity
Simulated lap: velocity
The same simulated lap, the line coloured green, red and black by acceleration
Simulated lap: acceleration

Lap-time simulator

  1. Inputs
    Vehicle parametersPower/weight, battery, aero, centre of mass
    TrackConstant-radius arcs and straights
  2. Speed limits
    Corner speed limitsFrom each segment’s curvature
  3. Simulation
    Forward/backward passesFriction ellipse, weight transfer, aero drag and downforce
  4. Outputs
    Lap timeVelocity and acceleration traces
    Trade-off mapsFrom batch parameter sweeps
Point-mass lap simulation for design trade-offsSimplified

Tire data analysis

Tires set the limit on every force a car can use. Paying a firm to test tires would have cost too much, and testing them ourselves would have taken too many people, so we used the raw test data a group of former FSAE members publishes each year. Turning it into usable coefficients usually means a $1,000 tool. I wrote a Matlab script instead that splits the logs into individual tests and fits:

  1. A standard tire model to slip angle versus lateral force, for varying camber and normal load.
  2. Lateral and longitudinal friction coefficients as functions of the test parameters.
  3. Other data, like returning force, formatted so it’s easy to extract.

The script presents the results as plots and tables. In the fits, the top two plots overlay every fitted curve, dimensional and non-dimensional, and the bottom one fits the lateral friction coefficient at zero camber.

Matlab plots: Magic Formula curves of lateral force against slip angle, dimensional and non-dimensional, and a straight-line fit through peak lateral force at each normal load at zero camber
Magic Formula fits
Tables of extracted tire parameters: a lateral friction coefficient, and Magic Formula coefficients B, C, D and E for each camber angle and normal load
Fitted tire coefficients

Related