Kevin Chen Purdue CS ’29
Vision Pick and Place Robot Portfolio
Overhead footage of a mouse with the tracking algorithm marking head and tail points frame by frame.
Featured above: Integration trial run - testing neural network framerate and accuracy in classifying OMR
Research

AutoOMR

Languages
Java, Python
Tools
PyTorch, OpenCV, JavaFX, NumPy, Matplotlib, Socket
When
2025–2026

Overview

The optomotor reflex (OMR) is a subconscious head rotation present in the majority of complex sight-seeing animals, and the frequency of OMR stimulation can be used to quantify one's vision.

For my Hillman Academy summer project, I developed AutoOMR, a neural-network driven prototype to autonomously stimulate and detect OMR, and sold this prototype to a Stony Brook University lab for $12,000.

A mouse positioned in the AutoOMR data-collection rig, framed by the rig hardware used to record its optomotor reflex response.

Hardware

The role of this tool's hardware is to stimulate OMR. To do so, I designed a custom Optodrum — a tool typically costing tens of thousands of dollars — by displaying moving stripes onto 4 monitors placed in a square orientation, and distorting the stripes to make the square chamber appear circular at the mice's point of view.

The AutoOMR hardware: four monitors arranged in a square around a central chamber, each displaying moving stripes distorted so the square enclosure reads as a circular drum from the mouse’s point of view.

Software

The role of this tool's software is to detect OMR. To do this, I placed an overhead camera to record the mice from an aerial view, and then labeled 5000+ images to train 2 neural networks: Single Shot Multibox Detector (SSD), and Long-Short Term Memory model (LSTM). SSD is used to identify ear and tail locations, allowing me to compute the head angle vector. The head angle is fed into LSTM, which classifies every frame as OMR or non-OMR.

A diagram of the AutoOMR detection pipeline: overhead camera frames feed a Single Shot Multibox Detector that locates the ears and tail, the resulting head angle vector is fed into an LSTM, and the LSTM classifies each frame as OMR or non-OMR.

Sample Trials