I study Electrical Engineering at Penn with a robotics focus. Embedded systems, electronics, and hardware-software integration are where I spend most of my time.

I like building systems from the bottom up: power rails, control logic, sensing, firmware, and the cloud path when needed. If something breaks, I want to know exactly which layer failed and why. Long term, I want to keep pushing toward medical and surgical robotics.

I am especially interested in robotics and medical devices because software eventually has to move something physical. If you want the technical details, my projects are where I document architecture decisions, debugging loops, and what changed between v1 and what actually shipped.

Let's connect: rellen26@seas.upenn.edu
Ritvik Ellendula

Ritvik Ellendula

Building stuff I find cool.

Move your cursor to play with the desk

Core engineering work

Embedded, robotics, and systems builds

All projects
EmbeddedFeatured
INT-01
Electromechanical Systems·Summer 2026

Vend-A-Shoe

I built a physical shoe vending machine where a Next.js web app writes a command, a Raspberry Pi worker polls roughly every 1 s, and 4 MG996R servos dispense the selected shoe.

Motivation: Vend-A-Shoe exists because the client needed a real unit, not a bench demo. The architecture is browser command -> Supabase queue -> Pi worker -> GPIO/PWM -> physical dispense. I integrated the enclosure, harness, power distribution, and control software so that path stayed reliable with 4 servos, 8 LEDs, and a fan in the same box. Early failures looked like software bugs; many were actually electrical and mechanical issues, including faulty servos and power mistakes. The useful debugging loop was isolating one layer at a time with a known-good actuator, a bench supply, and a meter before touching code.

Challenge: Fitting 4 servos, 8 LEDs, a fan, harness, Pi, and power conversion into a serviceable enclosure.

Raspberry Pi 4PythonRPi.GPIOMG996RLEDsCooling fan
ShippedClient Deployment
SystemsFeatured
P01
Compiler Systems·Spring 2026

C Compiler

OCaml compiler from a supported C subset to runnable x86-64, with TACKY IR and instruction fixups in between.

Motivation: I got tired of treating compilers like magic, so I started building one. Nora Sandler's book gave me the roadmap; I wrote the passes myself. Lexer and parser into an AST, then TACKY to flatten nested expressions, then stack-backed x86 with a fixup pass when memory-to-memory ops are illegal. Right now it honestly covers return constants and nested unaries like return ~(-2);. Broader C is next, but only after each stage stays correct.

Challenge: Direct AST-to-assembly stopped scaling once expressions nested.

OCamlRecursive DescentASTSemantic AnalysisTACKY IRx86-64
IteratingActively Expanding
PER Power Electronics Design Challenge media 1
HardwareFeatured
P18
Power Electronics · Design Challenge·Fall 2026

PER Power Electronics Design Challenge

Built a 12 V sensor-monitoring circuit with comparator thresholds, logic gating, and timing analysis; then compared buck regulators for 12-17 V to 5 V conversion.

Motivation: Independent engineering work for Penn Electric Racing's recruitment process; this is not PER vehicle hardware. I built and analyzed a threshold/logic/timing circuit where brake and current conditions must both be true before an indicator trips. The hard part was requirement interpretation and power-stage reasoning: 0.5 s behavior had to match spec language, and regulator choice had to include ripple, EMI, transient headroom, and thermal limits, not only nominal 5 V output.

Challenge: Response-time wording is easy to misread as a minimum delay.

Power ElectronicsCircuit DesignComparatorsBuck ConvertersEMICircuitLab
ShippedRecruitment design challenge
EmbeddedFeatured
P16
Electromechanical Systems·2025–2026

Automatic Tennis Ball Shooter

Designed and fabricated a client tennis-ball launcher prototype at BrainChild Engineering integrating ESP32 wireless control, dual RS-775 flywheel drive, NEMA 17 stepper feed, MOSFET motor switching, and 12V-to-5V power regulation into a modular electromechanical system.

Motivation: I built this at BrainChild Engineering for a client demo that had to leave USB babysitting. The work meant migrating from an Arduino Mega / Bluetooth path to an ESP32 that owned motor sequencing; driving dual RS-775 flywheels through MOSFET modules under MCU PWM instead of pot speed controllers; indexing balls with a NEMA 17 on an A4988; and splitting a fused 12 V pack so actuators stayed on the high rail while a buck fed 5 V logic. The MOSFETs are hard switches: PWM duty cycle sets average motor voltage, and the motor’s inductance / inertia smooth the pulses. Failures taught as much as the architecture: no buck at first left the ESP32 dead on battery, the stepper print was too flimsy until a denser reprint, and a PWM test oversped a motor so hard that the fuse did not open, buck / battery solder joints came off, and a wire melted. It stayed a prototype on purpose: enough for a Replit-controlled multi-motor demo, not a finished consumer launcher.

