Computer Scientist | Roboticist | 3D Printing and Graphics


Erin M. Gunn

Computer Scientist
Roboticist

I am a Computer Scientist and Roboticist with experience in computational geometry, computer vision, 3D reconstruction, mechatronics, 3D graphics and 3D printing. My dream is to work with a diverse team of engineers and researchers to solve difficult spatial reasoning problems on resource constrained hardware.

With professional development experience dating back 10 years (that includes publishing over 20 games), I have returned to school to fill some of the knokwledge gaps my google university education missed. Having tested out of numerous courses up to the junior level, I have taken several graduate level courses and excelled at the research and independent study opportunities I pursued. I will graduate in December of 2022 with my Bachelors of Computer Science degree.

The banner at the top of my website is a recreation of the first original program I wrote. The original version was written in C++ and rendered using OpenGL. I wrote it when I was 16 after learning the skills necessary from a pair of books.

If the highly motivated spatial problem solving mindset demonstrated on this page is something you seek, please don't hesitate to contact me: erin at eringunn.com.


Work History

Trimble Inc.

June 2021 - August 2021

Role: Software Engineering Intern

  • Designed and developed a image and lidar data capture web application using ROS and various web technologies
  • Decoded and rendered streamed lidar data in the browser
  • Participated in Hackathon, developing a visual odometry proof of concept that could be used on autonomous vehicles

Wolf Robotics LLC

July 2018 - September 2019

Role: Software Engineering Intern

  • Researched, planned and led development of a program to automate the identification of potentially weldable seams in customer parts using an off the shelf RGB-Depth camera
  • Planned and executed documentation project that enabled our client to address weldability issues with the design of over 300 parts
  • Designed and implemented a robot work cell programming proof of concept, enabling software group leaders to make informed decisions on graphics APIs and inter-process communications solutions

Computer Science Club FRCC

August 2018 - December 2019

Role: Officer of Robotics

  • Designed, built and programmed line following and sumo robots using off the shelf microcontrollers and sensors
  • Organized and ran line following robot competitions, exciting memebers about robotics and control
  • Developed and led talks on ‘Github for Students’ and ‘Creative Coding’
  • Repaired and trained students on an old ‘Shield Bot’ so that freshmen Java students could implement proportional control in C++ on an Arduino controlled bot for their final project

Freelance Game Developer

August 2012 - July 2018

Role: Owner/Operator

  • Conceived, led and executed the design and development of cross platform games and applications
  • Developed workflows that reduced game development time by 50% in subsequent releases
  • Uncovered and resolved an issue in the underlying development platform to enable highest quality animations
  • Recognized by open source software community for high quality contributions and documentation

KIPP Eastern North Carolina

July 2013 - June 2015

Role: System Administrator

  • Managed and supported a multisite Cisco/Windows infrastructure and 600 end user devices
  • Planned and executed a transition from Microsoft Exchange to Google Apps for the entire district
  • Initiated and executed a testing environment transition, dramatically increasing productivity through increased stability, security and performance
  • Identified, proposed and executed changes to the wireless infrastructure to address coverage gaps and issues with bandwidth
  • Designe, deployed and configured the entire infrastructure of a new middle school.

FaverGray

2006 - 2012

Role: Assistant Superintendent

  • Assisted Project Manager and Superintendent in construction of HUD housing projects ranging from 2-16 million dollars. Projects were generally delivered ahead of schedule and under budget.
  • Performed direct oversight of building code, staffing, and warranty issues.
  • Coordinated between suppliers and subcontractors to optimize schedule outcome


Projects

Implicit CAD Modelling Kernel

Project Type: Personal Interest
Skills: C++ | GLSL | OpenGL | CMake

Goal: Develop a CAD kernel that improves upon OpenSCAD and explore 3D print slicing directly from implicit geometry.

  • Implemented realtime raytracing using the sphere marching algorithm and implicit functions
  • Constructive Solid Geometry (CSG) is implemented using a binary tree and code generation to hot-reload changes at runtime

Inverted Pendulum

Project Type: Personal Interest
Skills: C++ | OpenGL | Box2d | Raspberry Pi | UDP | Serial | CMake | 3D Printing | CAD | Mechatronics | Electronics Reverse Engineering

Goal: Study the effects of latency and packet loss on a remotely controlled inverted pendulum.

  • Developed an OpenGL debug viewer that renders the inverted pendulum and a simple GUI
  • Designed and implemented a communications protocol with a platform independent API
  • Designed and executed experiments that identified that a simple PID controller can maintain stability with small disturbances with latency up to 1 second and packet loss up to 75%.
  • Executed the design and development of an API that facilitates rapid development of experiments
  • Coded, modeled and constructed an absolute position sensor using two infrared reflectance sensors along with debugging tools
  • Reverse engineered and modified the inkjet cartridge motion system of an HP printer to serve as a cart

