Selected Projects and Coursework.

About Me

Felix Wang Headshot

Hello! I'm Felix Wang. I am a passionate creator focused on building devices and electronics that can positively help improve our world. My current interests are in the intersection between sustainability and hardware electronics. In my free time, I love to play pickleball and do stargazing!

← Back to Projects

Avatar Robotics

Forward Deployed Engineer Intern · Jun 2026 – Present

Built internal fleet tooling and supported on-site deployment of warehouse picking robots, working across web software, on-robot debugging, fixture design, and floor operations.

Full-stack internal tools Data visualization Slack alerting Linux / SSH Camera pipelines Navigation UI 3D printing (PLA, TPU) CAD & fixturing Failure analysis Field operations
Robot arm picking packets from sorting bins

Fleet Software

Robot uptime tracking

Bug fixes for arm crashes and network drops had no way of showing whether they improved uptime. I built downtime logging and powered vs. operational uptime reporting, now live on every production run.

Full-stack · Data modeling · Metrics design
Slack low-battery alerts for robots

Low-battery alerts

Replaced manual dashboard checks with automatic Slack alerts whenever a robot drops below 20%, so the team gets notified asynchronously.

Slack integration · Event-driven alerting
Battery percentage time-series graph with CSV export

Battery history & CSV export

Per-robot battery time series (6h to 30d) with one-click CSV export, live in the fleet dashboard's device logs.

Time-series visualization · Data export
Dispatch timing summary page

Dispatch timing analytics

Exportable summaries per session, order, and stage (driving, posing, picking) to measure where picking time actually goes.

Analytics · Reporting · Spreadsheet export
Robot footprint and numbered waypoints on navigation map

Navigation map: robot footprint

Drew the robot to scale with its heading and waypoint distances so operators can judge size and position. Also stopped the map from auto-expanding over the controls.

Front-end · Robotics UX
Robot multi-camera live view

Fisheye camera recovery

SSH'd into the robot and probed its unlabeled camera devices (with AI assistance) to find the right fisheye, then routed it through a filter pipeline to clean up the feed.

Linux / SSH · Camera pipelines · Debugging

Deployment & Hardware

Kitting orientation funnel prototype

Kitting funnel & printed parts

Built a funnel to orient packets during kitting, and iterated 3D-printed wedges by tuning wall count, infill, and material (PLA vs. TPU 95A).

Rapid prototyping · 3D printing
Cardboard fixture holding kitting boxes

Fixtures for kitting & sorting

Supported CAD for box-enlarging fixtures, and built cardboard fixtures that stopped boxes from falling during sorting.

CAD · Fixture design
Kitting failure case: packets not settling flat Correctly kitted boxes

On-site trials & failure analysis

Led on-site kitting trials and logged boxes per hour. Tallied failure cases from trial video and coached fixes for box damage and packets not settling flat.

Test design · Failure analysis

Field operations & maintenance

Ran weekend sorting shifts (1–10 pm) for about 3 weeks. Opened up a robot's chassis to replace its wrist camera, added remote power-cycling switches, and took down site networking when a deployment ended.

Operations · Hardware maintenance

Customer, robot, and run identifiers, plus performance figures, are redacted.

← Back to Projects
← Back to Projects

Robotic Surface Bioimpedance Scanning with Ergodic Control

Dynamical Systems Lab · Duke University · May 2026 – Present

Teaching a UR3e arm to scan a surface by touch. A wrist depth camera maps the surface, then a probe follows ergodic coverage paths while holding a steady contact force, laying the groundwork for bioimpedance scanning.

In progress. The long-term goal is to use bioimpedance measurements from these scans to help detect skin cancer. Current work focuses on accurate, repeatable contact: calibration, force control, and path tracing.

Python UR3e / ur_rtde Force control Hand-eye calibration Point clouds (Open3D) OpenCV / ChArUco Trajectory validation Hardware testing

Path Tracing in Contact

Dry-run preview of a coverage path drawn over the scanned surface

Ergodic coverage paths

Follows ergodic coverage paths, supplied as waypoint CSVs, across a scanned surface under force control. Each waypoint is snapped to a fresh scan for height and probe tilt, and the full path is previewed before the arm moves. Left: a full run at 10× speed. Right: the dry-run preview.

Path execution · Hybrid force/position control · Visualization

Force-controlled contact trace

Seeks the surface at one point, then slides to a second while holding 2 N. Position control runs along the path and admittance control along the probe, at one command every 50 ms.

Control systems · ur_rtde
Contact force over time and distance, holding near 2 N

Measured on the rig