Challenge: 12 V pack without a buck converter left the ESP32 unable to run correctly off battery.

ESP32C++NEMA 17 StepperA4988RS-775 DC MotorsMOSFET Modules
ShippedClient prototype / demo
HardwareFeatured
P04
Electromechanical Systems·Spring 2026

Analog Electromechanical Lightsaber

Designed and fabricated a handheld electromechanical system integrating custom mechanical packaging, discrete analog electronics, embedded lighting control, and structural design into a durable wearable prototype.

Motivation: I built this in Detkin Lab as a handheld system that had to leave the breadboard. The work meant designing a custom Fusion 360 hilt, emitter, and battery carrier across multiple print revisions; integrating a discrete analog audio circuit (NE555 timer, RC network, PN2222A transistor) alongside LED blade illumination on a switched 9V power architecture; and manufacturing the boards with 40+ through-hole joints. The electronics were straightforward; the challenge was packaging them into a handheld device that could survive repeated impact and handling. Blade bending loads broke the hilt twice; cable length forced an LED pad salvage.

Challenge: Polycarbonate blade as a lever arm concentrated bending moment at the printed hilt.

Fusion 3603D PrintingNE555PN2222APerfboardThrough-hole Soldering
ShippedShipped Demo
EmbeddedFeatured
P03
Embedded Robotics·Spring 2026

BloomBot IoT

IoT flower for long-distance check-ins: proximity opens the bloom, and remote messages blink out in Morse on an LED heart.

Motivation: The idea was simple: people far apart should still have something physical to share. BloomBot lives on an Arduino UNO R4 WiFi with Blynk. Get close and an ultrasonic sensor drives the servos to open the flower. Send a message from the app and an LED heart inside blinks that message in Morse. LCD output helps when I cannot sit on serial during a demo. The cute part is the flower. The hard part was keeping WiFi, sensing, multi-servo peaks, and Morse timing honest on one board without brownouts.

Challenge: Power rails brown out under concurrent servo peaks without margin and sequencing.

Arduino UNO R4 WiFiBlynkWiFiS3ServosUltrasonicI2C LCD
ShippedShipped demo; next hardware revision
Machine LearningFeatured
P02
ML Systems·Spring 2026

MiniTorch-OCaml

Reverse-mode autodiff in OCaml: forward builds a graph, backward fills grads, gradcheck keeps me honest.

Motivation: Framework backprop always felt like a black box, so I wrote my own. Nodes store values, grads, parents, and ops. Forward grows the graph; backward walks it. Most bugs do not show up in the forward pass; they show up when a shared node silently gets the wrong accumulated gradient. Finite-difference gradcheck is what I trust. The tiny MLP with SGD/Adam is just a smoke test that the pieces still talk to each other.

Challenge: Gradient bugs rarely show in forward outputs.

OCamlAutodiffComputation GraphsGradient CheckingSGD/Adam
IteratingExtending operator coverage

More project work

More builds

Supporting projects, research tools, and experiments that shaped how I build.

Final 3D render of the ultrasonic sensor PCB
Hardware
P15
PCB Design·Summer 2026

Custom Arduino Sensor PCB

First complete PCB: KiCad schematic through two-layer layout and Gerbers for an Arduino Nano, HC-SR04, and status LED.

Motivation: I built this to learn the real board house pipeline, not to invent a fancy circuit. Custom HC-SR04 footprint from measured dimensions, two-layer routing with a ground plane, DRC, then Gerber and Excellon export for PCBWay. Breadboards were familiar. Owning symbols, copper, mask, and fab files was the point.

Challenge: Stock connector footprints did not match the real ultrasonic module.

KiCadArduino NanoHC-SR04Through-Hole PCBGerber
ShippedFabrication-ready Gerbers
Hyperloop VFD Design Challenge media 1
Hardware
P19
Power Electronics · Design Challenge·Fall 2026

Hyperloop VFD Design Challenge

Analyzed a three-phase variable-frequency drive from AC rectification through DC-link energy storage and PWM inverter control.

Motivation: Independent engineering analysis for Penn Hyperloop's recruitment process; this is not Hyperloop vehicle hardware. Maps 480 V three-phase AC through a diode rectifier, DC link, and PWM inverter so motor frequency/voltage control is understandable as a chain of energy conversions, with PWM carrier kept distinct from fundamental output frequency.

Challenge: Easy to confuse carrier frequency with fundamental frequency.

Power ElectronicsVFDThree-Phase ACPWMMotor Control
ShippedRecruitment design challenge
Afterthought landing page with dual-axis rating promise
Full-Stack
P17
Product Systems·Summer 2026

