UW Feedback Control Sandbox

UW Feedback Control Sandbox

Client: University of Waterloo's Engineering IDEAs Clinic, Software Engineering Faculty

Period: June - September 2020

Technology: Godot Game Engine, Inkscape, Git, C#, GDScript

Procedurally generated highway course with traffic.


I worked with the University of Waterloo's Engineering IDEAs Clinic to design and develop a digital sandbox "game" that helped students learn about dynamic feedback control. Adapting elements from the spaceship collaboration activity, this project focused exclusively on controlling the movement of a virtual craft using detailed feedback control loops. By modelling, programming, and testing a series of increasingly sophisticated feedback controllers, students could explore their conceptual understanding of their in-class lecture material as the programmed their virtual ship to fly down a traffic-strewn highway.

Once students were able to successfully program their propulsion control loops, the final result was paradoxically (though purposefully) anticlimactic: seeing the virtual ship cruising calming down the highway and switching lanes looks like everyday driving. But it's important to keep in mind that the underlying physics of the ship were essentially the same as the game Asteroids with just a forward thruster, the ability to torque the ship's heading, and the opportunity to spin/slide out of control waiting at every bend in the road. For those students that were able to implement the underlying control intelligence, success meant turning the chaotic raw dynamics of the virtual ship into something that looked deceptively boring!

Design Considerations

Due to the 2020 pandemic, course lectures had been moved online but the physical lab hardware students would normally use for their projects was inaccessible. The IDEAs Clinic needed a substitute activity that could be deployed remotely while covering the same engineering principals. As the students would be deploying the sandbox onto their personal computers, the new project needed to be designed to target hardware with as limited performance specifications as possible. As some students might be using computers capable of little more than video conferencing and web browsing, the simulation's visuals were kept purposefully spartan.

I chose to develop the project within the Godot game engine for it's light weight, in-built code editor/compiler, and cross-platform portability. With some basic Git skills, students could clone the sandbox repo, open the Godot project, and get to work without wrestling with all of the installation and version mismatch headaches that consistently plagued the spaceship collaboration activity. (Never underestimate students' ability to ignore the provided installation manuals.)

My Role

My role on this project was primarily one of design, knowledge translation, and management. The bulk of the initial software implementation was completed by two early-year co-op students based on design consultations I held with the engineering faculty who would ultimately deploy the simulator to their class. I oversaw the co-op developers' work from initial job interviews, through hiring, training, and daily tasking. My background in both mechatronics engineering and game development allowed me to translate the academic requirements from the faculty into simulator requirements for the co-op developers.

Although the co-op developers did an overall excellent job with their initial simulator implementation, the rocky deployment of the spaceship collaboration activity earlier in the same semester prompted me to port the entire project from C# to GDScript (Godot's native scripting language)in late September 2020; after the original co-op developers' term had ended but before the feedback control simulator was deployed in fall 2020. This 11th hour maneuver took approximately 1.5 weeks but the subsequent deployment to students was the smoothest of any of the online IDEAs Clinic activities.