Portfolio

Robotic Cloth Folding in Simulation

This project aimed to be able to fold a piece of clothing, as if being done by a robot. The first step was to be able to predict the behavior of the system. This was done using Dynamic Mode Decomposition with Control(DMDc), shown in the video and equations on the left. The blue shows the physics simulation and orange shows the behavior of the identified system. Although not perfect, it was able to provide a reasonable prediction for how the cloth behaved, at a fraction of the computational power and modeling complexity. Next, Model Predictive Control(MPC) was used to find the forces needed to move the cloth from a set of positions to the desired positions, shown in the video and equations on the right. All work was done in simulation, so direct transfer to reality is not guaranteed, but the implementation showed an understanding of the physics of the system without having been explicitly taught. The problem formulation is based on some assumptions which are not 100% true, leading to some of the folding issues seen in the video. Self contact is not present in the prediction model, leading to imperfect manipulation later. Overall, still a cool project and definitely the hardest one I have ever done for a class.

Robotic Cloth Folding in Simulation — figure 3 Robotic Cloth Folding in Simulation — figure 4

3D Printer Automation

An automated system for starting and removing prints from a Bambu Lab A1 Mini was created. This system was able to work with a variety of prints, although it did have some limitations and is not ready for a large scale deployment. It was tested over an 8.5 hour long run(shown in the Youtube video), where it was able to remove 14 prints from the printer, entirely unattended by a human. It was also shown to have some energy savings over having a human present to remove the prints

3D Printer Automation — figure 2 3D Printer Automation — figure 3 3D Printer Automation — figure 4

Robot Calibration

This project aimed to make robotic movements more accurate. Standard robots are repeatable, meaning they can return to a pose they have been in before, but struggle to move to a desired pose that it has not been to. In the past, this has not been as much of an issue for automation tasks, but is increasingly more useful with smart manufacturing applications. A linear least squares optimization was performed to identify some sources of error and correct for it. Measurements were taken with a camera mounted on the robot, as seen in the video. This automated procedure reduced the error by about 10x. The full work is available in the NAMRC 54 Proceedings.

Robot Calibration — figure 2 Robot Calibration — figure 3

Autonomous Drone Mapping Simulation

This was a particularly hard project. A simulated drone with realistic aerodynamics and sensors was tasked with exploring an unknown area. This project did every step from low level directional control of the drone, path planning with obstacle avoidance, to even high level control of the exploration waypoints. A variety of registration algorithms were used to combine LiDAR scans in order to create a 3D map of the volume of interest. Additionally, the effects of different levels of sensor noise were tested in order to determine how it affected the final map quality. Shown above are videos of the obstacle avoidance, and the full mapping pipeline, which ran in real time.

Autonomous Drone Mapping Simulation — figure 2

This Website

This site itself is a project, replacing my old Wix page with a website built from scratch in Python. It is a Django application whose pages are rendered to plain static HTML by django-distill, so it can be hosted for free on Cloudflare's global network. Because every page is a standard Django view, the same codebase can later be deployed as a live server to add dynamic features like a blog or contact form without rewriting anything.

All text content lives in a single version-controlled Python file and is loaded into a SQLite database through Django models, so updating the site requires minimal changes. The project media is arranged with a custom drag-and-drop layout editor which lets me resize items by dragging a corner handle, and can save and deploy the new arrangement to the live site in one click.

This Website — figure 1 This Website — figure 2 This Website — figure 3

Statistical Analysis of Survey and Heavy Equipment Simulator Data

This project attempts to analyze the effects of training on a simulator when learning to use heavy equipment, such as an excavator. As of the time of writing, this project is still ongoing, but preliminary results show that the simulator training is effective in teaching and likely provides some cost advantage over on-iron training alone. Also shone is myself on an excavator.

Statistical Analysis of Survey and Heavy Equipment Simulator Data — figure 1 Statistical Analysis of Survey and Heavy Equipment Simulator Data — figure 2 Statistical Analysis of Survey and Heavy Equipment Simulator Data — figure 3

