Microcontroller Design

I have designed, prototyped, and sent several PCBs into production. These include ones based on the PIC32, ESP32-S3, ESP32-C3, and several AVR microcontrollers. This was done to create the electronics framework for several of the projects showcased above, as well as many that have not been released publicly. I've utilized tools such as EAGLE, Altium, Atmel Studio, Arduino, PlatformIO, and others to design and program these systems.


KUKA youBot Inverse Kinematics and Mecanum Drive from Scratch

This project entailed programming a full kinematics controller from scratch to pick and place objects with a KUKA youBot. The project involved the heavy usage of inverse and forward kinematics, self collision avoidance, Jacobian matrices, control theory, screw theory, and coordinate transformations. The program would output a CSV file that could be loaded into simulation software, such as CoppeliaSim. The wheel motion, arm kinematics, and gripper state were all in separate columns that could be easily picked out by the simulation script, resulting in the following animations for self-collision avoidance, self-collision, new task locations, and an overshoot in PID gains.


Biomedical Machine Learning - Applying Random Forests and AdaBoost from Scratch to Diagnose Heart Disease and Breast Cancer

I used my own machine learning algorithms employing techniques such as SVMs, KNN, and decision tree classifiers to train on open-source patient biomarker data frames to identify signatures of possible heart disease and breast cancer with over 90% accuracy. The 10 most important features were computationally identified and used to reduce the dimensionality of the model - greatly increasing its overall performance in new test datasets.


Water Detection on Asteroids (Planetary Science Institute)

I conducted research on the detection of the presence of hydrated minerals on C-type and S-type asteroids in the Hilda and Cybele clusters. For this project, I utilized Fast Fourier Transforms (FFTs), Hanning smoothing functions, Gaussian fitting, and signal normalization techniques to turn raw standard star and asteroid data obtained from Las Cumbres Observatory (LCO) telescopes into spectroscopic data with asteroid chemical signatures. Data was obtained using diffraction grating and spectrometer data in the infrared and visible wavelength regime. Additionally, I scheduled the observations by generating ephemerides using the JPL Small Body Database, local atmospheric conditions, asteroid tracker maps.


Artificial Muscle Fibers Powered by Electromagnetic Induction Heating

In this experiment, induction was used as the driving force for an artificial muscle fiber with no moving parts or valves. Using two 21700 lithium ion batteries, a ZVS induction heater, iron oxide nanoparticles, and a nylon sleeved balloon, an artificial muscle fiber using only induction and phase transitions as its mechanism was publicly demonstrated successfully. The project proved that the muscle fibers were possible to create with relatively inexpensive materials in bulk.


Thermodynamic and Fluid Dynamic Computational Simulations

I used MATLAB for studies in heat flow across thick copper plates, and viscous fluid flow in a tube with high friction. Dynamic 3D models were generated from data from models such as the 3D heat equation and the Navier-Stokes equation, respectively. The datasets were turned into animations using timestamps to analyze the temporal behavior of the systems.


"IMU-Gripulator" - IMU/EMG Controlled Robotic Manipulator

Collaborators: Katie Hughes, Hang Yin, Felipe Jannarone, Nick Morales, James Oubre

EMG End-Effector Software: https://github.com/katie-hughes/emgripper 

IMU Robot Arm Software: https://github.com/hang-yin/IMUnipulator

My team and I programmed a robot arm using IMU and EMG sensors to pick and place objects by remotely using the arm with a wearable device. We developed the I2C and PWM controller libraries from scratch used to take in the sensor data and output changes to the position of the servos within the arm. The gripper also incorporated a touch sensor feedback system, that would prevent it from damaging or injuring anything in its grasp with a bang-bang control system. Additionally, several modular designs were made for the gripper, including one with an electromagnet to grab metal objects through inductance, and a marker holder to draw on a whiteboard using the arm.


Supercritical Fluid Data Analysis

In this experiment, we measured the turbidity of several samples of O2, H2, and SF6 as they crossed their respective critical points, over incremental temperature quenches. Turbidity is a measure of the amount of light that can pass through the fluid. Using the turbidity values from recorded image sets obtained by HYLDE we attempted to extract the isothermal compressibility and correlation length for the critical fluctuations, which factored into equations used to find the diffusion properties of the compounds.


Impact Dynamics - Falling/Rotating Jack in a Box Simulation

Using Runge–Kutta methods, impact updates, transformation matrices, and Lagrangian/Hamiltonian mechanics, a model of a 4 pointed "jack" was accurately simulated to bounce around in a translating, rotating box containing it. Energy was largely conserved in the system, with minimal losses due to the discretization estimates made by the algorithm.


Catching a Falling Object with a custom URDF modeled assistive robot in RViz

A single-wheeled robot was programmed in simulation to anticipate and catch a falling brick. The robot would determine if the brick was reachable from the time it would take to hit the ground in free-fall, and then compare it to its own distance to the landing spot, divided by its own translational speed - determined by the wheel diameter and angular velocity. The robot was able to accurately catch the brick and make the decision not to chase it if it was unreachable. Additionally, the robot was modelled as a URDF from scratch, and visualized in RViz.