MTLib - Computational Geometry Practice Implementation

Project Type: Self-Directed Study
Skills: Computation Geometry | Algorithms | C++ | CMake | Test Driven Development

Goal: Learn the foundations of computation geometry to feed my interest in algorithmic robotics.

  • Independently completed the Geometric Algorithms course offered by Utrecth University over summer break
  • Developed a small C++ library with some of the algorithms and datastructures I learned in the course
  • Employed Test Driven Development to ensure correctness and mitigate numerical issues

Triply Periodic Minimal Surface Infill

Project Type: Funded Research @ CSU
Skills: C++ | Python | 3D Graphics | 3D Printing | Numerical Methods | Computational Geometry

Goal: Design and implement an algorithm that enables 3D printing of Fisher-Koch S for biological tissue manufacturing research.

  • Developed a novel algorithm that can be used to generate toolpaths in any 3D printing software that supports non-manifold surfaces
  • Identified, documented and fixed a bug in the CuraEngine 3D printing slicing software that fixed toolpath generation in ‘Surface Mode’ printing
  • Designed and developed a python+Qt application that is used in the BioMedical laboratory for 3D printing bone scaffolds

Status: Preliminary testing on the efficacy of Fisher-Koch S as an infill pattern for 3D printed bone scaffolding is underway. Given promising results, the algorithm and software I developed will be used in clinical trials.

RTLib - A Raytracing Library

Project Type: Coursework
Skills: C++ | CMake | Ray-Tracing | 3D Graphics | Data Structures

Goal: Implement a reference ray-tracer and explore methods of optimization.

Altitude Heading and Reference Sensor Driver for UAVs

Project Type: Funded Independent Study @ CSU
Skills: Teamwork | Project Management | C++ | Python | UAVs | Serial | GDB | Microcontrollers

Goal: Implement a LORD MicroStrain AHRS sensor into Ardupilot.

  • Coordinated with a team of 5 undergraduate students to implement a driver for an industrial grade altitude, heading and reference sensor
  • Leveraged existing experience to assist teammates in underestanding the structure of the massive Ardupilot code base and electronics communications interfaces
  • Assisted teammates with debugging remotely executed code on a microcontroller using gdb
  • Designed and led training on the fundamentals of an RTOS, packet parsing and error checking

Real Time Visual Odometry Prototype

Project Type: Personal Interest
Skills: C++ | OpenCV | Computer Vision

Goal: Leverage OpenCV skills learned in my graduate level image computation course in a new way.

  • Implemented real time visual odemetry using ORB features of individual video frames, built a kd-tree of the features and approximated the homography transformation between frames using RANSAC.
  • Completed in one day

3D Printer Sensor Integration

Project Type: Funded Research @ CSU
Skills: Teamwork | Project Management | C++ | Python | 3D Printing | Raspberry Pi | Arduino | JSON/MessagePack | Serial

Goal: Design and integrate novel 3D sensors with industrial data collection tools to enable process control for increased reliability.

  • Designed and implemented a communication protocol that facilitates data transfrer of sensor data from an Arduino to a Raspberry Pi over serial
  • Created an OctoPrint plugin that streams sensor data to a industrial data collection system while a print is in progress
  • Made design decisions based on the understanding that the implementation must be simple enough to allow undergraduate engineering students with little to no programming experience to add new sensors and process statistics

Older Projects

Project Type: Independent Study through Google University
Skills: Game Development | Algorithms | Graphics

Goal: Showcasing some projects I completed along my independent learning path.

I started my journey into independent game development around 2010. Along the way, I wrote numerous proofs of concept and prototypes, learning data structures, algorithms and clean coding practices along the way. Here are some of the highlights that accurately demonstrate my programming interests to this day.

Zombie Legend

This is the project that helped me start landing contract work. In it, I implemented a finite state machine, a quad-tree, steering behaviors, pseudo 3D graphics, marching squares, A* path finding and navigation meshes.

Gameplay Video. Warning: Video contains some gore.

Ludum Dare 23

A game I made in 48 hours for the Ludum Dare 23 game jam. All of the artwork was by me. I'm still stoked with how it came out. The song is an absolute banger too. I wish I wrote it.

Gameplay Video

Ludum Dare #?

Another Ludum Dare game I made in 48 hours. This game ended up going through several iterations post-jam in my first attempt at completing a real project. I think that this project is the first time I implemented a PID controller. I also implemented a Catmull Rom spline for a custom camera controller.

Gameplay/Tech demos: video 1 video 2

Quad Lines

This was an experiment in various modifications to Bresenhams line algorithm.

Flocking

Artificial life is one of the most interesting topics I've ever explored in my programming journey. This is a brute-force implementation of Craig Reynolds steering behaviors.

N-Body Problem

Brute force gravity simulation. I remember wanting to recreate the 'galaxy' screensaver that came with X11.