Academic Software
PredictiveControl.jl
PredictiveControl.jl is a Julia package to construct and solve Model Predictive Control problems. Currently, it allows for the specification of linear MPC problems, the formation of the condensed QP, and some some analysis of the problem/solvers. It also includes an implementation of the Fast Gradient Method as a solver backend.
This package is under constant development, with the following improvements planned:
- Real-time iteration solver for nonlinear MPC
- Additional optimization solvers (e.g. dual fast gradient, dual gradient projection, etc.)
- Additional analysis methods
- Additional condensing schemes
- Tube-based robust MPC
ControlBenchmarks.jl
ControlBenchmarks.jl is a Julia package containing various pre-made control problems that can be used as benchmarks when doing design and analysis. These benchmarks are taken from the literature, and also include various example systems such as mass-spring-damper chains.
MATLAB Toolboxes
These MATLAB toolboxes have been developed over several years and contain various useful functions and algorithms from the research literature.
The various toolboxes are:
- MATLAB Toolbox - A toolbox containing generic and useful MATLAB functions.
- MPC Toolbox - A toolbox for working iwth linear MPC problems in MATLAB.
- Control Toolbox - A toolbox that supplements the Mathworks Control Toolbox with additional functionality.
- Optimization Toolbox - A toolbox containing optimization methods.
- Numerical Methods Toolbox - A toolbox containing various numerical methods and algorithms.
OSQP - The Operator Splitting Quadratic Program Solver
The OSQP solver is an operator splitting solver for convex quadratic programs with sparse matrix structure written in C. The solver can be built library-free, and generate standalone C code for problems that is suitable for use in embedded systems. It can be interfaced to from several other languages, including MATLAB/Simulink.
My main contribution to this sofware has been software engineering on the core solver, maintaining the embedded implementation, and building a Simulink S-function interface.
Other Software
KiCad
KiCad is an open-source electronics design suite, encompassing schematic capture, circuit simulation and circuit board design. I am a member of the lead development team, and am responsible for designing/implementing new features, triaging issue reports from users, implementing bug fixes, and reviewing contributions from other developers.