Projects

What I'm working on in free time!

Julia Packages

The vast majority of the personal projects I'm working on involve the Julia Programming Language. The projects listed below include proper (and registered) Julia packages, and public projects that follow the Julia package structure.

Exploring Control Theory

I'm writing a public note-set which walks through content typically taught in a Linear Systems course, through content taught in Linear and Nonlinear Controls Analysis courses. This note-set uses Julia's Documenter.jl package to generate and serve the note-set content. Along the way, one example system will be analyzed to reinforce the concepts presented: an approximate polynomial model for a NASA-developed sub-scale model aircraft. These notes are also introduced in a blog post.

GeneralAstrodynamics.jl

At my highest aspiration, this will be a general purpose astrodynamics library a là poliastro, but with Julia instead of Python. I initially developed this Julia package alongside my graduate astrodynamics coursework in the 2020-2021 academic year. I'm currently using (and building) the functionality in this package to support manifold-based interplanetary transfer designs. If you have any questions about usage, or want to help out, please don't be shy about filing issues or submitting PRs!

AstrodynamicalModels.jl

Julia has a package called ModelingToolkit.jl, which provides a modeling language within the Julia ecosystem – you can symbolically write your system's equations of motion, and ModelingToolkit.jl will autogenerate fast functions for your dynamics. ModelingToolkit.jl allows you to write your dynamics for mathematical accuracy, and not for computational efficiency. It also hooks into DifferentialEquations.jl, which is really convenient for simulating your model.

This package, AstrodynamicalModels.jl, provides common astrodynamics models as ModelingToolkit.ODESystem instances. Vector field functions are also provided for each model.

PolynomialGTM.jl

NASA has developed a sub-scale model aircraft for flight dynamics and controls research. Of course, the flight dynamics are highly nonlinear and complicated. Aerodynamic coefficients are approximated with look-up tables. University researchers (i.e. Chakraborty et al) were given access to these aerodynamic coefficient tables, but the data is not publicly available. Chakraborty et al published a paper outlining nonlinear region-of-attraction analysis for approximated low-order polynomial models for the model aircraft near select flight conditions. I wrote those polynomial models in Python as part of a graduate nonlinear controls course project, and I've written the dynamics in Julia as the PolynomialGTM.jl package.

ManipulatorKinematics.jl

This is a soon-to-be open-source Julia package which provides kinematics handling for serial robotic manipulators. It uses Symbolics.jl to generate MATLAB and C++ implementations for any manipulator's forward kinematics, Jacobian, and Jacobian-dot.