loading indicator
Me

Hello — I'm Dr. Nagy: a scientist, engineer, and maker.

I design and build complete systems: hardware, firmware, and software, meant for the real world. My recent work spans robotics, embedded systems, and aerospace.

Scroll for recent projects, view my CV, or visit linktr.ee/geoffnagy.

HabSat: Near-Space Photos and Science

HabSat is my near-space balloon project. I've launched several missions, all of them successful.

I designed the electronics, firmware, enclosures, and ground software all from scratch. The flight module has a single, custom board with a camera, GPS, 6DOF IMU, sensors for temperature, pressure, and relative humidity, an SD card for logging, and a long-range radio to transmit photos and all telemetry back to my ground station up to 40km away. The main chip is an ATmega1284p.

Hover over images for brief descriptions.

The HabSat board

The custom flight computer board. It's a small 2-layer board that can be assembled by hand with SMD techniques.

The HabSat enclosure

The HabSat is small and weighs about 300g. This is the HabSat in its enclosure immediately after a successful landing in eastern Washington State.

The HabSat enclosure

The ground station tablet logs received photos and telemetry, issues commands, displays flight map progress, and other functions that are useful in the field.

The ground station is lightweight and portable. I use a Microsoft Surface tablet running my custom C# .NET command and control application. The ground station can receive photos, telemetry, and health status; issue commands; track both itself and the HabSat via GPS; and, check future launch weather conditions up to two weeks out.

A high-altitude photo of Earth

This was one of the many photos taken from my first HabSat mission.

A high-altitude photo of Earth

Another near-space photo. There's virtually no atmosphere this high up, which is why you can clearly see the black of space.

A high-altitude photo of Earth

My record altitude is 27km. That's high enough to see the curvature of the Earth. It also makes a great phone wallpaper.

Near-space is harsh. Temperatures can go down to -60°C, with 1% atmosphere. The HabSat is designed to withstand these challenging conditions, including landing safely afterwards.

HabSat is an ongoing project, with future launches and expanded capabilities planned. It's a great example of low-cost science: comparable telemetry/radio systems alone cost more than an entire HabSat module.

To learn more, check out my YouTube Shorts on taking photos from near-space and the HabSat hardware.

Drones and Robots

The µBee Drone

The µBee is a 3D-printed micro-drone I designed and built from scratch. Optional mounts allow integration with a motion capture system. I used these drones to conduct my PhD research. Since then, I've made a number of improvements.

a small µBee fleet

A brief test of a small µBee fleet, detected and controlled by custom software I wrote that also doubles as a simulator to test out behaviours beforehand. 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 an early version of the µBee that I designed and built for my PhD thesis.

a GIF of the µBee

The upgraded µBee and remote control. This new version has a PCB trace antenna. It's also lighter, more stable, and stronger.

I have several YouTube Shorts about the µBee on the project overall, frame and assembly details, flight controller summary, and the improved remote control.

The Pocket Bot

The Pocket Bot is a 3D-printed, 1.5-inch robot with line following sensors, infrared transmitter and receiver, USB-C charging, an array of RGB LEDs, and an expansion header for additional peripherals. The main controller is the ATmega328p, like the µBee drones.

a GIF of two Pocket Bots on a small line-following course

Line following is a classic toy robotics control problem. A Pocket Bot has three line sensors on its underside to sense distance or reflectivity.

a GIF of a Pocket Bot avoiding the edge of a platform

The Pocket Bot's line sensors can also be used to avoid falling off of surfaces.

a GIF of several Pocket Bots spinning and flashing their RGB LEDs

Multiple Pocket Bots can communicate with a server or each other over infrared. Or just dance.

The chassis is printed with PLA, and the wheels are printed with TPU for extra grip on nearly any surface. A Pocket Bot can be assembled from parts in just a few minutes. With a full charge, a Pocket Bot can run continuously for over 3 hours.

Feel free to check out the YouTube Shorts I've made on the overall design and capabilities.

Other Hardware Projects

3D-Printed Custom Smart Watch

My 3D-printed smart watch is entirely custom, with my own hardware, firmware, and drivers specifically optimized for this project. It's not just for show: I use it as my daily driver because it's so useful. I use it to control my smart home, televisions, some of my robots, cat toys, and other functions.

It has a digital compass, temperature sensor, 9DOF IMU, flashlight, and a special feature to tell me when I'm dreaming. It's also USB-C rechargeable, and (somewhat) resistant to water. The main chip is an AT90USB64. I regularly improve existing features or add new ones.

a GIF of my watch in action

A few settings menu items from an early iteration of the watch.

a GIF of my watch recognizing a double-pinch gesture and turning off a TV

I turn off a TV at BestBuy using a double tap gesture.

a GIF of my watch controlling a remote cat toy

