My Journey

Professional Experiences

A timeline of my professional growth, from teaching and leadership roles to hands-on technical experience in robotics and software development.

Tech

Research Associate

BCIT Centre for Welding Technologies and Metallurgy Research

2025 - PresentBurnaby, BC

Highlights

  • Wrote a ROS2 driver for the Fanuc CRX-10iA over EtherNet/IP in C++, built on the EIP Scanner library, so the cobot can be driven straight from ROS2 instead of the teach pendant.
  • Put together the operator-side UI in PyQt5 for the Fanuc CRX-10iA / Lincoln R450 PowerWave welding cell.
  • Wrote the background TP and KAREL programs that sit on the controller as a thin firmware layer and pass data back and forth with the ROS2 nodes.
  • For the Lincoln R450 power source I wrote a separate Python driver that speaks ArcLink over TCP/IP, which lets us set welding parameters programmatically.
  • Building a vision pipeline (directed studies, Fall 2026) that reads weld-bead width and height off an eye-in-hand camera in real time, validated against Revopoint laser scans, plus a trained feed-forward model that picks the travel and wire-feed speeds needed to hit a target bead shape.
  • Now working on putting an AI agent inside the welding loop — LLMs and VLMs first for the high-level reasoning, and eventually smaller task-specific models trained just for the welding steps.

Skills

ROS2C++PythonPyQt5EtherNet/IPKARELTCP/IPComputer VisionLLM/VLM

Junior Systems Engineer

SKC Engineering Ltd

2025 - PresentVancouver, BC

Highlights

  • Ran the FEA side of a Level 3 Fitness-For-Service assessment (API 579-1 / ASME FFS-1, Part 8) on the 1912 riveted and welded firebox of a locomotive boiler. The report was regulator-facing and independently reviewed.
  • Set up and ran seven elasto-plastic simulations in SimScale across four versions of the geometry — the original design intent, the as-measured distorted shape, and two weld-overlay repair options — under both pressure-only and coupled transient thermo-mechanical loads at 200 psi MAWP.
  • Rebuilt the as-measured firebox from a Revoscan laser-scan point cloud: sliced it, thickened it out to the measured plate thickness, and swept it into a clean parametric CAD model that would actually mesh.
  • Built the material models myself — bilinear isotropic hardening with temperature-dependent conductivity and expansion, evaluated at the 350 °C design metal temperature — plus a separate E7018 weld-overlay material with its own calibrated properties.
  • For the boundary conditions I used symmetry planes, Winkler elastic supports with a per-stay stiffness of K = EA/L tied to each missing stay's length, and frictionless sliding contacts for the ball-end stays with heat transfer across the contact.
  • Applied a six-zone convective heat-flux thermal condition blending convection and radiation, from the 1500 °C fire side to the nucleate-boiling water side, consistent with saturation conditions at the design pressure.
  • Wrote a Python post-processor (PyVista/SciPy) that projects the assessment paths onto the deformed mesh, walks Dijkstra geodesics to find the worst orientation, and runs the pointwise local-strain (εL) and through-thickness stress-linearization checks from ASME VIII Div 2 Annex 5.A. It matched the solver's own post-processing to within ±2 ksi.
  • Ran a mesh-refinement study at 7× the node count to confirm the staybolt-anchor stress concentrations were captured conservatively, then had the results reproduced independently in Abaqus to within ±5%.
  • Wrote the internal report on the firebox corner-bend geometry from the scan, with an interactive MATLAB tool for plane slicing, PCA profile ordering, bend-angle and inscribed-arc extraction, and stay-pitch measurement.
  • The assessment cleared the boiler to go back into service at its full historical 200 psi MAWP with no derate, which avoided a repair estimated north of $200,000.
  • On the welding side, I ran cobot welding trials at BCIT and laser-scanned the parts before and after to measure distortion from the point clouds.
  • Also built frontend tools for the welding engineers in JavaScript, stood up the website and database for the crane-certification module of a Fleet Management system in Ruby on Rails, and handled CAD drafting for deliverables.

Skills

FEAAPI 579-1 / ASME FFS-1ASME VIII Div 2SimScaleANSYSAbaqusElasto-Plastic AnalysisThermo-Mechanical FEAPython (PyVista/SciPy)MATLABSolidWorksAutoCADLaser ScanningPoint CloudJavaScriptRuby on Rails

Graduate Research Assistant

SFU Motion and Power Electronics Control Lab

May 2022 - Dec 2024Surrey, BC

