Recent Posts

All posts (1) →

Selected Projects

Drone with addressable LED boards on the CAN bus
Debugging LED firmware with oscilloscope and logic analyzer

Distributed CAN Network

STM32, Embedded C++, CAN, DMA

  • Led firmware development for distributed STM32 system of plug-and-play nodes, using a shared CAN bus to synchronize behaviour with the drone state.
  • Used the STM32 HAL to control DMA, interrupts, and hardware timers to communicate with board peripherals while minimizing overhead usage.
  • Wrote modular, reusable, and highly maintainable embedded C++, making architectural decisions to decouple separate components.
  • CAN LED network whitepaper
Low power semantic visual SLAM running on ESP32

Low Power Semantic Visual SLAM

Rust, Assembly, SIMD, ESP32

  • Handwritten image processing kernels in assembly, using SIMD and minimizing data dependencies to eliminate pipeline hazards and 4x throughput.
  • Fine-tuned and quantized image embeddings model in TensorFlow, optimizing for high-throughput ESP-NN inference.
  • Developed a PnP RANSAC pipeline for robust camera localization, rejecting dynamic outliers.
Hermite spline trajectory generated by the path planning library

Robotic Path Planning Library

Trajectory Planning, Kalman Filtering, PID

  • Use RProp numerical optimization to generate optimal Hermite spline trajectories.
  • Developed Kalman-filter based odometry and IMU-based sensor fusion to adaptively react to disturbances.
  • Deployed to a Linux device at FRC robotics competitions, enabling complex autonomous routes to score more points.
Block diagram of closed loop stepper motor driver ASIC

Closed Loop Stepper Motor ASIC

Verilog, TinyTapeout

  • Built a FSM-based SPI peripheral, using best practices such as cascading flip-flops to avoid metastability issues.
  • Implemented an in-hardware PI controller using accumulators and power-of-2 coefficients to eliminate unnecessary MAC units.
  • Implemented motion planning math using a FSM, saving 4-5x area over the naive MACs and divide units.
KhakiLang compiler source code showing expression AST definition

Functional Programming Language Compiler

Rust, Git, GitHub

  • Developed a compiler for a functional programming language using techniques including specialization, unboxing, and defunctionalization to maximize performance.
  • Used the Rust type system to guarantee correctness of program transformations.