Machine learning is usually taught with datasets that arrive pre-cleaned and pre-labeled. The interesting decisions, what to measure, how to represent it, and what to do when the signal is ambiguous, have already been made by someone else. SensDS exists to hand those decisions back to the student.
SensDS, for Sensing for Data Science, drives an Infineon BGT60TR13C 60 GHz radar sensor and takes a class through the whole loop: watch the micro-Doppler spectrogram move as you move, record labeled gesture captures, train a model on what the class just collected, and test it live. Each stage gets its own tab, so the pipeline stays visible rather than hidden behind a script.
The signal pipeline
Raw radar frames become spectrograms through a chain the interface exposes rather than conceals: a range FFT to resolve distance, moving target indication to suppress static clutter, and then a short-time Fourier transform across slow time to produce the micro-Doppler image that a Vision Transformer is trained on. Chirp parameters are configured through the Infineon SDK and surfaced in the interface, so the relationship between sensor configuration and the resulting image is something a student can change and see.
Novelty scoring
Classroom data is not lab data. Students gesture at the wrong distance, at the wrong angle, or invent a gesture nobody trained on. A PCA-based novelty score flags captures that fall outside the training feature space. This creates an opportunity to make distribution shift a thing students encounter directly rather than a term in a lecture. It also motivates on-device training as a design target, since the response to "the model has never seen this" is to retrain on the room you are in.
Deployment constraints
The system runs on Surface Pro hardware that schools actually have, not on a workstation. Getting inference to keep up meant reworking model selection and inference scheduling rather than assuming access to a dedicated GPU. It ships as signed macOS and Windows executables with a user guide because a tool that requires a Python environment to be configured is a tool that does not get used in a classroom.
In the browser
SensDS Web removes the install entirely. It connects to the radar over the Web Serial API from a browser tab, streams frames live, and reports what it is doing while it does it, down to the frame count and how many frames were dropped. The stages are the same ones the desktop build walks through, with room for more: visualize, collect, analysis, curve fit, train, test, results, and control of a VEX AIM robot.
The visualize tab is where the sensor stops being abstract. A live Doppler spectrogram scrolls as you move, with the time window, plot size, noise floor and spectrogram method all exposed as controls rather than buried in configuration. A student can change how the signal is computed and watch the picture change.
It also keeps score. Progress is tracked as levels and experience points, which is a small thing that does real work in a classroom: it gives a student who is not yet sure they belong in the room a reason to take the next step.