Stephen Xiren Wang

Project List

Tags selected to filter:

Additive Manufacturing - Automatic Crack Repair

Industrial robots are built to be very precise and repeatable, but most applications to this day still rely on pre-programmed trajectories. I was very fortunate to have the chance to work on Promation's awesome robotic setup, and to create a robotics perception and planning application. The algorithms in the application run on a PC and interfaces with a KUKA robot and a FANUC robot through custom pendant programs over IP networking.

TCLAS: Test Control, Logging, and Alert System summary image

TCLAS: Test Control, Logging, and Alert System

I created a scalable IoT framework so that all test fixtures built for product durability testing can all be controlled, monitored, and logged in one place. This way, the control interface and logging peripherals don't need to be redesigned every time a new test fixture is built. Instead, the new fixture controller simply need to inherit the endpoint template and all other components will be automatically updated based on the new configuration.

As shown in the architecture diagram on the left, the control interface web app, loggers, alert app, and the MQTT broker can all be deployed in Docker containers. That means this system can be hosted off-premise to a cloud provider like GCP for better uptime and reliability, or on-premise for better security.

This system is a SCADA replacement for small enterprises and hobbyists who'd like to control and monitor numerous IoT devices at once without the counter-intuitive setup and overpriced licenses.

RTLS: Real-Time Location Service summary image

RTLS: Real-Time Location Service

Localization in a GPS-denied indoor environment is tricky. Other forms of radio signal such as Bluetooth Low Energy (BLE) can be used to infer the location of the emitter instead. An Long-Short Term Memory neural network is used to make this inference.

I made the data collection, training, and inference visualization parts of the ML pipeline. I wrote a modular model training script using Pandas for data preprocessing, Keras for model building, Numpy for postprocessing, and MLflow for experiment tracking. I created a full-stack visualizer for data collection and to debug the neural network and other parts of the inference pipeline because scalars and text don't tell the whole story.

Violent Action Detection summary image

Violent Action Detection

Meta AI Research brought us SlowFast, a neural network architecture capable of predicting the action of actors in a video. I used their model to detect violent actions recorded in public spaces to more effectively monitor social discord.

To facilitate neural network inference in real-time, I wrote a modular framework that allows serialized data to flow from sources through filters, then finally into sinks where the processed results are consumed. This framework also allows any node to be deployed onto any microprocessor so the whole system is platform-agnostic. Communication between these nodes was ZMQ's implementation of the router-dealer paradigm. This framework was implemented in Python. Processing nodes written this way can interoperate with existing nodes that were written in C++.

WATcloud Server Cluster summary image

WATcloud Server Cluster

WATonomous is a student design team for self driving at the University of Waterloo. To meet the demanding simualtion workloads of the team, WATcloud server cluster was created to give software developers state-of-the-art consumer computer hardware so that they may start training models and running simulations as soon as they are onboarded.

I maintained the infrastructure-as-code Ansible repository that provisions package installation and user management in Promox VMs. I frequently helped developers troubleshoot GPU and other resource usage problems and assembled a computer in the cluster. 10 gigabit networking runs between the cluster computers and I helped install a "big data" server that can be accessed anywhere in the cluster.

Milliohm Meter summary image

Milliohm Meter

To gauge how solid an electrical connection is, I designed a PCB that can measure resistance in the milliohm range. This PCB can measure 4 connections simultaneously where each a known current is sunk through the connection, then the potential across the connection is amplified.

A 23 pin connector is used because each measurement uses 4 wires so that the resistance of the wires connecting the milliohm meter to the connection under test would not affect the result.

Actuator Power Switch Box summary image

Actuator Power Switch Box

Two sources of input needed to be toggled for two linear actuators so I designed an easy-to-maintain box that would mount the DPDT switches.

The lid of the box mates with the body using compliant clips so that no fastener, and hence no tool, is required to open or close the box in a pinch.