Dr. Geoff Nagy
Roboticist, scientist, developer.
I recently completed my PhD at Simon Fraser University's School of Computing Science (robotics). My thesis was supervised by Dr. 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.Hardware projects
I've used CAD software and embedded programming to build a fleet of drones, an electric scooter, robots, and more. 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. Game development
My games are available on Steam. My game engines are cross-platform and written from scratch using C++ and OpenGL/GLSL.
Robots, drones, DIY electronics.
Hover over images for a quick description!
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 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 render of my rugged-terrain, differential drive remote-controlled car. It is nearly entirely 3D-printed, including the controller.
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.
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.
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.
Field tests of the rugged-terrain remote-controlled car on the SFU campus.
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.
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 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.
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.
This is the scripting and mission layout tool I built to script missions in Hypergate. It was made in C# .NET.
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.
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.
Asteroids Millennium is a modern take on an old classic, available on Steam for Windows and Linux.
Check out the Steam Store page here.
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.
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.
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.
Programming, multimedia, teaching.
Education and Research
PhD Candidate at Simon Fraser University's Autonomy Lab.
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 a PhD in Computer Science.
My PhD advisor was Dr. Richard Vaughan. My thesis was 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.
Real-time systems, human-robot interaction, multi-robot systems.
Computer Science at the University of Manitoba.
- Introductory Computer Science I (COMP 1010)Fall 2013, 2014
- Introductory Computer Science II (COMP 1020)Winter 2013, 2014, 2015
- Object Orientation (COMP 2150)Summer 2013, 2014
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
- Senior Chair, Student Activities Committee, IEEE Robotics and Automation SocietyMay 2020 to May 2022
- Member, Member Activities Board, IEEE Robotics and Automation SocietyMay 2018 to May 2022
- Chair, Student Activities Committee, IEEE Robotics and Automation SocietyMay 2018 to May 2020
- Student Administrative Committee Member, IEEE Robotics and Automation SocietyMay 2018 to May 2020
- IROS 2017 Volunteer Organizer, Simon Fraser UniversityJuly 2017 to September 2017
- Member, Department of Computer Science Council, University of ManitobaSeptember 2014 to August 2015
- VP Volunteers, Computer Science Games 2012 Organizing CommitteeMarch 2011 to February 2012
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
- Robar Industries Ltd. Graduate Scholarship, Simon Fraser UniversityJanuary 2020
- Helmut & Hugo Eppich Family Graduate Scholarship, Simon Fraser UniversityJanuary 2019
- Doctoral Canada Graduate Scholarship (NSERC CGS D), Natural Sciences and Engineering Research Council of CanadaMay 2018
- Third Place, Ogopogo's Lair Competition, NSERC Canadian Robotics NetworkMay 2017
- Best Student Paper Award, Canadian Artificial Intelligence AssociationMay 2017
- Graduate Dean Entrance Scholarship, Simon Fraser UniversitySeptember 2016
- Provost Prize of Distinction, Simon Fraser UniversitySeptember 2016
- Graduate Fellowship, Simon Fraser UniversitySeptember 2016
- Third Place, Technical Challenge, RoboCup 2014July 2014
- Computer Science Guaranteed Funding Package, University of ManitobaJanuary 2014
- Third Place, Technical Challenge, RoboCup 2013July 2013
- Faculty of Science Graduate Studentship, University of ManitobaSeptember 2013
- Space! I'm highly interested in space travel and exploration of the Solar System.
- Japanese Jiu Jitsu. I'm a senior student of Shorinji-Kan Jiu Jitsu. We use locks, throws, strikes, and takedowns for effective self-defense.
- Hiking. Vancouver has some great trails and parks. The Grouse Grind is a fun challenge, and the BCMC is a more technical climb.
Please feel free to contact me at geoff [dot] nagy [at] gmail [dot] com.
Page last updated September 28, 2021.