15.68 14.3.21 Ejemplo JSON
{
"contactEpisodeId": "ce-athlete07-lefttoe-hold0042-00018",
"contactPairId": "cp-athlete07-lefttoe-hold0042-face03",
"athleteTrackId": "athlete07",
"bodyRegionId": "LeftToe",
"sceneObjectId": "hold-0042",
"surfacePatchId": "hold-0042-face03",
"geometricState": "Touching",
"functionalState": "LoadBearing",
"probabilityContact": 0.97,
"probabilityLoadBearing": 0.84,
"contactRoleHypotheses": [
{
"role": "OutsideEdge",
"probability": 0.63,
"evidence": [
"E02-3DDistance",
"E06-KinematicResponse"
]
},
{
"role": "Smear",
"probability": 0.25,
"evidence": [
"E04-TangentialMotion",
"E09-SceneGeometry"
]
}
],
"forceEstimate": {
"valueVectorN": null,
"bodyWeightFraction": {
"lower": 0.08,
"upper": 0.22
},
"estimationMode": "DynamicsConstrained",
"quality": "Usable",
"dynamicsResidualN": 18.4
},
"startCandidateNs": 8123450000,
"touchOnsetNs": 8150000000,
"loadOnsetNs": 8190000000,
"releaseNs": 9420000000,
"qualityFlags": [
"DEPTH_VALID",
"HAND_OCCLUSION_NONE",
"NO_DIRECT_FORCE_SENSOR"
]
}El ejemplo no inventa Newtons. Publica un intervalo normalizado y
declara DynamicsConstrained. Cuando exista sensor,
valueVectorN y sensorId podrán contener
medición directa.