Aerospace engineer building simulation and modelling software for spacecraft dynamics, control, and satellite operations. MSc Aerospace Engineering (Distinction), University of Glasgow · Based in Glasgow, UK
Languages: C++ · Python · MATLAB/Simulink · Rust
Focus: Orbital and rigid-body dynamics · Numerical simulation · Control and state estimation · Scheduling and optimisation
Ground-Station Contact Scheduler · Python, Rust
Predicts satellite–ground station visibility windows from TLEs and assigns contacts as a mixed integer program, maximising priority-weighted contact time under station capacity constraints. Core scheduler ported to Rust. Scheduled a sample 6-satellite, 5-station scenario (243 candidate passes over 24 h) to proven optimality in ~10 ms, ~5% better than a greedy baseline; the Rust solver matches the Python optimum exactly.
Modular C++ simulator of satellite rigid-body attitude dynamics (quaternions, RK4), with pluggable disturbance and control torque models; validated against analytic solutions and conservation laws.
Floating-Base Space Robot Dynamics · MATLAB
MSc dissertation. Lagrangian dynamic model of a 6-DOF robotic arm on a free-floating base in microgravity, validated over 1,000+ time steps against momentum conservation.
Aircraft Pitch Autopilot · MATLAB
Modern control design: LQR + Kalman filter for aircraft longitudinal dynamics with validated robustness analysis.
Stereo Vision Robot Localization · MATLAB
Camera calibration and stereo depth estimation for 3D localisation of a robot target.
Aerospace Structural Analyzer · Python
Modular framework for simplified aerospace structural load analysis.
FE Solver vs Neural-Network Surrogate · Python, PyTorch
1D finite element solver for an axially loaded, tapered bar (stiffness assembly, boundary conditions, sparse solve), verified against the closed-form solution with second-order mesh convergence. Generated 6,000 FE runs across loads and stiffness values and trained a PyTorch neural network to predict the displacement field: 0.06% RMS error on held-out cases and ~500× faster per case when batched, with error rising ~5× outside the training range, a limitation the FE solver doesn't share.
Avocet Systems Engineering Case Study · Systems engineering
AVOCET is a self-directed portfolio project that takes a 6U Earth-observation CubeSat from stakeholder needs through requirements, architecture, interfaces, trade studies, V&V and risk, with full traceability at every step.