MEng Robotics & AI @ UCL · London
🎵 CodaJam — the shared screen for live music. Synced charts for the band, lyrics for everyone else.
Bar-accurate notation and a shared clock across every device in the room, held to sub-10ms drift with NTP-style server timestamps rather than relative beat counts. Three surfaces off one monorepo: Expo/React Native for performers, Next.js for the audience display, and a persistent Node WebSocket server doing the sync. Tiered content resolution falls back gracefully from full Guitar Pro tab → chord sheet → timestamped lyrics, so a session never dead-ends on a missing chart.
Next.js Expo TypeScript Supabase Railway Upstash alphaTab Cloudflare
🐈 Biorobotics Research @ UCL REBL — EPSRC-funded work on whisker-based airflow sensing, asking what cheetah whisker density buys you over a domestic cat's. Carbon fibre whiskers on magnetic roots and a TPU flexure plate, nine MLX90393 magnetometers muxed through a PCA9548, Ridge regression and 1D-CNN models trained on wind tunnel episodes to resolve air speed and direction.
Unified pipeline for collecting, labelling, converting and training robot demonstration data across SmolVLA, Pi0, Pi0.5 and ACT. Extended with Qwen3-VL offline phase annotation. Industrial project with Extend Robotics.
Python PyTorch VLA
Sionna RT Nemotron Python
- Full-mission autonomy: 15-step py_trees_ros behaviour tree that finds a flag, collects a sample, climbs a ramp, aligns on an AprilTag to deposit, and returns home, with per-step retries, safe halting and live step-jumping.
- Perception: depth plane fitting + IMU incline sensing for ramp detection, AprilTag-corrected localisation, flag detection and a search pattern with a time limit.
- Navigation & estimation: LiDAR-ICP SLAM (RTAB-Map), SmacPlanner2D + MPPI, depth-camera obstacle segmentation tuned to catch rocks and 30° slopes without flagging sand dunes; EKF fusing wheel odometry with two IMUs.
- Hardware integration: micro-ROS over UART to STM32, a Jetson device-tree fix for a UART DMA bug, Fast DDS/Zenoh distributed setup; full Gazebo twin of the Airbus Mars Yard modelled in Blender.
ROS2 Humble Nav2 py_trees RTAB-Map micro-ROS STM32 Gazebo AprilTag
Custom-built cart to stabilise an inverted pendulum.
LQR Kalman Filter C++ Arduino Giga R1
Languages Python · C · C++ · C# · TypeScript · JavaScript · MATLAB
Robotics ROS2 Humble · micro-ROS · Nav2 · Gazebo · Isaac Sim/Lab · Webots · Simulink · PID · LQR · MPC · MPPI · Kalman filtering
ML PyTorch · SmolVLA · ACT · Pi0 · OpenCV · scikit-learn · NumPy · Pandas
Software Next.js · React · Expo · Supabase · Railway · Vercel · Upstash · Docker · Git
Hardware KiCad · Fusion 360 · PCB design · STM32 · Arduino · Jetson · 3D printing · soldering
MEng Robotics and AI, UCL · Predicted First · Open to 2027 internships and research collaboration







