Projects
![]() |
SkinTrack: Using the Body as an Electrical Waveguide for Continuous Finger Tracking on the SkinYang Zhang, Junhan Zhou, Gierad Laput, Chris Harrison (CHI 2016) SkinTrack enables continuous touch tracking on the skin. It consists of a ring, which emits a continuous high frequency AC signal, and a sensing wristband with multiple electrodes. SkinTrack measures phase differences to compute a 2D finger touch coordinate. Our approach is compact, non-invasive, low-cost and low-powered. We envision the technology being integrated into future smartwatches, supporting rich touch interactions beyond the confines of the small touchscreen. |
![]() |
Writing a Kernel From ScratchClass project for 15-410/605 Operating System Design and Implementations Implemented a working kernel for the x86 single core architecture with the usual thread management, virtual memory management, system call services and driver implementations. Also implemented a bare bone Flood-it game, a user level thread library providing synchronization APIs along the way and finally modified the kernel to support user level thread message passing and user level device drivers. |
![]() |
FPGA-based Continous Skyline ComputationClass project for 18-643 Reconfigurable Logic: Technology, Architecture and Applications (MEMOCODE 2015) Using the Zedboard with the ZYNQ™-7000 SoC which contains a Dual ARM® Cortex™-A9 MPCore™ and programmable logic on a single chip, implemented the computation of the continous skyline problem on the ARM core while using the programmable logic as a hardware accelerator kernel to speedup the core computation. |
![]() |
Implementation of a MIPS machineClass project for 18-447 Introduction to Computer Architecture Using System Verilog, wrote a working synthesizable MIPS machine that can take in MIPS opcodes, later extended it to be five stages pipelined and have local and global branch predictions or data caches. At the end also wrote a functional C timing simulator for the MIPS machine to simulate the timing behaviors with branch predictions and caching. |
![]() |
Person Tracking Under Projector NoiseClass project for 16-720 Computer Vision Given a stream of video with a person in front of a projected screen and the actual stream of the projector input, implemented an extracting algorithm that can extract the foreground person from the background image dealing with the noise introduced by the projector overlaying the foreground person, and then can produce a video with the foreground person overlayed with the original projected screen so that people taking courses at home can see clearly where the instructor is pointing to while not seeing a blurry background presentation slide. |
![]() |
How Much Did It RainClass project for 10-701 Introduction to Machine Learning (A Kaggle Competition) Given snapshots of polarimetric radar values over fields, first did data processing to get rid of erroneous data and outliers, then used several machine learing algorithms to predict the hourly rain gauge total. |
![]() |
Sumobot CompetitionMy Bachelor Capstone Project done in Concordia University, Montreal Canada Compete in a sumobot competition where in a round arena two contestant and a referee robot stands, the goal is push the opponent out of the ring while staying in the ring and not touching the referee. The robot is autonomous using an ATmega8 as the main controller, reading inputs from various IR, contact and line sensors while controlling four motors and a servo. The robot have to perserve enough power to finish all the competition at one charge, so it dynamically adjust its output speed using PWM depending on combat, patrol or tracking mode. This is a limit of the budget for the robot so everything have to be used to the spot. |
![]() |
Cellrobot: A Modular Robot From the Future2013 Capital Challange Cup Extraordinary Prize Cellrobot is a modular robot, where the basic module aka "cell" can be attached to one another to form robots of all kinds of shapes and functions. Each "cell" have six attachable faces and a motor to allow it to spin by itself. By attaching cells together it gains DoF and can perform various actions as required. This version also had a detachable camera that can be installed to further expand it's capabilities. This project have later evolved into a startup company. |
Ballball: A Metamorphosis Multipurpose Robot2013 Beihang University Fengru Cup First Prize Ballball is a sphere shaped robot that can not only walk on its six legs but can also roll as a ball, it is remotely controlled using Zigbee and is capable of carrying a lightweight drone in its upper half sphere which can be dispatched. |
|
![]() |
Ellie: A Robotic Elephant Nose Using SMA2013 Beihang University Fengru Cup Second Prize Ellie is a robotic elephant nose mode with SMA (Shape Memory Alloy aka Muscle Wire), without using any electromechanicial moving parts and just relaying on the SMA itself, Ellie is capable of bending around like a real elephant nose, the tip of Ellie also have grasps that can grip onto things just like an elephant nose. The heating rate of the SMA is controlled to produce various stiffness of the SMA spring resulting in different bendings of the robotic nose. |
![]() |
A Novel HCI Interface Based on Computer VisionFunded by the National Undergraduate Training Programs for Innovation and Entrepreneurship in China Turning every surface into a touchscreen. Using a camera positioning at a surface, when a hand enters it can track the hand. Laying a microphone on the surface, it can pick up when that surface is touched. Combining those two and when and where the hand is touching is known, effectively making any surface a interactable touch screen. If intending to make a moniter a touchscreen, it can self calibrate the angle of the camera to get the perspective of the moniter, and when the finger is touched using Win32 APIs the system can treat this action as a normal mouse click. This later inspired my other project to get rid of projector overlaying noise to be able to also work with projector surfaces. |
![]() |
A Network of Networks on Earth’s HealthHonorable Mention for Interdisciplinary Contest in Modeling (ICM) in 2013 Built a two layer network model to predict Earth's health, where the networks on the first layer is the node on the second layer. The first layer is for modeling at the regional level, where each country have it's own policies to deal with it's own envirnment as well as the differences in natural and artificial envirnments. But the earth also acts as a whole as air and water polution etc. wouldn't be bounded by a region, it expands, so we also modeled a second network connecting all the regions together. We also experienced by enforcing or removing several policies how it would affect the outcome. |
![]() |
A Working Oscilloscope PrototypeJust For Fun... A working |
![]() |
Fixed Amplitude AmplifierSecond Prize for 2012 Beijing College-student Electronics Design Contest (TI Cup) Implemented a controlled gain amplifier that first sample the raw signal, then the msp430 microcontroller adjust the gain ratio so that the output signal's amplitude stays the same. It have to deal with signals in different frequency ranges. |
![]() |
Remote LED Display Monitor2012 Beihang University Fengru Cup Fourth Prize By attaching this device on to an LED display's pins and reading it's high/low level signals, it can infer what the LED is displaying. It can be setup that when the value goes below a certain reading to send a SMS to a given phone number alerting of the event. It can be used in places like setting this up onto an ammeter so that when the available electricity is below a certain level warns the user about it to buy more electricity. A GSM module is used to send SMS and is controlled via AT commands by the microcontroller. |
![]() |
A Calculator for Common China High School Math ProblemsWritten to do my high school math homework more efficiently... Written in VB, this program is a combination of several problems which each address a commonly met math problem, functionality includes: solving linear equations with two unknown variables, deciding if given number is a prime or factor it, getting the area of any triangle given the three side length, solving quadratic equation with single unknown variable, getting the greatest common divisor and least common multiple of two given numbers, switching bases for numbers (supporting binary up to the 35th base (used by z)), summing of common sequence numbers, an everyday basic calculator, solving the mean and variance of several numbers... |
![]() |
A Function Plotter and my Nickname as a FunctionMy first ever written program! (Aside from hello world) Written in VB, this program can plot any functions you give it, supports advanced functions like modulus, signed operations etc. Later added support for plotting in polar coordinates. The default function it plots is my nickname. By using a fast growing function like xx and taking the modulus of it by a constant number say 2, we can see that there seems to be more then one line appearing at the same time, and by expanding this phenomenon I was able to draw my nickname out with a function. |