Bolt an FMCW radar, an ultra-wideband pulse radio, and a Wi-Fi card to the same bedroom ceiling. Record the same twenty people, at the same instant, through the same neural network. For the first time, the differences that remain are the physics — and the physics has a plot twist.
It is 3:12 in the morning in a care home. In room 14, an eighty-one-year-old resident has been turning over in bed, restlessly, for twenty minutes. Now she sits up on the edge of the bed. She stands. She takes four steps toward the bathroom in the dark.
Nobody knows any of this is happening.
If she makes it back to bed, the night nurse will never hear about the restlessness — even though restless nights, accumulating over weeks, are one of the earliest signals of health deterioration. If she falls, the first person to find out will be whoever opens the door at the 7 a.m. round. Four hours on a cold floor is the difference between a bruise and a hospital admission.
This is not a rare scenario, and it is getting less rare every year. By 2050, the global population aged over 60 is projected to reach 2.1 billion. Sleep problems are especially common in this group: a meta-analysis spanning 36 countries found that 40% of community-dwelling older adults experience poor sleep quality and 29% suffer from insomnia. These are not just uncomfortable numbers — poor sleep in older adults is strongly associated with increased fall risk, cognitive decline, dementia onset, and reduced quality of life. If you could watch the bedroom — reliably, continuously, every night — you could detect deterioration early, intervene in time, and catch the fall within seconds instead of hours.
The obvious answer is a camera. Cameras are cheap, activity recognition from video is a mature field, and a camera would see the restlessness, the sit-up, the walk, and the fall in exquisite detail.
And nobody wants one. A camera in a bedroom — pointed at a person at their most vulnerable, recording them asleep, undressed, confused — is a privacy intrusion that most residents, families, and caregivers find unacceptable. This is not a guess: a survey of 304 informal caregivers of people with dementia rated radio-frequency (RF) sensing systems 4.0 out of 5 for acceptability, against 3.1 out of 5 for camera-based systems. The gap is the whole story. The best sensor is the one that people will actually allow into the room.
Before choosing between radio technologies, be sure the premise holds: how can a radio wave detect a person turning over in bed at all?
Start with a wave leaving a transmitter on the ceiling. It travels down, hits the room — floor, bed frame, wardrobe, human — and a fraction of the energy scatters back up to a receiver sitting next to the transmitter. The received signal is a superposition: the sum of many delayed, attenuated copies of the transmitted wave, one copy per reflecting path. Engineers call the collection of paths the multipath environment.
Now the crucial observation. The wardrobe's echo is the same tonight as it was last night: same delay, same strength, same phase. The floor's echo is the same. Every static object contributes a contribution that is constant in time. But the person's echo is not constant. When she rolls over, the path length from ceiling to torso to ceiling changes — and even a few millimetres of change matters, because the radio wavelengths here are centimetres or millimetres. A path-length change of half a wavelength flips the phase of that echo completely.
That is the entire physical premise, and notice what it never involves: an image. The radio measures delays, phases, and amplitudes of invisible reflections. The "picture" of the bedroom it could reconstruct, even in principle, is blobs at coarse positions — which is exactly why the caregivers in that survey were more comfortable with it.
Notice also what the premise demands: separating the moving part of the signal from the static part. Every technology in this paper — and every preprocessing pipeline in Chapter 6 — is a different answer to the same two questions: how finely can you slice the room by distance, and how finely can you slice motion by speed? Hold onto those two questions; they will become the axes of every plot in this lesson.
Say you accept the RF premise. You now face an engineering choice, because three very different radio technologies all claim to do contactless human sensing, and they occupy three very different corners of the design space.
FMCW radar (frequency-modulated continuous wave) is the sensing-first option: a purpose-built radar chip, the kind that ships in cars for cruise control. It sweeps a wide band of millimetre-wave spectrum and measures distance and velocity with remarkable precision. It is mature, it is accurate — and it is only a sensor. It cannot send a single bit of data; it has essentially no communication integration.
Wi-Fi sensing is the opposite corner: a communication-first technology that happens to leak sensing information. Every Wi-Fi packet carries, as a by-product of demodulation, an estimate of the radio channel it travelled through — and a person moving through that channel perturbs the estimate. The seduction is obvious: Wi-Fi is already everywhere, so perhaps sensing comes for free, with minimal additional infrastructure. The catch, as we will compute in Chapter 4, is that Wi-Fi's bandwidth is tiny, and bandwidth is exactly the resource that buys spatial resolution.
IR-UWB (impulse-radio ultra-wideband) sits in the middle. It transmits extremely short pulses over a wide band — wide enough for sharp ranging, narrow enough to stay cheap and low-power — and it is a genuine IEEE communication standard (802.15.4z): the same commercial off-the-shelf (COTS) chip that senses can also transmit data. It offers higher range resolution than Wi-Fi while keeping full communication capability.
| FMCW radar | IR-UWB | Wi-Fi | |
|---|---|---|---|
| Identity | Sensing-first, communication: none | Middle ground: senses and communicates (IEEE 802.15.4z) | Communication-first, sensing as a by-product |
| Probe signal | Frequency-swept chirps | ~2 ns pulses | OFDM data packets |
| Bandwidth in this study | ~1.19 GHz | 499.2 MHz | 20 MHz |
| The promise | Precision | Balance | Ubiquity |
Which one should watch room 14? Before this paper, you could not answer that question from the literature — and the reason why is itself worth understanding, because it is a lesson in experimental design.
Hundreds of studies have evaluated FMCW radar, IR-UWB, or Wi-Fi for human activity recognition individually. Each reports an accuracy. So why not just compare the numbers?
Because the numbers were produced under wildly different conditions, and every difference is a confound — an uncontrolled variable that offers an alternative explanation for the result. Walk through what actually differs:
There is one more layer of confound hiding in the datasets themselves: most protocols instruct participants to repeat isolated actions — "wave your hand, twenty times, standing here." Repetition makes recognition easier and less realistic at the same time: it removes the messy transitions and execution variability of real behaviour, so the reported accuracy describes a task nobody actually needs solved.
| What prior work did | What it left uncontrolled |
|---|---|
| Single-modality studies: FMCW-only, UWB-only, or Wi-Fi-only papers | Everything — no comparison at all; accuracies live in incompatible experiments |
| IR-UWB with sensing-grade, non-IEEE hardware, monostatic | Results do not transfer to the cheap COTS communication chips a deployment would use |
| Wi-Fi HAR on commodity devices, bi-static (separate TX and RX boxes) | Geometry differs from any monostatic radar it might be compared against |
| SDR-based monostatic Wi-Fi radar (openwifi and similar) | Existed, but was used almost only for respiration-rate sensing — not HAR |
| Cross-radar studies (custom UWB + mmWave) for domain adaptation or fusion | Sensing-first, non-IEEE platforms with similar principles; modality never isolated as the variable |
| Radar-vs-Wi-Fi comparisons (Chen et al.; Dahal et al.) | Monostatic radar paired with a spatially separated Wi-Fi link — geometry and technology change together |
| Repeated-isolated-action protocols | Transitions and execution variability removed; accuracy describes an artificial task |
One more deliberate choice needs defending, because it makes the problem harder. Most prior work mounts the sensor on a wall or tripod, looking sideways at the person. Side-looking geometry maximises the radar cross-section — the effective area of the body that reflects energy back — because a standing human presents their full height and width to the beam. It is the flattering angle.
This paper mounts everything on the ceiling instead, and the reasons are practical rather than academic. A ceiling unit is out of reach, out of sight, and out of the way; it does not occupy a nightstand, cannot be knocked over or unplugged by a confused resident, and installs uniformly across hundreds of identical rooms. In real healthcare deployments, the ceiling is where the sensor will actually live. Yet ceiling-mounted sensing is comparatively rare in the literature — partly because looking straight down at a lying person yields a smaller, less favourable reflection. The paper deliberately evaluates the deployment that matters, not the one that flatters.
Here is where the story lands, stated now so that every chapter in between has a destination. On the fine-grained task — distinguishing ten activities like walking, sitting down, lying on the bed, restless movement, eating, clapping — the ultra-wideband pulse radio wins when the test person is new but the room is familiar: 89.0% macro F1, against 83.4% for FMCW and 79.0% for Wi-Fi. But when the room layout is new — the bed moved to a position the network never saw — the ranking flips: FMCW holds steady at 83.8% while IR-UWB drops about ten points to 78.5% and Wi-Fi to 68.8%.
The winner depends on the question. And — this is the beautiful part — the reversal is not noise or luck. It follows from decisions made deep in the signal processing, about whether to keep or throw away one particular axis of information. By Chapter 8 you will be able to predict the reversal before seeing the table.
Meanwhile, for the coarse question a care home actually asks at night — is the resident quiet, restless, getting up, or wandering? — all three radios exceed 92% macro F1 in every condition, including unseen layouts. The cheapest radio in this study costs about fourteen euros. Hold that thought until Chapter 9.
Return to the scenario that opened this chapter, and watch it again through the vocabulary the paper will formalise in Chapter 5 — because the scenario is the coarse label set, in order.
Every radio in this paper will classify this night correctly more than 92% of the time — even in a room whose furniture arrangement it has never seen. The suspense of the paper is not whether contactless sleep monitoring works; it is what happens when you ask the harder, finer question, and which physics survives it.
One more tool before the physics: the experimental-design ledger. Any controlled comparison lives or dies by its separation of varied from fixed, so hold this table in mind for the rest of the lesson — every result in Chapter 8 will be an entry in the first row explained by an entry in the second:
| What it is here | |
|---|---|
| The variable (deliberately varied) | The sensing modality: FMCW vs IR-UWB vs Wi-Fi — and, inseparably, each modality's physics-mandated preprocessing |
| The controls (held fixed) | Room, ceiling mount position, participants, activity executions (one shared recording!), time reference, labels, CNN architecture, evaluation protocols, metric |
| The stressors (systematically escalated) | Novelty of the test condition: unseen person → unseen layout combination → unseen bed position |
| The confession (limits the authors state) | Hardware and representation vary together, so the four explanatory properties cannot be causally isolated — the interpretation rests on consistency across results, not ablation |
That last row is worth respecting. Good papers tell you what they cannot conclude; this one does, explicitly. The lesson will flag the same boundary when we reach it.
One reading note. This lesson leans hard on hand arithmetic — you will divide 3×108 by various bandwidths more than once, on purpose. The three range resolutions (0.126 m, 0.30 m, 7.5 m) are the single most explanatory fact in the entire paper, and numbers you have computed yourself are numbers you believe.
"Why not a wearable?" Wearables work when worn. The population this monitoring serves — older adults, and especially people with dementia — forget devices, remove them, and resent them; a sensor that requires nightly compliance from the patient is a sensor that fails on exactly the bad nights. Contactless monitoring shifts the burden entirely off the person being cared for. (This is the standard motivation for the contactless framing the paper adopts; the paper itself takes non-intrusiveness as its starting requirement.)
"Why not a pressure mat in the bed?" A mat sees the bed and nothing else. The highest-stakes state in the whole label set — wandering, the resident walking the room at 3 a.m. — happens precisely when the person has left the instrumented surface. Room-scale sensing is the requirement; the bed is just one region of it.
"Why not a camera with on-device processing that never stores video?" Because acceptability is about trust, not architecture diagrams. A lens pointed at your bed is a lens pointed at your bed; the caregiver survey's 3.1/5 measures how people feel, and a privacy policy does not change what the hardware could do if compromised or misconfigured. RF sensing wins because the raw measurement itself — delays and phases — cannot embarrass anyone.
"Isn't a radar that tracks my movement also creepy?" A fair challenge, and the honest answer is a distinction: the radar reads that a body moved, roughly where, and how fast — the same information a floor creak gives a listener downstairs. It cannot read faces, expressions, clothing, screens, or documents. The caregiver survey suggests most people locate the creepiness line between those two bundles; a deployment still owes residents clear consent, which is why the paper's own protocol ran through two ethics committees.
"What about two people in the room?" Genuinely open. This study records one participant at a time, and nothing in this paper resolves the multi-person case — radar separation of multiple movers is an active research problem (easier with range and angle resolution, i.e. easier for FMCW than for Wi-Fi). File it with Chapter 9's open problems rather than the solved ones.
"If a 2026 paper had to build the fair comparison, what were RF-sensing companies shipping before it?" Products built on single-modality evidence and internal testing — which is exactly why a public, synchronized, open-data comparison matters. It converts "vendor A claims 95%" into "under identical conditions, here is what each physics can and cannot do."
| Paper section | What it does | Lesson chapter |
|---|---|---|
| I–II. Introduction, Related works | The need, the confound audit, the ceiling gap | Ch. 0 |
| III. System model | X[m,k], the s+d+w decomposition, per-technology physics | Ch. 1–4 |
| IV. Experimental setup | HomeLab, hardware, participants, layouts, labels | Ch. 2–5 |
| V. Methodology | Three preprocessing pipelines, the CNN, the protocols | Ch. 6–7 |
| VI. Results and analysis | The trade-off, fold-level and per-class forensics | Ch. 8 |
| VII–VIII. Deployment trade-offs, Conclusion | Localization, power, cost, communication; the verdict | Ch. 9 |
1. The confound hunt. Find any two published HAR accuracies for different sensing technologies (or imagine two: "radar 94%, Wi-Fi 87%"). List every uncontrolled difference you would need to rule out before attributing the gap to the technology. Check yourself: your list should include at least hardware class, mounting geometry, participants, activity protocol (isolated vs flowing), environment count, classifier, split design, and metric — eight axes, any one of which can span 7 points.
2. The acceptability ledger. For camera, wearable, pressure mat, and ceiling radar, write one sentence each on (a) what it observes, (b) when it fails silently, (c) why a resident might reject it. Check: the radar's silent-failure entry should worry you least for privacy and most for multi-person rooms — which this paper does not test.
3. Prediction, on the record. Before reading Chapter 8: write down which radio you expect to win fine-grained recognition with unseen people, and which will survive an unseen bed position best. Keep the note. The lesson is designed so that by Chapter 6 you will want to change your answer — and the change will be the learning.
Here is the situation on the ceiling of that bedroom. Three boxes hang side by side. One emits frequency-swept chirps sixty billion cycles per second fast. One spits out two-nanosecond pulses. One transmits ordinary Wi-Fi packets. Below them, a participant rolls over in bed — once.
Three completely different physical measurements now exist of that single roll. The FMCW radar recorded beat signals. The UWB radio recorded channel impulse responses. The Wi-Fi card recorded channel state information. Three names, three acquisition principles, three data formats — and if you leave them in three formats, you cannot compare them fairly, because every downstream choice (how to window, how to transform, what to feed the network) would have to be invented three times, differently.
The paper's first quiet contribution is a modelling move: all three measurements are the same kind of object. This chapter builds that object, because everything else in the paper — the preprocessing, the CNN inputs, even the final trade-off — is phrased in its language.
Recall the physical picture from Chapter 0: the received signal is a sum of delayed, attenuated echoes — the multipath environment. The environment itself does not care which radio probes it. The wardrobe reflects chirps, pulses, and packets alike; so does the person. Each technology is just a different question asked of the same dynamic channel:
Each question gets asked over and over, hundreds of times per second. So every technology naturally produces a sequence of snapshots of the channel. Stack the snapshots as rows and you get a matrix.
Read every symbol. The superscript j names the technology. The row index m is slow-time: it counts successive probes — chirp number, pulse number, packet number. The column index k is the fast dimension: it indexes within one probe's answer, and what it physically means depends on the technology. Each entry x(j)[m,k] is a complex number — an amplitude and a phase.
"Slow" and "fast" are radar jargon worth internalising, because the whole paper runs on this split. Fast-time events happen within one probe: the microseconds of one chirp, the nanoseconds of one pulse echo. Slow-time events happen across probes: the milliseconds between chirps, over which a human body actually moves. Human motion is glacial on the fast-time scale and lively on the slow-time scale — which is precisely why the two axes carry different information.
Each matrix entry is a complex number, and if that phrase produces any anxiety, spend ninety seconds here — the entire paper runs on one picture.
A complex number is an arrow: it has a length (the amplitude — how strong the echo is) and a direction (the phase — where in its cycle the wave was when it arrived). Radio receivers measure both, delivering each sample as an in-phase/quadrature (IQ) pair — the arrow's horizontal and vertical components. Adding echoes means adding arrows tip-to-tail: two echoes pointing the same way reinforce; two pointing oppositely cancel. That is multipath interference in one sentence.
Why insist on the arrow instead of just the length? Because the direction turns far more sensitively than the length grows. Move a reflector by one wavelength of round-trip path and its arrow rotates a full 360° while its length barely changes. At the wavelengths in this paper — 4.8 mm for FMCW, 4.6 cm for IR-UWB — that means millimetre- and centimetre-scale body motions produce enormous, easily measurable phase rotations. Amplitude sees the person shift; phase sees them breathe. Every "phase drift" crisis and "phase correction" triumph in Chapters 3 and 4 is about protecting this exquisitely sensitive direction measurement from being scrambled.
How many rows does the matrix have? If you observe for a window of duration w, and technology j delivers srj probes per second:
where w is the observation window in seconds and srj is the slow-time sampling rate of technology j. Concrete numbers from the paper's hardware, for the 2.5-second analysis window everything will use:
| Technology | Slow-time rate srj | Where it comes from | Rows in a 2.5 s window |
|---|---|---|---|
| IR-UWB | 150 Hz | One CIR every 6.67 ms (1 / 0.00667 s = 150) | 2.5 × 150 = 375 CIRs |
| Wi-Fi | 500 Hz (mean) | Packets every ~2 ms on average — irregular, the MAC layer decides | 2.5 × 500 = 1250 packets |
| FMCW | Frames every 50 ms; 96 chirp loops per frame | The chip transmits chirps in bursts (frames), not a steady stream | 2.5 / 0.05 = 50 frames of 96 chirps |
And the columns? The fast dimension Kj is where the three technologies genuinely differ, because it inherits its meaning from the acquisition physics:
For FMCW, k walks through the digitised samples of one chirp's beat signal — Chapter 2 will show these encode range as frequency. For IR-UWB, k walks through delay bins of the echo — range as arrival time, directly. For Wi-Fi, k walks through the 53 subcarriers of the OFDM signal — frequencies, from which range could in principle be computed, if only there were enough of them spanning enough bandwidth. (There are not. Chapter 4 is about exactly how "not".)
Now the payoff of stacking snapshots. Look down any single column k of the matrix — one delay bin, say, watched over hundreds of successive pulses. What does that column contain? Independently of the modality, each measurement splits into three parts:
Read the indices before the letters — they carry the meaning. The static term s(j)[k] has no m: it does not depend on slow-time. This is the wardrobe, the bed frame, the walls — every echo that is the same on probe one and probe one thousand. The dynamic term d(j)[m, k] depends on both indices: it is the structured variation in amplitude and phase induced by human motion, changing from probe to probe. The noise term w(j)[m, k] is measurement noise — also varying, but unstructured.
Say it in one line, because it is the most important line in the paper's system model:
Why is the structure of d along m so informative? Because a moving body changes path lengths continuously, and a continuously changing path length shows up as a steadily rotating phase in that column of the matrix. The rotation rate is proportional to the body's radial velocity. A Fourier transform along the slow-time axis therefore converts "phase rotation per probe" into a spectrum of velocities — the Doppler spectrum. Walking, sitting down, and restless turning each paint recognisably different velocity-versus-time signatures. This is the "smear pattern" of Chapter 0, now with math under it.
Make the decomposition concrete with a miniature example (illustrative numbers, not from the paper). Watch a single fast-time bin over five successive probes, with a static echo of 1.00 (constant phase 0°), a person's echo of amplitude 0.30 whose phase advances 60° per probe, and noise small enough to ignore:
| Probe m | Static s | Dynamic d[m] | Measured x[m] = s + d[m] |
|---|---|---|---|
| 1 | 1.00 ∠0° | 0.30 ∠0° | 1.30 ∠0° |
| 2 | 1.00 ∠0° | 0.30 ∠60° | 1.17 ∠12.8° |
| 3 | 1.00 ∠0° | 0.30 ∠120° | 0.89 ∠17.0° |
| 4 | 1.00 ∠0° | 0.30 ∠180° | 0.70 ∠0° |
| 5 | 1.00 ∠0° | 0.30 ∠240° | 0.89 ∠−17.0° |
Two things to notice. First, the measured signal wobbles in both amplitude and phase even though the static part never moved — a moving reflector superimposed on a static one modulates everything. Second, subtract the constant 1.00 from every row (that is "remove s") and what remains is a clean rotating phasor at 60° per probe: a single Doppler tone, whose frequency tells you the person's radial speed. Averaging along m to estimate s, then subtracting — you have just invented DC removal, the first step of the FMCW pipeline in Chapter 6.
One cell of the measurement matrix, watched down its slow-time column. Left: the arrows — frozen static echo (grey), spinning person echo (teal), and their sum (warm), which is what the radio actually measures. Right: the measured signal over slow-time, and its Doppler spectrum. Press the button to subtract the static component and watch the spectrum's giant zero-Doppler spike vanish, leaving only the person's tone.
Push the toy one step further and you have invented Doppler processing too. Take the six-probe extension of the dynamic column — the arrow at 0°, 60°, 120°, 180°, 240°, 300° — and feed it to a 6-point discrete Fourier transform. The DFT asks, for each candidate rotation rate, "how well does the data match an arrow spinning at exactly this rate?" At the candidate rate of one-sixth of a cycle per probe (= 60°), every de-rotated sample points the same way: the sum has magnitude 6 × 0.30 = 1.80 — a sharp peak. At every other candidate rate the six de-rotated arrows point in six symmetric directions and sum to zero. One peak, at the bin encoding the person's speed; nothing anywhere else. That peak, computed per range bin per window, is precisely what "Doppler spectrum" will mean for the rest of this lesson.
And now you can see why failing to remove s first would hurt: leave the constant 1.00 in place and the DFT finds a second, six-times-taller peak at rotation rate zero. In a real room the static echoes are not 3× the person's — they can be orders of magnitude stronger. The zero-Doppler ridge would tower over every motion signature, and any classifier looking at the map would spend its capacity on furniture. Clutter removal is not cosmetic; it is what makes the motion visible at all.
The decomposition names two enemies (s and w). Real hardware adds a third the equation hides: imperfections in the sampling itself — clocks that drift, packets that arrive off-schedule. Here is the full campaign map, as a preview of Chapter 6:
| Nuisance | What it does to X | FMCW's weapon | IR-UWB's weapon | Wi-Fi's weapon |
|---|---|---|---|---|
| Static clutter s[k] | Giant zero-Doppler ridge drowning motion | DC removal per frame (subtract per-range-bin mean over 96 chirps) | Running median over 10 s per range-Doppler cell | Running median over 10 s per Doppler bin |
| Noise w[m,k] | Random arrow jitter on every cell | Non-coherent sum over 12 virtual antennas | — (single channel; its structural weakness) | Magnitude average over 53 subcarriers |
| Sampling imperfection | Phase scrambled or grid warped | — (one chip, one clock) | TX/RX clock drift → first-path phase subtraction | MAC-layer packet jitter → interpolation to uniform 500 Hz |
Read the table's empty cells as carefully as its full ones. FMCW's row of "no problem" entries in the third line comes from being a single chip with a single oscillator — a hardware luxury. IR-UWB's empty cell in the second line — no diversity weapon at all — is the deficiency that will force its pipeline to keep the range axis in Chapter 6, which in turn becomes the hinge of the entire paper in Chapter 8. Structural weaknesses propagate a long way.
A natural worry about the slow-time rates: is 150 Hz, or 96 chirps per frame, actually enough? The question is Nyquist's, wearing radar clothes. The Doppler information rides on a phase that rotates as the person moves; sample that rotation too slowly and a fast rotation is mistaken for a slow one — aliasing, the wagon-wheel-spinning-backwards illusion. The unambiguous limit, as the paper states it:
where Tslow is the slow-time sampling interval — the chirp repetition period for FMCW, the frame or packet interval for IR-UWB and Wi-Fi. The logic: between successive probes the phase must advance less than half a turn (π), and the round-trip geometry contributes 4πvTslow/λ of advance — set them equal and solve. Check IR-UWB by hand: λ = 4.62 cm, Tslow = 6.67 ms,
and FMCW with the 0.52 ms repetition bound from its 96-chirps-per-50 ms frames: 0.00484 / (4 × 0.00052) ≈ 2.3 m/s. The paper's summary judgement: all three technologies comfortably exceed the velocities of typical in-room human motion — especially when seen from a ceiling, where a walking body's velocity is mostly horizontal and only its modest radial component (toward or away from the sensor) registers. The slow-time rates were chosen with this budget in mind; none of the failures in Chapter 8 will be aliasing failures.
With the measurement object defined, the task of the whole paper fits in one line. For each modality j, learn a classification function
mapping an observation matrix (one 2.5-second window of channel snapshots) to the activity label A of that window — one of ten fine-grained activities, or one of four sleep-disruption levels, defined in Chapter 5. Crucially, f will have the same architecture for all three modalities (Chapter 7), so that the quality of f's answers measures the quality of X(j)'s information — not the cleverness of a per-modality model.
| FMCW | IR-UWB | Wi-Fi | |
|---|---|---|---|
| Probe wave | Linear frequency chirp | ~2 ns impulse | OFDM data packet |
| Raw measurement | Beat signal per chirp | CIR per packet | CSI per packet |
| Slow-time m counts | Chirps (96 per 50 ms frame) | Pulse packets (150 Hz) | Wi-Fi packets (~500 Hz, irregular) |
| Fast axis k means | Beat samples → range as frequency | Delay bins → range as arrival time | Subcarriers → frequency response |
| Where the person shows up | In all three: as the dynamic component d[m,k] — structured variation along slow-time | ||
Every symbol the next eight chapters will use, in one table. Bookmark this — the paper's entire mathematical vocabulary is smaller than it looks:
| Symbol | Meaning | Introduced |
|---|---|---|
| X(j), x(j)[m,k] | Measurement matrix of technology j; complex entry at slow-time m, fast index k | Ch. 1 |
| m, Mj | Slow-time index (probe number); number of probes in a window, Mj = w · srj | Ch. 1 |
| k, Kj | Fast-dimension index; its size (Ns beat samples / Nf delay bins / Nc subcarriers) | Ch. 1 |
| w, srj | Observation window duration (2.5 s); slow-time sampling rate of technology j | Ch. 1 |
| s[k], d[m,k], w[m,k] | Static, dynamic, and noise components of a measurement | Ch. 1 |
| f0, B, Tc, μ | Chirp start frequency, swept bandwidth, chirp duration, chirp rate μ = B/Tc | Ch. 2 |
| τ, fb | Round-trip delay 2R/c; beat frequency 2μR/c | Ch. 2 |
| Δφ, Tr, λ, v | Inter-chirp Doppler phase 4πvTr/λ; chirp repetition period; wavelength; radial velocity | Ch. 2 |
| ΔR | Range resolution c/(2B): 0.126 / 0.30 / 7.5 m | Ch. 2–4 |
| Ap, τp, αp[m] | Amplitude and delay of multipath component p (CIR); its complex attenuation at slow-time m (CSI) | Ch. 3–4 |
| kfp | Fast-time index of the first path (the phase-correction reference) | Ch. 3 |
| fk, Nc | Frequency of subcarrier k; number of subcarriers (53) | Ch. 4 |
| RDM[p,q] / RDMW[k,q] | Range-Doppler map: FMCW per-frame per-antenna / IR-UWB per-window | Ch. 6 |
| S[t,q], Tbg, 𝒩 | Wi-Fi time-Doppler map; background-median span (10 s); temporal neighbourhood | Ch. 6 |
| Δv, Tobs | Doppler resolution λ/(2Tobs); coherent observation interval | Ch. 6 |
| vmax, Tslow | Unambiguous velocity λ/(4Tslow); slow-time sampling interval | Ch. 1 |
| f(·), A | The shared CNN classifier; the activity label of a window | Ch. 1, 7 |
1. Row counting. How many slow-time rows does each technology contribute to a 4-second observation? Worked: IR-UWB 4 × 150 = 600 CIRs; Wi-Fi 4 × 500 = 2000 packets (on average — the schedule is irregular); FMCW 4 / 0.05 = 80 frames of 96 chirps = 7680 chirps. Note which of those three multiplications hid an asterisk (the Wi-Fi one: mean rate).
2. Complete the decomposition. A fast-time bin over four probes reads 2.20, 2.35, 2.20, 2.05 (real part only, noise negligible). Estimate s and the amplitude of d. Worked: the mean 2.20 estimates s; the residuals +0, +0.15, +0, −0.15 oscillate with amplitude 0.15 — a sinusoid completing half a cycle per probe pair. You have just done DC removal by hand, again.
3. Nyquist audit. Suppose a cost-cut UWB configuration acquired one CIR every 20 ms instead of 6.67 ms. Recompute vmax and judge it. Worked: vmax = λ/(4Tslow) = 0.0462/(4 × 0.02) = 0.58 m/s. Marginal: brisk in-room radial motions would alias. The 150 Hz choice is not generosity; it is margin.
4. Spot the modality. A colleague hands you a measurement matrix: 1250 rows, 53 columns, sampled irregularly before interpolation. Which radio, and what window duration? Worked: 53 columns = OFDM subcarriers = Wi-Fi; 1250 rows at 500 Hz = 2.5 s. The matrix's shape alone identifies the physics — which is rather the point of this chapter.
How do you measure the distance to something using a wave? The obvious way: send a short blip, start a stopwatch, and time the echo. Light travels 30 cm per nanosecond, so a wardrobe 2 m away returns its echo after 13.3 nanoseconds. Build a nanosecond stopwatch and you have a radar. (That, roughly, is what IR-UWB does — Chapter 3.)
FMCW radar takes a sneakier route, and the sneak is worth savouring because it converts an impossibly fast timing problem into an easy frequency problem. Instead of a blip, transmit a chirp: a continuous tone whose frequency glides upward at a perfectly steady rate — like a siren sweeping from low to high. In this paper's hardware, the Texas Instruments IWR6843AOP, the sweep runs through the 60–64 GHz millimetre-wave band, covering roughly B ≈ 1.19 GHz of bandwidth per chirp.
Every symbol: Atx is the transmit amplitude; f0 is the start frequency of the sweep (around 60 GHz); μ = B/Tc is the chirp rate — how many hertz of frequency the sweep gains per second — where B is the swept bandwidth and Tc the chirp duration. Differentiate the phase and divide by 2π: the instantaneous frequency is f0 + μt, a straight line from f0 to f0 + B. That straight line is the whole trick.
The echo from a target at range R is a delayed replica of the transmitted chirp — delayed by the round trip time τ = 2R/c. Now do the one clever thing FMCW does: feed the echo and the live transmit signal into an analog mixer, a device that multiplies them. Multiplying two sinusoids produces sum and difference frequencies; low-pass filtering keeps the difference. And what is the difference in frequency between a ramp and a delayed copy of itself?
Picture the two ramps on a frequency-vs-time plot (the simulation below draws exactly this). At any instant, the transmit ramp has been climbing for τ seconds longer than the echo ramp. Since both climb at μ Hz per second, the vertical gap between them is constant: μτ. The mixer output is therefore a single steady tone — the beat signal — at the beat frequency:
where R is the target's range and c the speed of light. Range has become pitch. A nanosecond-scale delay — hopeless to time directly with cheap electronics — now lives as a kilohertz-scale audio-band frequency, which an ordinary ADC samples comfortably and an FFT reads off instantly. Multiple targets? Each produces its own tone; the FFT of one chirp's beat signal is the room's range profile, one spectral peak per reflector.
For the algebra-inclined, the mixer's magic in three lines. The transmit phase is θ(t) = 2π(f0t + μt²/2); the echo carries θ(t − τ). The mixer forms the product and the low-pass filter keeps the term oscillating at the phase difference:
Read the three terms. The middle one, 2πμτ·t, grows linearly with time — a tone at frequency μτ: the beat. The first, 2πf0τ, is a constant phase offset — and a treasure: it contains the carrier's view of the delay, and it is this term that shifts by 4πvTr/λ between chirps when the target moves, giving us Doppler below. The last, πμτ², is a tiny fixed residual (for τ in nanoseconds, negligible). One multiplication, and delay has been split into a frequency you can read cheaply and a phase you can track precisely.
Nothing in the FMCW principle requires millimetre waves — automotive radars run at 77 GHz, older systems at 24 GHz. Three converging reasons put this sensor at 60–64 GHz. First, spectrum: multi-gigahertz swaths of contiguous unlicensed bandwidth exist up there, and Chapter 2's central formula says bandwidth is range resolution — the ~1.19 GHz sweep that buys 0.126 m cells simply does not fit in the crowded bands below 6 GHz. Second, geometry: antenna elements are sized to the wavelength, and at λ ≈ 5 mm an entire 3×4 antenna array fits on the chip package — that is what the "AOP" in IWR6843AOP means, antennas-on-package. No PCB antenna design, no RF layout expertise, no external components: the radar is genuinely single-chip, which is what makes the ~EUR 20 price of Chapter 9 possible. Third, phase sensitivity: the shorter the wavelength, the more phase rotation per millimetre of motion — at 5 mm wavelengths, sub-millimetre body motions are measurable, which is the raw material of micro-Doppler.
The trade, honestly stated: millimetre waves attenuate faster, reflect more specularly, and barely penetrate obstacles — a person behind a wardrobe door is gone. In a single bedroom with a ceiling vantage, none of these bite hard; across a whole apartment they would.
How far apart must two objects be before their beat tones are distinguishable? Two targets at ranges R and R + ΔR produce beats separated by Δfb = 2μΔR/c. But a tone observed for only Tc seconds has a spectral width of about 1/Tc — the fundamental FFT resolution limit. The tones are resolvable when their separation exceeds that width:
The chirp rate cancels against the chirp duration, leaving only the swept bandwidth B. This is the single most important formula in the paper — it will decide the fates of all three radios. Plug in FMCW's numbers, by hand:
Twelve point six centimetres. A lying adult occupies roughly a dozen of these range cells; a seated one, several. The radar does not see "a person" — it sees head-echo, torso-echo, knee-echo in separate bins, each with its own motion. Keep this number next to the ones coming in Chapters 3 and 4: 0.126 m vs 0.30 m vs 7.5 m — a bandwidth ratio of roughly 2 : 1 : 0.04.
Let us compute an actual beat tone for a target 2 m below the ceiling. We need the chirp rate μ = B/Tc, so we need a chirp duration. The paper's Table II fixes the exact timing; what the text gives us is that 96 chirp loops fit in each 50 ms frame, which bounds the repetition period per loop:
The active chirp is somewhat shorter than the repetition period (frames include idle time between chirps — a fact we will actually measure from the paper's own Doppler resolution in Chapter 6). For the arithmetic, take an illustrative Tc = 0.52 ms:
Two thousand billion hertz per second of sweep rate. Now the delay for R = 2 m:
And the beat:
A 13-nanosecond delay — the time light takes to cross a bedroom and return — has become a 30 kHz tone, squarely in the range of a modest ADC. Sanity-check the resolution claim while we are here: a second target at 2.126 m (one range cell further) beats at fb + 2μ(0.126)/c = fb + 1.92 kHz, and 1.92 kHz is exactly 1/Tc = 1/0.52 ms — one FFT bin. The algebra closes.
Drag the range slider. The top panel shows transmit and echo chirps on a frequency-vs-time plot — the echo's delay τ is exaggerated for visibility, but the readouts use the real numbers derived above (μ = 2.29 × 1012 Hz/s). The vertical gap between the ramps is the beat frequency; the bottom trace is the beat signal itself, whose pitch grows with range.
Play with the extremes. At 0.5 m the ramps nearly coincide and the beat is a lazy low tone; at 6 m the gap widens and the beat races. The mapping is perfectly linear — double the range, double the pitch — which is why one FFT recovers every reflector's distance simultaneously.
Range came from within one chirp (fast-time). Velocity comes from between chirps (slow-time) — exactly the split Chapter 1 promised. Write the measurement matrix for a single target, as the paper does:
Symbols: A the echo amplitude; k the ADC sample index within a chirp, sampled at rate fs, so the first phase term is the beat tone playing out along fast-time; m the chirp index; w[m,k] complex Gaussian noise. And the second term:
is the inter-chirp Doppler phase shift: v the target's radial velocity, Tr the chirp repetition period, λ the wavelength. The intuition: between two chirps, a target moving at v changes the round-trip path by 2vTr; each wavelength of path change is 2π of phase; hence 2π · 2vTr/λ. A static target (v = 0) has constant phase from chirp to chirp; a moving person's phase rotates, at a rate proportional to speed.
Feel the sensitivity with numbers. At mid-band, 62 GHz, the wavelength is λ = c/f = (3 × 108)/(62 × 109) ≈ 4.84 mm. For a body moving at a gentle v = 0.5 m/s with Tr = 0.52 ms:
Thirty-nine degrees of phase per half-millisecond, from strolling speed. Millimetre waves are exquisitely sensitive motion detectors — a quarter-wavelength of body sway, just over a millimetre, is already 90° of round-trip phase. This is why a radar on the ceiling can see a sleeper's restlessness at all.
Two sanity checks on the phase-shift formula before moving on. Direction: a target moving toward the radar shortens the path, so the phase advances one way; moving away, the other — the sign of the rotation encodes approach versus retreat, which is why Doppler axes run from negative to positive velocities with static clutter at zero. Aliasing: the rotation must stay under half a turn per chirp to be unambiguous — Δφ < π gives v < λ/(4Tr) ≈ 2.3 m/s with our derived numbers, the vmax budget from Chapter 1, comfortably above indoor radial speeds seen from a ceiling.
Look at the single-target matrix again: the phase advances linearly in k (rate set by range) and linearly in m (rate set by velocity). A linear phase is exactly what a Fourier transform turns into a sharp peak. So take a frame of 96 chirps and apply a 2D-FFT — one FFT along fast-time k, one along slow-time m. The result is the range-Doppler map (RDM): a 2D image with range on one axis, radial velocity on the other, and each moving reflector lighting up a pixel at its (distance, speed) coordinate. A person mid-stride is not one pixel but a little constellation — torso at walking speed, one leg swinging faster, the other planted — the micro-Doppler signature that makes activities recognisable.
Stylised time-Doppler signatures of four of the paper's activity classes, painted live (illustrative shapes, not recorded data). Velocity on the vertical axis, time flowing left; zero-Doppler in the middle. These textures — the walking braid, the stand-up surge, the anxious flicker, the clap spikes — are what the CNN actually learns to recognise, and note that not one of them requires knowing where the person is.
Micro-Doppler deserves a moment, because it is the actual feature the CNN will learn. A rigid object — a drone, a car — occupies one velocity at a time; its Doppler trace is a clean line. A human is a walking mechanism of hinged parts, each with its own instantaneous radial velocity: during a stride, the torso translates steadily while the swinging leg briefly moves at twice torso speed and the planted foot sits at zero. Plot Doppler versus time and a walker paints a characteristic braid — a strong torso ridge with periodic limb flourishes above and below it. A stand-up paints a single asymmetric surge (torso accelerating upward, then braking). Restless in-bed motion paints low-velocity flicker with no locomotion ridge. Clapping paints brief, sharp, near-symmetric spikes. These textures are what distinguish the ten classes of Chapter 5 — and notice that none of them require knowing where the person is. That observation is FMCW's entire strategy in Chapter 6.
One more hardware gift. The IWR6843AOP carries 3 transmit and 4 receive antennas on the package. Each transmit–receive pairing measures the scene along a slightly different effective path, so the chip synthesises Nr = 3 × 4 = 12 virtual channels — twelve independent range-Doppler maps per frame, from one chip. (The paper defines a virtual antenna simply as a TX–RX antenna pair.)
Why does 3 × 4 give 12 independent looks rather than 7 antennas' worth? Because what matters is the pair: the signal that TX antenna i sends and RX antenna j receives traverses a path whose geometry depends on both endpoints. Each of the 12 (i, j) combinations samples the wavefield as if a separate little radar sat at a distinct effective position — the "virtual" array. The chip time-multiplexes the three transmitters (they take turns, chirp by chirp, within each frame — part of why the frame's coherent time in Chapter 6 will turn out shorter than 50 ms), and the four receivers listen in parallel; software reassembles the 12 channels.
Twelve looks buy two things. In general radar practice they buy angle: the phase differences across the virtual array locate a target's direction, which is how FMCW will later claim genuine 3D localization (Chapter 9). In this paper's recognition pipeline they buy something humbler and, it turns out, decisive: diversity for noise suppression. Sum the twelve RDM magnitudes and the person's echo — present in all twelve — reinforces, while noise — independent across channels — averages down. Chapter 6 performs exactly this non-coherent summation, and Chapter 8 credits it as one of the four properties behind FMCW's robustness.
A useful way to file this chapter: FMCW's design keeps making the same purchase. Wide bandwidth buys sharp range cells. Twelve channels buy signal-to-noise. Millimetre wavelength buys phase sensitivity. Every purchase is aimed at one goal — isolating the moving person's return cleanly from everything else — and in Chapter 6 that clean isolation is precisely what licenses the radical move of throwing the position information away. FMCW spends lavishly on spatial resolution in order to be able to afford not using it.
| FMCW ingredient | Value here | What it buys |
|---|---|---|
| Swept bandwidth B | ~1.19 GHz (60–64 GHz band) | 0.126 m range cells — body regions separated from clutter |
| Mixer + beat signal | fb = 2μR/c (≈30 kHz at 2 m) | Cheap ADC reads nanosecond delays as audio-band tones |
| Chirp train | 96 loops per 50 ms frame | Inter-chirp phase → velocity; 20 Doppler snapshots/s |
| Wavelength λ | ≈4.8 mm | 39° of phase per chirp at 0.5 m/s — micro-Doppler texture |
| Virtual array | 3 TX × 4 RX = 12 channels | Non-coherent SNR gain now; 3D localization capability later |
Concept without realization is decoration, so here is the entire FMCW measurement model as runnable NumPy — simulate one frame's beat signals for a moving target, then recover its range and velocity with the 2D-FFT. Every constant comes from this chapter's arithmetic.
# One FMCW frame: 96 chirps of a target at R=2 m moving at v=0.5 m/s import numpy as np c, B, Tc = 3e8, 1.19e9, 0.52e-3 # speed of light, sweep, chirp time mu, lam = B/Tc, 4.84e-3 # chirp rate 2.29e12 Hz/s, wavelength Ns, Nc, fs = 256, 96, 256/Tc # fast samples, chirps, ADC rate R, v = 2.0, 0.5 k = np.arange(Ns); m = np.arange(Nc)[:, None] # fast, slow indices fb = 2*mu*R/c # beat: 30.4 kHz dphi = 4*np.pi*v*Tc/lam # 0.68 rad per chirp X = np.exp(1j*(2*np.pi*fb*k/fs + dphi*m)) # Eq. (8), noise-free rng = np.fft.fft(X, axis=1) # fast-time FFT -> range rng -= rng.mean(axis=0, keepdims=True) # DC removal, Eq. (13) rdm = np.abs(np.fft.fftshift(np.fft.fft(rng, axis=0), axes=0)) # RDM pk = np.unravel_index(rdm.argmax(), rdm.shape) print("range bin", pk[1], "=", pk[1]*c/(2*B), "m") # ~2.0 m print("doppler bin", pk[0]-Nc//2, "->", (pk[0]-Nc//2)*lam/(2*Nc*Tc), "m/s")
Run it and the peak lands at range bin 16 (16 × 0.126 ≈ 2.0 m) with a positive Doppler bin matching 0.5 m/s to within one bin width.
Change R and watch the peak slide along the range axis; change v and watch it slide along Doppler; add np.random.randn noise and watch the peak stand above it.
Fifteen lines — and you have implemented Equations (6)–(8), (12) and (13) of the paper.
"The beat frequency is the Doppler shift." No — and this confusion ruins many first readings of FMCW. The beat frequency (tens of kHz here) encodes delay, i.e. range, via the ramp geometry; it exists for perfectly static targets. Doppler lives somewhere subtler: in how the beat signal's phase shifts from one chirp to the next (0.68 rad per chirp at 0.5 m/s). Fast-time frequency = where; slow-time phase = how fast. The 2D-FFT separates them precisely because they live on different axes.
"Finer range resolution means seeing farther." Unrelated. ΔR = c/(2B) sets how close two reflectors can be and still be distinguished; maximum range is set by transmit power, antenna gain, and ADC bandwidth. This paper's contest happens entirely within a bedroom, where all three radios reach everything — the fight is over resolution, never reach.
"More chirps per frame would fix FMCW's coarse Doppler resolution." Only by lengthening the coherent interval: Δv = λ/(2Tobs) cares about time observed, not samples taken. Packing 192 chirps into the same 26 ms would halve vmax aliasing headroom… nothing about Δv. To match IR-UWB's 0.009 m/s, FMCW would have to integrate coherently across ~50 frames — and then it would blur every posture transition that unfolds within them. Chapter 6 returns to this trade with the paper's actual numbers.
1. The two-target room. A bed frame at 1.5 m and a person at 2.6 m. Using μ = 2.29 × 1012 Hz/s, compute both beat tones and check they are resolvable. Worked: fb1 = 2μ(1.5)/c = 6.87 × 1012 / 3 × 108 = 22.9 kHz; fb2 = 2μ(2.6)/c = 39.7 kHz. Separation 16.8 kHz » the 1.92 kHz FFT bin width — nearly nine bins apart. The mixer has turned furniture arrangement into a chord.
2. Doubling the bandwidth. A hypothetical 2.38 GHz sweep: what happens to ΔR, and does fb at 2 m change if Tc stays fixed? Worked: ΔR halves to 0.063 m (c/2B). The chirp rate doubles to 4.58 × 1012, so fb doubles to ~61 kHz — finer resolution costs ADC bandwidth. Nothing in radar is free; it is all exchanged.
3. Phase per chirp, revisited. A restless sleeper's torso moves at 0.1 m/s. How many chirps until the Doppler phase accumulates a full turn? Worked: Δφ = 4π(0.1)(5.2 × 10−4)/(4.84 × 10−3) = 0.135 rad per chirp; a full 2π needs 2π/0.135 ≈ 47 chirps — comfortably within one 96-chirp frame, which is exactly why a single frame can register such slow motion at all.
4. Break it. Predict what the range-Doppler map looks like if you forget DC removal in the NumPy snippet. Then actually delete that line and run it. Expected: a bright ridge across the entire zero-Doppler row — every static echo, un-suppressed — dwarfing the moving target's peak. Chapter 1's toy DFT warned you; now you have seen it in pixels.
Clap your hands once in a canyon. The sound bounces back from every rock face, and each echo arrives at a time proportional to the distance of the surface that produced it: nearby boulder first, far wall last. Listen to the full pattern of returns and you have, quite literally, measured the shape of the canyon along the line of hearing.
Impulse-radio ultra-wideband is that clap, executed in radio. Where FMCW spread its energy over a long sly chirp, IR-UWB does the direct thing Chapter 2 called impossible: it transmits an extremely short pulse and actually times the echoes. The reason it stops being impossible is bandwidth. A pulse's duration is roughly the reciprocal of its bandwidth — and "ultra-wideband" is defined as an absolute bandwidth exceeding 500 MHz. Do the division for this paper's radio:
Two nanoseconds. In two nanoseconds light travels 60 cm — so echoes from surfaces more than ~30 cm apart in range arrive as separate, non-overlapping blips. The canyon-clap picture holds at bedroom scale.
Formally, the received echo pattern from one transmitted pulse is the channel impulse response (CIR) — the multipath environment of Chapter 1, now measured directly in the delay domain:
Every symbol: the sum runs over propagation paths p — each distinct route the pulse can take from transmitter to receiver (direct, via the bed, via the person's torso, via the wall-then-floor…). Ap is the complex amplitude of path p (how much energy, with what phase), τp is its delay (how long the route took), δ is the ideal impulse, and n(t) is noise. The CIR is the room's fingerprint in time: static objects contribute constant taps; a moving person makes some taps breathe in amplitude and rotate in phase — the s + d decomposition again, path by path.
Each transmitted UWB packet yields one CIR. The receiver samples it as complex in-phase/quadrature values at nanosecond resolution along fast-time; successive packets stack as rows. So the measurement matrix is simply
— the m-th packet's CIR evaluated at delay bin τk. Rows are packets (slow-time), columns are delay bins (fast-time), and the fast axis maps directly to range. No mixer trick needed: delay is measured as delay.
Walk along the fast-time axis of a single ceiling-mounted CIR and meet its inhabitants in arrival order. (Delays below are computed from illustrative geometry — a sensor pair 30 cm apart, furniture a couple of metres away — at light speed, 30 cm per nanosecond one-way.)
| Arrival | Path | Illustrative delay | Character |
|---|---|---|---|
| 1st | First path (FP): TX antenna → RX antenna directly, ~30 cm | ~1 ns | Huge, static, can saturate the receiver — and, next section, becomes the clock reference |
| early | Ceiling and mounting-hardware reflections | a few ns | Strong, static clutter crowding the early bins |
| middle | Ceiling → bed / person ~2 m below → ceiling (≈4 m round trip) | ~13 ns | The signal: taps that breathe and rotate when the person moves |
| late | Multi-bounce paths: wall → floor → wall… | tens of ns | Weak, increasingly noise-like reverberation tail |
The map from bin index to place in the room is fixed by the sampling: complex IQ values at nanosecond resolution mean each fast-time step is roughly 15 cm of one-way distance (30 cm of round trip — consistent with the 0.30 m range bins derived below). The person two metres under the sensor lives around bin 13 and, unlike FMCW where range had to be decoded from beat frequencies, here you could point at the column of the matrix and say "that one is the bed". This directness — the fast axis literally being a map of the room — is worth savouring now, because the decision of whether to let the classifier see that map becomes the paper's pivot.
The range resolution formula from Chapter 2 was pure bandwidth — ΔR = c/(2B) — and it applies to any ranging waveform, pulses included. The paper's radio operates in UWB channel 5, centred at 6.49 GHz with B = 499.2 MHz. By hand:
Thirty centimetres per delay bin — the 60 cm of two-nanosecond light-travel, halved because the echo path is out-and-back. Compare the two radars honestly: FMCW slices the room into 0.126 m cells, IR-UWB into 0.30 m cells — about 2.4× coarser. A lying body spans a dozen FMCW cells but only a few UWB cells. Both, however, are a different species from what Wi-Fi will manage in the next chapter.
| FMCW (this paper) | IR-UWB (this paper) | |
|---|---|---|
| How range is measured | Delay → beat frequency, via mixer | Delay measured directly, per 2 ns pulse |
| Bandwidth B | ~1.19 GHz at 60–64 GHz | 499.2 MHz at 6.49 GHz |
| ΔR = c/(2B) | 0.126 m | 0.30 m |
| Wavelength λ | ≈ 4.8 mm | c / (6.49 × 109) ≈ 4.6 cm |
| Receive channels | 12 virtual (3 TX × 4 RX) | 1 |
| Also a communication radio? | No | Yes — IEEE 802.15.4z COTS silicon |
The UWB node in this study is deliberately humble: a Qorvo QM33120WDK1 development kit built on the DW3000 transceiver — the same family of chips that does secure car-key ranging and phone-to-tag finding, roughly seven euros apiece at volume. This choice is itself a scientific statement. Most prior UWB sensing research used sensing-first, non-IEEE research radars — excellent instruments that no product would ever ship. The DW3000 is the opposite: an IEEE 802.15.4z-compliant communication chip, mass-produced, already inside consumer devices, whose CIR output is a diagnostic by-product. If this chip can monitor a bedroom, the result transfers directly to hardware that exists at scale — which is exactly the deployment-relevance argument the paper is built on.
The setup uses two nodes: a transmitter with an omnidirectional antenna and a receiver with a directional antenna aimed at the monitored area, each driven by its own Nordic nRF52840 board, placed about 30 cm apart on the ceiling. The antenna asymmetry is a sensible little optimisation: the transmitter floods the whole room (omni — every corner gets illuminated), while the receiver concentrates its limited sensitivity on the area that matters (directional — more gain toward the bed, less toward the mounting hardware behind it).
Two boxes sounds bi-static — but 30 cm of separation is tiny compared to the metres-scale distances to everything in the room. For a target 2 m away, the two nodes' viewing directions differ by roughly atan(0.3/2) ≈ 8.5° — nearly the same look angle, so geometrically the pair behaves like a single radar at one spot: pseudo-monostatic. The comparison with FMCW's ceiling position stays fair. One CIR is acquired every 6.67 ms, giving the slow-time rate
— 150 snapshots of the room's impulse response per second, comfortably fast for human motion.
Now the flaw that nearly ruins the cheap two-box design. The transmitter and receiver run on separate boards with separate clocks: no shared oscillator, no common time base. Two "identical" crystals never tick identically — they drift relative to each other, and the drift wanders with temperature and time. To the receiver, that drift is indistinguishable from every echo's phase rotating in unison, a time-varying phase drift smeared across the whole CIR.
Why care? Because phase is where the fine motion lives. At 6.49 GHz the wavelength is λ = (3 × 108)/(6.49 × 109) ≈ 4.6 cm, so a path-length change of a single centimetre swings the round-trip phase by 2π · 2/4.6 ≈ 1.6 rad. Work the softest case that matters clinically: a sleeper's restless shift moving the torso's reflection point by 5 mm changes the round-trip path by 10 mm, and the tap's phase by
— nearly a quarter turn of the arrow, from half a centimetre of body motion. Meanwhile that same 5 mm changes the tap's amplitude imperceptibly. Breathing, restless shifting, the slow roll of a sleeper — centimetre-scale motions — are enormous in phase and nearly invisible in amplitude. Throw away phase and you have thrown away the sensitivity that justifies the radar.
Now the size of the enemy. Crystal oscillators are specified in parts per million; a garden-variety ±20 ppm crystal at a 6.49 GHz carrier corresponds to a frequency disagreement of up to 6.49 × 109 × 20 × 10−6 ≈ 130 kHz between the two boards (typical spec arithmetic, not a paper measurement). Against a motion signal whose interesting content lives below a few tens of hertz, an uncorrected offset of even a minuscule fraction of that is a hurricane against a whisper. Use phase raw and the drift buries everything; the phase axis becomes a record of crystal thermodynamics, not human behaviour.
Formally — this is the correction of De Moerloose et al. that the paper adopts:
Symbols: kfp is the fast-time index of the first-path sample; ∠x[m, kfp] is its phase in packet m, taken as that packet's phase offset; multiplying every sample of the CIR by e−j(that phase) rotates the whole response so the first path sits at phase zero, always. What survives is exactly the part that differs from the reference — the activity-induced phase variations of the moving-body taps, now coherent across slow-time and usable.
Notice the beautiful economy: the correction costs one complex multiply per sample, requires no extra hardware, no calibration ritual, no synchronisation cable — and it is the entire difference between "two seven-euro boards" and "a phase-coherent radar". Notice also the contrast being set up: Chapter 4's Wi-Fi platform gets phase stability the expensive way, by physically sharing one clock between transmit and receive. Same problem, two philosophies.
One last preprocessing decision belongs to the physics of this chapter. The useful activity information rides on multipath components beyond the first path — the FP itself is just the TX–RX line-of-sight hop and says nothing about the room. Worse, the earliest delay bins are routinely corrupted: the receiver can saturate on the strong direct arrival, and strong static reflections (the ceiling the radar is bolted to) crowd the early bins. The paper therefore discards the first 12 fast-time samples of every CIR — the pre-FP region and the FP itself — and keeps the rest. At nanosecond fast-time spacing that is on the order of 12 ns of delay, i.e. roughly the first couple of metres of round-trip range: the immediate neighbourhood of the sensor, sacrificed to protect everything beyond it.
Top: one live channel impulse response — tap magnitude versus delay bin. The first-path spike sits at the left (with the discarded early bins shaded), the person's tap breathes around bin 13. Bottom: the person's tap phase tracked over slow-time — the millimetre-motion signal. Toggle the clock drift of the two unsynchronised boards, then apply the first-path correction and watch the buried sinusoid come back from the dead.
Honest engineering means naming the residue. The first-path subtraction assumes the FP tap is a perfect, static, cleanly measured reference — and each assumption leaks a little. The FP's own phase estimate carries measurement noise, and subtracting a noisy reference adds that noise to every corrected tap. If anything ever moves near the direct TX–RX line (a hand reaching toward the sensor during maintenance, vibration of the mount), the "static" reference briefly is not. And drift within one packet's nanoseconds-long capture, as opposed to between packets, is not addressed — mercifully tiny, but not zero. The paper will later point to exactly this — "residual phase instability from the unsynchronised transmitter and receiver" — as a co-culprit in IR-UWB's one recurring failure mode: occasionally missing subtle activity altogether, classifying 13% of EATING windows as NO ACTIVITY under LOPO. A corrected phase is a rescued phase, not a perfect one; against FMCW's and openwifi's born-coherent phases, IR-UWB starts each window with a small handicap it must overcome with its other virtues.
An engineer's first instinct is to attack the hardware: share a clock and the whole drift problem vanishes, as it does for openwifi. Worth a moment to see why the software fix wins here. Run a coax cable between the nodes and you have constrained the installation (two ceiling boxes now tethered), added connectors and cost, and thrown away the flexibility of placing TX and RX independently. Network time protocols synchronise to microseconds — six orders of magnitude too coarse for carrier phase at 6.49 GHz. A shared external oscillator is what sensing-grade research radars do, and it is exactly the road this paper refuses on principle: the point is to test the COTS chips a product would ship. The first-path correction costs one complex multiply per sample, zero hardware, zero installation constraints — and rescues the phase to the level the results require. When a signal-processing fix substitutes for a hardware requirement, the bill of materials wins.
The first-path correction and the per-bin Doppler transform, exactly as the paper defines them (Equations 14–15), on a simulated drifting CIR stream:
# 375 packets (2.5 s at 150 Hz) x 40 delay bins; person breathing at bin 13 import numpy as np M, K, kfp = 375, 40, 1 t = np.arange(M)/150.0 drift = np.cumsum(np.random.randn(M))*0.3 # clock phase random walk (rad) motion = 1.36*np.sin(2*np.pi*0.3*t) # 5 mm sway -> 1.36 rad, 0.3 Hz cir = 0.05*(np.random.randn(M,K)+1j*np.random.randn(M,K)) cir[:,kfp] += 1.0*np.exp(1j*drift) # first path: drift only cir[:,13] += 0.5*np.exp(1j*(drift+motion)) # person: drift + motion xt = cir * np.exp(-1j*np.angle(cir[:,[kfp]])) # Eq. (14): subtract FP phase xt = xt[:,12:] # discard first 12 bins rdm = np.abs(np.fft.fftshift(np.fft.fft(xt, axis=0), axes=0)) # Eq. (15) f = np.fft.fftshift(np.fft.fftfreq(M, 1/150.0)) rdm = rdm[np.abs(f) <= 25] # crop to +/-25 Hz print("peak at", f[np.abs(f) <= 25][rdm.max(axis=1).argmax()], "Hz") # ~0.3
Comment out the correction line and rerun: the drift's random walk smears energy across the whole ±25 Hz band and the 0.3 Hz breathing peak disappears. One line of algebra separates a working radar from a broken one — run both versions and you will never forget why the correction exists.
1. Bin bookkeeping. A wardrobe stands 3.2 m from the sensor (radar range). Which UWB range bin does its echo occupy, and could it share a bin with a person at 3.0 m? Worked: bin index ≈ 3.2/0.30 ≈ 10.7 → bin 10; the person at 3.0/0.30 = bin 10 as well — they share. At FMCW's 0.126 m: bins 25 and 23 — separated. This is "coarser bins isolate less cleanly" as arithmetic.
2. The drift budget. If residual (uncorrected) phase error were 0.1 rad per packet, what apparent motion would it mimic at λ = 4.62 cm? Worked: phase 2π corresponds to λ/2 = 2.31 cm of round-trip-half path change, so 0.1 rad ↔ 2.31 × 0.1/(2π) ≈ 0.37 mm per packet — at 150 Hz that is a spurious 5.5 cm/s "velocity" floor. Sub-millimetre phase hygiene is not pedantry; it is the sensing floor.
3. Design flip. Suppose the receiver, not the transmitter, had the omnidirectional antenna. What changes? Reasoned answer: illumination of the room would narrow (directional TX lights only the aimed region) while reception broadens — the monitored area shrinks to the beam intersection either way, but now motion outside the TX beam is never illuminated at all. The paper's arrangement (omni TX, directional RX) floods the room with signal and spends the directivity on receive sensitivity toward the bed — the better bargain when the interesting region is known.
4. Break the reference. In the NumPy snippet, add a slow phase ramp to the person's tap only (not the FP), rerun, and confirm the correction preserves it. Then add the ramp to the FP only and watch it leak into every corrected tap. Moral: the correction transfers the reference's own corruption to everyone — the reference must be cleaner than the signal, which is why the static LOS hop, and only it, qualifies.
Tally the hand of cards this radio brings to Chapter 8. Strengths: true delay-domain ranging with 0.30 m bins; a 4.6 cm wavelength whose phase (once rescued) registers millimetre-scale motion; a 150 Hz snapshot rate; native IEEE 802.15.4z communication; and a bill of materials around fourteen euros. Weaknesses: a single receive channel — no 12-look diversity, so its per-bin signal-to-noise ratio is inherently weaker than FMCW's summed dozen; coarser range cells than FMCW; and a phase that is only as good as the first-path correction. Remember "one receive channel, weaker per-bin contrast" — in Chapter 6 it will force a preprocessing choice (keep the range axis rather than collapse it) that in Chapter 8 becomes the entire story of why IR-UWB wins one contest and loses another.
There is already a radio transmitter in the bedroom. It has been there for years. It is the Wi-Fi access point, and it floods the room with 20 MHz of modulated radio energy hundreds of times per second, every time it moves a packet. The most seductive idea in RF sensing is simply: can we read the reflections we are already making?
The answer is yes, with two enormous asterisks, and this chapter earns both of them honestly. One asterisk is physics (a range resolution so coarse it exceeds the room). One is engineering (the measurement you need is one that no commodity Wi-Fi chip will give you). The paper's Wi-Fi platform is a small tour de force precisely because of asterisk two.
Wi-Fi transmits using OFDM — orthogonal frequency-division multiplexing. Instead of one fast signal on one carrier, the 20 MHz channel is divided into many narrow subcarriers, each carrying a slow trickle of data in parallel; this platform exposes Nc = 53 of them. Think of the channel as a comb of closely spaced test tones spanning the band.
Why does Wi-Fi bother with the comb? For communication's own sake: a single fast signal in a multipath room smears into itself (each symbol's echoes arrive on top of the next symbol — inter-symbol interference), whereas many slow parallel signals each see the channel as approximately flat and are easy to equalise. OFDM was invented to make multipath harmless to data. The delicious irony of Wi-Fi sensing: the very mechanism designed to neutralise the channel's structure is what forces the receiver to measure that structure, packet after packet — and the measurement is the sensor.
Here is the gift. To demodulate a packet at all, the receiver must figure out what the propagation channel did to each subcarrier — how much each tone was attenuated and phase-shifted on its way over. That per-subcarrier estimate is the channel state information (CSI), and it is computed for every received packet as a routine part of communication. Sensing piggybacks on it: the person in the room is part of the channel, so the person is in the CSI.
Every symbol: the sum again runs over propagation paths p; αp[m] and τp[m] are the complex attenuation and delay of path p at packet (slow-time) m; fk is the frequency of subcarrier k; w[m,k] is noise. Compare with the UWB CIR of Chapter 3: the same paths, the same α's and τ's — but observed through the frequency domain. Each subcarrier sees the sum of all paths, each path contributing a phase twist proportional to its delay times that subcarrier's frequency. The CSI is the Fourier-domain shadow of the impulse response.
The decomposition of Chapter 1 lands on schedule: paths bouncing off static furniture have essentially constant αp and τp — the static component s[k]. The person's paths have time-varying αp[m] and τp[m], producing dynamic variation d[m,k] in both amplitude and phase across the packet stream. Motion is visible. That much works.
Now the first asterisk. In principle you could inverse-Fourier the CSI back into a CIR and read off delays, exactly like UWB. How finely? Same law as always — range resolution is bought with bandwidth and nothing else:
Seven and a half metres per range bin. The bedroom is smaller than the bin. Every echo in the room — bed, wardrobe, torso, arms, legs, walls — lands in one delay cell, premixed before any algorithm gets to look.
It is worth seeing why the same formula applies even though nothing here looks like a pulse. The CSI is the channel's frequency response sampled at the subcarrier frequencies; inverse-Fourier-transform it and you get the channel impulse response — CSI and CIR are a Fourier pair, the same object in two domains. But a Fourier transform of samples spanning bandwidth B can only resolve delay features coarser than 1/B: delay resolution 1/(20 MHz) = 50 ns, and 50 ns of round trip is 7.5 m of range. The 53 subcarriers do fix the unambiguous delay span (plentiful — hundreds of metres), but resolution comes only from total bandwidth, and total bandwidth is 20 MHz. UWB earned its 0.30 m by spending 499.2 MHz; Wi-Fi's 20 MHz buys exactly the 7.5 m it gets. Same law, no appeal.
Line up the three rulers a final time:
| FMCW | IR-UWB | Wi-Fi | |
|---|---|---|---|
| Bandwidth | ~1.19 GHz | 499.2 MHz | 20 MHz |
| Bandwidth ratio | ~2 | 1 | 0.04 |
| ΔR = c/(2B) | 0.126 m | 0.30 m | 7.5 m |
| A lying body spans | ~a dozen cells | a few cells | a fraction of one cell |
| Room vs one cell | room » cell | room » cell | room < cell |
This is not an implementation weakness that a cleverer algorithm fixes. It is information that was never captured. Whatever Wi-Fi sensing achieves, it must achieve without knowing where in the room the motion is.
Now the engineering asterisk, and it explains the strangest line item in this paper's bill of materials. Everything above assumed you can receive your own reflections — a monostatic radar, transmit and receive at one spot on the ceiling, matching the geometry of the other two radios.
Commodity Wi-Fi chipsets cannot do this, and the reason is worth feeling in your bones. Listening to your own echo means receiving a whisper during your own shout: the direct leakage from the transmit chain into the co-located receiver is vastly stronger than any echo off a human two metres away — the echo has flown metres, spread, and reflected off a poorly reflective body, while the leakage crossed centimetres of circuit board. A communication chip has no reason to fight this battle; its designers assume you are either transmitting or receiving, never both, so the hardware and firmware simply do not expose the reflected-signal CSI in the presence of simultaneous transmission. No COTS chipset does. That is why nearly all Wi-Fi sensing research is bi-static — a separate transmitter and receiver across the room, where the direct path is at least an air-gapped, attenuated one — which is exactly the geometry confound Chapter 0 complained about. And it is why prior monostatic Wi-Fi radar work, on SDR platforms, had ventured only as far as respiration-rate sensing — never full activity recognition. This paper is the first to push the monostatic Wi-Fi radar into the HAR arena, precisely so it can stand on the same ceiling as the other two.
The paper's solution is to abandon commodity silicon and build the radio from source: a ZedBoard FPGA with an AD-FMCOMMS2-EBZ RF front-end, running openwifi — an open-source software-defined-radio (SDR) implementation of IEEE 802.11a/g/n in which every layer, down to the physical-layer channel estimator, is inspectable and modifiable. With full control of the PHY, the platform transmits packets and captures the CSI of their own echoes: a genuine monostatic Wi-Fi radar on the ceiling.
Packets are transmitted at a mean interval of 2 ms — a mean slow-time rate of srWi-Fi = 500 Hz, the fastest of the three radios. But note the word mean: Wi-Fi is connection-based, packets go out only when the medium-access (MAC) layer permits, so the sampling is irregular. Chapter 6 will have to repair that jitter (by interpolation onto a uniform grid) before any Fourier transform can be trusted — timing jitter corrupts exactly the phase that the shared clock so carefully preserved.
Put yourself in the classifier's position and watch one subcarrier's arrow over a second of packets. The static room pins it at some resting point — the vector sum of all the frozen paths. When the person moves, their paths' arrows rotate and stretch, and the total arrow traces a wobbling orbit around the static point. The speed of the wobble tracks the body's radial velocities: slow breathing writes a slow sway; a stand-up writes a fast excursion; walking writes sustained oscillation as the body's paths sweep through wavelengths. Now look across the comb: subcarrier 1 and subcarrier 53 sit at different frequencies, so each path's phase twist e−j2πfkτp differs between them — the same motion paints 53 slightly different wobbles. Averaging their magnitudes (as Chapter 6 will) firms up the common story: how much motion energy, at which fluctuation rates. What no amount of cross-subcarrier cleverness recovers, at this bandwidth, is which paths — and therefore which body part, at which location — produced each component of the wobble.
So the Wi-Fi representation that reaches the CNN is a legitimate Doppler signature — genuinely informative about motion intensity and rhythm — with two congenital blind spots: no place axis, and limited ability to separate simultaneous motions. Predict, before Chapter 8 shows you, which fine-grained classes suffer most: the ones distinguished mainly by where they happen (bed transitions vs chair transitions) and the ones distinguished by fine articulation (clap vs wave vs eating). Both predictions will land.
Before the experiment, see all three chapters at once. The simulation draws the bedroom from above — ceiling sensor in the centre, bed and chair on the floor, a person moving about. Switch radios and watch the room be sliced by each one's range resolution: 0.126 m rings, 0.30 m rings, or a single 7.5 m bin that swallows everything.
Top view; the dot on the ceiling marks all three co-located sensors, rings mark range-bin boundaries at each radio's ΔR. The moving dot is a person; the highlighted band is the range bin currently containing them. Count how many bins separate the bed from the walking path in each case — that is the spatial information each radar could use, or overfit to.
Three observations to take from the toy. With FMCW's rings, the person crosses a bin boundary every step — position is richly encoded, and the bed occupies its own distinct set of rings. With IR-UWB's rings, the same structure exists but chunkier — a few bins cover the walking area, and bed versus chair may share bins. With Wi-Fi, the entire room is one undifferentiated bin: the person walking and the person turning in bed produce motion in the same cell, distinguishable only by their velocity signatures. Hold this image; it is the visual form of the trade-off that Chapter 8 measures.
Given two genuine radars on the same ceiling, why include the crippled one? Three reasons, all fair. First, the counterfactual matters: Wi-Fi's promise of sensing-with-existing-infrastructure is repeated in a hundred papers, and testing it against real radars under identical conditions is precisely the comparison the literature lacked. Second, communication: Wi-Fi is the only one of the three that is already a data network; if its sensing were good enough, one device would do everything. Third, the physics question is genuinely open: with zero range resolution but the fastest sampling and full phase stability, how much activity information survives in Doppler alone? The honest answer — most of it for coarse classes, much less for fine ones — is one of the paper's most useful findings.
| FMCW | IR-UWB | Wi-Fi (openwifi SDR) | |
|---|---|---|---|
| Geometry | Monostatic (one chip) | Pseudo-monostatic (2 nodes, 30 cm) | Monostatic (shared TX/RX clock) |
| Phase stability | Shared clock — stable | Separate clocks — drift, corrected via first path | Shared clock — stable by construction |
| Slow-time rate | 96 chirps / 50 ms frame | 150 Hz, regular | 500 Hz mean, irregular (MAC) |
| Range information | 0.126 m bins | 0.30 m bins | none usable (7.5 m > room) |
| Native communication | none | IEEE 802.15.4z | IEEE 802.11 — it is the network |
The Wi-Fi pipeline's essence — interpolation, per-subcarrier STFT, magnitude averaging (Equation 17) — in code you can run on any recorded CSI stream:
# Irregular CSI packets -> uniform grid -> per-subcarrier STFT -> averaged map import numpy as np from scipy.signal import stft from scipy.interpolate import interp1d # t_pkt: (M,) irregular arrival times; csi: (M, 53) complex channel estimates grid = np.arange(t_pkt[0], t_pkt[-1], 1/500.0) # uniform 500 Hz csi_u = interp1d(t_pkt, csi, axis=0)(grid) # complex interp maps = [] for k in range(53): # per subcarrier f, tt, Z = stft(csi_u[:,k], fs=500, nperseg=200, # 0.4 s window noverlap=175, return_onesided=False) # 0.35 s overlap maps.append(np.abs(Z)) S = np.mean(maps, axis=0) # Eq. (17): average 53 keep = np.abs(np.fft.fftshift(f)) <= 80 # crop +/-80 Hz S = np.fft.fftshift(S, axes=0)[keep] S -= np.median(S, axis=1, keepdims=True) # running-median (toy: global)
Note the honest simplification flagged in the last comment: the paper's clutter removal is a running median over a 10 s neighbourhood per Doppler bin, not a global one — swap in a sliding median_filter along the time axis for the real thing, and remember it costs 5 s of latency when centred.
Everything else is the pipeline verbatim: 500 Hz grid, 200/175 STFT, 53-subcarrier magnitude average, ±80 Hz crop.
A reasonable protest: commodity chips can do bi-static sensing — why insist on the exotic monostatic mode? Because the comparison would have dissolved. A bi-static pair puts the receiver across the room: different illumination geometry, different sensitivity pattern (bi-static Wi-Fi is famously most sensitive on the ellipse between TX and RX), a second box to install and power, and a link whose phase is corrupted by the very offsets the shared clock eliminates. The moment the Wi-Fi geometry differs from the radars' ceiling spot, every observed difference is "geometry or physics?" all over again — the Chapter 0 disease. The paper's choice is the scientifically expensive one: build the hard monostatic platform so that Wi-Fi stands on the same ceiling with the same viewpoint, and its 20 MHz gets a genuinely fair — and therefore genuinely damning — hearing. Deployments that can accept two boxes and uncontrolled geometry may find bi-static Wi-Fi more useful than this paper's monostatic scores suggest; what they cannot claim is single-anchor ceiling parity.
1. The bandwidth you would need. What channel bandwidth would give Wi-Fi the same 0.30 m resolution as IR-UWB? Could 802.11 provide it? Worked: B = c/(2ΔR) = 3 × 108/0.6 = 500 MHz. Some modern Wi-Fi standards do define 160–320 MHz channels — but this platform's 20 MHz is the classic 802.11a/g/n case that openwifi implements, and even 320 MHz would still be shy of the target. Bandwidth is the whole game; the exercise is the proof.
2. Delay-domain thinking. Convert the room: at delay resolution 1/B = 50 ns per tap, how far apart in range are two adjacent CIR taps derived from this CSI? Worked: 50 ns of round trip = 50 × 0.3/2 = 7.5 m — the same number as always, arrived at through the time domain. If the identical answer keeps appearing from every direction, you have understood the constraint rather than memorised it.
3. Jitter damage estimate. The mean packet interval is 2 ms. If a packet arrives 0.5 ms late and you pretend it was on time, how large is the phase error for a Doppler component at 40 Hz? Worked: a 40 Hz component advances 2π × 40 × 0.0005 = 0.126 rad ≈ 7° per half-millisecond of timing error — per packet. Accumulated across a window, uncorrected jitter of this size smears the upper Doppler band; hence interpolation before any FFT, and hence cropping at ±80 Hz where content still survives.
4. Design a counter-experiment. Sketch how you would test whether Wi-Fi's layout overfitting (Chapter 8) comes from amplitude patterns or phase patterns in the CSI. One good answer: retrain the same CNN on magnitude-only vs phase-only versions of the same windows under LOBPO; whichever input reproduces the ~10-point drop carries the layout fingerprint. The open dataset makes this an afternoon, not a proposal.
Good experiments are mostly a list of temptations resisted. This chapter walks through the measurement campaign the way a reviewer would — asking, at each design choice, what shortcut was refused here, and what would it have cost?
The dataset was collected in the HomeLab in Zwijnaarde — a residential test house built by Ghent University and imec for evaluating IoT, smart-home, and healthcare systems. Not an anechoic chamber, not a lab with cable trays and metal benches: a house, with a bedroom furnished the way an assisted-living room is furnished — a bed, a chair, a table. The multipath environment being sensed is the realistic one, clutter and all.
All three sensing systems — the IWR6843AOP, the two UWB nodes, the openwifi SDR — were mounted on the ceiling above the bed and stayed bolted there for the entire campaign. That fixity matters more than it looks: it means every recording, across every person and every furniture arrangement, shares an identical sensor position. The sensors are the constant; everything else is the experiment.
Now the choice that defines the study. The three modalities recorded simultaneously, against a common time reference. Not "the same protocol repeated three times", not "matched sessions on different days" — the same physical seconds. When participant 7 stands up from the chair in layout 3, that one stand-up exists in the FMCW stream, the UWB stream, and the Wi-Fi stream, sliced by the same timestamps.
Two engineering notes make the simultaneity workable. First, the three radios occupy widely separated spectrum — the FMCW chirps at 60–64 GHz, the UWB pulses around 6.49 GHz, the Wi-Fi packets in their own 20 MHz channel — so all three can shout at once without stepping on each other's measurements. Second, a common time reference means one set of activity annotations serves all three streams: label the event once, and every modality's windows inherit the same ground truth. Fairness in the data and fairness in the labels, from one clock.
A model that memorises "motion at 2.1 m of range = getting out of bed" is not recognising activity — it is recognising furniture. To measure that failure mode, you need the furniture to move. So the campaign created six room layouts by relocating the bed and the chair between recordings, while the ceiling sensors stayed fixed.
The layouts are not interchangeable difficulty-wise, and the paper is specific: layouts 1, 2, 5, and 6 place the bed beneath or close to the radar; layouts 3 and 4 push it farther away or at a less favourable orientation — deliberately harder conditions for in-bed activity recognition. Seated activities get harder the farther the chair sits from the radar, or the wider its angle to the sensing direction. Keep the split "1-2 / 3-4 / 5-6" in mind: Chapter 7 will turn these pairs into the cruellest of the three cross-validation protocols, and Chapter 8 will show one radio caring deeply about which pair is withheld while another barely notices.
A total of 20 participants completed the protocol across the six layouts — 14 male, 6 female, aged 21–67, heights 159–189 cm, weights 50–92 kg — yielding up to 120 person-scenario recordings. The spread matters: radar signatures scale with body size and motion style, so a model trained on one physique can stumble on another. (Chapter 8 reports the reassuring result: within this sample, no modality showed systematic dependence on height, weight, age, or gender — with the honest caveat that 20 people cannot settle demographic robustness in general.) The protocol and consent were approved by the ethics committees of KU Leuven (SMEC, G-2024-8332) and Ghent University, with written informed consent from every participant — the required table stakes for bedroom monitoring research.
How do you get natural behaviour out of an instructed session? The campaign's answer: text-to-speech (TTS) instructions describing realistic actions in context — "Walk to the left side of the bed", "Sit down on the edge of the bed", "Go to the bathroom and wait there for a moment". Participants were free to execute each action with their own gait, posture, and speed.
Contrast this with the dominant alternative — "perform activity 4, twenty times" — which produces clean, repetitive, transition-free clips that flatter every classifier. Flowing instructions preserve what deployment actually contains: the walk into the sit-down, the fidget before the lie-down, the variability between people. The paper also concedes the remaining artificiality without being asked: the timing of each action is still externally cued rather than fully spontaneous. Directed theatre, not surveillance footage — but with real transitions intact.
Each TTS instruction was mapped to a label during annotation — and here the paper does something quietly clever: it derives two label sets from the same recordings, because two different customers ask two different questions of a bedroom monitor.
The fine-grained set serves general healthcare activity recognition, with ten classes:
| Class | What it captures |
|---|---|
| NO ACTIVITY | No relevant movement in the monitored area — including the participant being out of the room entirely |
| WALK | Whole-body locomotion through the room |
| STAND UP | Posture transition, seated/lying → standing |
| SIT DOWN | Posture transition → seated (bed edge or chair — see mapping note below) |
| LIE ON BED | Posture transition → lying |
| GET UP BED | Posture transition, lying → up |
| ANXIOUS | Restless in-bed motion — tossing, turning |
| EATING | Repetitive hand-to-mouth motion, seated |
| WAVE HANDS | Hand gesture, large |
| CLAP HANDS | Hand gesture, percussive |
One annotation rule deserves a spotlight: semantically equivalent instructions map to one label irrespective of location. "Sit down on the edge of the bed" and "Sit down on the chair" are both SIT DOWN. That is not bureaucratic tidiness — it is a trap laid deliberately for position-dependent models. A radio that can see where motion happens might learn "sit-down-at-bed" and "sit-down-at-chair" as different-looking events that share a label; a radio that cannot see position never faces the split. Remember this rule when Chapter 8 dissects which radios confuse which posture transitions and where.
The coarse sleep-monitoring set remaps the same recordings into four classes forming an ordinal scale of sleep disruption — the actual question a night ward asks:
Activities irrelevant to sleep — eating, waving, clapping — are omitted from this set entirely. Note what the remapping does to task difficulty: the fine set's hardest distinctions (which kind of posture transition? which kind of hand gesture?) either merge into INTERRUPTION or vanish. Chapter 8 will find all three radios above 92% on this set everywhere, and the paper is careful to attribute that to the easier question, not to better sensing.
To feel how the two label sets relate, trace a few instructions through both (fine labels and definitions from the paper; the coarse mapping follows from the class definitions):
| TTS instruction (examples from the paper) | Fine label | Coarse label |
|---|---|---|
| "Walk to the left side of the bed" | WALK | WANDER (out-of-bed walking) |
| "Sit down on the edge of the bed" | SIT DOWN | INTERRUPTION (larger posture change) |
| "Sit down on the chair" | SIT DOWN — same label, different place | INTERRUPTION |
| "Go to the bathroom and wait there for a moment" | WALK, then NO ACTIVITY (out of room) | WANDER, then NO ACTIVITY |
| Restless tossing and turning in bed | ANXIOUS | ANXIOUS (its own severity level) |
| Eating, waving, clapping | EATING / WAVE HANDS / CLAP HANDS | omitted — not sleep-relevant |
Notice the fourth row's subtlety: NO ACTIVITY explicitly includes the participant being outside the room. That is a deployment-honest choice — a real bedroom monitor spends most of the night watching either a still sleeper or an empty room, and must call both "nothing happening" rather than hallucinating activity from residual noise. It also seeds a class imbalance (quiet dominates any realistic recording), which is precisely why Chapter 7's classifier needs class weighting and why the evaluation metric will refuse to reward ignoring rare classes.
| Design element | Choice | Temptation resisted |
|---|---|---|
| Environment | HomeLab residential bedroom (bed, chair, table) | A clean lab with unrealistic multipath |
| Mounting | All three sensors on the ceiling, fixed all campaign | The flattering side-view geometry |
| Recording | Simultaneous, common time reference | Per-modality sessions (execution confound) |
| Layouts | 6 (bed/chair moved; 3–4 deliberately unfavourable) | One layout — letting models memorise furniture |
| Participants | 20 (14M/6F, 21–67 y, 159–189 cm, 50–92 kg); up to 120 person-scenario recordings | A handful of colleagues of similar build |
| Protocol | TTS-guided natural flows, free execution style | Repeated isolated actions |
| Labels | Fine 10-class + coarse ordinal 4-class, location-independent mapping | One label set tuned to one use case |
| Release | Open dataset (gitlab.ilabt.imec.be) | Numbers you must take on faith |
Before Chapter 7's cross-validation protocols, arm yourself against the most common evaluation sin in sensing ML — because this dataset's structure makes it vivid. Recall the windowing: 2.5-second windows advancing by 0.05 seconds. Two adjacent windows share 98% of their samples. They are near-duplicates.
Now imagine shuffling all windows from all recordings into one pool and splitting randomly 80/20. Nearly every test window has siblings in the training set that overlap it almost entirely — same person, same room, same seconds. The model needs only to memorise, and the reported accuracy would be spectacular and meaningless. This failure mode — temporal leakage through overlapping windows — inflates results in a depressing fraction of published sensing work.
The paper's protocols are constructed so this cannot happen: splits are made at the level of people (LOPO), scenarios (LOSO), or bed positions (LOBPO) — never windows. A test window's person or room is absent from training entirely, so its near-duplicate siblings are on the same side of the split as itself. When you evaluate any windowed time-series model, this is the first thing to check in the methods section; when it is missing, stop reading the results.
Everything described above — all three synchronized streams, twenty participants, six layouts — is published as an open dataset (gitlab.ilabt.imec.be/datasets/Activity-recognition-datasets). For a comparison paper this is more than good citizenship; it is the difference between an argument and an invitation. Every claim in Chapter 8 can be re-derived by anyone with a laptop; every preprocessing choice in Chapter 6 can be varied and re-scored; and the questions the paper leaves open — would fusing the three modalities beat any single one? does FMCW with range retained really lose robustness? — are now homework problems rather than grant proposals. Synchronized multi-modality recordings of this kind are rare precisely because they are logistically painful to make; releasing one is the paper's most durable contribution, outliving any specific F1 score in it.
1. Windows per minute. With 2.5 s windows and a 0.05 s stride, how many windows does one minute of recording yield, and how many of them contain any given instant? Worked: (60 − 2.5)/0.05 + 1 = 1151 windows per minute; each instant falls inside 2.5/0.05 = 50 consecutive windows. Fifty near-copies of every moment — now re-read the "random splits would be a scandal" section and feel it numerically.
2. The leakage thought experiment. Under LOSO withholding layout 3, list what the model has still seen. Worked: layout 4 shares layout 3's bed position; other layouts contribute its chair position; all 20 people appear in training. Unseen: only the specific bed+chair combination. Now do LOBPO withholding 3-4: the bed position itself is gone. This pairing logic is the entire difference between the two protocols — and between 86.4% and 78.5% for one radio.
3. Label-set design. A hospital asks you to add a fifth coarse class: FALL. What does this paper's protocol lack for training it, and what would you propose? Reasoned answer: falls cannot be ethically cued as natural TTS instructions and are absent from the recordings; options are stunt-performed falls (execution realism suffers), simulation/augmentation, or anomaly-style detection where FALL is flagged as departure from the learned classes. Every published fall-detection paper wrestles exactly this; recognise the gap when reading their numbers too.
4. Ordinal stakes. Why is the coarse label set explicitly ordinal (NO ACTIVITY < ANXIOUS < INTERRUPTION < WANDER), and which confusion in Chapter 8 does ordinality make forgivable? Answer: the classes encode escalating disruption, so adjacent-level confusions (FMCW's 10% ANXIOUS→INTERRUPTION) overstate severity by one step — an acceptable error for an alerting system — whereas any-level→NO ACTIVITY (IR-UWB's 1–2%) skips the scale entirely and silences the alarm. Ordinality is why those two errors of similar size have wildly different products attached.
Three measurement matrices now exist, and a neural network is waiting. This chapter is where the paper's most consequential decisions hide — not in the network, but in the transformations before it. Watch for one decision in particular: each pipeline must answer what happens to spatial information, and the three pipelines give three different answers. Nobody frames it as the experiment's pivotal variable at this point. Chapter 8 will reveal that it was.
The design constraint the paper sets itself: preprocessing should be as similar as possible across technologies (so the comparison reflects sensing, not processing) while not disadvantaging any modality by forcing choices tuned to another. The shared skeleton:
Each 50 ms frame delivers 96 chirps × Ns beat samples, times 12 virtual antennas — per antenna r, a matrix Fr. Step one is Chapter 2's 2D-FFT: transform along fast-time to resolve range, along slow-time to resolve Doppler, yielding one range-Doppler map per antenna:
with range bin p and Doppler bin q. But before the second FFT, the static component must go. Static reflections are constant along slow-time, so after the range FFT they sit at zero Doppler — and the cleanest way to remove a constant is to subtract the mean. For each range bin k, subtract that bin's average over the 96 chirps:
This is DC removal — literally the toy calculation you did by hand in Chapter 1's five-probe table, done per range bin per frame. The wardrobe vanishes; the person's nonzero-Doppler energy is untouched.
Next, the twelve antennas. The twelve clutter-suppressed RDMs are summed non-coherently — add the magnitudes, ignore the phases. The person's motion energy appears in all twelve maps and adds constructively; noise is uncorrelated across antenna pairs and averages down. Signal-to-noise ratio improves without any phase calibration across the array.
Then the move this whole lesson has been foreshadowing. For each Doppler bin, take the maximum over range:
Stacking successive frames' Doppler profiles along time yields a time-Doppler map D[t, q] — velocity signature versus time, refreshed every 50 ms. Finally, windowing: 2.5 s windows with a per-sample stride (the 50 ms frame interval), maximising data diversity. The CNN input axes: time × Doppler.
Follow the shapes through one 2.5-second window to make the collapse vivid. Per frame: 12 antennas × 96 chirps × Ns beat samples of raw IQ. After the 2D-FFT: 12 maps of Ns range bins × 96 Doppler bins. After the non-coherent sum: one map, Ns × 96. After the max over range: a single row of 96 Doppler values — the entire frame's spatial structure compressed to one velocity profile. Fifty frames fill the window: a 50 × 96 time-Doppler image. Every number the CNN will ever see from FMCW says "this much energy at this velocity at this moment" — and not one of them says where.
The UWB stream arrives as raw IQ CIRs at 150 Hz. First, Chapter 3's first-path phase correction — without it the Doppler transform would read clock drift as motion. Then discard the first 12 fast-time samples (pre-FP, the FP itself, saturation, ceiling clutter). Then windowing: 2.5 s windows, but with the stride at 0.05 s rather than per-sample — at 150 Hz a per-sample stride would multiply the dataset without adding meaningful diversity, so the stride is matched to the FMCW frame interval for comparability.
Now Doppler. For each window W and each retained fast-time bin k separately, take an FFT along slow-time:
— a range-Doppler map again, but note the profound difference from FMCW's: here the Doppler transform runs over the entire 2.5-second window, not over one 50 ms frame. The Doppler axis is then cropped to ±25 Hz, a limit found by per-modality grid search to contain the activity-induced motion; beyond it lies little but noise.
Run the arithmetic on this transform and enjoy how the numbers interlock. The window holds 2.5 s × 150 Hz = 375 packets, so the slow-time FFT has 375 points and its frequency bins are 150/375 = 0.4 Hz wide — which is just 1/Tobs = 1/2.5 s, as it must be. Convert bin width to velocity with the monostatic Doppler relation fD = 2v/λ: Δv = 0.4 × 0.0462 / 2 = 0.00924 m/s — the 0.009 m/s of Table II, re-derived from a different direction. The ±25 Hz crop spans about 125 bins and corresponds to radial velocities up to 25 × 0.0462/2 ≈ 0.58 m/s — modest-sounding, but remember the vantage: from the ceiling, a horizontally walking body presents mostly transverse motion, and the radial component that a downward-looking radar sees is a fraction of the walking speed. The grid search discovering that everything interesting lives within ±25 Hz is the data agreeing with the geometry.
And the pivotal decision, made the other way:
Last, residual clutter. DC removal per frame is not available here (there are no frames), so the pipeline estimates the background per range-Doppler cell as a running median over a 10-second temporal neighbourhood, subtracted from the current map:
where 𝒩(W) is the neighbourhood of windows centred on W spanning Tbg = 10 s. The median tracks what a cell looks like "usually" — slowly varying clutter — while a transient activity, present for a couple of seconds, barely moves the median and thus survives subtraction.
Why a median and not a mean? Robustness to exactly the thing being protected. A mean over 10 s includes the activity: a two-second stand-up contributes a fifth of the samples, dragging the "background" estimate upward and partially subtracting the event from itself. A median asks instead "what value does this cell take on a typical window?" — and a burst occupying a minority of the neighbourhood leaves the middle-ranked value almost untouched. The event survives whole; only what persists most of the time is treated as background. (The same reasoning, at a different timescale, is why FMCW's per-frame DC removal works: over 96 chirps in 26 ms, even a moving person is nearly static, so the mean across chirps is almost purely clutter — there, the mean is safe because the interval is short.) But read "centred" again: the neighbourhood extends into the future. The method is non-causal — it needs up to Tbg/2 = 5 seconds of latency in a real-time deployment before it can finalise a window. A fall detector built exactly this way would learn about the fall five seconds late; a production system would need a causal (past-only) background estimate and should expect slightly worse clutter suppression. The paper flags the latency itself.
The Wi-Fi stream has a defect neither radar has: irregular sampling. Packets leave when the MAC layer permits, and Fourier analysis assumes uniform spacing — timing jitter directly corrupts the phase evolution that carries Doppler. So step one: interpolate the complex CSI onto a uniform 500 Hz grid.
Why is interpolation onto a uniform grid the very first step, before anything spectral? Because a Fourier transform's notion of "frequency" is cycles per sample, and it trusts the samples to be equally spaced in time. Feed it packets that arrived at 1.7, 2.3, 1.9, 2.6 ms intervals and a perfectly steady 10 Hz motion smears into a haze of spurious frequencies — the jitter itself masquerades as Doppler. Interpolating the complex CSI to an even 500 Hz grid restores the contract. It is the third clock-related repair in three chapters — FMCW needed none (one chip), IR-UWB fixed oscillator drift with a reference path, Wi-Fi fixes scheduling jitter with resampling — three different diseases, one underlying truth: coherent Doppler sensing is only ever as good as its time base.
Step two: per subcarrier, a short-time Fourier transform (STFT) along slow-time — window 200 samples (0.4 s), overlap 175 samples (0.35 s) — producing a time-Doppler map per subcarrier. The 53 maps are then averaged in magnitude:
with t the STFT time index and q the Doppler bin. Each subcarrier sees the same motion through a slightly different phase geometry; averaging 53 slightly different views firms up the common Doppler content — the poor radio's version of FMCW's 12-antenna sum. The STFT yields spectrum out to 250 Hz; a grid search found the action inside ±80 Hz, so the map is cropped there. Then the same 10-second running-median clutter removal as UWB (per Doppler bin, non-causal, same 5 s latency), and the same 2.5 s / 0.05 s windowing. Input axes: time × Doppler — like FMCW's, but with no range axis ever having existed to collapse.
The shape arithmetic, once more, because it hides a satisfying alignment. A 2.5 s window at 500 Hz holds 1250 samples. The STFT hop is 200 − 175 = 25 samples = 0.05 s — exactly the window stride used across all three modalities, so each stride step advances the STFT by precisely one column. Columns per window: (1250 − 200)/25 + 1 = 43 time frames. Frequency bins are 1/0.4 s = 2.5 Hz wide; the ±80 Hz crop keeps 64 of them. So Wi-Fi hands the CNN a 43 × 64 image — comparable in size to FMCW's 50 × 96, built from a radio that was never designed to sense anything.
Chapter 2 derived range resolution from bandwidth. Doppler resolution has a twin formula with a twist: it is not a hardware constant. It depends on how long you coherently watch, Tobs — a preprocessing choice:
Intuition first: two targets differing in radial velocity by Δv drift apart in round-trip phase at rate 2Δv/λ cycles per second; to tell them apart, you must watch long enough for at least one full cycle of difference to accumulate — Tobs ≥ λ/(2Δv). Rearranged, that is the formula. Longer watching buys finer velocity discrimination.
IR-UWB, whose Doppler FFT spans the whole 2.5 s window, with λ = 4.62 cm at 6.49 GHz:
Nine millimetres per second of velocity resolution — matching the paper's Table II exactly. That is fine enough to separate the languid components of a roll-over from one another.
FMCW, whose Doppler FFT spans only one 96-chirp frame, reports Δv = 0.093 m/s — ten times coarser, despite the finer wavelength. And we can extract a hidden hardware fact from this number: invert the formula to find the effective coherent interval,
The 96 chirp loops occupy roughly 26 ms of coherent observation inside each 50 ms frame — the remainder is inter-chirp idle time and the interleaving of the three transmitters. (This also confirms Chapter 2's suspicion that the active chirp is shorter than the 0.52 ms repetition bound.) Why not just lengthen Tobs by FFT-ing across frames? Because Doppler processing assumes the scene's velocities are constant over Tobs: a posture transition lasting a second is not one velocity but a trajectory. FMCW's design samples that trajectory 20 times per second at coarse velocity resolution; IR-UWB's design integrates 2.5 s of it at exquisite resolution. Different bets on the same signal. Wi-Fi sits between: its 0.4 s STFT window gives frequency resolution 1/0.4 = 2.5 Hz per Doppler bin, resolved 20 times per 2.5 s window.
Two motion components at nearby radial velocities (torso drift at 0.20 m/s, and a second component you control). The spectrum below is what each radio's Doppler transform sees, with peak width set by its own coherent interval via Δv = λ/(2Tobs). Switch radios: at FMCW's 26 ms frame the peaks merge into one blob; at IR-UWB's 2.5 s window they stand cleanly apart at 0.009 m/s resolution.
| FMCW | IR-UWB | Wi-Fi | |
|---|---|---|---|
| Clutter removal | DC removal per frame (mean over 96 chirps, per range bin) | Running median, 10 s, per range-Doppler cell | Running median, 10 s, per Doppler bin |
| Phase repair | none needed (one chip) | first-path phase subtraction | interpolation to uniform 500 Hz (jitter) |
| Doppler interval Tobs | one 96-chirp frame (~26 ms coherent) | 2.5 s window | 0.4 s STFT window |
| Doppler resolution | 0.093 m/s | 0.009 m/s | 2.5 Hz per bin, crop ±80 Hz |
| Diversity combining | non-coherent sum, 12 antennas | none (single channel) | magnitude average, 53 subcarriers |
| Spatial information | collapsed (max over range) | retained (range axis kept) | never existed (7.5 m bin) |
| CNN input axes | time × Doppler | range × Doppler | time × Doppler |
| Real-time latency debt | — | up to 5 s (non-causal median) | up to 5 s (non-causal median) |
The complete preprocessing, condensed to honest pseudocode — read it top to bottom and the divergence is impossible to miss:
# ------- FMCW: per 50 ms frame (12 antennas x 96 chirps x Ns samples) ------- for r in antennas(12): rng[r] = fft(frame[r], axis=fast) # range profile per chirp rng[r] -= mean(rng[r], axis=chirps) # DC removal (Eq. 13) rdm[r] = abs(fft(rng[r], axis=chirps)) # range-Doppler (Eq. 12) summed = sum_r(rdm[r]) # non-coherent 12-antenna sum profile = max(summed, axis=range) # RANGE COLLAPSED -> 1D Doppler input = stack_frames(profile, win=2.5, stride=0.05) # time x Doppler # ------- IR-UWB: stream of CIRs at 150 Hz -------------------------------- cir = cir * exp(-1j * angle(cir[:, k_fp])) # first-path fix (Eq. 14) cir = cir[:, 12:] # drop pre-FP/FP/saturated bins win = window(cir, 2.5, stride=0.05) # 375 packets per window rdm = abs(fft(win, axis=slow_time)) # per range bin (Eq. 15) rdm = crop(rdm, doppler=±25) # grid-searched band input = rdm - running_median(rdm, T=10) # RANGE RETAINED -> range x Doppler # ------- Wi-Fi: CSI packets, ~500 Hz irregular ---------------------------- csi = interp_uniform(csi, fs=500) # repair MAC jitter S_k = stft(csi[:, k], win=0.4, overlap=0.35) # per subcarrier S = mean_k(abs(S_k)) # average 53 subcarriers (Eq. 17) S = crop(S, doppler=±80) S = S - running_median(S, T=10) input = window(S, 2.5, stride=0.05) # NO RANGE EVER -> time x Doppler
Three inputs, one network. The comments in capitals are the paper's destiny written in advance.
Why 2.5-second windows? Long enough to contain a posture transition's full velocity trajectory, short enough that windows remain mostly single-activity; and it doubles as IR-UWB's coherent Doppler interval, buying the 0.009 m/s resolution. One number, two jobs.
Why a 0.05 s stride everywhere? It is FMCW's natural frame interval, adopted by the other two for comparability — a per-sample stride at 150 or 500 Hz would inflate the dataset with near-duplicates without adding diversity. Even the stride is a fairness decision.
Why grid-search the Doppler crops (±25 Hz UWB, ±80 Hz Wi-Fi) per modality? Because the informative band genuinely differs with carrier frequency and geometry, and forcing one crop on all three would disadvantage somebody — the exact anti-goal. "As similar as possible, but never tailored to another's physics" cuts both ways.
Why does FMCW skip the running median? Its clutter is already dead: DC removal per frame kills zero-Doppler content 20 times a second, and the range collapse discards the bins where residual static texture would linger. UWB and Wi-Fi, whose maps keep structure that drifts slowly (furniture edges in retained range bins; residual channel texture), need the 10-second median as a second line of defence.
Could the pipelines be swapped — FMCW keeping range, UWB collapsing? Mechanically, trivially. Scientifically, that is the ablation the paper leaves open — the one experiment that would convert the four-property interpretation from a well-argued diagnosis into a proof. The open dataset makes it a weekend project; Chapter 9 files it accordingly.
Skip DC removal (FMCW): the zero-Doppler ridge — walls, bed frame, wardrobe, orders of magnitude above the person — dominates every map; the max-over-range then harvests clutter instead of motion, and the "Doppler profile" describes the furniture. You saw it in Chapter 2's exercise 4.
Skip the first-path correction (IR-UWB): clock drift rotates every tap's phase far faster than any human moves; the per-bin FFT reads the drift as broadband Doppler and the ±25 Hz band fills with garbage. Chapter 3's snippet, one line commented out.
Skip discarding the 12 early bins (IR-UWB): saturated and ceiling-clutter taps enter the map as the strongest features; worse, the FP itself — now phase-flattened to exactly zero by its own correction — injects a spurious perfectly-static row the median must then handle.
Skip interpolation (Wi-Fi): MAC jitter masquerades as phase noise; the STFT smears every Doppler component (exercise 3, Chapter 4 — ~7° per half-millisecond at 40 Hz), degrading exactly the higher-frequency band where gesture detail lives.
Skip the running median (IR-UWB / Wi-Fi): residual slow clutter — breathing-scale furniture texture, drifting channel structure — survives into the input, and the CNN, given a stable room-specific pattern, will happily learn it. Skipping this step would worsen the very layout overfitting Chapter 8 measures; the median is not cosmetic, it is a partial de-fingerprinting of the room.
Use a centred median in production: not a correctness failure but a latency one — up to 5 s. The paper's honesty about this is your permission to ask every sensing paper: "is any step non-causal, and what does the causal version cost?"
1. The numbers ledger, from memory. Close the lesson and write down: window/stride, the three clutter strategies, the three Tobs values, both Doppler crops, and which pipeline keeps range. Check against: 2.5 s / 0.05 s; DC-removal vs 10 s running median (×2); ~26 ms / 2.5 s / 0.4 s; ±25 Hz / ±80 Hz; IR-UWB keeps range, FMCW collapses, Wi-Fi never had it.
2. Bin arithmetic. How many Doppler bins does the IR-UWB ±25 Hz crop retain, and what velocity span is that? Worked: bins are 0.4 Hz wide (1/2.5 s), so ~125 bins; velocity span ±25 × 0.0462/2 = ±0.58 m/s. Modest — and sufficient, because ceiling geometry shrinks radial velocities.
3. Latency audit. An alert pipeline runs: 2.5 s window + centred 10 s median + voting over a completed event. Bound the delay between a wander beginning and the system confirming it. Reasoned: up to 5 s of median future-context + up to 2.5 s for a fully-covering window + the event's own duration for voting = the fall-risk walk may be over before the label is final. Production redesign: causal median, incremental voting on windows so far.
A comparison paper faces a temptation its authors deserve credit for resisting: tune a bespoke model per modality and present three local optima as a fair fight. This paper does the opposite. One CNN architecture, identical across all three modalities — so that when the scores differ, the difference measures the information content of the input representations, not the cleverness of three model-design efforts. The classifier is deliberately boring. The evaluation protocols are where the intelligence went.
Each modality delivers a 2D map of shape (T × F) per 2.5-second window — but recall from Chapter 6 that the axes mean different things: for FMCW and Wi-Fi they are time × Doppler; for IR-UWB they are range × Doppler. The network is agnostic; it treats every input as an image. Whether the "image" contains spatial structure is exactly the experimental variable smuggled through from Chapter 6.
| Stage | Operation | Filters | Pooling |
|---|---|---|---|
| Conv block 1 | 3×3 conv, same padding → ELU → batch norm | 8 | 1×2 max-pool (feature axis only) |
| Conv block 2 | 3×3 conv, same padding → ELU → batch norm | 16 | 2×2 max-pool |
| Conv block 3 | 3×3 conv, same padding → ELU → batch norm | 32 | 2×2 max-pool |
| Conv block 4 | 2×2 conv, same padding → ELU → batch norm | 64 | 2×2 max-pool |
| Conv block 5 | 2×2 conv, same padding → ELU → batch norm | 64 | 2×2 max-pool |
| Head | flatten → dense 32 → dense 32 → softmax over the classes | — | — |
Read the design like an engineer. The filter counts 8, 16, 32, 64, 64 grow as spatial extent shrinks — cheap low-level edge detectors first (a Doppler onset, a velocity ridge), richer combinations deeper. Kernels shrink from 3×3 to 2×2 in the last two blocks because by then the maps are small — a 3×3 kernel would span most of what remains. ELU activations (exponential linear units) keep gradients alive for negative inputs, useful in small networks; batch normalisation stabilises training on modest data. And the quirky detail that proves someone looked at their tensors: the first block pools 1×2 — downsampling only the feature axis F, preserving the first axis at full resolution for one more block before the regular 2×2 cascade begins.
This is a deliberately small network — five conv blocks and two dense-32 layers, orders of magnitude below anything fashionable. Count the convolutional weights yourself from the stated architecture (weights = kernel height × width × input channels × filters, plus one bias per filter):
| Block | Kernel × in × out | Weights + biases |
|---|---|---|
| 1 | 3×3 × 1 × 8 | 72 + 8 = 80 |
| 2 | 3×3 × 8 × 16 | 1152 + 16 = 1168 |
| 3 | 3×3 × 16 × 32 | 4608 + 32 = 4640 |
| 4 | 2×2 × 32 × 64 | 8192 + 64 = 8256 |
| 5 | 2×2 × 64 × 64 | 16384 + 64 = 16448 |
| Convolutional stack total | ≈ 30,600 parameters | |
Thirty thousand parameters in the feature extractor — about a millionth of a modern language model (the dense head adds more, its size depending on each modality's input dimensions after five poolings). Right-sized, because the training set — 20 people × 6 layouts of windows, heavily correlated by the 0.05 s stride — is small by deep-learning standards, and because the point is comparison, not leaderboard: an architecture that any of the three representations can saturate. There is also a deployment argument hiding here: a 30k-parameter CNN runs comfortably on the kind of embedded processor that ships beside a EUR 14 radar, so the study's conclusions transfer to hardware a product would actually use.
Small data invites overfitting, and the paper stacks four defences. L2 weight decay (λ = 10−2 — strong) on all learnable layers penalises large weights. Batch norm operates in the conv blocks. Dropout only in the classifier head — a considered asymmetry: the conv stack is already regularised by weight sharing and batch norm, while the dense layers hold most of the classifier-specific parameters, so that is where dropout pays. And class weighting compensates for imbalance — a night contains vastly more NO ACTIVITY than CLAP HANDS, and without weighting the loss would happily under-serve the rare classes.
Hyperparameters were selected by grid search on training data using the same leave-one-person-out cross-validation as the final evaluation, with the test fold kept unseen — the selected architecture then frozen across modalities. Batch size, learning rate, and schedule were tuned per modality (fair: different input shapes train differently), but the architecture itself was not.
All results are reported as macro F1. For each class, F1 is the harmonic mean of precision (of the windows I called ANXIOUS, how many were?) and recall (of the true ANXIOUS windows, how many did I find?); macro means the ten per-class F1 scores are averaged unweighted.
Feel the difference with a deliberately rigged toy. A night's stream contains 9,500 NO ACTIVITY windows and 500 ANXIOUS windows; a lazy model predicts NO ACTIVITY always. Plain accuracy: 9500/10000 = 95% — a glowing number for a monitor that has never once detected the restlessness it was installed to detect. Now macro F1. For ANXIOUS: recall 0/500 = 0, so F1ANXIOUS = 0. For NO ACTIVITY: precision 9500/10000 = 0.95, recall 1.0, F1 = 2(0.95)(1.0)/(1.95) = 0.974. Macro average: (0.974 + 0)/2 = 48.7%. The metric collapses to roughly half, exactly reflecting that the model does half its job. That is why every headline number in Chapter 8 is macro F1: plain accuracy would let NO ACTIVITY's abundance launder failure on the rare, clinically interesting classes.
Each number is also reported before and after voting. The classifier emits a label every 0.05 s — but nobody deploys 20 predictions per second; they ask "what was this event?" Voting answers that: all window-level predictions belonging to the same ground-truth activity are replaced by their majority-voted label.
Watch it work, and watch it fail, on a toy event. A 3-second STAND UP spans 60 overlapping windows. Case one: the model labels 38 of them STAND UP, 12 SIT DOWN (the confusable mirror transition), 10 scattered. Majority: STAND UP — all 60 windows are re-labelled correctly, and 22 window-level errors vanish from the score. This is the mechanism behind the +8 to +14-point voting gains of Chapter 8: most window errors are flickers, not sustained misreadings, especially near event boundaries where a window straddles two activities. Case two: the model labels 26 STAND UP and 29 SIT DOWN. Majority: SIT DOWN — now all 60 windows become wrong, including the 26 that were right. Voting amplifies whichever tendency is sustained; it launders noise but doubles down on systematic confusion. That is why voted and unvoted scores are both reported: their gap measures how much of a modality's error is flicker (recoverable by smoothing) versus conviction (not).
The caveat the paper states plainly: voting groups windows using ground-truth activity boundaries, so voted numbers describe event recognition under known segmentation. A deployed system must find event boundaries itself and may gain less.
One 3-second STAND UP event = 60 windows. Each square is one window's prediction; the strip below shows every window after majority voting. Raise the flicker rate and watch voting shrug off scattered errors — then push the systematic-confusion slider past the tipping point and watch voting convert one sustained mistake into sixty.
Here is where the paper shows its teeth. A single train/test split answers only one question. The real question — will it work on the next patient, in the next room? — decomposes into levels of novelty, and the paper evaluates all of them as leave-x-out cross-validation, reporting mean ± standard deviation over folds:
Dwell on the LOSO caveat, because papers rarely indict their own protocol. Recall Chapter 5: the six layouts are pairs sharing bed positions. Withhold layout 3 and the model still trained on layout 4 — same bed position, different chair. For activities anchored to the bed (LIE ON BED, GET UP BED, ANXIOUS), the crucial geometry leaked. LOBPO exists precisely to plug that leak: withhold both members of a bed-position pair and in-bed activities occur at genuinely novel ranges. The gap between a radio's LOSO and LOBPO scores therefore measures how much that radio was leaning on the leak — which is exactly how Chapter 8 will catch one modality red-handed.
| Protocol | Folds | What is unseen | What still leaks | Deployment question answered |
|---|---|---|---|---|
| LOPO | 20 | The person | All layouts seen | New resident, instrumented room |
| LOSO | 6 | The layout combination | Bed and chair positions individually, via sibling scenarios | Rearranged room, familiar positions — the realistic care-home case, where layouts are fairly uniform |
| LOBPO | 3 | The entire bed configuration | — | Install in a genuinely new room |
The paper's Table III translates line for line into any framework. In Keras-style pseudocode, with the paper's regularisation:
# The shared CNN — identical for FMCW, IR-UWB, Wi-Fi inputs reg = l2(1e-2) # on ALL learnable layers model = Sequential([ Conv2D(8, (3,3), padding="same", kernel_regularizer=reg), ELU(), BatchNorm(), MaxPool2D((1,2)), # pool feature axis only Conv2D(16, (3,3), padding="same", kernel_regularizer=reg), ELU(), BatchNorm(), MaxPool2D((2,2)), Conv2D(32, (3,3), padding="same", kernel_regularizer=reg), ELU(), BatchNorm(), MaxPool2D((2,2)), Conv2D(64, (2,2), padding="same", kernel_regularizer=reg), ELU(), BatchNorm(), MaxPool2D((2,2)), Conv2D(64, (2,2), padding="same", kernel_regularizer=reg), ELU(), BatchNorm(), MaxPool2D((2,2)), Flatten(), Dense(32, kernel_regularizer=reg), Dropout(p), # dropout in head ONLY Dense(32, kernel_regularizer=reg), Dropout(p), Dense(n_classes, activation="softmax") ]) model.compile(loss="categorical_crossentropy", # with class weights optimizer=Adam(lr_per_modality)) # batch/lr tuned per modality
Nothing exotic — deliberately. If your instinct is "I could train this on a laptop": yes, and that is the point. The experimental power of this paper lives in its data design and protocols, not in architecture novelty.
| Metric | What it rewards | Failure mode for this task |
|---|---|---|
| Accuracy | Being right on windows, regardless of class | Predicting NO ACTIVITY always looks brilliant (the 95%-accurate useless monitor) |
| Weighted F1 | Per-class F1, weighted by class frequency | Rare classes still barely move the score — the imbalance re-enters through the weights |
| Micro F1 | Pooled counts over all classes | Equals accuracy in single-label multiclass — same trap, fancier name |
| Macro F1 (the paper's choice) | Every class equally, precision and recall both | Can be harsh: one hopeless rare class caps the score — which is here a feature, since the rare classes are the clinical ones |
1. Macro F1 by hand. A 3-class fold gives per-class F1 of 0.98, 0.85, 0.40. Compute macro F1, then explain what a 0.40 class does to the headline that accuracy would hide. Worked: (0.98 + 0.85 + 0.40)/3 = 0.743. If the 0.40 class is rare, accuracy might read 0.95 while macro F1 confesses that a third of the system's job is barely working — exactly the honesty the paper's rare gesture classes require.
2. The voting boundary. In the 60-window event with random flicker rate p (errors split between two wrong classes), roughly what p makes voting start to fail? Reasoned: voting fails when correct windows lose the plurality: with errors split two ways, correct count 60(1−p) must beat 30p; that holds until p ≈ 2/3 — voting is remarkably tolerant of unstructured error. It fails much earlier if errors concentrate on one wrong class (sustained confusion beats 50%): structure, not volume, is voting's enemy. Sim G lets you find both boundaries by hand.
3. Fold accounting. How many models get trained for one modality's complete fine-grained evaluation across all three protocols? Worked: LOPO 20 + LOSO 6 + LOBPO 3 = 29 training runs per modality per label set — and the paper reports two label sets and three modalities: the full result table represents 174 trained models. Controlled comparison is mostly compute discipline.
Everything is now in place: three synchronized data streams, three preprocessing pipelines with one hidden divergence, one boring CNN, three protocols of escalating cruelty. Before the table, make your prediction. Chapter 6 told you FMCW threw away position while IR-UWB kept it. What should happen when the bed moves to an unseen position?
| Fine-grained 10-class, macro F1 after voting | FMCW | IR-UWB | Wi-Fi |
|---|---|---|---|
| LOPO — unseen person, seen layouts | 83.4% | 89.0% | 79.0% |
| LOSO — unseen layout combination | 86.6% | 86.4% | 75.3% |
| LOBPO — unseen bed position | 83.8% | 78.5% | 68.8% |
Read down the columns and the paper's whole thesis is there. IR-UWB starts on top — 89.0% against 83.4% — and bleeds as the protocols harden, losing 10.5 points from LOPO to LOBPO. Wi-Fi starts last and falls just as hard (−10.2 points). FMCW does something almost eerie: 83.4, 86.6, 83.8. When the bed moves to a position the network has never seen, FMCW does not notice — its LOBPO score is four tenths of a point above its LOPO score. The modality that discarded position is the only one indifferent to position changing.
Every bar is an exact macro-F1 from the paper's Table IV (after voting). Step through the protocols and watch the ranking flip between LOPO and LOBPO on the fine task; then switch to the sleep label set and watch the differences nearly vanish. Under Fine · LOPO, ghost bars show the before-voting scores and the voting gains.
Start with the kindest protocol. Before voting, per-window LOPO macro F1 is 78.6% for IR-UWB, 75.0% for FMCW, 65.0% for Wi-Fi — and IR-UWB is also the steadiest across participants (standard deviation 5 points against FMCW's 9). Within this sample, no modality shows systematic dependence on height, weight, age, or gender — recognition is not tied to one body profile, though 20 participants cannot settle demographic robustness in general.
Then voting: +14.0 points for Wi-Fi, +10.4 for IR-UWB, +8.4 for FMCW — lifting them to 79.0 / 89.0 / 83.4. The ordering of the gains is itself informative: voting rescues errors that are not sustained across an event, so the modality with the noisiest window-level predictions (Wi-Fi) profits most. Yet even after its biggest-in-class rescue, Wi-Fi remains 4.4 points behind FMCW and 10.0 behind IR-UWB. Temporal smoothing recovers flickers; it cannot conjure spatial information that was never captured.
Under LOSO the two radars tie: 86.6% vs 86.4%. Case closed? Look at the fold-to-fold spread, which is where this paper does its best detective work. Across six folds, FMCW's best-minus-worst range is 2.3 points (std 0.8). IR-UWB's is 12.8 points (std 5.4) — five and a half times wider. IR-UWB scores 91–93% when the withheld layout is 1, 2, or 5, but 80–82% when it is 3, 4, or 6 — precisely the layouts where the bed sits farther off-centre or the chair at an unfavourable angle. The mean says "equivalent"; the variance says one radio is placement-sensitive and the other is not.
Then LOBPO removes the last leak, and the tie shatters: FMCW 83.8% (unchanged from LOPO), IR-UWB down 10.5 to 78.5%, Wi-Fi down 10.2 to 68.8%. Even within LOBPO, IR-UWB's loss depends on which bed position is withheld — 73.3% for the 3-4 fold against 81.7% (1-2) and 80.4% (5-6) — while Wi-Fi sits near 69% in all three folds. The paper's diagnosis: IR-UWB's layout-specific losses point at its retained range axis; Wi-Fi's uniform loss reflects a channel response that cannot resolve bed position at all, yet still absorbed layout-specific multipath patterns during training.
| Fold-level evidence | FMCW | IR-UWB | Wi-Fi |
|---|---|---|---|
| LOSO mean (after voting) | 86.6% | 86.4% | 75.3% |
| LOSO fold spread (max − min) | 2.3 pts (std 0.8) | 12.8 pts (std 5.4) | — |
| LOSO favourable layouts (1, 2, 5) | ~unchanged | 91–93% | — |
| LOSO unfavourable layouts (3, 4, 6) | ~unchanged | 80–82% | — |
| LOBPO fold 1-2 / 3-4 / 5-6 | — (mean 83.8%) | 81.7 / 73.3 / 80.4% | ≈69% in all three |
Fold-level analysis is an underused instrument, and this table is a masterclass in it. Two systems with the same mean are not the same system: one delivers 86-and-a-bit essentially every time; the other delivers 92 when the furniture cooperates and 80 when it does not. For a product, the second behaviour is worse than its mean — you cannot tell a customer "accuracy depends on where your bed is". Whenever you evaluate anything with folds, plot the folds.
Aggregate scores say how much each modality fails; the row-normalised, after-voting confusion matrices say how, and each failure signs its physical cause. One paragraph of instrument-reading first, since these matrices repay careful eyes. Each row is a true class; each entry in the row is the fraction of that class's events predicted as each label; row-normalised means each row sums to 1, so the diagonal entry is exactly that class's recall. The off-diagonal entries are the interesting part: they tell you not just that a class was missed but what it was mistaken for — and misdirections are fingerprints. Confusing LIE ON BED with GET UP BED (its temporal mirror) whispers "I had a location-and-direction cue and it inverted"; confusing CLAP with EATING whispers "I can see hands moved but not how"; confusing anything with NO ACTIVITY whispers "my evidence dropped below detection." Read the next four paragraphs with that decoder ring.
What everyone gets right. NO ACTIVITY is recalled at ≥98% by every modality under every protocol — empty-room detection is solved. FMCW recognises WALK perfectly (100%): a walking body's macro-Doppler is unmistakable in a pure velocity profile. FMCW also holds EATING at 98% and stays stable on hand gestures generally — credit its fine range bins separating body-region returns and the 12-antenna sum lifting subtle hand motion above noise, before the collapse.
Where the bed moves, part 1 — IR-UWB. Under LOBPO, IR-UWB's LIE ON BED recall collapses from 89% to 57%, with 23% assigned to GET UP BED. Read that misdirection carefully: not to a random class, but to the opposite bed transition — the model had partly encoded "which range bins light up, in which order" for the trained bed position, and at an unseen position the learned direction cue inverts or dissolves. WALK recall also slips 95% → 89%, with errors flowing to LIE ON BED and GET UP BED — bed-anchored classes absorbing mistakes exactly as a range-tied representation predicts.
Where the bed moves, part 2 — Wi-Fi. Wi-Fi keeps WALK at 99% under LOBPO but maps 9% of ANXIOUS onto WALK: with zero ability to tell where motion occurs, energetic tossing in bed and walking across the room can produce similar aggregate Doppler. Its GET UP BED falls 78% → 55%, split between SIT DOWN (17%) and LIE ON BED (16%) — the posture-transition family blurring into itself. And CLAP HANDS crashes from 47% to 21%, leaking into EATING and WAVE HANDS: the unresolved channel preserves evidence that hands moved, but not enough detail to say how.
Two signature quirks. IR-UWB is the modality most prone to mapping real activity to NO ACTIVITY — 13% of EATING under LOPO: its single channel's lower per-bin SNR plus residual phase instability from the unsynchronised boards raise the evidence threshold for "something is happening", so subtle repetitive motion sometimes dips below it. FMCW's one notable cross-layout change is LIE ON BED → ANXIOUS doubling from 7% to 14%: with range collapsed, both classes reduce to low-velocity in-bed motion — the price of the collapse, surfacing in the one place two classes are separated mostly by where they occur... which for these two classes is the same place, leaving only subtle Doppler differences.
| Confusion (after voting) | Number | Physical cause |
|---|---|---|
| NO ACTIVITY recall, all modalities, all protocols | ≥98% | Empty vs occupied is easy in every representation |
| FMCW WALK / EATING recall | 100% / 98% | Clean position-free Doppler; 12-antenna SNR |
| IR-UWB LIE ON BED, LOPO → LOBPO | 89% → 57% (23% to GET UP BED) | Retained range axis tied transitions to trained bed position |
| IR-UWB advantage on STAND UP / GET UP BED / SIT DOWN (LOPO) | +13 / +6 / +4 pts vs FMCW | Finer Doppler (0.009 vs 0.093 m/s) + retained range — contributions not separable |
| Wi-Fi CLAP HANDS, LOPO → LOBPO | 47% → 21% | No spatial resolution; gesture detail lost in the mixed channel |
| Wi-Fi GET UP BED, LOPO → LOBPO | 78% → 55% | Posture transitions blur without position or fine detail |
| IR-UWB EATING → NO ACTIVITY (LOPO) | 13% | Single-channel SNR + residual phase instability raise detection threshold |
| FMCW LIE ON BED → ANXIOUS, cross-layout | 7% → 14% | Range collapsed: both classes are low-velocity in-bed motion |
Switch to the 4-class ordinal sleep-disruption labels and the drama deflates — which is itself the finding. After voting: LOPO 98.2% IR-UWB, 96.1% Wi-Fi, 95.1% FMCW; LOSO 97.7 / 95.1 / 94.9; LOBPO 94.2 / 92.6 / 93.4 — all three within 1.6 points of each other at the strictest protocol, all three above 92% everywhere. The distinctions that murdered Wi-Fi on the fine task (which gesture? which transition?) either merged into INTERRUPTION or left the label set entirely. The paper is scrupulous here: these values describe a less demanding classification problem, not improved sensing fidelity.
| Sleep 4-class, macro F1 after voting | FMCW | IR-UWB | Wi-Fi |
|---|---|---|---|
| LOPO | 95.1% | 98.2% | 96.1% |
| LOSO | 94.9% | 97.7% | 95.1% |
| LOBPO | 93.4% | 94.2% | 92.6% |
The residual errors still carry signatures worth a deployment engineer's attention. Under LOBPO, FMCW sends 10% of ANXIOUS to INTERRUPTION (adjacent levels — a severity overestimate); Wi-Fi sends 5% of ANXIOUS to WANDER; IR-UWB's WANDER recall falls 97% → 85%, split between ANXIOUS and INTERRUPTION. And one operationally loaded detail: IR-UWB is the only modality assigning non-zero fractions (1–2%) of all three activity classes to NO ACTIVITY. Small numbers — but those are missed sleep disruptions, silent failures, qualitatively worse for a monitoring product than confusing two disruption levels. An alarm that occasionally under-reports severity annoys; one that occasionally reports nothing happened erodes the trust the whole system depends on.
Lay the three modality's failure lists side by side and notice they barely overlap. FMCW's blind spot (LIE ON BED vs ANXIOUS — a where problem) is precisely where IR-UWB's retained range excels. IR-UWB's cross-layout collapse (bed transitions at unseen positions) is precisely where FMCW is untouchable. IR-UWB's missed-detection habit (activity → NO ACTIVITY) is where FMCW's 12-antenna SNR and Wi-Fi's eager 500 Hz sampling rarely fail. Complementary error profiles are the textbook precondition for fusion gains — and this dataset records all three streams synchronously, so the fusion experiment needs no new measurement campaign at all. The paper leaves it untouched, which makes it the most obvious open door in Chapter 9.
This chapter's analytical moves generalise far beyond radar, so extract the checklist. One: read the columns of the headline table separately — a modality's trajectory across protocols tells you more than any single cell (FMCW's flat line was the finding). Two: distrust ties on the mean until you have seen the folds — 86.6 vs 86.4 concealed a 5.5× difference in variability. Three: when scores drop, ask where the errors went — misdirection targets (LIE ON BED → GET UP BED, not → random) carry causal information that aggregate deltas do not. Four: check whether before/after-postprocessing gaps differ by system — Wi-Fi's +14.0 voting gain vs FMCW's +8.4 revealed whose raw predictions flicker. Five: separate task difficulty from system quality — the sleep-task scores rose for everyone because the question got easier, and the paper says so rather than banking the credit. Any of these five, applied to the next benchmark table you read, will occasionally save you from a wrong conclusion; together they usually will.
1. Design the missing ablation. Using the open dataset, specify exactly the experiment that would test whether IR-UWB's LOBPO drop is caused by retained range: inputs, folds, and the two numbers you would compare. Answer sketch: rebuild IR-UWB windows with a max-over-range collapse (matching FMCW's recipe), train the identical CNN, evaluate LOPO and LOBPO; compare its LOPO→LOBPO drop against the retained version's 10.5 points. If the collapsed version holds flat (at presumably lower LOPO), property 4 is causally confirmed for this radio.
2. Read a row. Under LOBPO, Wi-Fi's ANXIOUS row sends 9% to WALK; IR-UWB's WALK row sends errors to LIE ON BED and GET UP BED. Explain both misdirections from physics, in one sentence each. Answers: Wi-Fi cannot tell where motion occurs, so energetic in-bed tossing resembles locomotion's aggregate Doppler; IR-UWB's walking errors flow to bed-anchored classes because its representation partly indexes activities by range cells whose meaning changed when the bed moved.
3. The product manager's question. "So IR-UWB is 89% and FMCW is 83% — ship the UWB one, right?" Write the three-sentence correction. Model answer: That 89% holds only when deployment rooms match training layouts; at an unseen bed position IR-UWB falls to 78.5% while FMCW holds 83.8%. If we can collect data per room, UWB wins; if not, FMCW does. And if the product's real question is the four-level sleep scale, every radio clears 92% and we should pick on cost and power instead — which flips the answer back to UWB.
4. Spot the easiest fusion win. From the confusion fingerprints, which single pairing of modalities patches the largest single failure, and how? One defensible answer: FMCW + IR-UWB: FMCW's position-free Doppler anchors LOBPO robustness, while IR-UWB's retained range disambiguates exactly FMCW's LIE-ON-BED/ANXIOUS blur in rooms it knows; a confidence-weighted late fusion could take each radio where the other's fingerprint predicts failure. (The dataset supports testing this today.)
Strip the paper to its load-bearing idea and you get a four-property framework — the lens through which every result of Chapter 8 becomes predictable rather than surprising. Then finish the way a deployment engineer must: with watts, euros, and what else the box can do.
| Property | What it buys | FMCW | IR-UWB | Wi-Fi |
|---|---|---|---|---|
| 1. Range resolution c/(2B) | Separates body regions and objects before information is combined | 0.126 m | 0.30 m | 7.5 m (> room) |
| 2. Antenna diversity | Non-coherent integration lifts motion energy over uncorrelated noise — effective SNR | 12 TX–RX pairs | 1 channel | 53 subcarriers averaged (weak substitute) |
| 3. Doppler resolution λ/(2Tobs) | Separates closely spaced radial velocities — finer motion description | 0.093 m/s | 0.009 m/s | 2.5 Hz bins (0.4 s STFT) |
| 4. Spatial retention | Explicit position for the classifier — and explicit position to overfit | collapsed | retained | none (implicitly entangled) |
The trade-off in one breath: properties that preserve more spatial and motion detail give the classifier richer discriminative information — and simultaneously increase the risk of learning environment-specific characteristics that do not transfer. IR-UWB rides properties 3 and 4 to its LOPO crown and is dethroned by property 4 under LOBPO. FMCW spends properties 1 and 2 to make the collapse in property 4 safe, converting spatial detail into robustness. Wi-Fi, holding none of the first three, demonstrates the subtle downside case: even without explicit spatial retention, an unresolved channel response entangles layout into everything.
Spelled out per modality, as the paper's interpretation section argues it. FMCW: fine range bins separate the moving body's returns from most surrounding clutter before anything is combined; the non-coherent sum over twelve pair-specific maps raises their contrast; so after static suppression, the per-Doppler-bin range maximum reliably retains the strongest moving return and can discard its coordinate. Stacked over time, the result preserves the combined micro-Doppler pattern with most explicit position information removed — built to transfer, at the cost of the spatial cues that would help distinguish location-bound transitions. IR-UWB: coarser bins and a single channel mean moving returns are less cleanly isolated per bin, so early selection (the max) is dangerous and retaining the full map is right; together with Doppler resolution ten times finer than FMCW's, this hands the classifier real spatial structure and velocity detail — which improves posture-transition recognition in known layouts and ties those distinctions to the ranges seen in training. Wi-Fi: a stable phase (shared clock) makes motion clearly visible, but the room's paths are mixed before processing; 53 subcarriers over 20 MHz provide some frequency diversity, far too little to reconstruct the missing separation; and because the CSI carries the whole room's combined propagation, the network can learn layout-specific channel patterns together with the activity — overfitting the room without ever being shown a range axis.
One epistemic caveat the paper itself insists on, and so must we: the hardware and the representations were not varied independently — IR-UWB's retained range arrives together with its finer Doppler and its single channel, so their individual causal contributions cannot be quantified from this study. What supports the framework is consistency: the sensing properties, the fold-level behaviour, and the class-specific confusions all point the same way. It is a well-argued diagnosis, not a controlled ablation — the ablation (same radar, collapse vs retain) is an obvious and worthwhile follow-up.
Power. More than an order of magnitude separates the three. The DW3000-based IR-UWB pair sips about 0.2 W continuously — and can go far lower with duty-cycling. The single-chip FMCW draws 1.2–1.75 W (upper end for the three-transmitter configuration used here). The Wi-Fi SDR platform consumes 3.5–4.0 W (measured: 5.2 V at 0.68–0.76 A) — with the fair footnote that a ZedBoard-plus-FMCOMMS2 is a development platform, not power-optimised, and not representative of commodity Wi-Fi silicon… which, however, cannot do this job at all.
Scale the power numbers to a facility to feel them. A 200-room care home running FMCW at the 1.75 W worst case burns 1.75 × 24 × 365 ≈ 15.3 kWh per room-year — about 3,070 kWh across the facility; the same building on 0.2 W IR-UWB uses 1.75 kWh per room-year, roughly 350 kWh total (straight arithmetic on the paper's power figures; electricity prices left to your utility). Neither is a fortune — the real power story is different: 0.2 W with duty-cycling headroom is the difference between "needs mains wiring at every ceiling position" and "runs a year on a battery pack", which for retrofit installations is the entire project cost.
Cost. Another order of magnitude, the other way around from what "Wi-Fi is free" intuition suggests. At 1000-unit distributor prices (June 2026): the two-node UWB radar totals about EUR 14 (two ~EUR 7 DW3000 transceivers); the FMCW chip about EUR 20; and monostatic Wi-Fi about EUR 320 for the cheapest suitable SDR — because no commercial Wi-Fi chipset supports the full-duplex monostatic radar mode, a specialised platform is mandatory. Development-grade pricing that would fall in a dedicated deployment, but the structural point stands: the "already deployed" radio is the one whose radar mode requires the most exotic hardware.
Localization. Only FMCW offers robust 3D localization as a complement to HAR: 0.126 m range bins plus angle from the 12 virtual channels. The UWB kits support ranging and angle-of-arrival in principle, but accuracy is bounded by the 0.30 m resolution and — a nasty practical detail — ranging on humans is hard because the body reflects weakly, a limitation amplified by the ceiling geometry's reduced radar cross-section. Wi-Fi's 20 MHz put localization out of reach before the discussion starts.
Communication. The mirror image. Wi-Fi is the data network — sensing reuses an existing link at no spectral cost. IR-UWB is IEEE 802.15.4z: ranging and data on the same COTS device. FMCW is sensing-only; it needs a companion radio to report what it saw — a real bill in installation and certification, not just euros.
| FMCW | IR-UWB | Wi-Fi (monostatic SDR) | |
|---|---|---|---|
| Fine HAR, unseen person (LOPO) | 83.4% | 89.0% | 79.0% |
| Fine HAR, unseen bed position (LOBPO) | 83.8% | 78.5% | 68.8% |
| Sleep monitoring, worst case | 93.4% | 94.2% | 92.6% |
| Power | 1.2–1.75 W | ~0.2 W | 3.5–4.0 W |
| Cost (1k units) | ~EUR 20 | ~EUR 14 | ~EUR 320 |
| 3D localization | robust | limited | no |
| Native communication | none | 802.15.4z | 802.11 |
Deployment 1: a 200-room care home, retrofit, sleep-safety mandate. The product question is the coarse one — quiet / restless / interrupted / wandering — and every radio clears 92% even at unseen bed positions, so accuracy does not choose. Rooms are near-uniform (the LOSO regime, which the paper calls the realistic care-home case), installation is at scale, and every euro and watt multiplies by 200. Choose IR-UWB: EUR 14, 0.2 W, battery-viable, and the 802.15.4z link reports events without new network drops. Two engineering to-dos come with it: replace the non-causal background median with a causal one (a 5-second-late WANDER alert is a worse product), and characterise the 1–2% silent-miss rate — per event, over months, that number decides whether nurses trust the system.
Deployment 2: a home-care startup shipping one box to a thousand different bedrooms. Now the task is fine-grained (the clinician wants eating patterns and transition counts, not just disruption levels), every bedroom is a layout the model never saw, and per-home calibration visits are economically impossible. This is LOBPO as a business model. Choose FMCW: 83.8% where the others manage 78.5% and 68.8%, plus 3D localization to enrich reports with activity hotspots. Budget the 1.2–1.75 W (mains or generous battery), pair it with any cheap radio for backhaul, and pocket the fold-stability (2.3-point spread) as a support-cost saving: the product behaves the same in every house.
Deployment 3: a research group extending this very paper. Keep all three — that is the point of the open dataset. The highest-value experiments, ranked by effort-to-insight: (1) the representation ablation — FMCW with range retained vs collapsed on identical data — which would isolate property 4 causally; (2) early- and late-fusion of the three streams against the best single modality; (3) causal clutter removal and online segmentation, to convert the voted numbers into deployable ones. Each is a paper, and each needs zero new hardware.
Fusion. The dataset is synchronized across all three radios by construction — the ideal substrate for multi-modal fusion, which the paper measures not at all. The confusion analysis begs for it: FMCW's LIE-ON-BED/ANXIOUS blur is exactly where IR-UWB's retained range helps; IR-UWB's unseen-layout collapse is exactly where FMCW's collapsed range is immune. A fused system might keep 89% and 84%. The dataset is open; this is a thesis waiting for an author.
Spontaneity. TTS-cued flows preserve natural transitions but not natural timing — nobody instructed a real insomniac at 3 a.m. Real patients, real nights, and genuinely spontaneous behaviour (plus events this protocol could not ethically stage, like falls) remain the gap between 89% here and a deployable clinical claim.
Causal, segmentation-free operation. Two honest debts from the pipeline: the 10 s running median is non-causal (up to 5 s latency), and voting used ground-truth event boundaries. A production stack needs causal background estimation and online segmentation, both of which will shave points off the voted numbers.
The representation ablation. The four-property framework is consistent with everything observed, but range-collapse-vs-retention was never isolated on one radar. Running FMCW with range retained (and IR-UWB collapsed) on this same open dataset would convert the paper's diagnosis into a proof.
The moves in this paper are instances of patterns you can go deepen right now. The static/dynamic/noise decomposition and the discipline of asking where the information lives is the heart of our Why Fuse? lesson and the whole Sensor Fusion Atlas. The 2D-FFT that turns phase ramps into range-Doppler peaks is the same Fourier machinery built from scratch in the FFT lesson. The CNN's conv-pool-dense anatomy is derived layer by layer in Convolutional Networks and trained end-to-end in CNN Classification. The synchronized-recording discipline — one clock, many sensors — is the subject of Calibration & Time Sync. And voting-style temporal smoothing of frame-level labels reappears, with more machinery, in CRF & HSMM Temporal Smoothing.
"Can I just fine-tune per room and keep IR-UWB's 89%?" If you can collect labelled data in each deployment room — yes, that is effectively the LOPO condition, and IR-UWB is your radio. The catch is operational: per-room data collection means a technician, a protocol, and a consenting resident per install. LOBPO exists because most deployments cannot afford that; decide which world you live in before choosing.
"Do these results transfer to other rooms, buildings, mounting heights?" Cautiously. The physics arguments (bandwidth → resolution, collapse → robustness) are portable; the exact F1 values are one bedroom's numbers, from cued activities and single occupancy. The paper claims guidelines, not universal constants — and provides the dataset so you can check your own conditions.
"Why do all three do so well on sleep monitoring even at unseen bed positions? Doesn't that contradict the overfitting story?" No — it confirms where overfitting bites. The coarse classes differ mainly in gross motion energy and rhythm (still vs restless vs transition vs walking), which every representation captures without spatial detail. Layout overfitting damaged precisely the fine distinctions that leaned on where; merge those away and the layout dependence mostly merges away with them.
"Is the CNN the bottleneck? Would a transformer change the ranking?" Possibly the absolute numbers; plausibly not the physics-driven pattern. The information Wi-Fi never captured is not recoverable by any architecture, and FMCW's input contains almost nothing layout-specific for any model to overfit. The most architecture-sensitive claim is IR-UWB's: a model with built-in spatial invariances (or aggressive range augmentation) might keep more of its 89% at unseen positions. That is a research question the open dataset invites.
"What single number do I quote in a design review?" Quote two, and the protocol names with them: "89.0% fine-grained macro F1 for IR-UWB when rooms match training (LOPO), 83.8% for FMCW at unseen bed positions (LOBPO)." Quoting either alone misrepresents the paper — the pair is the finding.
| Term | Meaning in one line |
|---|---|
| FMCW | Frequency-modulated continuous wave radar: chirps, beat frequencies, range-Doppler maps |
| IR-UWB | Impulse-radio ultra-wideband: ~2 ns pulses over ≥500 MHz, echoes timed directly |
| CSI | Channel state information: per-subcarrier complex channel estimate from each Wi-Fi packet |
| CIR | Channel impulse response: the room's echoes as amplitude-delay taps |
| Chirp / chirp rate μ | Linearly frequency-swept probe; sweep speed B/Tc in Hz/s |
| Beat frequency fb | Mixer output tone 2μR/c — range encoded as pitch |
| Slow-time / fast-time | Across probes (ms scale, where motion lives) / within one probe (ns–μs scale, where range lives) |
| Range resolution ΔR | c/(2B): minimum separable reflector spacing — 0.126 / 0.30 / 7.5 m here |
| Doppler resolution Δv | λ/(2Tobs): minimum separable radial-velocity difference — 0.093 / 0.009 m/s |
| Micro-Doppler | The braid of per-body-part velocities over time that fingerprints an activity |
| Range-Doppler map (RDM) | 2D image: reflected energy indexed by (distance, radial velocity) |
| Monostatic / bi-static / pseudo-monostatic | TX and RX co-located / separated / separated by a negligible baseline (30 cm) |
| Virtual antenna | One TX–RX pair; 3×4 = 12 independent looks on the IWR6843AOP |
| Non-coherent integration | Summing magnitudes across channels: signal reinforces, uncorrelated noise averages down |
| First-path (FP) correction | Subtracting the static LOS tap's phase per packet to cancel common-mode clock drift |
| OFDM / subcarrier | Many narrow parallel tones instead of one fast signal; Wi-Fi's 53 test tones over 20 MHz |
| openwifi | Open-source IEEE 802.11 SDR on FPGA — the platform enabling monostatic Wi-Fi radar |
| CFO / SFO / STO | Carrier-frequency, sampling-frequency, symbol-timing offsets — the bi-static phase plagues a shared clock eliminates |
| DC removal | Subtracting the per-range-bin mean over a frame's chirps — kills zero-Doppler clutter |
| Running median background | Per-cell median over 10 s subtracted from the map; robust to transients; non-causal, up to 5 s latency |
| STFT | Short-time Fourier transform: sliding-window spectra — Wi-Fi's 0.4 s Doppler lens |
| Macro F1 | Unweighted mean of per-class F1 — rare classes count fully |
| Voting | Majority label over all windows of one ground-truth event — event-level score under known segmentation |
| LOPO / LOSO / LOBPO | Leave one person / scenario / bed-position out — escalating definitions of "unseen" |
| Radar cross-section (RCS) | Effective reflecting area of a target — reduced for humans seen from the ceiling |
| Spatial-information retention | Whether the classifier input keeps explicit position — the paper's decisive fourth property |
| Fact | Value |
|---|---|
| Range resolutions (FMCW / UWB / Wi-Fi) | 0.126 / 0.30 / 7.5 m — from c/(2B) with B ≈ 1.19 GHz / 499.2 MHz / 20 MHz (ratio ~2 : 1 : 0.04) |
| Doppler resolutions | FMCW 0.093 m/s (96-chirp frame) · IR-UWB 0.009 m/s (2.5 s window) · Wi-Fi 0.4 s STFT window |
| Slow-time rates | 96 chirps / 50 ms frame · 150 Hz CIR · 500 Hz mean packets |
| Hardware | TI IWR6843AOP (60–64 GHz, 3×4 = 12 virtual ch.) · Qorvo QM33120WDK1 / DW3000 (ch. 5, 6.49 GHz) · ZedBoard + FMCOMMS2 running openwifi (53 subcarriers) |
| Spatial info in CNN input | FMCW collapsed (max over range) · IR-UWB retained · Wi-Fi nonexistent |
| Fine 10-class, after voting | LOPO 83.4 / 89.0 / 79.0 · LOSO 86.6 / 86.4 / 75.3 · LOBPO 83.8 / 78.5 / 68.8 (FMCW / UWB / Wi-Fi) |
| Voting gains (LOPO fine) | +8.4 / +10.4 / +14.0 points over 75.0 / 78.6 / 65.0 |
| LOSO stability | FMCW fold spread 2.3 pts (std 0.8) vs IR-UWB 12.8 pts (std 5.4) |
| Sleep 4-class, after voting | LOPO 95.1 / 98.2 / 96.1 · LOBPO 93.4 / 94.2 / 92.6 — all >92% everywhere |
| Signature confusions | IR-UWB LIE ON BED 89→57% (LOBPO) · Wi-Fi CLAP HANDS 47→21% · FMCW LIE ON BED→ANXIOUS 7→14% · IR-UWB EATING→NO ACTIVITY 13% |
| Deployment | Power 1.2–1.75 / 0.2 / 3.5–4.0 W · Cost ~EUR 20 / 14 / 320 · 3D localization: FMCW only · Comms: none / 802.15.4z / 802.11 |
| Dataset | 20 participants (14M/6F, 21–67 y), 6 layouts, synchronized, TTS-guided, open |
1. The three numbers, forever. Without looking: the three range resolutions, the two Doppler resolutions, and the three LOBPO fine-grained scores. Check: 0.126 / 0.30 / 7.5 m; 0.093 / 0.009 m/s; 83.8 / 78.5 / 68.8%. If you can also say why each follows from the one before it, this lesson is finished with you.
2. Spec your own deployment. Pick a real setting you know — a relative's bedroom, a hospital bay, a studio apartment. Walk the decision flow: task granularity, layout uniformity, retraining budget, power/wiring, who needs the data and over what link. Write the choice and its two biggest risks. No single answer — but if your write-up never cites a number from the ledger, redo it with numbers.
3. Reproduce one cell. Plan the minimal path to reproducing IR-UWB's LOPO 89.0%: download the open dataset; implement Chapter 6's UWB pipeline (Eqs. 14–16 — the Chapter 3 snippet is most of it); build Chapter 7's CNN; run 20 LOPO folds with class weighting; apply voting within ground-truth events; compute macro F1. Estimate which step costs the most wall-clock. Likely answer: the 20 training runs — everything else is an afternoon. Then run it.
4. Argue the other side. Write the strongest good-faith case that Wi-Fi sensing is still the right investment despite these results. Fair ingredients: bi-static deployments reuse existing infrastructure at true zero hardware cost; newer standards carry wider channels; a sensing-aware future Wi-Fi chipset could expose monostatic CSI at commodity prices; and the coarse-task result (92.6% at unseen positions) shows the information for sleep-grade monitoring already survives 20 MHz. The paper's verdict is about today's monostatic single-anchor option — know exactly how far it extends.
Strip away the radar jargon and this paper teaches a discipline that outlives its numbers. Three instruments looked at the same world. Each was honest about what it kept and what it threw away — and the one engineered to forget the most (position, place, the room itself) was the one still standing when the world rearranged. That is not a radar lesson. That is the bias-variance trade-off with a bedroom ceiling for a blackboard, and it is the reason a well-chosen representation beats a clever model wherever deployment differs from training. When you next design a feature pipeline — any pipeline — ask the question this paper operationalised: which of these features is a fact about the signal, and which is a fact about my lab?
Without scrolling up: (1) derive all three range resolutions from c/(2B) and say what each means physically for a body in a bedroom; (2) explain the FMCW beat-frequency trick and compute fb for a target at 2 m; (3) state the measurement-matrix decomposition x = s + d + w and name which pipeline step removes s in each modality; (4) explain why FMCW collapses range while IR-UWB retains it, and predict from that the LOPO and LOBPO winners; (5) pick a radar for (a) a battery-powered sleep monitor and (b) a fine-HAR system installed in arbitrary rooms — with numbers. If any of the five stalls, its chapter is one tap away.