loading indicator Geoff Nagy, with a µBee drone taking off

Geoff Nagy

Robotics PhD Candidate, scientist, developer.


I'm a PhD Candidate at Simon Fraser University's School of Computing Science (robotics). My supervisor is Richard Vaughan, now at Apple.

One of the first things you may notice is that I love building things, with any mix of software or hardware! Click on a category to jump to content.

Or, click to scroll to industry experience, education, publications, and other accomplishments.

a GIF showing some of my hardware projects Hardware projects

I've used CAD software and embedded programming to build a fleet of drones, an electric scooter, robots, and more.
an image of output from one of my software tools Solving problems

I write software tools for personal and public use. These include a media library for C, scripting tools, options trading backtesters, and many others.
a GIF showing some of my games Game development

My games are available on Steam. My game engines are cross-platform and written from scratch using C++ and OpenGL/GLSL.

Hardware Projects

Robots, drones, DIY electronics.

Hover over images for a quick description!


a close-up GIF of a µBee render

An animated render of the µBee, an inexpensive, 3D-printed drone powered by an ATMega328P. Optional mounts for reflective markers allow integration with a motion capture system.

Design, firmware, and control software will eventually be released open-source.

an animated GIF of the electric scooter

An animated render of an electric scooter. I built it from scratch using plywood, aluminum, and 3D-printed parts reinforced with steel. An ATMega328P powers the logic, motor control, and display.

an animated GIF of my remote-controlled car and the controller

An animated render of my rugged-terrain, differential drive remote-controlled car. It is nearly entirely 3D-printed, including the controller.

a small µBee fleet

A brief test of a small µBee fleet, controlled by custom software. A Vicon motion capture system surrounding the lab space captures the 9.5mm markers attached to the drones. For size and weight considerations, only 3 reflective markers are used per drone. The software controlling the µBees detects and tracks these markers over time to associate the detections with drone IDs.

a GIF of the µBee

Myself, test-flying the µBee. With the optional motion capture markers, the drone weighs 37g (including the LiPo battery), and has a flight time of up to 3 and a half minutes.

a GIF of an electric scooter

Myself, riding the electric scooter. Its top speed is approximately 16km/h and it has a modest maximum range of about 7km when powered with a 3.3Ah 6s LiPo.

a GIF of a 3D-printed remote control car

Field tests of the rugged-terrain remote-controlled car on the SFU campus.

a GIF of 5 3pi robots controlled by a global vision system

An earlier robotics project of mine started prior to my master's degree. A custom global vision system captures the 3pi robots and instructs them to maintain various formations as robots are added or removed in real time.

a photo of a quadruped robot

Shortly after starting my master's degree, I built a remote-controlled quadruped robot to terrorize the neighbourhood.

For my PhD research I designed, built, and programmed a custom micro-drone called the µBee. I've constructed 10 of them for running my thesis experiments in a motion capture-equipped workspace, and developed a custom simulator tool to test out µBee behaviours beforehand.

In my free time, I've built an electric scooter, a remote control car, and other projects requiring the use of CAD software and embedded programming on Microchip (formerly Atmel) devices. I use Fusion 360 for modelling and DipTrace for designing schematics and circuit boards. The animations above were rendered in Blender.


Solving Problems

Software tools.


a PNG of a tool for particle effects

Fornax is a general-purpose particle editor I use in many of my projects. The interface was made in C# .NET, and the preview functionality was built in C++ with OpenGL.

Source code is available here.

a PNG of a tool for scripting Hypergate campaign missions

This is the scripting and mission layout tool I built to script missions in Hypergate. It was made in C# .NET.

a PNG of back testing results

This is some output from a suite of back-testing tools I wrote to develop and test options trading strategies on the S&P 500. These tools were built using C++ and Python.

I enjoy coding to solve problems or provide useful tools. For example, I've written stock market options trading back testers to yield successful trading strategies which I actually use every week. SIGIL, a media programming library for C, is an open-source project of mine that receives over one thousand downloads per month.

