4. Occupant classification system case
Passenger presence detection (PPD) is the front end of any occupant classification system (OCS). Before the restraint control module can decide whether to suppress, de-rate, or fully enable a frontal airbag, it must first answer a deceptively simple question: is there a person on this seat, and if so, what kind of occupant? This chapter walks through a representative engineering case in which a pressure-sensitive seat mat is fused with a capacitive presence sensor and a seat-belt buckle switch to produce a robust occupancy state. The emphasis is on the fusion architecture, the feature engineering, and the decision logic that converts raw sensor channels into a stable classification output.
Why a Single Sensor Is Not Enough
A resistive pressure mat alone cannot reliably distinguish a small child in a child restraint system (CRS) from a heavy bag resting on the seat, because both may produce a similar total load. A capacitive sensor, by contrast, responds to the dielectric properties of a human body and can detect presence even at very low contact pressure, but it is sensitive to moisture, spilled liquids, and seat heating elements. A buckle switch tells you whether the belt is latched, but not whether anyone is actually sitting there. Fusing these three channels compensates for the individual weaknesses and is the standard approach in production OCS designs.
The fusion target is a discrete classification, typically one of: Empty, CRS, Small Occupant (child or small adult below a threshold), and Adult. Some programs add a Rear-Facing CRS class because the suppression rule differs. The output must be stable: a momentary pressure spike from a knee pressed into the seat must not toggle the state.
Sensor Channels and Feature Extraction
In this case the seat mat provides a grid of pressure-sensing cells. Rather than feeding raw cell values into the classifier, the algorithm extracts physically meaningful features over a sliding window of N = 20 samples at 100 Hz (200 ms):
- Total force — sum of all cell pressures, converted to newtons via a per-cell calibration factor.
- Contact area — number of cells above a noise floor, weighted by cell area.
- Center of pressure (CoP) — first moment of the pressure distribution, giving a 2D position on the seat.
- Pressure variance — spatial spread, which tends to be higher for a seated human than for a flat bag.
- Capacitance delta — change from the empty-seat baseline, filtered with a 5 Hz low-pass.
- Buckle state — boolean, debounced over 100 ms.
These features are computed every 10 ms and buffered. The classifier operates on the feature vector, not the raw grid, which reduces dimensionality and improves robustness to individual cell failures.
Fusion Architecture
The fusion is organized in two stages. The first stage is a per-channel confidence estimator: each sensor produces a soft score between 0 and 1 for each class. The pressure mat, for example, outputs a high CRS confidence when total force is moderate but contact area is small and concentrated near the seat center. The capacitive channel outputs high presence confidence when the capacitance delta exceeds a threshold that scales with ambient humidity. The buckle switch contributes mainly to the Adult and Small Occupant classes.
The second stage combines these scores with a weighted rule base and a temporal state machine. Weights are tuned during validation and stored in calibration EEPROM. A simplified decision rule for the CRS class is:
CRS_score = 0.55 * mat_CRS_conf
+ 0.30 * cap_presence_conf
+ 0.15 * (1 - buckle_latched)
if CRS_score > 0.62 and stable_for(300 ms):
state = CRS
elif total_force < 15 N and cap_delta < threshold_low:
state = EMPTY
elif total_force < 350 N:
state = SMALL_OCCUPANT
else:
state = ADULT
The stable_for guard is critical. It requires the candidate state to persist for a minimum dwell time before it is latched, which suppresses transient events such as a hand pressing on the seat or a door slam vibration.
Calibration and Threshold Setting
Thresholds are not universal; they depend on seat foam stiffness, mat construction, and vehicle trim. The calibration procedure in this case uses a set of reference loads: an empty seat, a 5th-percentile female dummy, a 50th-percentile male dummy, and a representative CRS with a 3-year-old dummy. For each reference, the feature vector is recorded over 30 seconds and the mean and standard deviation are computed. The threshold for total_force between Empty and Small Occupant is placed at the midpoint between the empty-seat mean plus three sigma and the small-occupant mean minus three sigma, ensuring no overlap.
Capacitive thresholds are calibrated with the seat dry and then repeated after a controlled moisture spray to verify that the presence threshold still separates a wet empty seat from a wet occupied seat. If the margin is insufficient, the algorithm falls back to a pressure-dominant weighting, which is a common degradation strategy.
Validation and Failure Modes
Validation runs the classifier against a scripted test matrix that includes static occupants, dynamic events (door slam, occupant shifting, child seat installation), and environmental extremes. The key acceptance criterion is that no misclassification persists longer than 500 ms, and that the CRS suppression state is never lost while a CRS is installed.
| Failure Symptom | Likely Cause | Troubleshooting Action |
|---|---|---|
| Empty seat reported as Small Occupant | Capacitive baseline drifted due to humidity | Re-run dry/wet baseline calibration; increase low-pass time constant |
| CRS state toggles to Adult | Buckle switch weight too high when belt routed through CRS | Reduce buckle weight for CRS class; add CRS-specific rule |
| Adult reported as Empty after shifting | Contact area temporarily below noise floor | Lower area threshold; extend dwell timer to 400 ms |
| State oscillates between Small and Adult | Force threshold sits inside occupant variance band | Widen hysteresis band; re-check reference load statistics |
Practical Takeaways
The core lesson from this case is that PPD robustness comes from diversity, not from a single high-precision sensor. The pressure mat provides spatial and force information, the capacitive channel provides presence confirmation independent of load, and the buckle switch provides a discrete contextual cue. The fusion layer must be designed with explicit dwell times and hysteresis so that transient events do not propagate to the airbag decision. Finally, calibration and validation must be treated as a closed loop: every threshold change is verified against the full reference matrix, and every failure mode is traced back to a specific feature or weight rather than patched with a global offset.