Highlights

  • Helped build an in-pipe welding robotic arm with the lab team. The mechanical design came from the project lead; I took on the control software, the embedded systems, and the seam-tracking algorithms, and co-led the electrical wiring and assembly.
  • Started the control software on a TMS320F240 DSP under dSPACE, then moved the final build onto a Raspberry Pi Compute Module 4 and an NXP S32K144 ARM MCU.
  • Worked out the full kinematic and dynamic model: Denavit–Hartenberg forward kinematics, the analytical Jacobian, workspace analysis, and closed-form inverse kinematics that I solved two separate ways and cross-checked in Simulink.
  • Derived the rigid-body dynamics with the Lagrangian method, pulling the inertia tensors from SolidWorks, and used that model to design and tune a computed-torque controller, which I benchmarked against a simpler independent-joint PI speed controller.
  • Prototyped everything on dSPACE with Hardware-in-the-Loop testing in Simulink before committing to the portable build, where the Pi CM4 handles the laser processing and the S32K144 runs the real-time motor control, the two linked over SPI.
  • Built the motor drive stage: BTS 7960 dual H-bridge drivers for the six DC arm axes (43 A, PWM speed and direction, with current-alarm handling) and a SOLO UNO v2 controller for the BLDC rotation axis.
  • Got a Wenglor weCat3D MLSL143 3D profile laser sensor talking over raw TCP/IP sockets — the ASCII command handshake, encoder-mode scanning, and unpacking the FPGA-packed binary profile frames in Python — and fed that into a live seam-tracking loop.
  • Measured closed-loop accuracy came out to ±0.13 cm in height and 0.4° in rotation, with seam tracking and multi-pass welding emulation both validated on the physical robot.
  • Used KNN for point-cloud filtering and sharpened the edge detection with piecewise-linear fitting tuned by differential evolution.
  • Designed a trajectory generator for smooth, jerk-free motion, interpolated in real time on the MCU.
  • Built a FreeMaster HMI and a browser dashboard (HTML, CSS, JavaScript, JSON-RPC) for real-time control and MCU parameter tuning.

Skills

C++PythonROS2Raspberry Pi CM4NXP S32K144TMS320F240 DSPdSPACE / HILSimulinkMATLABDH KinematicsLagrangian DynamicsComputed-Torque ControlTrajectory GenerationSPITCP/IPKNNDifferential Evolution3D Profile Laser SensingJSON-RPCOpenCV

Leadership

Teaching Assistant — Mechatronics & Robotics

Simon Fraser University

Sep 2022 - Dec 2024Surrey, BC

Highlights

  • Wrote new lab and lecture material for the Mechatronics Design Studio (MSE 112), based around a robot kit with Mecanum wheels, a 4-DOF arm, a Raspberry Pi 5, and an MCU expansion board.
  • Ran the lab sessions: students working with motors and motor drivers, waveform generators, oscilloscopes, and power supplies.
  • Helped them get comfortable with Simulink, LabVIEW, Python, and C++ for real-time simulation and embedded programming.
  • Spent a lot of the time one-on-one — debugging their code, chasing down hardware issues, and keeping projects moving.

Skills

TeachingSimulinkLabVIEWPythonC++MechatronicsMentoringCurriculum Design

Education

PhD student, Mechatronic Systems Engineering

Simon Fraser University

Jan 2026 - PresentBurnaby, BC

Highlights

  • Research sits at the intersection of Physical AI and robotic welding, run jointly with BCIT's Centre for Welding Technologies and Metallurgy Research.
  • Currently working through the qualifying exam. Awarded the PhD Research Scholarship for Spring and Summer 2026.

Skills

Physical AIRobotic WeldingLLM/VLM AgentsResearch

Master of Applied Science (MASc), Mechatronic Systems Engineering

Simon Fraser University

May 2022 - Jun 2025Burnaby, BC

Highlights

  • Thesis: Development of an In-Pipe Welding Robotic Arm for Seam Tracking and Multi-pass Welding (completed December 2024, degree conferred June 2025).
  • GPA 4.17 / 4.30.
  • Awarded SFU Graduate Fellowship (2023 and 2024) and the SFU Graduate Entrance Scholarship (2022).
  • Relevant coursework: CMPT 726 Machine Learning; CMPT 983 Trustworthy Deep Learning.

Skills

RoboticsControl SystemsEmbedded SystemsMachine Learning

Graduate coursework — Robotics, Automation and Industrial Control

Concordia University

Aug 2021 - May 2022Montreal, QC

Highlights

  • Graduate coursework in industrial control systems and robotics; 6 credits (MECH 6621 Microprocessors & Applications, MECH 6021 Design of Industrial Control Systems) transferred into the SFU MASc. Not a completed degree.
  • Also completed ENGR 6411 Robot Mechanics and MECH 6631 Industrial Automation.

Skills

Industrial ControlMicroprocessorsRobot Mechanics

BSc, Mechanical Engineering

Korea Advanced Institute of Science and Technology (KAIST)

Feb 2017 - Aug 2021Daejeon, South Korea

Highlights

  • Full KAIST Scholarship recipient (2017).
  • Relevant coursework: ME440 Engineering Design via FEM; ME460 Automatic Control; ME491/492 Autonomous Mobile Systems; CoE202 Big Data Analysis & Machine Learning.

Skills

Mechanical DesignFEMAutomatic ControlAutonomous Systems