Enciclopedia Boulder v1.0

Inicio · Capítulos · 14. Señales para visión artificial

15.52 14.3.5 Contrato ContactPair

Campo Tipo/regla
contactPairId string stable for bodyRegion + sceneObject/surfacePatch within scene revision
athleteTrackId string
bodyRegionId enum BodyContactRegion
sceneObjectId string
surfacePatchId string|null; required for directional force interpretation
contactPointBody {x,y,z,frameId,covariance}|null
contactPointScene {x,y,z,frameId,covariance}|null
signedDistanceM float|null; positive separated, approximately zero touching, negative penetration artifact
normalVector {x,y,z,frameId}|null; outward from surface into free space
tangentBasis {t1,t2,frameId}|null
geometricState Absent|Approaching|Candidate|Touching|Separating|OccludedUnknown
functionalState Unknown|UnloadedTouch|Loading|LoadBearing|SlidingLoaded|Unloading|Released
contactRoleHypotheses array<{role,probability,evidence}>
probabilityContact float 0..1 calibrated
probabilityLoadBearing float 0..1 calibrated
evidenceIds array
provenance models, sensors, calibration, timestamps and revision IDs

La clave conceptual es el par región corporal–objeto/superficie. Una mano puede contactar dos caras de un pinch y un heel-toe cam puede crear varios microcontactos simultáneos dentro de un mismo objeto.

15.52.1 Distancia firmada

d > 0 : separado
d ≈ 0 : compatible con contacto
d < 0 : penetración geométrica o incertidumbre/model mismatch

Un valor negativo pequeño no confirma contacto real: puede provenir de profundidad, máscara, pose o transformaciones imprecisas.