• 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 Single-Layer 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 Navier-Stokes 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 forwards-integrate 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 fourteen-hour competition where teams of five develop a model that addresses a specific, real-world 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 real-world scenarios. The Problem…

  • Tutorial: Direct Collocation Trajectory Optimization with Matlab

    In the previous tutorial, we focused on single shooting trajectory optimization, which involved time-discretizing 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 spring-mass 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 Position-Controlled Servos

    TL;DR I did some experimentation on whether or not it is possible to estimate the shaft torque on a cheap, position-controlled 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…