CS @ University of Calgary
Robotics · State Estimation · Distributed Systems · Full Stack
I build at the infrastructure layer and ship production code.
Lately I have been building autonomy and robotics systems: GNSS-denied navigation and sensor fusion, ROS2 perception at the edge and in the cloud, language-grounded navigation, fleet telemetry, and on-robot anomaly detection. Co-founding Forq, a food payment platform on Stripe Issuing and Flinks open banking. Previously built ML data pipelines at ReMotion Prosthetics on Azure, and did compliance consulting at TechHive Advisory across Canada, the UAE, and Europe.
When I implement something, I read the paper first, and I publish the number that proves it works.
Carcajou |
| over a 120 s outage | drift |
|---|---|
| Industrial MEMS, unaided | 5.36 % |
| Industrial MEMS, ZUPT + NHC | 0.22 % (70.6 m becomes 2.9 m) |
| Consumer MEMS, constraints only | 1.28 % median, 20 % p95 |
| Consumer MEMS, masked stereo VO | 0.42 % / 0.92 % |
| Consumer MEMS, LiDAR map matching | 0.01 % (about 0.15 m) |
The synthetic generator algebraically inverts the discrete mechanization update, so a noise-free run retraces truth to 1.3e-7 m over 6 km. Every metre of reported drift is traceable to a deliberately injected sensor error rather than a bug, and that identity is asserted in CI.
Includes the results that undercut the pitch: NHC beats ZUPT, an unmasked camera is measurably worse than no camera, and mapping dynamic objects into the LiDAR map turned out not to matter on this route.
|
Dynamic-scene-robust HD-map localization for cheap vision sensors. ONNX semantic masking drops moving objects, 2D ICP registers against the map, and a gated EKF fuses the pose. ROS2 with an AWS map and model pipeline.
|
Open-vocabulary language-grounded navigation for ROS2. Say "go to the red chair" and a vision-language model (OWL-ViT) finds it, depth plus tf2 turn the pixel into a 3D map pose, and Nav2 drives there. Lifecycle nodes, a custom action interface, and inference that never blocks the executor.
|
|
Edge and cloud object detection router for ROS2. A small model runs on the robot every frame; a per-frame policy escalates only the uncertain frames to a heavier model on an AWS SageMaker endpoint, and captures hard cases to S3 to build a retraining set.
|
Learned proprioceptive anomaly detection for ROS2. An autoencoder trains on a robot's normal joint velocity and effort, exports to ONNX, and runs in a lifecycle node publishing standard
|
|
Robot fleet telemetry and monitoring platform. Robots stream over MQTT to AWS IoT Core, which splits into a hot path (Kinesis, Lambda, DynamoDB) for live monitoring and a cold path (Firehose, S3 Parquet, Athena) for analytics. Fully Terraformed, runs in simulation.
|
Serverless near-real-time market data lakehouse on AWS. Kinesis to Firehose to Parquet on S3, hourly Athena OHLCV rollups orchestrated by Step Functions, DynamoDB-backed serving API. Fully Terraformed.
|
Languages
Robotics & ML
Backend & Infrastructure
Frontend & Mobile