Protein Classification from Amino Acid Sequence using Embeddings

This involved classification of protein properties from their amino acid sequence. Proteins can be heat resistant, cold resistant, or have other useful properties, but there are billions of known protein sequences. Figuring out the properties of each is too time consuming. It would be helpful to be able to predict these ahead of time, if there are multiple proteins that are being considered for an industrial purpose. This is a difficult problem and many common classification algorithms perform poorly on this task, but by using embeddings from a Protein Language Model. This approach outperformed a variety of classification algorithms, including some that were used in scientific papers.

Protein Classification from Amino Acid Sequence using Embeddings — figure 1 Protein Classification from Amino Acid Sequence using Embeddings — figure 2

Autonomous Mapping for Orchard Robot

This project assumes an orchard robot is attempting to map the locations of trees in an orchard. Odometry data from the wheels, as well as GPS data is included in order to provide tracking. Bayesian updates to the occupancy map are used to track trees under noise from the LiDAR, GPS, and odometry. This was a particularly interesting project, because it includes many of the steps that a modern mapping pipeline would include. The simulation time was slow, since there was minimal optimization, but it is a roughly optimal probabilistic approach to the problem in 2D, although it would not work as well in 3D.

Autonomous Mapping for Orchard Robot — figure 1 Autonomous Mapping for Orchard Robot — figure 2 Autonomous Mapping for Orchard Robot — figure 3

Youla Parameterization and H inf Control for Voltage Regulation of Microgrid

The purpose was to provide a SISO voltage regulating controller for a microgrid with a battery and solar cell. The system dynamics were modeled with Simulink, then Youla parameterization by hand and H infinity control were tested. They performed fairly similarly, although H infinity control performed better, as it is an optimized version. The Laplace domain transfer function, bode plot, and system response to disturbances are shown above.

Youla Parameterization and H inf Control for Voltage Regulation of Microgrid — figure 1 Youla Parameterization and H inf Control for Voltage Regulation of Microgrid — figure 2 Youla Parameterization and H inf Control for Voltage Regulation of Microgrid — figure 3 Youla Parameterization and H inf Control for Voltage Regulation of Microgrid — figure 4

Surface Roughness Testing with Various Milling Parameters

For this project, a set of aluminum cubed were milled with a variety of parameters. These were then measured with an optical profilometer. This project taught the basics of milling and machining, in addition to measurement of important surface qualities.

Surface Roughness Testing with Various Milling Parameters — figure 1 Surface Roughness Testing with Various Milling Parameters — figure 2

Simulation of Unicycle with stabilizers through Linear Quadratic Regulator(LQR) and Linear Quadratic Guassain(LQG)

In this project, the task was to simulate the non-linear dynamics of a unicycle with stabilizers, then provide a controller which could allow it to stabilize and track under noise. This is replicating the work of a previous paper. The full Equations of Motion(EOM) are shown above, which are very complex. LQR managed to stabilize the unicycle, but struggled under the effects of noise. Once a Kalman filter was added, turning it into LQG, it performed much better, even without perfect knowledge of the noise magnitude. This project taught how to model a physical system, derive EOMs, perform linearized control, and account for gaussian noise.

Simulation of Unicycle with stabilizers through Linear Quadratic Regulator(LQR) and Linear Quadratic Guassain(LQG) — figure 1 Simulation of Unicycle with stabilizers through Linear Quadratic Regulator(LQR) and Linear Quadratic Guassain(LQG) — figure 2 Simulation of Unicycle with stabilizers through Linear Quadratic Regulator(LQR) and Linear Quadratic Guassain(LQG) — figure 3 Simulation of Unicycle with stabilizers through Linear Quadratic Regulator(LQR) and Linear Quadratic Guassain(LQG) — figure 4

Simulation of A1 Quadruped robot using MPC

In this project, I set up a physics simulation within Matlab and Simscape, then implemented a Model Predictive Control(MPC) policy to allow the robot to move forwards, backwards, and sideways. The robot was able to reach speeds over 2 meters/second going forwards, over 0.5 meters/second when going sideways, and about 60 degrees/second when turning.