Afterthought

Built a deployed personal media archive that separates perceived film quality from personal impact, captures short post-watch reflections, and organizes them into a searchable theme-based knowledge base.

Motivation: I kept remembering that a movie was an 8/10 and forgetting why it stayed with me. Existing trackers are excellent at logging titles and scores; they lose scenes, questions, and takeaways. I designed Afterthought as a Next.js App Router product with dual-axis ratings (Overall vs Personal Impact), a hard 2–3 minute capture constraint centered on one prompt (“What stuck with you?”), browser voice notes with transcription and AI organization, TMDB-backed media identity, and a persistence boundary that runs on a seeded Zustand demo store or Supabase auth/Postgres/storage. The hard problem was not adding fields. A multi-section journal felt like homework, so I forced capture and organization apart: the user writes the thought; AI may suggest themes afterward, never overwrite the original.

Challenge: A richer schema (lessons, scenes, quotes, techniques) made post-movie capture feel like a questionnaire.

Next.jsTypeScriptReactSupabaseTMDB API
ShippedDeployed MVP
CIS 5450 loan default risk cover
Machine Learning
P05
ML Pipelines·Spring 2026

Loan Default Risk (CIS 5450)

Lending Club default model for CIS 5450: clean the data, kill leakage, then rank risk under a messy class balance.

Motivation: Course project on ~1M Lending Club loans. I filtered to paid vs charged-off, threw out post-outcome cheat columns like recoveries and total_pymnt, and only fitted transforms after the train/test split. Models went from logistic regression up to tuned XGBoost around 0.7175 AUC. Tuning barely moved the needle once the columns were honest. Accuracy was a trap with an 80/20 split, so I cared about AUC, PR, and the fact that a 0.5 threshold is not a business decision.

Challenge: Some of the strongest-looking columns only exist after default.

PythonPandasscikit-learnXGBoostimbalanced-learn
ShippedCourse project complete
Machine Learning
P06
ML + Tools·2026

LabReach AI

Research outreach helper: scrape lab pages, draft with a local LLM option, and never send until I review.

Motivation: Cold email prep was eating time, so I automated the boring parts and refused to automate the dangerous one. LabReach finds faculty pages, pulls context, drafts with Ollama when I want text to stay local, and writes a review artifact before Gmail can do anything. JS-heavy department sites break naive scrapers. That is fine. Guessing an email and blasting it is not.

Challenge: JS-heavy faculty pages break static scrapers.

PythonOllamaBeautifulSoupPlaywrightSQLite
IteratingCLI pipeline working; expanding campaign tooling
Video
Full-Stack
P07
Signal + Web·2025-2026

Count Coach

Dance practice tool: scrub a waveform, get BPM for that section, keep rehearsing.

Motivation: I kept losing time hunting song sections and tempos, so I built the tool I wanted. Pick a region on the waveform, send it for tempo analysis, get numbers back without breaking rehearsal flow. Started in Colab, ended as a deployed Next.js app with Python on the backend. When the selection edges are wrong, the BPM looks wrong, and dancers blame the model. Sync mattered more than fancy DSP.

Challenge: Selection boundaries must match what the analyzer hears.

Next.jsWaveSurferLibrosaPythonVercel
ShippedShipped personal practice tool

Official roles

Experiences

Internships and appointments; fewer entries, more ownership under a real org.

All experiences
BrainChild Engineering team in the workshop
InternshipOrgSummer 2026

Internships · Client / workshop builds

BrainChild Engineering

Hardware Engineering Intern

Built client electromechanical systems that had to leave the bench: enclosure, power distribution, embedded control, and cloud-triggered actuation.

Read role
LeCroy WaveMaster scope capturing high-speed pulses at Quantum Opus
InternshipOrgInternship

Internships · Plymouth, MI · SNSPD systems

Quantum Opus

Engineering Intern

Worked on SNSPD test benches: fiber setup, optical attenuation, and pulse capture on GHz oscilloscopes.

Read role
Stealth AI startup engineering cover
InternshipOrgApr 2026 – Jun 2026

Internships · Philadelphia, PA · Penn Innovation Award Winner

Stealth AI Startup

AI Engineering Intern

Instrumented and sped up a latency-sensitive conversational AI pipeline spanning Next.js, Pipecat Cloud, Daily WebRTC, Tavus, and LLM/TTS services.

Read role

What I'm usually thinking about

I like systems where code leaves the screen: queued commands, control loops, sensors, and physical mechanisms that have to work under real constraints.

Electrical Engineering @ PennRoboticsEmbedded systemsElectronics and powerCompilers and systems