I reversed-engineered the infrared signals used by a cat toy, and use my watch to control it. I steer with my wrist angle.

Check out the YouTube Short about my watch.

8-Bit Game Console

Motivated by my interest in game development, computer graphics, and electronics hardware, I built my own 3D-printed 8-bit gaming console. It's powered by an ATmega1284p on a custom board, and supports 8-bit audio and vector graphics. It supports up to 4 wired controllers, although the game I wrote for it only uses one.

Warship Hidalgo is the example game that I wrote for this console, and it was inspired by the space combat in the popular sci-fi series, The Expanse. My game includes a brief tutorial, and escalating, endless level-based play. Players and high scores are stored in EEPROM, so they persist even if the console is turned off.

a GIF of my 8-bit game console

A brief snippet of typical gameplay. The entire project took 3 months to build.

a GIF of my 8-bit game console

When out of lives, the player enters their name into the high score table.

a picture of the 8-bit console game controller

A wired game controller that goes with my custom 8-bit console.

I've published YouTube Shorts covering the graphics, audio, and assembly.

Miscellaneous

Here is a brief selection of some of my older projects. They include an electric scooter, RC vehicles, robotic global vision systems, and more.

a GIF of an electric scooter

Myself, riding my DIY 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 a custom, rugged-terrain remote-controlled car on the SFU campus.

a home-built digital clock

A digital clock I built using 3D-printed parts, a real-time clock module, 3 LED matrices, and a custom PCB. It can be controlled by my smart watch. The power cable is hidden inside the wall.

an interactive LED coaster

An interactive LED coaster that lights up when something is underneath it. The circuitry is all analog, with no microcontrollers.

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

An earlier robotics project. A custom vision system captures the 3pi robots and instructs them to maintain various formations as robots are added or removed.

a picture of a quadrupedal robot

Another earlier robotics project, built from a kit: a remote-controlled quadrupedal robot.

Game Development and Graphics

Hypergate

Hypergate is a 3D arcade-style space combat game. To date, it is my most ambitious project. It includes a two-hour scripted compaign, instant action mode (single player and LAN), 3 flyable ships, 30 equipment upgrades, and many other features and mechanics. I wrote it with my custom game engine in C++ with raw OpenGL/GLSL. I created all of the textures, backdrops, 3D models, and audio effects. Voice acting was generously provided by friends and family. I used royalty-free music. Hypergate runs on both Windows and Linux. It took five years to develop. It is available on Steam, where it has received positive reviews.

a GIF of Hypergate game play

Hypergate's focus is high-speed space combat, rather than grinding for resources or configuring spacecraft systems.

a GIF of Hypergate game play

The player destroys an enemy fighter during combat.

a GIF of Hypergate game play

The player flies into a gorgeous backdrop.

Miscellaneous

My game development and graphics projects are too numerous to list, so here is a brief selection of some of my favourites. They are written in C or C++, with graphics rendered using OpenGL, Vulkan, or in some cases, in pure software. One of these projects is available on Steam. Another was a submission to Ludum Dare 45. Both received positive reviews.

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

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.

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!

a GIF of a simple FPS game

No-Fly-Zone is a short survival first-person shooter (FPS) where you defend yourself against rogue drones. It's a simple open-source example of how to create an FPS with OpenGL.

a PNG of raytracing rendering engine

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.

a GIF of the Voyager holodeck

I modelled the Star Trek: Voyager holodeck and put it into my experimental engine to learn about the differences in lighting between movies and video games, motion blur, and other techniques.

a GIF of a 3D platformer

A 3D platformer I wrote to learn how to make a game engine in Vulkan. It supports animated models, diffuse and specular irradiance, shadow maps, multisampling, and more.

a GIF of the menu screen for the platformer

Another GIF of the platformer, showing the main menu and most of the world.

a GIF of a rendered black hole animation

Sample output from a fast raytracer which simulates photons that can be influenced by gravity. Source code is available here.

Selected Applications and Tools

I've developed stock market backtesters, automated options trading software (which actually perform live trading), near-space mission command and control software, drone swarm simulation and control software, particle effect editors, a media library for C, mission scripters for my custom game engines, tools for my PhD research, and many more.

a PNG of a tool for particle effects

Fornax is a general-purpose particle editor I use a lot. The GUI was made in C# .NET, with the preview functionality built in C++ with OpenGL.

a PNG of a tool for scripting Hypergate campaign missions

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

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.

a Windows tablet running my automated trading software

My automated trading software, written in C# .NET, running on a wall-mounted tablet.

screenshot of the software that powered my PhD drone experiments

A screenshot of the drone simulation and control software I wrote that powered my drone experiments for my PhD research.

visualization of a scan of 1/256th of the Internet

A small visualization project showing ping results for IPV4 addresses a.b.c.d, for all a, b, c, and a random d.

Last updated Jan. 15, 2025.