Unreal Engine Simulation of Quadcopter using MPC and Computer Vision

The video shows a view of the drone moving through the environment on the left and the view from the drone's camera on the right. The video is sped up in the middle, as it flies through empty space for much of it. This project focused on adding control logic and computer vision applications to a drone system controlled through Model Predictive Control(MPC). The goal was to move the drone while avoiding known obstacles until it is near a target. Then, the target was be detected using computer vision, its trajectory was modeled, and then the drone finds a suitable time to intercept. This was supposed to mimic the task of a drone in a shipyard going from shore to ship. Unreal Engine was used to model the drone, environment, and target, although it was left fairly empty due to time constraints.

In this case, the rough locations of the target(a painted QR code) and obstacle were known beforehand and a trajectory was generated to avoid them, until the drone got close enough to spot the target on the ship through its camera. Once the target could be seen, the drone would generate a new trajectory which would move it directly above the target. The video shows red dots around the target and a set of coordinate axes at the center of the target in the video on the right to show when the target has been recognized by the drone. It then modeled its behavior with a Kalman filter and determined a good time to intercept. In our case, we chose the peak of the target's path, as this provides the softest landing. All paths were generated using minimum jerk polynomial splines to ensure smooth motion.

The figure on the right shows the obstacle, the path generated to get close to the target, the path to directly hover over the target once it has been spotted, and the interception path at the end.

Unreal Engine Simulation of Quadcopter using MPC and Computer Vision — figure 2

Research with USC Otolaryngology lab

The purpose of this project was to test various treatments for reducing hearing loss due to traumatic noise exposure. To do this, mice were exposed to loud noise and then treated with various solutions to determine which ones reduced the loss of synapses connecting inner hair cells in the cochlea to the auditory nerve. My primary focus was creating a tool to automatically count, then allow for manual validation of the number of synapses. This involved enhancement of the raw data, feature recognition, and a user interface through which the automatic tool could be compared to the raw data.

Research with USC Otolaryngology lab — figure 1

Research with USC Haptics, Robotics, and Virtual Interaction Lab

Although I had several projects which I worked on with this lab, the main one involved creating an experimental setup to test the effects of imperceptible electric currents on virtual textures according to the theory of Stochastic Resonance. In other words, I designed, wired, and programmed a system to play various vibrational signals, test whether imperceptible electric currents would improve participants abilities to discriminate between the various vibrational signals, then helped do data analysis on the results.

Research with USC Haptics, Robotics, and Virtual Interaction Lab — figure 1

Custom PCB for Touch Sensing using Capacitance

Unfortunately, the audio for this has been deleted. I designed a custom Printed Circuit Board(PCB) in KiCAD using existing integrated circuits to detect capacitance at various pins on my PCB. When these pins are touched by humans, the capacitance at these pins changes, notifying the microcontroller without requiring any pressing force from the user,. This is the same way touch screens in phones work nowadays. The various colored lines in the video correspond to different pins being touched. The capacitance is measured by an integrated circuit and then displayed using a test board on the screen. It could also be used with a Teensy 4.0 microcontroller which is shown in the video, but the test board provided better graphs. This project required learning how to design PCBs, working with a PCB manufacturer to design both solid and flexible PCBs, extensive reading of manuals, and working with a couple communication protocols to interface between computer, controller, and PCB.

Air Hockey Robot

For my senior design project, I created an air hockey robot which could detect and react to an incoming puck. This project required the wiring of various components, electronic communication between processors, image analysis, programming, and design of many parts and the assembly. On the left is an image of the entire assembly and on the right is a video of the robot in action.

Air Hockey Robot — figure 1

Boba vending machine

The boba vending machine was a project which aimed to be able to provide boba tea with no human interference, aside from maintenance. Although it was not pursued commercially, due to worries of liability, a proof of concept was made, which could create a sealed cup of boba and tea with the push of a button.

Boba vending machine — figure 1