Landed within 0.5 mm of the picked point and held 1.92 ± 0.11 N (target 2 N) across 261 mm at 10 mm/s.

Data logging · Signal analysis
Two points picked on the wrist camera's point cloud

Point picking on the scan

Shift-click two points on the wrist camera's point cloud to set the path. Fixed a picking view that showed the scene rotated 180°, which made it easy to pick the wrong corner.

Open3D · Tooling
Dry-run safety checks in the terminal

Fail-safe checks

Every failure found on the rig now stops the run instead of passing silently: a dead force stream, a flipped sign, unreachable poses, camera collisions, bad waypoints. Time to reach contact dropped from ~21 s to ~3 s.

Safety · Robustness

Camera Calibration

ChArUco calibration board

Locating the camera on the wrist

Every scan depends on knowing exactly where the camera sits relative to the arm. I measured it two independent ways: ChArUco hand-eye calibration over 20 poses, and touching points with the probe, which gives positions from the joint encoders alone. On poses the fits never saw, error fell from 24.9 mm with the old value to 5–6 mm. I also caught an OpenCV version mismatch that matched 5 of 20 board corners to the wrong squares while reporting a perfect detection.

OpenCV · Rigid registration · Held-out validation

Builds on an existing lab codebase for UR3e force control.

← Back to Projects
← Back to Projects

Nasal Cannula Detection Device

Healthcare & Embedded Systems · Aug 2025 – Feb 2026

A ~$30 Arduino device that detects when an infant's nasal cannula slips out and alerts nurses, built for wards like Mulago National Referral Hospital in Uganda, where one nurse may cover up to 35 babies.

Arduino / C++ Embedded firmware Sensor calibration Circuit design CAD & 3D printing Device testing
Firmware on GitHub → Nasal Cannula Project
Clinical Setting

How It Works

  • Sensing: A thermistor at the nose samples every 500 ms against a baseline set during a 5-second calibration.
  • Detection: The alarm fires only after 10 consecutive readings below 99.5% of baseline, which filters out false alarms.
  • Hardware: A 3D-printed housing holds the circuit, battery, 16×2 LCD, reset buttons, and status LEDs for power, calibration, and dislodgement.
Final Prototype
CAD Model and Circuitry

Results

  • 100% true positives across 60 trials
  • 17.29 s average time to alert
  • 21.86 s average attachment time
  • Disassembled 50+ times with no structural wear

Demo

Device demonstration
← Back to Projects
← Back to Projects

Exoplanet Detection & Habitable Zone Analysis

Astrophysics & Data Science Research

Used TESS transit photometry from the MAST archive to detect exoplanets and test whether they fall within their star's habitable zone.

Python Lightkurve Astropy Time-series analysis Signal detection
Exoplanet Research

Methodology

  • Transit photometry: Detected brightness dips as planets cross their star.
  • Light curves: Processed and normalized TESS pixel files with Lightkurve.
  • Periodograms: Found orbital periods with Box Least Squares (BLS).
  • Habitable zones: Computed from stellar mass–luminosity relations with Astropy.
  • False positives: Screened with centroid tracking, background flux, and eclipsing-binary checks.

Key Findings

  • Of 2,537 documented exoplanets, only 118 (4.7%) lie within habitable zones.
  • Most discovered exoplanets orbit very close to their host stars.
  • Flagged TIC 34798133 as a promising candidate for follow-up.

Full Research Paper

← Back to Projects
← Back to Projects

FOAK Fungal-Detection Device (MycoSpec)

Medical Hardware & Embedded Diagnostics · Nov 2025 – Present

A clip-on HVAC sensor that tracks VOCs, temperature, and humidity to flag Aspergillus mold risk for immunocompromised patients before growth is visible.

Embedded sensing VOC sensors Data logging Risk classification Live dashboard Hardware design
Full engineering documentation →
MycoSpec Device Render

Why It Matters

HVAC systems are warm, humid, and dark, which is ideal for mold. For transplant and chemotherapy patients, inhaled Aspergillus spores can cause invasive aspergillosis, which kills more than 50% of those infected. MycoSpec clips onto standard vent fins with no tools or downtime.

Testing & Results

  • Logged ~350 s of sensor data alongside live Aspergillus fumigatus cultures in the lab.
  • Found distinct VOC bands separating the negative (no mold) and positive controls.
  • Turned those bands into LOW / MEDIUM / HIGH risk thresholds on a live dashboard.

Key Challenges

  • Specificity: Separating mold VOCs from cleaning agents, occupant activity, and off-gassing materials.
  • Species: Telling species such as Aspergillus and Stachybotrys apart by their VOC signatures.
← Back to Projects