My languages of choice are C and C++. I'm highly experienced in C# .NET and Java, and occasionally use Python to perform statistical analysis, build charts, or automate tasks. I've also been known to dabble in other languages if the occasion calls for it.


Game Development and Graphics

Mostly 3D space and robot games.


a GIF of Hypergate game play

Hypergate is a 3D space combat game available on Steam for Windows and Linux. It took five years to develop.

Check out the Steam Store page here.

a GIF of Asteroids Millennium game play

Asteroids Millennium is a modern take on an old classic, available on Steam for Windows and Linux.

Check out the Steam Store page here.

a GIF of Secrets of Mars, still in progress

Secrets of Mars is a game about an autonomous rover that begins to question reality, and its own programming, when things on Mars begin to become strange.

It is currently in development.

a GIF of a game I built using SIGIL

A game that I developed in 48 hours for my submission to the 45th Ludum Dare "Compo" competition using my open-source C media library, SIGIL. It ranked 360th out of 2613 submissions!

Source code is available here.

a GIF of a simple FPS game

No-Fly-Zone is a short survival-based first-person shooter (FPS) where you must defend yourself against rogue drones. It was made as a simple open-source example of how to create an FPS using OpenGL.

Source code is available here.

a PNG of raytracing rendering engine

This is a render from a raytracing engine I wrote. It features bounding volumes and other techniques for faster rendering, although not in real-time. The object in the center is a mirror.

My games and game engines are cross-platform (Windows and Linux) and written from scratch, because I enjoy the learning that comes from doing things yourself. I've also built scripting tools, physically-based rendering (PBR) and raytracing engines, and more.

My games are written in C++ with modern OpenGL and GLSL. Most of my tools are written in C# .NET. I construct art assets in Blender and GIMP (most recently using a PBR metallicity workflow), and I perform sound design using Goldwave and Audacity. Two of my games are on Steam, with a third on the way.


Industry Experience

Programming, multimedia, teaching.


Archiact Logo
Prototype Engineer at Archiact, from 2015 to 2016.
Led a team of engineers developing software and hardware projects that merged robotics and virtual reality.
University of Manitoba Logo
Sessional Instructor at the University of Manitoba, from 2013 to 2015.
Taught 7 undergraduate computer science courses ranging in size from 30 to 100 students.
Canadian Forces Logo
Developer/Programmer for the Canadian Department of National Defence (17 Wing Winnipeg), from 2009 to 2012.
Developed interactive training content to prepare Canadian Air Force officers for the next stages of their careers.

Education and Research

PhD Candidate at Simon Fraser University's Autonomy Lab.


SFU logo
Doctor of Philosophy, Computer Science, Simon Fraser University (expected 2021), supervised by Dr. Richard Vaughan.
Thesis title: Flock Heterogeneity and Its Applications.
U of M logo
Master of Science, Computer Science, University of Manitoba (2016), supervised by Dr. John Anderson.
Thesis title: Active Recruitment in Dynamic Teams of Heterogeneous Robots.
U of M logo
Bachelor of Science, Computer Science, University of Manitoba (2013).

My parents motivated me to go to university by explaining that I could learn all the programming I wanted there. Fortunately, this turned out well for everyone involved. I enjoyed it so much that I completed a master's degree, and am currently completing my PhD, in Computer Science.

My PhD advisor is Dr. Richard Vaughan, now at Apple. My thesis is focused on biologically-inspired drone behaviours---specifically, the structural and computational advantages of flocking in stable pairs, as some species of corvids are known to do.


Publications

Real-time systems, human-robot interaction, multi-robot systems.


