My Work
Projects & Creations
A showcase of personal and professional projects spanning web development, machine learning, and embedded systems.
BCIT Robotic Welding System (ROS2 + AI)
Description
- Developed a ROS2 Fanuc driver using Ethernet IP protocol, implemented in C++ using the EIP Scanner module, enabling full programmatic control of the Fanuc CrX10ia cobot.
- Built a custom PyQt5 UI for the Fanuc CrX10ia – Lincoln R450 PowerWave system, and developed a TCP/IP driver for the Lincoln R450 following the ArcLink message structure in Python.
- Programmed background TP and Karel firmware programs to interface with ROS2 running programs.
- Currently integrating an AI agent into the live robotic welding loop — beginning with LLMs and VLMs for high-level reasoning, with plans for task-specific SLMs.
Technologies
ROS2C++PythonPyQt5EtherNet/IPKARELTCP/IPLLM/VLM
In-Pipe Welding Robotic Arm
Description
- Helped build an in-pipe welding robotic arm at the SFU Motion and Power Electronics Control Lab. The mechanical design originated with the project lead; I owned the control software, embedded systems, and seam-tracking algorithms, and co-led electrical wiring and assembly.
- Developed and tested control software using TMS320F240 DSP (dSPACE) during prototyping; transitioned to Raspberry Pi Compute Module 4 and NXP ARM S32K144 MCU for final implementation.
- Created a seam tracking algorithm integrating Python scripts with line laser sensors for real-time accuracy, applying KNN algorithms for point-cloud filtering and piecewise-linear fitting for edge detection.
- Derived the DH kinematics, analytical Jacobian and Lagrangian rigid-body dynamics (inertia tensors from SolidWorks), then designed PI and computed-torque controllers for DC and PMSM motors plus a jerk-minimised piecewise-polynomial trajectory system interpolated in real time on the MCU. Validated on dSPACE via Hardware-in-the-Loop before the portable build.
- Measured closed-loop accuracy: ±0.13 cm in height control and 0.4° in rotation, with seam tracking and multi-pass welding emulation validated experimentally. Built a FreeMaster HMI and a JSON-RPC browser dashboard (HTML/CSS/JS) for real-time control and MCU tuning.
Technologies
C++PythonROS2Raspberry Pi CM4NXP S32K144TMS320F240dSPACE / HILSimulinkLagrangian DynamicsComputed-Torque ControlBTS 7960SOLO UNO v2Wenglor weCat3DSPITCP/IPKNNDifferential EvolutionJSON-RPCMATLAB
SKC Engineering – Level 3 Fitness-For-Service Assessment, Locomotive 2141 Boiler
Description
- Served as FEA lead on a Level 3 Fitness-For-Service assessment (API 579-1 / ASME FFS-1 Part 8) of the 1912 riveted/welded firebox on the Spirit of Kamloops, Locomotive 2141 — a regulator-facing, independently reviewed engineering report.
- Ran seven elasto-plastic finite-element simulations (SimScale) across four geometric configurations — design-intent, as-measured distorted, and weld-overlay repair variants — under pressure-only and coupled transient thermo-mechanical load cases at 200 psi MAWP.
- Reconstructed the as-measured firebox geometry from a Revoscan 3D laser-scan point cloud (slicing, thickening to measured plate thickness, sweeping into a clean parametric CAD model), and built nonlinear material models with bilinear isotropic hardening and temperature-dependent properties at the 350 °C design metal temperature, including a separately calibrated E7018 weld-overlay sub-material.
- Captured real structural behaviour through symmetry planes, Winkler elastic supports with per-stay stiffness K = EA/L calibrated to missing stay lengths, frictionless sliding contacts for ball-end stays, and a six-zone convective heat-flux BC set blending convection and radiation from 1500 °C fire-side to nucleate-boiling water-side HTCs.
- Automated stress/strain post-processing in Python (PyVista/SciPy) — projecting analytic paths onto deformed meshes, computing Dijkstra geodesic worst-orientation paths, and running pointwise local-failure (εL) and stress-linearization checks per ASME VIII Div 2 Annex 5.A, cross-validated against native solver output to within ±2 ksi. Mesh-sensitivity studies at 7× node-count refinement were independently reproduced in Abaqus to within ±5%.
- Authored the internal technical report on firebox corner-bend geometric analysis, with an interactive MATLAB tool for plane slicing, PCA profile ordering, bend-angle/inscribed-arc extraction, and stay-pitch measurement.
- The analysis supported return-to-service at the full historical 200 psi MAWP with no derate, avoiding a repair estimated at $200,000+.
- Alongside the FFS work: conducted cobot welding experiments at BCIT with laser scan and point-cloud processing before and after welds to detect geometric distortion; developed frontend software tools for welding engineers (JavaScript) and managed the website and database for Fleet Management (Ruby on Rails).
Technologies
API 579-1 / ASME FFS-1ASME VIII Div 2SimScaleANSYSAbaqusElasto-Plastic FEAThermo-Mechanical FEAPython (PyVista/SciPy)MATLABSolidWorksLaser ScanningPoint Cloud
ACIM 5010 – Automated Conveyor Sorting System
Description
- Designed and implemented a fully automated conveyor-based sorting system using Studio 5000 and a CompactLogix L36ERMS Safety PLC.
- Developed modular ladder logic architecture using multiple subroutines with structured JSR execution and a state-machine–based control strategy.
- Integrated photo-eye sensors, pushbuttons, indicator lamps, and pneumatic actuators with deterministic timing using TON timers and CTU counters.
- Programmed PowerFlex 525 VFD control via digital I/O for safe start/stop sequencing. Designed fault detection logic using timers and counters to detect missing bins, initialization timeouts, and E-stop conditions.
Technologies
Studio 5000Ladder LogicCompactLogix PLCPowerFlex 525 VFDIndustrial Controls
Mobile Robot with Advanced Perception
Description
- Built a fully automated mobile robot using Hector SLAM for navigation, with a YOLOv3 model for detecting stop signs.
- Implemented an OpenCV line-tracing algorithm and a CNN network for detecting cat and dog images via ArUco markers, enabling the robot to determine where to drop red and blue balls to accomplish its mission.
Technologies
ROSPythonYOLOv3OpenCVHector SLAMCNNArUco Markers
Bridge Under Heavy Loading: Fiberglass vs Steel Reinforcement
Description
- Research project analysing the stress resistance of fiberglass-reinforced versus steel-reinforced concrete under heavy loading, using ANSYS finite-element simulation.
- Compared deflection and stress-distribution behaviour between the two reinforcement schemes to assess viability of fiberglass rebar for concrete floor reinforcement.
Technologies
ANSYSFEMStructural AnalysisMaterials
Optimized RC Car Control via Register-Level Programming (AVR)
Description
- Wrote a register-level ATmega328p library from the datasheet up to maximise hardware utilisation, bypassing the Arduino abstraction layer.
- Implemented a PID speed controller on top of it and tuned it against the physical vehicle.
Technologies
CATmega328pAVRPID ControlEmbedded
Rotary Series Elastic Actuator (RSEA) — Technical Review
Description
- Technical review of K.C. Kong's work on Rotary Series Elastic Actuator control for human-robot interaction, with accompanying Simulink simulations reproducing the control behaviour.
- Explored compliance and force control as they apply to safe physical human-robot interaction.
Technologies
SimulinkControl TheoryHRISeries Elastic Actuators
Feelstance – AI Navigation for the Visually Impaired
Description
- Proposed and prototyped a device capable of generating artificial 3D touch sensation from a 2D picture, aiming to solve the navigation problem for visually impaired or blind users.
- The solution extracts 3D dense information from a 2D image using deep learning and translates it into 3D tactile sensation applied to the user's skin via electromechanical devices.
- Combined mobile device, embedded system, and deep learning into an end-to-end wearable navigation assistant.
Technologies
Deep LearningPythonEmbedded SystemsOpenCVComputer VisionMobile Development