Projects
This page is an archive of my personal projects, which have varying degrees of polish. Unfortunately, projects completed for my undergraduate coursework are not open-source, but you can still read about our results.
PiE Robotics Kit
Pioneers in Engineering (PiE) is a volunteer-staffed organization at UC Berkeley that promotes STEM education among SF Bay area high schools. Every spring, PiE hosts a twelve-week robotics competition where high school students compete in teams to solve the challenges of that year's game. I co-lead engineering during year 11 (spring 2019).
Designed to give students hands-on engineering experience, the PiE robotics kit is a platform for building and operating a robot programmed in Python. The kit allows users to control sensors and actuators through a high-level API without deep technical expertise.
[repo] [docs]Video Compression Over Radio
Used audio frequency-shift keying, the AX.25 protocol, and APRS to transmit a video between two radios. On top of this layer, a lossy compression algorithm based on JPEG captures the salient features of each frame by:
- Mapping the RGB frames to YCbCr and downsampling the chrominance components
- Applying a discrete cosine transformation on each 8x8 block
- Applying zero-run-length encoding on the reordered and quantized coefficients
- Huffman coding the coefficient and run-length pairs
Signals and Systems Labs
Jupyter notebook programming assignments I helped develop as a teaching assistant for EE 120 at Berkeley. These labs guide students through implementing signal processing algorithms used in real applications and gives students practical experience with scientific computing libraries like NumPy and Matplotlib. I contributed labs about:
- Feedback control (using state-space and Laplace domain analysis to simulate satellite stabilization)
- Communication (amplitude modulation and on-off keying)
Turtlebot Steering
We implemented two control strategies for steering a Turtlebot into different positions: a bang-bang controller with proportional full-state feedback and a sinusoidal input controller. Both strategies generate nonholonomic motion by cycling through trajectories for controlling individual state variables. Parallel parking exemplifies this type of motion, where a car can move perpendicular to the direction it's facing by alternating between driving forwards and backwards.
[report] [video]