TriDrive: Joint Driver, Vehicle, and Road Modeling for Forecasting and Driver Monitoring
Organizations: University of South Florida · NVIDIA · Purdue University · Hunan University
Abstract
Predicting how drivers, vehicles, and road scenes interact and evolve together is central to driver monitoring. Prior work models in-cabin activity or traffic-conditioned driver motion in isolation, motivating joint driver, vehicle, and road modeling with real-time on-vehicle evaluation. We introduce TriDrive, to our knowledge the first unified framework that jointly forecasts driver kinematics, vehicle dynamics, and road demands through an automation-conditioned transition model. Modality-specific encoders (an anchored kinematic representation of the driver, causal CAN-bus dynamics, and frozen V-JEPA 2 road latents with structured road margins) are connected by directed residual connections through which driver and road context refine vehicle forecasts. We evaluate TriDrive on three downstream tasks. On the public AIDE benchmark, its kinematic encoder recipe sets a new full-set state of the art (SOTA) among published baselines (48.05 versus 71.47 All-MPJPE). On 197.2 hours of naturalistic BATON subset, directed connections and road margins raise assistance-engaged PR-AUC by 0.084 for steering onset and 0.286 for time-to-collision drops. For real-time use, we distill the road encoders and run TriDrive on a comma four with an external 8 GB GPU, where a lightweight current-state warning probe updates at 5 Hz with 177 ms p95 latency while the joint model forecasts concurrently. The probe is above an openpilot-based baseline on human-labeled manual-driving warnings (AUROC 0.725 versus 0.563), and in a paired on-road study 14 drivers rate its warnings as more appropriate (+1.79) and timely (+2.67) than those of openpilot's driver-monitoring system.
Figures & tables
| Model | All-MPJPE | [email protected] | , top 5% | , top 20% | , top 50% |
|---|---|---|---|---|---|
| Published (Driver-WM paper) | |||||
| ST-GCN | 110.98 | 60.97 | – | – | – |
| SiMLPe | 106.38 | 63.45 | – | – | – |
| MotionBERT | 73.51 | 78.01 | – | – | – |
| Driver-WM | 71.47 | 71.66 | – | – | – |
| Zero velocity | 52.89 | 85.95 | – | – | – |
| Model | DBR | DER | TCR | VCR | All-MPJPE |
|---|---|---|---|---|---|
| Driver-WM (published) | 68.07 | 72.61 | 90.15 | 68.34 | 71.47 |
| Ours, view-gate variant | 71.13 .32 | 74.67 .36 | 90.29 .79 | 70.30 1.02 | 49.71 .75 |
| A. Connections (ECAN inputs, no forecast features); = directed minus indep. branches / no links / all-to-all | |||||
|---|---|---|---|---|---|
| Driving | Event | indep. | no links | all-to-all | Directed (default) |
| Manual | Steering | +.030 ∗ | +.028 ∗ | .007 ∗ | .774 .002 |
| Gas | +.020 ∗ | .0000 | .011 | .590 .014 | |
| Brake | +.037 ∗ | +.039 ∗ | .007 | .381 .003 | |
| Engaged | Steering | +.084 ∗ | +.070 ∗ | +.002 | .463 .005 |
| Gas | .003 | .002 | +.002 | .033 .003 | |
Appendix figures & tables22 assets
Supplementary material from the paper’s appendix.
Appendix
| Configuration | Parameters | Role |
|---|---|---|
| BATON, visual-only | 3,502,925 | Active forward-path count before forecast injection; road side vector is visual. |
| BATON, ECAN | 3,502,925 | Same active count; 40 visual side components replaced by road-margin features. |
| ECAN registered model | 3,649,913 | Includes an additional off-path pressure head. |
| Default registered joint model | 3,658,957 | Adds the 9,044-parameter forecast injector. |
| Compact pose forecaster | 850,627 | Trained separately, then frozen; retained at inference. |
| Default combined registry | 4,509,584 | Joint registry plus frozen forecaster, not 4.51M jointly trainable parameters. |
| Input | Shape | Contents |
|---|---|---|
| Vehicle history | Five standardized vehicle signals and relative time, at 10 Hz. | |
| Driver history | Eleven kinematic channels, validity, five vehicle signals, relative time. | |
| Road token bank | Pooled clip features; separate presence flags and actual time lags. | |
| Road side vector | Visual PCA components, or 216 visual and 40 road-margin components in ECAN. | |
| Automation state | scalar | Manual, engaged, or unknown. |
| Forecast input | Six driver-state probabilities, three mode probabilities, and validity. |
| Stage | Learning rate | Weight decay | Batch | Epochs / patience |
|---|---|---|---|---|
| Vehicle base | .01 | 1,024 | 40 / 8 | |
| Driver base | 4,096 | 12 / 2 | ||
| Road base | .01 | 1,024 | 40 / 8 | |
| Joint, new/base | .01 | 1,024 | 15 / 4 | |
| AIDE | .05 | 32 | 200 / 40 | |
| BATON pose pretraining | .05 | 256 | 6 executed |
| Family | Event | Manual | Engaged |
|---|---|---|---|
| Demand | TTC | ∗ | ∗ |
| TTC drop | ∗ | ∗ | |
| Lane offset | ∗ | ∗ | |
| Deceleration | ∗ | ∗ | |
| Steering rate | ∗ | ||
| Pressure | TTC | ∗ | ∗ |
| Driving | Target | Persistence | Constant velocity | Learned residual | + video |
|---|---|---|---|---|---|
| Manual | Lead distance | 6.177 | 5.147 | ||
| Relative speed | 1.154 | 1.154 | |||
| Lead speed | 1.452 | 1.452 | |||
| Lane offset | .168 | .301 | |||
| Engaged | Lead distance | 4.892 | 5.328 | ||
| Relative speed | .807 | .807 |
| Change | Evidence and interpretation |
|---|---|
| Road-to-driver connection | Inconclusive against the two-connection model; omitted from the default. |
| Driver-WM-style encoder (21.2M Transformer) | The adapted trunk decreases manual hand-leave PR-AUC by .018 and steering by .009/.028 in manual/engaged driving. Not parameter-matched. |
| Matched driver encoders | A TCN decreases manual hand-leave by .020. A small Transformer improves head-turn ranking but worsens its hazard NLL. |
| Rollout (recurrent or stochastic) decoders | Some onset gains over fresh direct heads, but worse probabilistic or continuous scores and poorer results than pretrained direct heads. |
| Gaze-proxy chain | Head-turn improves by .023/.028, but adding its predictions gives no warning AUROC gain. Human gaze validation is incomplete. |
| Identity-invariance objectives | Adversarial heads and per-route normalization fail the joint identity-removal and prediction rule; driver endpoints worsen. |
| Published method | All-MPJPE | HM-MPJPE | [email protected] |
|---|---|---|---|
| ST-GCN | 110.98 | 158.10 | 60.97 |
| SiMLPe | 106.38 | 156.29 | 63.45 |
| MotionBERT | 73.51 | 141.53 | 78.01 |
| Offline encoder–decoder | 75.87 | 144.05 | 77.17 |
| Static pooling | 68.50 | 134.56 | 72.55 |
| Single stream | 90.87 | 147.44 | 59.63 |
| Model | All-MPJPE | HM-MPJPE | PCK | HM |
|---|---|---|---|---|
| Zero velocity (published) | 52.89 | 139.19 | 85.95 | 178.62 |
| Driver-WM (published) | 71.47 | 138.03 | 71.66 | 155.82 |
| Driver-WM, our reproduction (123.7M, 3) | ||||
| Zero velocity (ours) | 52.93 | 139.23 | 85.95 | 178.67 |
| ST-GCN, anchored (3 seeds) | ||||
| MotionBERT, fine-tuned (3) |
| Configuration | All-MPJPE | Status |
|---|---|---|
| Released weights, anchored output | Evaluated | |
| Released weights, absolute output | Evaluated | |
| Random initialization, anchored | Evaluated | |
| Released weights, absolute, no EMA | Post hoc | |
| Ours (pose forecaster), no pretraining | Reference | |
| Ours (pose forecaster) + BATON, matched seeds | Reference |
| Model | 5% (30) | 10% (60) | 20% (121) | 30% (182) | 50% (304) | all (609) |
|---|---|---|---|---|---|---|
| Zero velocity | 230.28 | 178.67 | 140.66 | 120.46 | 97.28 | 63.74 |
| Ours (5) | ||||||
| Ours + BATON pretraining (5) | ||||||
| Ours, view-gate semantic variant | ||||||
| ST-GCN, anchored | ||||||
| SiMLPe, anchored |
| Model | 5% (30) | 10% (60) | 20% (121) | 30% (182) | 50% (304) | all (609) |
|---|---|---|---|---|---|---|
| Zero velocity | 175.66 | 139.23 | 111.54 | 97.16 | 79.36 | 52.93 |
| Ours (5) | ||||||
| Ours + BATON pretraining (5) | ||||||
| Ours, view-gate semantic variant | ||||||
| ST-GCN, anchored | ||||||
| SiMLPe, anchored |
| Model / checkpoint | DBR | DER | TCR | VCR | All-MPJPE |
|---|---|---|---|---|---|
| Driver-WM, published single run | 68.07 | 72.61 | 90.15 | 68.34 | 71.47 |
| View-gate, geometry-selected | 67.56 | 73.06 | 91.39 | 69.94 | 48.64 |
| View-gate, F1-selected | 71.13 | 74.67 | 90.29 | 70.30 | 49.71 |
| Three-seed logit ensemble | 73.40 | 77.29 | 91.16 | 72.33 | 48.82 |
| Operating point | System | Recall | FA/h | Precision |
|---|---|---|---|---|
| Val 10 | A | .008 | 1.25 | .493 |
| B | .064 | 1.05 | .478 | |
| C | .000 | 11.52 | .122 | |
| Val 20 | A | .233 | 4.03 | .513 |
| B | .087 | 8.63 | .288 | |
| C | .000 | 12.41 | .175 |
| Operating point | System | Recall (95% interval) | FA/h | Precision |
|---|---|---|---|---|
| Val 10 | A | .409 (.00,.93) | 2.15 | .325 |
| B | .000 (.00,.00) | .00 | 1.000 | |
| C | .409 (.00,.93) | 1.58 | .793 | |
| Val 20 | A | .437 (.00,.99) | 5.27 | .421 |
| B | .410 (.00,.93) | 9.61 | .299 | |
| C | .000 (.00,.01) | 13.76 | .383 |
| Point | Pair | Recall difference [95% interval] | Effective lead, seconds [interval] |
|---|---|---|---|
| Val 20 | A C | +.233 [.022,.543] | -.139 [-.452,-.019] |
| B C | +.087 [.000,.422] | -.041 [-.205,.000] | |
| A B | +.146 [-.106,.413] | -.097 [-.331,.041] | |
| Val 10 | A B | -.056 [-.302,.000] | +.013 [-.013,.087] |
| Driving | System | Rows / positives | AUROC [95% interval] |
|---|---|---|---|
| Manual | A | 139 / 32 | .781 [.68,.87] |
| B | 139 / 32 | .750 [.65,.85] | |
| C | 134 / 27 | .478 [.33,.70] | |
| Engaged | A | 142 / 48 | .641 [.54,.74] |
| B | 142 / 48 | .654 [.55,.77] | |
| C | 136 / 43 | .758 [.69,.83] |
| Driving | Alert cell | Covered | Coverage | Labeled | |
|---|---|---|---|---|---|
| Manual | A | 212 | 160 | .755 | 14 |
| A+B | 169 | 119 | .704 | 12 | |
| A+B+C | 74 | 43 | .581 | 6 | |
| A+C | 56 | 33 | .589 | 10 | |
| B | 216 | 179 | .829 | 14 | |
| B+C | 62 | 44 | .710 | 10 |
| Student | Raw cosine | Centered cosine | PCA | Mean PCA | Side |
|---|---|---|---|---|---|
| v5 ViT-S/16 | .979 | .886 | .796 | .281 | .400 |
| v6 ViT-S/16, full data | .986 | .925 | .866 | .451 | .541 |
| v7-S, region targets | .988 | .936 | .888 | .495 | .589 |
| v7-B, region targets | .987 | .932 | .880 | .477 | .569 |
| Stated fidelity targets | .970 | – | .900 | – | .850 |
| Student | Token | Token | Side | Side | Agreement |
|---|---|---|---|---|---|
| v5 | .832 | .827 | .472 | .815 | 1.000 |
| v6 | .856 | .851 | .534 | .840 | 1.000 |
| v7-S | .872 | .868 | .578 | .857 | 1.000 |
| v7-B | .863 | .859 | .552 | .848 | 1.000 |
| Route | Teacher / student events | q99 | max | Events |
|---|---|---|---|---|
| R1 | 2 / 2 | .009 | .030 | Identical |
| R2 | 6 / 6 | .036 | .081 | Identical |
| R3 | 6 / 6 | .016 | .031 | Identical |
| R4 | 2 / 2 | .007 | .023 | Identical |
| Quantity | Drive 1 | Drive 2 | Drive 3 |
|---|---|---|---|
| Duration (s) | 1,347 | 1,450 | 2,453 |
| Pose / joint rate (Hz) | 9.67 / 4.61 | 8.50 / 2.26 | 9.38 / 2.35 |
| Road-student rate (Hz) | – | 0.93 | 1.89 |
| Warning-readout rate (Hz) | 5.00 | 5.00 | 5.00 |
| End-to-end latency p50 / p95 (ms) | 83 / 153 | 138 / 239 | 135 / 177 |
| Ready ticks (%) | 94.0 | 94.2 | 97.9 |
| ID | APP C | APP S | TIM C | TIM S | ANN C | ANN S | Preference |
|---|---|---|---|---|---|---|---|
| P01 | 4.00 | 2.50 | 7 | 1 | 6 | – | S |
| P02 | 6.33 | 4.00 | 7 | 1 | 2 | 2 | C |
| P03 | 4.00 | 1.67 | 4 | 2 | 2 | 1 | C |
| P04 | 6.33 | 1.67 | 6 | – | 3 | – | C |
| P05 | 6.00 | 5.00 | 7 | 2 | 4 | 4 | C |
| P06 | 4.33 | 3.67 | 6 | 4 | 5 | 1 | S |
Driver Monitoring
Driver monitoring uses in-cabin cameras and other sensors to detect driver states and support safer, more responsive vehicles.
See all 30 papers