Computational and Structural Advantages of Pairwise Flocking
Computational and Structural Advantages of Pairwise Flocking.
Geoff Nagy, Alex Thornton, Hangjian Ling, Guillam McIvor, Nicholas Ouellette, Richard Vaughan.
Proceedings of the 2nd IEEE International Symposium on Multi-Robot and Multi-Agent Systems, New Brunswick, USA, 2019.
PDF | BibTeX
Simultaneous Measurements of Three-Dimensional Trajectories and Wingbeat Frequencies of Birds in the Field
Simultaneous Measurements of Three-Dimensional Trajectories and Wingbeat Frequencies of Birds in the Field.
Hangjian Ling, Guillam E. Mclvor, Geoff Nagy, Sepehr MohaimenianPour, Richard Vaughan, Alex Thornton, Nicholas T. Ouellette.
Journal of the Royal Society Interface, 2018.
BibTeX
Self-Organization of a Robot Swarm into Concentric Shapes
Self-Organization of a Robot Swarm into Concentric Shapes.
Geoff Nagy, Richard Vaughan.
Proceedings of the 14th Conference on Computer and Robot Vision, Edmonton, Canada, 2017.
PDF | BibTeX
Flying Face Engagement: Aligning a UAV to Directly Face a Moving Uninstrumented User
Flying Face Engagement: Aligning a UAV to Directly Face a Moving Uninstrumented User.
Geoff Nagy, Richard Vaughan.
Abstract in: Proceedings of the IEEE International Conference on Intelligent Robots and Systems, Vancouver, Canada, 2017.
PDF | BibTeX
Active Team Management Strategies for Multi-Robot Teams in Dangerous Environments
Active Team Management Strategies for Multi-Robot Teams in Dangerous Environments. (won CAIAC Best Student Paper Award)
Geoff Nagy, John Anderson.
Proceedings of the 30th Canadian Conference on Artificial Intelligence, Edmonton, Canada, 2017.
PDF | BibTeX
Active Recruitment Mechanisms for Heterogeneous Robot Teams in Dangerous Environments
Active Recruitment Mechanisms for Heterogeneous Robot Teams in Dangerous Environments.
Geoff Nagy, John Anderson.
Proceedings of the 29th Canadian Conference on Artificial Intelligence, Victoria, Canada, 2016.
PDF | BibTeX
Are Tangibles Really Better?: Keyboard and Joystick Outperform TUIs for Remote Robotic Locomotion Control
Are Tangibles Really Better?: Keyboard and Joystick Outperform TUIs for Remote Robotic Locomotion Control.
Geoff Nagy, James E. Young, John Anderson.
Proceedings of the 10th ACM/IEEE International Conference on Human-Robot Interaction Extended Abstracts, Portland, USA, 2015.
PDF | BibTeX
An Event-Driven Operating System for Servomotor Control
An Event-Driven Operating System for Servomotor Control.
Geoff Nagy, Jacky Baltes, Andrew Winton, John Anderson.
RoboCup 2014: Robot World Cup XVIII, Joao Pessoa, Brazil, 2014.
PDF | BibTeX

Teaching Experience

Computer Science at the University of Manitoba.


While working on my master's degree at the University of Manitoba, I was a sessional instructor from 2013 to 2015. In total, I taught 7 classes, ranging in size from 30 to over 100 students. While course topics were determined by the department, I developed and presented my own lecture content and assignments. Exams were developed jointly between myself and the other instructors teaching the remaining sections. I received excellent ratings from students during evaluations.


Volunteering and Service


I've been active in the Computer Science and robotics communities since my undergraduate career. My volunteer work includes organizing international conference events and contributing to committees on both local and international levels.


Scholarships and Awards



Other Interests



Contact


Please feel free to contact me at geoff [dot] nagy [at] gmail [dot] com.

You can also find me on Twitter for game dev-related things, or on LinkedIn. I maintain other websites for Hypergate and SIGIL, and have a GitLab repository with some small public projects.


Page last updated June 8, 2021.

Valid HTML 4.01 Strict Valid CSS!