Software Projects

Path Planning with Trajectory Libraries

Traditional path planning techniques such as RRT or A* do not do a good job expressing physical constraints like maximum acceleration or turning radius. My algorithm builds libraries of dynamically correct trajectories offline that cover all possible initial conditions, and then at runtime selects the fastest path that doesn't collide with any obstacles.

Over a sample of 1000 runs, my algorithm runs in 1.8ms, is only 4% slower than the optimal path, and can find a feasible path 98.4% of the time.

Adaptive Control for Damaged Drones

Modern control techniques like LQR require an accurate model of the system they are controlling, but if that system changes changes you're out of luck. I designed an adaptive controller to maintain control of a drone even if one of its propellers breaks. The algorithm compares the drone's expected behavior and observed behavior to learn thrust offsets and correct them.

SpaceX Falcon 9

This summer I worked at SpaceX on the Flight Software Test Team. Ensuring software correctness is a challenging problem on a project as complex as a rocket, where so much performance depends directly on the hardware. Our team creates automated tests that leverage both simulations and actual flight hardware to verify that new code is flight worthy, and that no changes have broken old subsystems.

I was the lead testing engineer for an overhaul of the fuel systems on the rocket for the upcoming Flight 21. I also created a data analysis library wrapping Python Pandas for monitoring telemetry data that comes back from our simulations and actual flights.

High Performance C++

Using C++ I created a variety of physics simulations for a graduate class on Systems Development for Scientific Computing. I implemented an abstract graph class to represent my data, and applied it to several different problems including mass spring simulations, shallow water models, and geometric collision detection.

The class focused on performance and maintainability, and in particular how to use strongly typed languages and representational invariants, preconditions, and postconditions, to write code that is provably correct and robust. Understanding CPU architecture and compiler optimizations allowed us to achieve incredibly numeric performance by avoiding the common pitfalls of high level languages while still making use of abstraction.

Robot Soccer AI

Being on the MIT / Harvard Robocup Soccer team is a fun and fast paced engineering experience. We compete at a world championship tournament every summer, and spend the school year working on new mechanical designs and new behavior algorithms to out-maneuver and outsmart the other teams. I redesigned our Artificial Intelligence and planning software based on nested Finite State Machines, and dynamic planning of passing and shots, rather than pre-scripted plays.

Termite Tracking

It took 60 hours of tedious labor annotating videos of termites every time the Self-organizing Systems Research Group at Harvard ran an experiment. Because of the experimental setup, off-the-shelf tracking software didn't work. By using standard image processing techniques, a model predicting each termite’s motion, and small amounts of human input, I was able to largely automate the video processing, reducing the required labor from 60 to 3.5 hours.

Erosion Simulation

I wrote this simulation while briefly working with a professor at Harvard University doing research in computational geomorphology.

The rate of erosion at every point is proportional to the slope of ground and the volume of rainwater that would pass over that point in the drainage network.

Unreal Gravity

This program simulates how objects would orbit a central gravity well if the relationship between distance and force in Newton's law of gravity is changed. Exponents other than -2 produce strange, but still stable orbits.

Landscape Generation

This program uses Perlin Noise to generate random landscapes and color them realistically. A number of parameters allow the user to tailor the scale and level of detail of the generated landscapes, and the program can produce surprisingly realistic results.

Robot Simulation

My goal with this program was to create an environment where I could accurately simulate a robotic system without any hardware. The most challenging part of robotics is overcoming the physical imperfections, noise, and unpredictability in the environment. I tried to mimic this as closely as possible in the simulation by only allowing the robot to perceive its environment through "sensors" which add noise to their measurements.

Cellular Automata

This program simulates Conway's Game of Life, a well known rule for 2 dimensional Cellular Automata. Cellular Automata can produce incredibly complex patterns from extremely simple rules and interactions, and noted scientist Stephen Wolfram suggests that they can be used to model reality more effectively than mathematical equations in certain situations.

This program is multithreaded to take full advantage of multiple CPUs in calculations, and the universe is stored in linked tiles supported by a hashmap. The tiled architecture allows the cells to spread infinitely in any direction, but limits computation to regions that are populated for maximum efficiency.

Copyright Erik Schluntz 2014.