@konitif/viewer-3d 0.285.5 → 0.285.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/dist/renderer/IncarnationMaterialProjection.d.ts +16 -0
- package/dist/renderer/IncarnationMaterialProjection.d.ts.map +1 -0
- package/dist/renderer/IncarnationMaterialProjection.js +45 -0
- package/dist/renderer/IncarnationMaterialProjection.js.map +1 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.d.ts +15 -4
- package/dist/renderer/ObservedRobotPresentationBuffer.d.ts.map +1 -1
- package/dist/renderer/ObservedRobotPresentationBuffer.js +136 -8
- package/dist/renderer/ObservedRobotPresentationBuffer.js.map +1 -1
- package/dist/renderer/ObservedSoleStabilization.d.ts +41 -0
- package/dist/renderer/ObservedSoleStabilization.d.ts.map +1 -0
- package/dist/renderer/ObservedSoleStabilization.js +140 -0
- package/dist/renderer/ObservedSoleStabilization.js.map +1 -0
- package/dist/renderer/Viewer3DRenderer.d.ts +17 -0
- package/dist/renderer/Viewer3DRenderer.d.ts.map +1 -1
- package/dist/renderer/Viewer3DRenderer.js +188 -3
- package/dist/renderer/Viewer3DRenderer.js.map +1 -1
- package/dist/renderer/index.d.ts +1 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +1 -0
- package/dist/renderer/index.js.map +1 -1
- package/dist/supportDefinition.d.ts +5 -0
- package/dist/supportDefinition.d.ts.map +1 -1
- package/package.json +1 -1
- package/reference/catalog.json +3 -0
package/README.md
CHANGED
|
@@ -44,6 +44,13 @@ const scene = createViewer3DSceneSnapshot({
|
|
|
44
44
|
Import `@konitif/viewer-3d/renderer` only when a Three.js renderer and its
|
|
45
45
|
explicit providers are required.
|
|
46
46
|
|
|
47
|
+
The renderer's `setIncarnationMaterialProjection(target, projection)` tunes
|
|
48
|
+
standard/physical materials independently for `simulated` or `observed` visual
|
|
49
|
+
incarnations. Scales are applied from the captured material baseline, so repeated
|
|
50
|
+
updates do not accumulate. The observed clone never changes the source mesh.
|
|
51
|
+
Color/opacity remain owned by comparison appearance. These are visual settings,
|
|
52
|
+
not robot commands, measured material properties or evidence of emitted light.
|
|
53
|
+
|
|
47
54
|
## Public entry points
|
|
48
55
|
|
|
49
56
|
| Entry | Purpose |
|
|
@@ -65,6 +72,39 @@ import { resolveViewerOrientationGizmoTransform } from '@konitif/viewer-3d/orien
|
|
|
65
72
|
const transform = resolveViewerOrientationGizmoTransform({ x: 0, y: 0, z: 0, w: 1 });
|
|
66
73
|
```
|
|
67
74
|
|
|
75
|
+
## Observed pose playback
|
|
76
|
+
|
|
77
|
+
The observed robot's interpolated presentation uses a bounded buffer with a
|
|
78
|
+
450 ms visual delay. It interpolates only between admitted poses;
|
|
79
|
+
it never changes telemetry, predicts a future motion or drives the robot.
|
|
80
|
+
On buffer underrun it holds the last known pose rather than inventing motion.
|
|
81
|
+
Hosts may explicitly declare `sourceClock: 'monotonic'` when admitting a pose.
|
|
82
|
+
The buffer then preserves source intervals through receipt bursts, mapping
|
|
83
|
+
elapsed source time to the first receipt without comparing clock epochs.
|
|
84
|
+
Without that guarantee it uses receipt intervals. Session changes, invalid
|
|
85
|
+
samples and timeline gaps over 500 ms reset its history.
|
|
86
|
+
The raw presentation mode remains immediate. This delay does not apply to LED
|
|
87
|
+
observations or other sensor readings.
|
|
88
|
+
|
|
89
|
+
Hosts may author independent `supportDefinition.soleStabilizationChains` and
|
|
90
|
+
set `setObservedRobotSoleStabilizationStrength(0..1)` (default: disabled).
|
|
91
|
+
This is an inferred geometric presentation constraint, not measured contact
|
|
92
|
+
or simulated friction. It corrects only rendered articulated joints, within
|
|
93
|
+
authored limits and 0.04 radians of each admitted pose. A lifted sole or more
|
|
94
|
+
than 12 mm horizontal drift releases its anchor; session changes, disabling,
|
|
95
|
+
raw playback and timeline gaps discard anchors. Source observations and
|
|
96
|
+
hardware commands are never modified.
|
|
97
|
+
Eligible soles are constrained to a common lowest visible surface before root
|
|
98
|
+
grounding. Cached convex vertices give exact directional support of rigid
|
|
99
|
+
foot meshes, rather than the empty corners of a rotated bounding box.
|
|
100
|
+
Lifted or released feet are not pulled back into the contact plane.
|
|
101
|
+
|
|
102
|
+
Buffered poses use shape-preserving Hermite interpolation between already
|
|
103
|
+
admitted neighbors, with continuous velocity at interior sample boundaries.
|
|
104
|
+
The curve stays inside each segment's angular endpoints and stops at missing
|
|
105
|
+
data; its provenance includes the neighboring observations used for tangents.
|
|
106
|
+
This does not add visual delay or extrapolate a future pose.
|
|
107
|
+
|
|
68
108
|
## Reference
|
|
69
109
|
|
|
70
110
|
See [`reference/`](reference/) for the machine-readable capability catalog and
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Material } from 'three';
|
|
2
|
+
/** Visual-only projection; never a device command or a measured physical property. */
|
|
3
|
+
export interface Viewer3DIncarnationMaterialProjection {
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
environmentIntensity: number;
|
|
6
|
+
roughnessScale: number;
|
|
7
|
+
metalnessScale: number;
|
|
8
|
+
clearcoatScale: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function normalizeIncarnationMaterialProjection(value: Viewer3DIncarnationMaterialProjection): Viewer3DIncarnationMaterialProjection;
|
|
11
|
+
/** Baselines follow material lifetime and are never multiplied cumulatively. */
|
|
12
|
+
export declare class IncarnationMaterialProjector {
|
|
13
|
+
private readonly baselines;
|
|
14
|
+
apply(materials: Iterable<Material>, projection: Viewer3DIncarnationMaterialProjection): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=IncarnationMaterialProjection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncarnationMaterialProjection.d.ts","sourceRoot":"","sources":["../../src/renderer/IncarnationMaterialProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,QAAQ,EAAgB,MAAM,OAAO,CAAC;AAEhG,sFAAsF;AACtF,MAAM,WAAW,qCAAqC;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,qCAAqC,GAAG,qCAAqC,CAM1I;AAED,gFAAgF;AAChF,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAE3E,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,qCAAqC,GAAG,IAAI;CA6B9F"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { MeshPhysicalMaterial, MeshStandardMaterial } from 'three';
|
|
2
|
+
export function normalizeIncarnationMaterialProjection(value) {
|
|
3
|
+
for (const key of ['environmentIntensity', 'roughnessScale', 'metalnessScale', 'clearcoatScale']) {
|
|
4
|
+
if (!Number.isFinite(value[key]) || value[key] < 0)
|
|
5
|
+
throw new Error(`Invalid material projection ${key}`);
|
|
6
|
+
}
|
|
7
|
+
if (typeof value.enabled !== 'boolean')
|
|
8
|
+
throw new Error('Invalid material projection enabled');
|
|
9
|
+
return { ...value };
|
|
10
|
+
}
|
|
11
|
+
/** Baselines follow material lifetime and are never multiplied cumulatively. */
|
|
12
|
+
export class IncarnationMaterialProjector {
|
|
13
|
+
baselines = new WeakMap();
|
|
14
|
+
apply(materials, projection) {
|
|
15
|
+
const value = normalizeIncarnationMaterialProjection(projection);
|
|
16
|
+
for (const material of materials) {
|
|
17
|
+
if (!(material instanceof MeshStandardMaterial))
|
|
18
|
+
continue;
|
|
19
|
+
let baseline = this.baselines.get(material);
|
|
20
|
+
if (!baseline) {
|
|
21
|
+
baseline = {
|
|
22
|
+
envMap: material.envMap, environmentIntensity: material.envMapIntensity,
|
|
23
|
+
roughness: material.roughness, metalness: material.metalness,
|
|
24
|
+
clearcoat: material instanceof MeshPhysicalMaterial ? material.clearcoat : null,
|
|
25
|
+
iridescence: material instanceof MeshPhysicalMaterial ? material.iridescence : null,
|
|
26
|
+
sheen: material instanceof MeshPhysicalMaterial ? material.sheen : null,
|
|
27
|
+
transmission: material instanceof MeshPhysicalMaterial ? material.transmission : null
|
|
28
|
+
};
|
|
29
|
+
this.baselines.set(material, baseline);
|
|
30
|
+
}
|
|
31
|
+
material.envMap = value.enabled ? baseline.envMap : null;
|
|
32
|
+
material.envMapIntensity = value.enabled ? baseline.environmentIntensity * value.environmentIntensity : 0;
|
|
33
|
+
material.roughness = value.enabled ? Math.min(1, baseline.roughness * value.roughnessScale) : 1;
|
|
34
|
+
material.metalness = value.enabled ? Math.min(1, baseline.metalness * value.metalnessScale) : 0;
|
|
35
|
+
if (material instanceof MeshPhysicalMaterial) {
|
|
36
|
+
material.clearcoat = value.enabled ? Math.min(1, baseline.clearcoat * value.clearcoatScale) : 0;
|
|
37
|
+
material.iridescence = value.enabled ? baseline.iridescence : 0;
|
|
38
|
+
material.sheen = value.enabled ? baseline.sheen : 0;
|
|
39
|
+
material.transmission = value.enabled ? baseline.transmission : 0;
|
|
40
|
+
}
|
|
41
|
+
material.needsUpdate = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=IncarnationMaterialProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncarnationMaterialProjection.js","sourceRoot":"","sources":["../../src/renderer/IncarnationMaterialProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ export interface ObservedRobotPresentationSample {
|
|
|
4
4
|
sampleId: string;
|
|
5
5
|
connectionId: string;
|
|
6
6
|
sourceObservedAtSeconds: number | null;
|
|
7
|
+
/** Explicit host guarantee: source timestamps are monotonic within this connection. */
|
|
8
|
+
sourceClock?: 'monotonic';
|
|
7
9
|
receivedAtMs: number;
|
|
8
10
|
jointValues: Readonly<Record<string, number>>;
|
|
9
11
|
}
|
|
@@ -11,6 +13,7 @@ export interface ObservedRobotPresentationConfig {
|
|
|
11
13
|
minimumTransitionMs: number;
|
|
12
14
|
maximumTransitionMs: number;
|
|
13
15
|
maximumSampleGapMs: number;
|
|
16
|
+
presentationDelayMs: number;
|
|
14
17
|
}
|
|
15
18
|
export interface ObservedRobotPresentationFrame {
|
|
16
19
|
mode: ObservedRobotPresentationMode;
|
|
@@ -42,10 +45,12 @@ export interface ObservedRobotPresentationStatus {
|
|
|
42
45
|
* telemetry samples. Source observations remain immutable and never inherit
|
|
43
46
|
* values produced by this presentation buffer.
|
|
44
47
|
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
48
|
+
* Buffered playback trails the local receipt clock so both interpolation
|
|
49
|
+
* endpoints are already admitted observations, not predicted destinations.
|
|
50
|
+
* Without an explicit source-clock guarantee, timing uses local receipts.
|
|
51
|
+
* A declared monotonic source clock is mapped relatively onto the first local
|
|
52
|
+
* receipt, preserving sensor spacing through transport bursts. Clock epochs
|
|
53
|
+
* are never compared, and session changes discard the mapping.
|
|
49
54
|
*/
|
|
50
55
|
export declare class ObservedRobotPresentationBuffer {
|
|
51
56
|
private readonly config;
|
|
@@ -55,6 +60,10 @@ export declare class ObservedRobotPresentationBuffer {
|
|
|
55
60
|
private transitionSourceSampleIds;
|
|
56
61
|
private transitionStartedAtMs;
|
|
57
62
|
private transitionDurationMs;
|
|
63
|
+
private receiptCadenceMs;
|
|
64
|
+
private bufferedSamples;
|
|
65
|
+
private previousBufferedSample;
|
|
66
|
+
private sourceClockAnchor;
|
|
58
67
|
private pendingFallbackReason;
|
|
59
68
|
private status;
|
|
60
69
|
constructor(config?: Partial<ObservedRobotPresentationConfig>);
|
|
@@ -66,6 +75,8 @@ export declare class ObservedRobotPresentationBuffer {
|
|
|
66
75
|
ingest(sample: ObservedRobotPresentationSample): boolean;
|
|
67
76
|
project(renderedAtMs: number): ObservedRobotPresentationFrame | null;
|
|
68
77
|
isActive(renderedAtMs: number): boolean;
|
|
78
|
+
private projectBuffered;
|
|
69
79
|
private acceptFirstSample;
|
|
80
|
+
private resolvePresentationTime;
|
|
70
81
|
}
|
|
71
82
|
//# sourceMappingURL=ObservedRobotPresentationBuffer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservedRobotPresentationBuffer.d.ts","sourceRoot":"","sources":["../../src/renderer/ObservedRobotPresentationBuffer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,6BAA6B,GAAG,KAAK,GAAG,cAAc,CAAC;AAEnE,MAAM,MAAM,uCAAuC,GAC/C,MAAM,GACN,sBAAsB,GACtB,gBAAgB,GAChB,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,+BAA+B;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ObservedRobotPresentationBuffer.d.ts","sourceRoot":"","sources":["../../src/renderer/ObservedRobotPresentationBuffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { interpolateJointAngle } from './TemporalProjectionModel.js';
|
|
2
2
|
const DEFAULT_CONFIG = {
|
|
3
3
|
minimumTransitionMs: 16,
|
|
4
|
-
maximumTransitionMs:
|
|
5
|
-
maximumSampleGapMs:
|
|
4
|
+
maximumTransitionMs: 200,
|
|
5
|
+
maximumSampleGapMs: 500,
|
|
6
|
+
presentationDelayMs: 450
|
|
6
7
|
};
|
|
7
8
|
const EMPTY_STATUS = {
|
|
8
9
|
mode: 'interpolated',
|
|
@@ -19,10 +20,12 @@ const EMPTY_STATUS = {
|
|
|
19
20
|
* telemetry samples. Source observations remain immutable and never inherit
|
|
20
21
|
* values produced by this presentation buffer.
|
|
21
22
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
23
|
+
* Buffered playback trails the local receipt clock so both interpolation
|
|
24
|
+
* endpoints are already admitted observations, not predicted destinations.
|
|
25
|
+
* Without an explicit source-clock guarantee, timing uses local receipts.
|
|
26
|
+
* A declared monotonic source clock is mapped relatively onto the first local
|
|
27
|
+
* receipt, preserving sensor spacing through transport bursts. Clock epochs
|
|
28
|
+
* are never compared, and session changes discard the mapping.
|
|
26
29
|
*/
|
|
27
30
|
export class ObservedRobotPresentationBuffer {
|
|
28
31
|
config;
|
|
@@ -32,6 +35,10 @@ export class ObservedRobotPresentationBuffer {
|
|
|
32
35
|
transitionSourceSampleIds = [];
|
|
33
36
|
transitionStartedAtMs = 0;
|
|
34
37
|
transitionDurationMs = 0;
|
|
38
|
+
receiptCadenceMs = [];
|
|
39
|
+
bufferedSamples = [];
|
|
40
|
+
previousBufferedSample = null;
|
|
41
|
+
sourceClockAnchor = null;
|
|
35
42
|
pendingFallbackReason = 'insufficient_samples';
|
|
36
43
|
status = EMPTY_STATUS;
|
|
37
44
|
constructor(config = {}) {
|
|
@@ -40,6 +47,9 @@ export class ObservedRobotPresentationBuffer {
|
|
|
40
47
|
this.config = {
|
|
41
48
|
minimumTransitionMs,
|
|
42
49
|
maximumTransitionMs,
|
|
50
|
+
presentationDelayMs: typeof config.presentationDelayMs === 'number' && Number.isFinite(config.presentationDelayMs)
|
|
51
|
+
? clamp(config.presentationDelayMs, 0, 500)
|
|
52
|
+
: DEFAULT_CONFIG.presentationDelayMs,
|
|
43
53
|
maximumSampleGapMs: Math.max(maximumTransitionMs, finitePositive(config.maximumSampleGapMs, DEFAULT_CONFIG.maximumSampleGapMs))
|
|
44
54
|
};
|
|
45
55
|
}
|
|
@@ -64,6 +74,10 @@ export class ObservedRobotPresentationBuffer {
|
|
|
64
74
|
this.transitionSourceSampleIds = [];
|
|
65
75
|
this.transitionStartedAtMs = 0;
|
|
66
76
|
this.transitionDurationMs = 0;
|
|
77
|
+
this.receiptCadenceMs = [];
|
|
78
|
+
this.bufferedSamples = [];
|
|
79
|
+
this.previousBufferedSample = null;
|
|
80
|
+
this.sourceClockAnchor = null;
|
|
67
81
|
this.pendingFallbackReason = reason;
|
|
68
82
|
this.status = {
|
|
69
83
|
...EMPTY_STATUS,
|
|
@@ -97,10 +111,34 @@ export class ObservedRobotPresentationBuffer {
|
|
|
97
111
|
this.acceptFirstSample(normalized, 'invalid_sample');
|
|
98
112
|
return true;
|
|
99
113
|
}
|
|
100
|
-
|
|
114
|
+
const sourceTimed = previous.sourceClock === 'monotonic' && normalized.sourceClock === 'monotonic' &&
|
|
115
|
+
previous.sourceObservedAtSeconds !== null && normalized.sourceObservedAtSeconds !== null;
|
|
116
|
+
const sourceGapMs = sourceTimed
|
|
117
|
+
? (normalized.sourceObservedAtSeconds - previous.sourceObservedAtSeconds) * 1000 : sampleGapMs;
|
|
118
|
+
if (sourceTimed && sourceGapMs <= 0) {
|
|
119
|
+
this.reset('invalid_sample');
|
|
120
|
+
this.acceptFirstSample(normalized, 'invalid_sample');
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
if (previous.sourceClock !== normalized.sourceClock || sourceGapMs > this.config.maximumSampleGapMs) {
|
|
101
124
|
this.acceptFirstSample(normalized, 'sample_gap');
|
|
102
125
|
return true;
|
|
103
126
|
}
|
|
127
|
+
if (this.mode === 'interpolated' && this.config.presentationDelayMs > 0) {
|
|
128
|
+
const presentationAtMs = this.resolvePresentationTime(normalized);
|
|
129
|
+
// Undeclared receipt-clock bursts cannot provide distinct timing.
|
|
130
|
+
// Source-clock bursts retain every distinct admitted pose.
|
|
131
|
+
if (this.bufferedSamples.at(-1)?.presentationAtMs === presentationAtMs)
|
|
132
|
+
this.bufferedSamples.pop();
|
|
133
|
+
this.bufferedSamples.push({ ...normalized, presentationAtMs });
|
|
134
|
+
if (this.bufferedSamples.length > 64) {
|
|
135
|
+
this.previousBufferedSample = this.bufferedSamples[this.bufferedSamples.length - 65];
|
|
136
|
+
}
|
|
137
|
+
this.bufferedSamples = this.bufferedSamples.slice(-64);
|
|
138
|
+
this.latestSample = normalized;
|
|
139
|
+
this.pendingFallbackReason = 'none';
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
104
142
|
const currentFrame = this.project(normalized.receivedAtMs);
|
|
105
143
|
this.transitionStartValues = Object.fromEntries(Object.entries(normalized.jointValues).map(([jointName, nextValue]) => [
|
|
106
144
|
jointName,
|
|
@@ -109,7 +147,19 @@ export class ObservedRobotPresentationBuffer {
|
|
|
109
147
|
this.transitionSourceSampleIds = uniqueTail([...(currentFrame?.sourceSampleIds ?? [previous.sampleId]), normalized.sampleId], 3);
|
|
110
148
|
this.latestSample = normalized;
|
|
111
149
|
this.transitionStartedAtMs = normalized.receivedAtMs;
|
|
112
|
-
|
|
150
|
+
// A transport burst is not a new sensor cadence: keep the recent cadence
|
|
151
|
+
// instead of turning several queued observations into near-instant jumps.
|
|
152
|
+
if (sampleGapMs >= this.config.minimumTransitionMs) {
|
|
153
|
+
this.receiptCadenceMs = [...this.receiptCadenceMs, sampleGapMs].slice(-5);
|
|
154
|
+
}
|
|
155
|
+
const sortedCadence = [...this.receiptCadenceMs].sort((left, right) => left - right);
|
|
156
|
+
const middle = Math.floor(sortedCadence.length / 2);
|
|
157
|
+
const cadenceMs = sortedCadence.length === 0
|
|
158
|
+
? sampleGapMs
|
|
159
|
+
: sortedCadence.length % 2 === 1
|
|
160
|
+
? sortedCadence[middle]
|
|
161
|
+
: (sortedCadence[middle - 1] + sortedCadence[middle]) / 2;
|
|
162
|
+
this.transitionDurationMs = clamp(cadenceMs, this.config.minimumTransitionMs, this.config.maximumTransitionMs);
|
|
113
163
|
this.pendingFallbackReason = 'none';
|
|
114
164
|
return true;
|
|
115
165
|
}
|
|
@@ -123,6 +173,9 @@ export class ObservedRobotPresentationBuffer {
|
|
|
123
173
|
};
|
|
124
174
|
return null;
|
|
125
175
|
}
|
|
176
|
+
if (this.mode === 'interpolated' && this.config.presentationDelayMs > 0) {
|
|
177
|
+
return this.projectBuffered(renderedAtMs);
|
|
178
|
+
}
|
|
126
179
|
if (this.mode === 'raw' || this.transitionDurationMs <= 0) {
|
|
127
180
|
const fallbackReason = this.mode === 'raw' ? 'none' : this.pendingFallbackReason;
|
|
128
181
|
const frame = {
|
|
@@ -167,25 +220,78 @@ export class ObservedRobotPresentationBuffer {
|
|
|
167
220
|
return frame;
|
|
168
221
|
}
|
|
169
222
|
isActive(renderedAtMs) {
|
|
223
|
+
if (this.mode === 'interpolated' && this.config.presentationDelayMs > 0) {
|
|
224
|
+
return Boolean(this.latestSample && this.bufferedSamples.length > 1 &&
|
|
225
|
+
Number.isFinite(renderedAtMs) &&
|
|
226
|
+
renderedAtMs - this.config.presentationDelayMs < this.bufferedSamples.at(-1).presentationAtMs);
|
|
227
|
+
}
|
|
170
228
|
return Boolean(this.mode === 'interpolated' &&
|
|
171
229
|
this.latestSample &&
|
|
172
230
|
this.transitionDurationMs > 0 &&
|
|
173
231
|
Number.isFinite(renderedAtMs) &&
|
|
174
232
|
renderedAtMs < this.transitionStartedAtMs + this.transitionDurationMs);
|
|
175
233
|
}
|
|
234
|
+
projectBuffered(renderedAtMs) {
|
|
235
|
+
const latest = this.latestSample;
|
|
236
|
+
const targetMs = renderedAtMs - this.config.presentationDelayMs;
|
|
237
|
+
while (this.bufferedSamples.length > 2 && this.bufferedSamples[1].presentationAtMs <= targetMs) {
|
|
238
|
+
this.previousBufferedSample = this.bufferedSamples.shift();
|
|
239
|
+
}
|
|
240
|
+
const left = this.bufferedSamples[0];
|
|
241
|
+
const right = this.bufferedSamples[1];
|
|
242
|
+
const latestTime = this.bufferedSamples.at(-1).presentationAtMs;
|
|
243
|
+
const hasSegment = Boolean(right && targetMs >= left.presentationAtMs && targetMs <= right.presentationAtMs);
|
|
244
|
+
const endpoint = targetMs < left.presentationAtMs ? left : latest;
|
|
245
|
+
const durationMs = hasSegment ? right.presentationAtMs - left.presentationAtMs : 0;
|
|
246
|
+
const alpha = hasSegment ? clamp((targetMs - left.presentationAtMs) / durationMs, 0, 1) : 1;
|
|
247
|
+
const active = this.isActive(renderedAtMs);
|
|
248
|
+
const previous = this.previousBufferedSample;
|
|
249
|
+
const following = this.bufferedSamples[2];
|
|
250
|
+
const frame = {
|
|
251
|
+
mode: this.mode,
|
|
252
|
+
state: hasSegment ? 'interpolated' : 'fallback',
|
|
253
|
+
fallbackReason: hasSegment ? 'none' : targetMs > latestTime ? 'sample_gap'
|
|
254
|
+
: this.pendingFallbackReason === 'none' ? 'insufficient_samples' : this.pendingFallbackReason,
|
|
255
|
+
provenance: hasSegment ? 'observed-interpolated' : 'observed-raw',
|
|
256
|
+
sourceSampleIds: hasSegment ? [previous, left, right, following].filter((sample) => Boolean(sample)).map(sample => sample.sampleId) : [endpoint.sampleId],
|
|
257
|
+
connectionId: latest.connectionId,
|
|
258
|
+
sourceObservedAtSeconds: hasSegment ? right.sourceObservedAtSeconds : endpoint.sourceObservedAtSeconds,
|
|
259
|
+
renderedAtMs,
|
|
260
|
+
latestReceivedAtMs: latest.receivedAtMs,
|
|
261
|
+
interpolationAlpha: alpha,
|
|
262
|
+
transitionDurationMs: durationMs,
|
|
263
|
+
active,
|
|
264
|
+
jointValues: hasSegment ? Object.fromEntries(Object.entries(right.jointValues).map(([name, value]) => [
|
|
265
|
+
name, interpolateBufferedJoint(left.jointValues[name] ?? value, value, alpha, durationMs, previous?.jointValues[name], previous ? left.presentationAtMs - previous.presentationAtMs : null, following?.jointValues[name], following ? following.presentationAtMs - right.presentationAtMs : null)
|
|
266
|
+
])) : { ...endpoint.jointValues }
|
|
267
|
+
};
|
|
268
|
+
this.status = createStatus(frame);
|
|
269
|
+
return frame;
|
|
270
|
+
}
|
|
176
271
|
acceptFirstSample(sample, fallbackReason) {
|
|
177
272
|
this.latestSample = sample;
|
|
178
273
|
this.transitionStartValues = { ...sample.jointValues };
|
|
179
274
|
this.transitionSourceSampleIds = [sample.sampleId];
|
|
180
275
|
this.transitionStartedAtMs = sample.receivedAtMs;
|
|
181
276
|
this.transitionDurationMs = 0;
|
|
277
|
+
this.receiptCadenceMs = [];
|
|
278
|
+
this.sourceClockAnchor = sample.sourceClock === 'monotonic' && sample.sourceObservedAtSeconds !== null
|
|
279
|
+
? { sourceSeconds: sample.sourceObservedAtSeconds, receiptMs: sample.receivedAtMs } : null;
|
|
280
|
+
this.bufferedSamples = [{ ...sample, presentationAtMs: sample.receivedAtMs }];
|
|
281
|
+
this.previousBufferedSample = null;
|
|
182
282
|
this.pendingFallbackReason =
|
|
183
283
|
fallbackReason === 'none' ? 'insufficient_samples' : fallbackReason;
|
|
184
284
|
}
|
|
285
|
+
resolvePresentationTime(sample) {
|
|
286
|
+
return this.sourceClockAnchor && sample.sourceClock === 'monotonic' && sample.sourceObservedAtSeconds !== null
|
|
287
|
+
? this.sourceClockAnchor.receiptMs + (sample.sourceObservedAtSeconds - this.sourceClockAnchor.sourceSeconds) * 1000
|
|
288
|
+
: sample.receivedAtMs;
|
|
289
|
+
}
|
|
185
290
|
}
|
|
186
291
|
function normalizeSample(sample) {
|
|
187
292
|
if (!sample.sampleId ||
|
|
188
293
|
!sample.connectionId ||
|
|
294
|
+
(sample.sourceClock === 'monotonic' && sample.sourceObservedAtSeconds === null) ||
|
|
189
295
|
!Number.isFinite(sample.receivedAtMs) ||
|
|
190
296
|
(sample.sourceObservedAtSeconds !== null && !Number.isFinite(sample.sourceObservedAtSeconds))) {
|
|
191
297
|
return null;
|
|
@@ -223,4 +329,26 @@ function finitePositive(value, fallback) {
|
|
|
223
329
|
function clamp(value, minimum, maximum) {
|
|
224
330
|
return Math.min(maximum, Math.max(minimum, value));
|
|
225
331
|
}
|
|
332
|
+
/** Shape-preserving Hermite interpolation using only admitted neighboring poses. */
|
|
333
|
+
function interpolateBufferedJoint(left, right, alpha, duration, previous, previousDuration, following, followingDuration) {
|
|
334
|
+
const delta = interpolateJointAngle(left, right, 1) - left;
|
|
335
|
+
const secant = delta / duration;
|
|
336
|
+
const tangent = (a, b, ha, hb) => {
|
|
337
|
+
if (a * b <= 0)
|
|
338
|
+
return 0;
|
|
339
|
+
const w1 = 2 * hb + ha;
|
|
340
|
+
const w2 = hb + 2 * ha;
|
|
341
|
+
return (w1 + w2) / (w1 / a + w2 / b);
|
|
342
|
+
};
|
|
343
|
+
const start = previous !== undefined && previousDuration !== null && previousDuration > 0
|
|
344
|
+
? tangent((interpolateJointAngle(previous, left, 1) - previous) / previousDuration, secant, previousDuration, duration)
|
|
345
|
+
: secant;
|
|
346
|
+
const end = following !== undefined && followingDuration !== null && followingDuration > 0
|
|
347
|
+
? tangent(secant, (interpolateJointAngle(right, following, 1) - right) / followingDuration, duration, followingDuration)
|
|
348
|
+
: secant;
|
|
349
|
+
const t2 = alpha * alpha;
|
|
350
|
+
const t3 = t2 * alpha;
|
|
351
|
+
const offset = (-2 * t3 + 3 * t2) * delta + (t3 - 2 * t2 + alpha) * duration * start + (t3 - t2) * duration * end;
|
|
352
|
+
return left + clamp(offset, Math.min(0, delta), Math.max(0, delta));
|
|
353
|
+
}
|
|
226
354
|
//# sourceMappingURL=ObservedRobotPresentationBuffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservedRobotPresentationBuffer.js","sourceRoot":"","sources":["../../src/renderer/ObservedRobotPresentationBuffer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ObservedRobotPresentationBuffer.js","sourceRoot":"","sources":["../../src/renderer/ObservedRobotPresentationBuffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
type Point = readonly [number, number, number];
|
|
2
|
+
type Rotation = readonly [number, number, number, number];
|
|
3
|
+
/** Geometric presentation anchors, not physical-contact observations. */
|
|
4
|
+
export declare class ObservedSoleAnchors {
|
|
5
|
+
private connectionId;
|
|
6
|
+
private anchors;
|
|
7
|
+
private released;
|
|
8
|
+
reset(): void;
|
|
9
|
+
resolve(connectionId: string, groups: readonly {
|
|
10
|
+
id: string;
|
|
11
|
+
position: Point;
|
|
12
|
+
eligible: boolean;
|
|
13
|
+
}[], strength: number): {
|
|
14
|
+
id: string;
|
|
15
|
+
target: Point;
|
|
16
|
+
inferred: true;
|
|
17
|
+
}[];
|
|
18
|
+
}
|
|
19
|
+
export interface SolePose {
|
|
20
|
+
position: Point;
|
|
21
|
+
orientation: Rotation;
|
|
22
|
+
supportMinimumY?: number;
|
|
23
|
+
}
|
|
24
|
+
/** Numerical IK of a rendered copy. The caller must never supply a hardware actuator. */
|
|
25
|
+
export declare function projectBoundedSoleCorrection(input: {
|
|
26
|
+
values: readonly number[];
|
|
27
|
+
limits: readonly (readonly [number, number])[];
|
|
28
|
+
targetPosition: Point;
|
|
29
|
+
targetOrientation: Rotation;
|
|
30
|
+
/** Optional lowest rendered sole point, in the same world frame as position. */
|
|
31
|
+
targetSupportMinimumY?: number;
|
|
32
|
+
evaluate(values: readonly number[]): SolePose;
|
|
33
|
+
}): {
|
|
34
|
+
values: number[];
|
|
35
|
+
residualMeters: number;
|
|
36
|
+
iterations: number;
|
|
37
|
+
inferred: true;
|
|
38
|
+
physicsAffected: false;
|
|
39
|
+
};
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=ObservedSoleStabilization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservedSoleStabilization.d.ts","sourceRoot":"","sources":["../../src/renderer/ObservedSoleStabilization.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/C,KAAK,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE1D,yEAAyE;AACzE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAqB;IACrC,KAAK,IAAI,IAAI;IAEb,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GACnH;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,EAAE;CA2BlD;AAED,MAAM,WAAW,QAAQ;IAAG,QAAQ,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE;AAE9F,yFAAyF;AACzF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC/C,cAAc,EAAE,KAAK,CAAC;IACtB,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAAC;CAC/C,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,KAAK,CAAA;CAAE,CAyD3G"}
|