"I can count your breaths from across the room and hear your heart move a fraction of a hair, all without a lens pointed at your face. People find this either the most private sensor ever built or the most invasive. They are both right."
A Discreet AI Agent
Prerequisites
This section stands on the three radar axes and the phase reasoning built in Section 44.1, and it treats the range-Doppler and micro-Doppler representations of Section 44.3 as the input data product, so read those first. The entire vital-sign story is an exercise in reading a slowly changing phase, which is the sampling, aliasing, and phase-unwrapping vocabulary of Chapter 3. It connects tightly to the contactless-monitoring framing of Chapter 33 and the cardiovascular ground truth of Chapter 30, and the activity-classification half reuses the human-activity machinery of Chapter 26. You need comfort with complex exponentials and the Doppler relation \(f_D = 2v_r/\lambda\).
Why a radar can watch a body without watching a body
A millimeter-wave radar aimed at a person is a strange kind of health monitor: it never touches the skin, needs no light, works through blankets and clothing, and yet resolves motion far finer than any camera. The reason is that radar measures displacement as phase, and at a 60 GHz wavelength of five millimeters, a chest wall rising by a single millimeter with each breath rotates the return phase by a large, easily measured angle. The same physics that lets an automotive radar clock a car's velocity (Section 44.1) lets a bedside radar clock a heartbeat's sub-millimeter surface pulsation. This buys three capabilities that wearables and cameras cannot match together: contactless vital signs for people who cannot or will not wear a device, gait and fall sensing that preserves privacy because there is no image to leak, and presence or occupancy detection that survives darkness and smoke. The catch is that the signal you want is buried: a heartbeat's chest motion is roughly a hundred times smaller than a breath's, which is itself dwarfed by any bodily movement, so the whole discipline is about isolating tiny periodic phase from large aperiodic clutter. This section builds the two pillars, vital-sign phase sensing and micro-Doppler activity recognition, and the honest limits of each.
Vital signs from chest-wall phase
What a vital-sign radar extracts is not motion in the ordinary sense but the tiny oscillation of a single range bin's phase. Point an FMCW radar at a seated person, run the range FFT of Section 44.3, and the torso lands in one range bin. That bin's complex value has a phase \(\phi(t) = 4\pi\, x(t)/\lambda\), where \(x(t)\) is the chest-surface displacement toward the radar. Respiration moves \(x(t)\) by one to twelve millimeters at roughly 0.2 to 0.5 Hz; the cardiac component adds a much smaller pulsation, on the order of 0.1 to 0.5 mm, at roughly 1 to 2 Hz. Why phase rather than amplitude is the readout: amplitude barely changes for a millimeter of motion, but phase, scaled by \(4\pi/\lambda\), swings by tens of degrees, which is why the sensitivity floor sits below a tenth of a millimeter with a decent receiver.
How you recover the two rates is a small pipeline: extract the target range bin, unwrap its phase across slow time (the frame-to-frame axis, sampled at the frame rate), then separate the respiration and cardiac bands. A naive bandpass fails more often than textbooks admit, because respiration is not a clean sinusoid and its harmonics fall squarely inside the cardiac band. The second and third harmonics of a 0.3 Hz breath sit near 0.9 Hz, close to a slow heart rate, so a respiration harmonic can masquerade as a heartbeat. Robust systems remove the respiration fundamental and its first several harmonics before estimating the cardiac rate, and modern pipelines increasingly hand the unwrapped phase to a learned model (a temporal convolution or state-space network from Chapter 14) that has seen the harmonic-confusion failure mode in training. The code below runs the classical version end to end so you can see the harmonic trap directly.
import numpy as np
fs = 20.0 # radar frame rate (Hz), i.e. slow-time sampling
t = np.arange(0, 30, 1/fs) # 30 s recording
# Simulated chest-bin phase: breathing (0.3 Hz) + its harmonics + heartbeat (1.2 Hz)
resp = 6.0*np.sin(2*np.pi*0.30*t) + 1.2*np.sin(2*np.pi*0.60*t) + 0.6*np.sin(2*np.pi*0.90*t)
heart = 0.4*np.sin(2*np.pi*1.20*t)
x_mm = resp + heart + 0.05*np.random.randn(t.size) # chest displacement (mm)
lam = 3e8 / 60e9 # 60 GHz wavelength ~ 5 mm
phase = np.unwrap((4*np.pi/lam) * (x_mm*1e-3)) # radians
def band_rate(sig, fs, lo, hi):
S = np.fft.rfft(sig - sig.mean())
f = np.fft.rfftfreq(sig.size, 1/fs)
m = (f >= lo) & (f <= hi)
return f[m][np.argmax(np.abs(S[m]))] * 60 # peak in band -> per minute
rr = band_rate(phase, fs, 0.1, 0.6) # respiration band
# Cardiac band WITHOUT removing respiration harmonics -> harmonic can win
hr_naive = band_rate(phase, fs, 0.8, 2.0)
# Remove respiration + first 3 harmonics, then estimate heart rate
notched = phase.copy()
for k in (1, 2, 3):
f0 = 0.30*k
S = np.fft.rfft(notched); f = np.fft.rfftfreq(notched.size, 1/fs)
S[np.abs(f - f0) < 0.05] = 0
notched = np.fft.irfft(S, n=notched.size)
hr_clean = band_rate(notched, fs, 0.8, 2.0)
print(f"respiration rate : {rr:4.1f} breaths/min")
print(f"heart rate naive : {hr_naive:4.1f} bpm (harmonic-contaminated)")
print(f"heart rate clean : {hr_clean:4.1f} bpm")
# respiration rate : 18.0 breaths/min
# heart rate naive : 54.0 bpm (respiration 3rd harmonic wins)
# heart rate clean : 72.0 bpm
Code 44.6.1 shows why the interesting engineering in vital-sign radar is spectral hygiene rather than raw sensitivity. The 54-versus-72 bpm gap is not noise; it is a real spectral peak in the wrong place, and only prior knowledge of respiration structure resolves it.
The heartbeat is a hundredth of the breath, and that ratio sets the whole design
Chest motion from breathing is roughly 1 to 12 mm; cardiac surface pulsation is roughly 0.1 to 0.5 mm. That ten-to-hundredfold amplitude gap is the single fact that governs vital-sign radar. It means respiration is easy and heart rate is hard; it means any bulk body motion (a shrug, a reach, a cough) instantly swamps the cardiac signal and forces the system to drop that window; and it means the cardiac estimate needs seconds of stillness to average, so a radar reports heart rate at coarse time resolution and with an explicit confidence that collapses during movement. Design accordingly: quantify uncertainty per window (Chapter 18) and gate the heart-rate output on a motion detector rather than pretending every second yields a valid beat.
Micro-Doppler: reading a body by how its parts move
What micro-Doppler adds is a signature of articulated motion. A walking person is not a point: the torso moves at the average velocity while arms and legs swing faster and slower, feet momentarily stop at each step. Each body part contributes its own Doppler shift, and the spectrogram of Doppler over time (Section 44.3) paints a rhythmic sheaf of curves that is nearly a fingerprint of the gait. Why this matters for health and safety sensing is that the same signature distinguishes walking from sitting from a fall, separates a slow shuffling gait from a steady one (a marker of frailty and fall risk), and does it without ever forming an image, so a bedroom or bathroom can be monitored where a camera would be unacceptable. When to prefer it over the wearable inertial approach of Chapter 26: exactly when the person will not or cannot wear a device, which describes much of elder care.
How models consume it: the micro-Doppler spectrogram is a 2D image-like tensor, so the recognition problem reduces to the image and time-series learning of Parts II and IV. A small convolutional or spectro-temporal transformer network (Chapter 15) trained on labeled spectrograms classifies activities and flags falls with high accuracy in controlled rooms. The hard part is not the classifier but generalization: a fall dataset collected in one room with staged falls by young volunteers rarely transfers to a real elderly household, which is a distribution-shift and leakage problem, handled with the discipline of Chapter 5 and Chapter 66.
The care-home fall detector that cried wolf at the recliner
A team deployed a 60 GHz ceiling radar for fall detection in an assisted-living apartment after strong lab numbers: staged falls scored above 95 percent recall on a held-out split. In the field the recall held, but precision cratered. The culprit was a motorized recliner. When a resident dropped the footrest and reclined quickly, the chair's rapid, whole-body vertical motion produced a micro-Doppler burst statistically close to the training falls, which had all been performed on a bare floor with no furniture. The model had learned "large sudden downward Doppler equals fall" because nothing in training taught it otherwise: a textbook leakage-by-omission failure. The fix combined three moves: collect negatives from the actual deployment environment (recliners, sitting down heavily, dropping objects), add a short post-event stillness check (a real fall is usually followed by a person remaining down, a recline is not), and report a calibrated confidence so caregivers could triage rather than trust a hard label. Field precision recovered. The lesson generalizes to every radar health product: the room is part of the model, and a split that shares rooms or subjects between train and test flatters you into shipping a detector that has never seen the world.
Right tool: vital signs and presence from a vendor SDK instead of raw phase
Hand-building the pipeline in Code 44.6.1 into a robust product means writing range-bin selection, clutter removal, phase unwrapping, respiration-harmonic suppression, motion gating, and per-window confidence, easily 400 to 700 lines before it survives a real bedroom. Vendor stacks collapse most of it. Infineon's Radar Development Kit for its 60 GHz XENSIV BGT60 parts, Texas Instruments' mmWave vital-signs and presence demos for the IWR6843, and Google's Soli pipeline expose presence, respiration rate, and heart rate as configured outputs: roughly proc = VitalSignsProcessor(cfg); vitals = proc.update(frame) yielding vitals.breaths_per_min and vitals.heart_rate_bpm with a validity flag. That is a few dozen lines against several hundred. You still own the two things the SDK cannot know: the deployment-specific evaluation set (the recliner problem above) and the clinical validation and consent regime of Chapter 34; the SDK owns the DSP.
Presence, sleep, and the privacy dividend
What the lowest-effort, highest-value radar health product actually measures is often just presence: is a person in the room, are they in bed, did they leave and not come back. A radar detects the micro-motion of a living body (breathing alone is enough) and so distinguishes an occupied bed from an empty one, or a person from a warm but motionless object, which thermal and PIR sensors confuse. Why this is compelling for sleep and elder care is the privacy dividend: radar produces range, velocity, and coarse angle, never a recognizable face or scene. A device that can report "restless, 14 breaths per minute, left bed at 3 a.m." without ever capturing an image is far easier to place in a bedroom or bathroom than a camera, and it is the argument that put radar sleep sensing into consumer nightstands and smart displays.
How to think about the privacy claim precisely: radar is less identifying than video but not non-identifying. Gait micro-Doppler and even breathing-pattern statistics carry weak biometric information, and multi-person scenes leak who is present. This is the same double-edged property that Chapter 47 examines for through-wall Wi-Fi sensing, and it lands squarely on the biometric-privacy obligations of Chapter 34. "No camera" is a real and marketable privacy gain, but it is not the same as "no personal data," and a responsible design says so.
Where the field is pushing
The frontier is moving from single-target, single-room demos toward robust multi-person, in-the-wild sensing. Recent directions worth tracking: contact-free continuous blood pressure and pulse-transit-time estimation from the pulse-wave arriving at torso versus wrist range bins, still early and not clinically cleared; multi-person vital signs that spatially separate people with the 4D imaging radars of Section 44.4 so several sleepers in one bed can be tracked; and self-supervised pretraining on large unlabeled radar corpora (Chapter 17) to cut the crippling cost of labeled clinical data. Google's Soli line (Nest Hub sleep sensing) and Infineon's 60 GHz XENSIV platform are the reference consumer hardware; on the research side, mmWave datasets such as MMVR and the vital-signs subsets of public FMCW corpora are enabling reproducible benchmarks. The open problem underneath all of it is generalization across bodies, postures, clothing, and rooms, the radar version of the distribution-shift challenge in Chapter 66.
Exercise: from raw frames to a gated vital-sign stream
You are given a 60 GHz radar recording of a seated subject at a 20 Hz frame rate, as a complex range-slow-time matrix, plus a reference pulse oximeter (the PPG ground truth of Chapter 30). (1) Select the chest range bin automatically (hint: the bin whose phase variance sits in the respiration band, not the bin with the largest amplitude). (2) Unwrap its phase and estimate respiration rate. (3) Build a motion gate that marks windows where bulk motion makes heart rate unreliable, and report heart rate only on clean windows. (4) Compare your gated heart-rate estimates to the oximeter with a Bland-Altman plot, and state the mean bias and limits of agreement. (5) Explain why reporting a heart rate on every window, including motion windows, would make your error metrics look worse and your product more dangerous. Reference the notching trick in Code 44.6.1.
Self-check
1. A 60 GHz radar sees a chest wall move 1 mm toward it. Using \(\phi = 4\pi x/\lambda\), roughly how many degrees does the return phase rotate, and why does this make phase (not amplitude) the vital-sign readout?
2. A bedside radar reports a heart rate of exactly 3 times the respiration rate during a still period. What failure should you suspect first, and what preprocessing step from this section fixes it?
3. Marketing wants to claim the radar sleep monitor is "fully anonymous because it has no camera." Give one concrete way the radar still carries personal information, and name the chapter whose obligations still apply.
What's Next
In Section 44.7, we take everything from this chapter, the signal chain, the representations, imaging radar, fusion, and human sensing, out of the lab and into shipping systems: how radar AI is actually deployed across automotive safety, security and perimeter monitoring, and healthcare, and the reliability, calibration, and regulatory constraints that separate a working demo from a product you can put in a car or a hospital room.