Work
Things I've built, broken, and built again.
Mostly robots that learn, and the plumbing that gets them from a training run to a real machine.
What work gloves do to hand tracking →
How gloves break 3D hand-pose estimation for human-video robot learning, and which capture choices fix it: thin gloves for finger pose, a second camera for position.
The policy that ignored the instruction →
Fine-tuning SmolVLM2-500M into a LIBERO-Goal policy, finding out why it ignored language, and taking it from 0% to 20% by changing only the frame sampler.
jetson-gr00t-observer ↗
A profiling toolkit for running NVIDIA's GR00T N1.5 on Jetson. It breaks inference latency into the vision encoder, the language backbone and the diffusion action head, so you can see where the milliseconds go.
Giving VLAs a sense of touch
Adding tactile encoders as a new observation alongside vision and language, so manipulation policies can feel contact instead of guessing it.
Real-time policies on the edge
Quantising and compiling VLA and diffusion policies for Jetson and Qualcomm NPUs, with INT8/FP8 and CUDA Graphs, for sub-30 ms humanoid control.
Shipping models to a fleet
An edge MLOps pipeline for versioning models, evaluating them systematically, and rolling them out over the air to robots in stages.
Seeing with more than cameras
Fusing camera, LiDAR and radar for autonomous mobility and target tracking, with INT8 detection models running inside tight embedded power budgets.
VeoPipe
A certifiable, reproducible AI development pipeline for embedded robotics, with standardised testing and traceability built in.
Human-to-humanoid motion
Motion capture and force plates, a Hanavan body model and Newton–Euler dynamics, mapped onto a humanoid through inverse kinematics for upper-body imitation.
Listening to the heart
Deep learning on ECG and IMU signals for epileptic seizure detection, from data ingestion and denoising to active learning.