
Pawn Structure Explorer
Pawns not only create the sketch for the whole painting, they are also the soil, the foundation, of any position. Anatoly Karpov I recently picked up chess again and was looking for ways to improve my understanding of different pawn structures. This lead to me writing a small web app which allows you to experiment…

Discriminability of SingleLayer Graph Neural Networks
Now that the semester is over, I’m excited to catch up with posting about some more analytical research I worked on last summer, together with Fernando Gama and Alejandro Ribeiro. This was a fairly theoretical work analyzing the discriminability impact of nonlinearities in a graph neural network (GNN) architecture. The paper has been published in…

ContactNets: Learning Discontinuous Contact Dynamics with Smooth, Implicit Representations
Last month I had the pleasure of presenting my research on learning contact dynamics at the Conference on Robot Learning (2020), together with my coauthors Mathew Halm and Michael Posa in DAIR lab. The complete paper is available on arXiv, with a video demonstration of the methods here. This work addresses a challenge common across…

Fast Estimation of Airfoil Pressure Fields using Deep Convolutional Neural Networks
Full report link. Computational Fluid Dynamics (CFD) methods are essential for determining aerodynamic properties of objects across a broad range of disciplines, from motorsport to aviation and civil engineering. CFD approaches fundamentally rely on discritizing fluid volume into a number of very small sections and iteratively solving the NavierStokes equations. This process can often take…

Airfoil Configuration Optimization with Genetic Algorithms
This article describes the first iteration of a project I did as part of Penn Electric Racing, the University of Pennsylvania’s Formula SAE Electric team. It uses JavaFoil, a panel method solver that we wanted to investigate. Ultimately we switched out JavaFoil for OpenFOAM, a true CFD solver, and had much better results that gave…

Numerically Solving Discrete Systems with Mathematica for Robocode
As a learning project, I’ve been trying to forwardsintegrate Robocode physics using Mathematica. Robocode is a programming game where two or more tanks battle in a 2D arena, attempting to hit enemies while simultaneously dodging bullets. In order to better determine all the possible locations my tank could move to given an initial state and fixed…

Key Control Strategies Emerge in Spring Loaded Inverted Pendulum Traversal of Slippery Terrain
Last week I returned from the Dynamic Walking 2017 conference, where I had a poster and five minute talk on some of the numerical trajectory optimization work I’ve been doing for spring loaded inverted pendulums. More specifically, I was trying to determine what kinds of strategies the optimizer discovers when recovering from landing unexpectedly on…

Legged Helicopter Landing Gear
One of my biggest projects to date is a legged landing gear that allows helicopters to land on uneven terrain with large touchdown velocity. For a quick overview, please see the following video. Inspiration Traditional helicopter landing gears generally consist of two tubular skids, or three wheels for larger helicopters. These designs require a very…

USGS Terrain Elevation for MATLAB
Recently some friends and I competed in M3 Challenge, a fourteenhour competition where teams of five develop a model that addresses a specific, realworld problem. The first section of this year’s challenge was evaluating the risk of flooding for five national parks: Acadia, Cape Hatteras, Kenai Fjords, Olympic, and Padre Island. Part of our solution involved running flood…

Optimizing Trajectories for the Spring Loaded Inverted Pendulum over Slippery Terrain
Previously, I’ve written short introductions to numerical trajectory optimization here and here—if you’re unfamiliar with the basics, I recommend you check those out first. This write up expands upon a section of my research paper (which I hope to finish soon) and is meant to be a walkthrough of how to apply numerical trajectory optimization to realworld scenarios. The Problem…

Tutorial: Direct Collocation Trajectory Optimization with Matlab
In the previous tutorial, we focused on single shooting trajectory optimization, which involved timediscretizing the control input and simply integrating the dynamics. The desired end state was then added as a constraint to fmincon. Here, we focus on a different trajectory optimization technique, known as direct collocation. Simultaneous Optimization The core difference between shooting methods…

Tutorial: Single Shooting Trajectory Optimization with Matlab
Numerical methods for trajectory optimization have become increasingly popular for analyzing the motion of bipedal springmass walkers, whose complex nonlinear dynamics make analytical solutions often infeasible. When I began looking into trajectory optimization, the number of different methods often obscured some of the basic ideas in the field. This tutorial is meant to provide a simple introduction to trajectory optimization with some example…

3D Printing Inaccuracies with the Lulzbot Mini
A few months ago, I bought a LulzBot Mini to print parts for a robotics project. Despite its rather goofy name, the machine itself is great, especially for the price. However, it does suffer from the same inaccuracies that are fairly common among typical 3D printers. Since many of my parts had to be precisely…

Optimizing Retraction Reflexes Using Reinforcement Learning based on Particle Filtering
As part of my development of a legged helicopter landing gear (more on this later), I started studying ways to minimize landing impact using a combination of leg retraction (active impedance) and elastic elements (passive impedance). This lead me to the paper “Can Active Impedance Protect Robots from Landing Impact?” by Houman Dallali et. al. Although…

Game Engine Design Study – Phage2D
Game engine architecture is a difficult design problem that presents a number of challenges. Over the years, I’ve studied other people’s engines and developed a few of my own, the first of which I want to share today. This article will only examine the pros and cons of the overall architecture of Phage2D. It will…

Relationships Between Current, Angular Velocity, and Torque in PositionControlled Servos
TL;DR I did some experimentation on whether or not it is possible to estimate the shaft torque on a cheap, positioncontrolled hobby servo using current and angular velocity. A paper documenting the findings along with the complete data is available is available on GitHub (direct link to paper: paper.pdf). Background At Darien High School, I’m part of…