@hatiolab/figure-model 0.2.14 → 0.3.0

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.
Files changed (46) hide show
  1. package/dist/authoring-actions.d.ts +68 -25
  2. package/dist/authoring-actions.d.ts.map +1 -1
  3. package/dist/authoring-actions.js +331 -71
  4. package/dist/authoring-actions.js.map +1 -1
  5. package/dist/cost.d.ts.map +1 -1
  6. package/dist/cost.js +3 -4
  7. package/dist/cost.js.map +1 -1
  8. package/dist/index.d.ts +3 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/joint-list.d.ts +76 -0
  13. package/dist/joint-list.d.ts.map +1 -0
  14. package/dist/joint-list.js +259 -0
  15. package/dist/joint-list.js.map +1 -0
  16. package/dist/kernel-version.d.ts +1 -1
  17. package/dist/kernel-version.d.ts.map +1 -1
  18. package/dist/kernel-version.js +1 -1
  19. package/dist/kernel-version.js.map +1 -1
  20. package/dist/proposal.d.ts.map +1 -1
  21. package/dist/proposal.js +5 -4
  22. package/dist/proposal.js.map +1 -1
  23. package/dist/recipe.d.ts +11 -2
  24. package/dist/recipe.d.ts.map +1 -1
  25. package/dist/recipe.js +3 -1
  26. package/dist/recipe.js.map +1 -1
  27. package/dist/release-contract.d.ts +1 -1
  28. package/dist/release-contract.d.ts.map +1 -1
  29. package/dist/release-contract.js +83 -0
  30. package/dist/release-contract.js.map +1 -1
  31. package/dist/release-metrics.d.ts +3 -0
  32. package/dist/release-metrics.d.ts.map +1 -1
  33. package/dist/release-metrics.js +13 -2
  34. package/dist/release-metrics.js.map +1 -1
  35. package/dist/render-batches.d.ts +44 -2
  36. package/dist/render-batches.d.ts.map +1 -1
  37. package/dist/render-batches.js +168 -3
  38. package/dist/render-batches.js.map +1 -1
  39. package/dist/robots.d.ts +23 -26
  40. package/dist/robots.d.ts.map +1 -1
  41. package/dist/robots.js +52 -20
  42. package/dist/robots.js.map +1 -1
  43. package/dist/score.d.ts.map +1 -1
  44. package/dist/score.js +11 -20
  45. package/dist/score.js.map +1 -1
  46. package/package.json +2 -1
@@ -2,6 +2,8 @@
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
4
  import { figureMaterialKeyOf } from "./score.js";
5
+ import { compileFigureDocument } from "./document.js";
6
+ import { figureWritersOf } from "./gate.js";
5
7
  const signatureOf = (body) => JSON.stringify([body.shape.provider, body.shape.dimensions,
6
8
  /* A shape operation's axis, kind and open ends are not in its numbers: two pushes of the same numbers along X and Y differ. */
7
9
  body.shape.extrusion
@@ -15,7 +17,110 @@ const signatureOf = (body) => JSON.stringify([body.shape.provider, body.shape.di
15
17
  : body.shape.loft
16
18
  ? [body.shape.loft.axis, 'loft']
17
19
  : null, body.segments ?? null, figureMaterialKeyOf(body), body.visible !== false]);
18
- export function figureRenderBatchesOf(geometry) {
20
+ /*
21
+ The bodies that stand still: the node that draws a body -- its place, or the row whose copy it is -- puts out nothing
22
+ that depends on a state input (\`dependence\`), and no visibility flag shows or hides it. Decided by the kernel's
23
+ dependence, never by a part's name or a joint record (merging still parts, design 2026-10-03, principle 2).
24
+ */
25
+ export function figureStillBodiesOf(asset, geometry, dependence) {
26
+ return figureStillJudgeOf(asset, dependence)(geometry);
27
+ }
28
+ /**
29
+ * The same judgement made once for an asset and asked of many evaluations: what reads the asset (its nodes, writers and
30
+ * flags) is read here, once, so a renderer that asks again whenever its bodies change pays only for the bodies.
31
+ */
32
+ export function figureStillJudgeOf(asset, dependence) {
33
+ const moves = figureBodyMovesOf(asset, dependence);
34
+ const writers = figureWritersOf(asset);
35
+ const flagged = new Set(asset.appearance.filter(look => look.visibility !== undefined).map(look => look.target));
36
+ return geometry => {
37
+ const still = new Set();
38
+ for (const body of geometry) {
39
+ if (!('pose' in body) || moves(body))
40
+ continue;
41
+ const target = body.key ? writers.get(body.key) : body.id;
42
+ if (target !== undefined && flagged.has(target))
43
+ continue;
44
+ still.add(body.id);
45
+ }
46
+ return still;
47
+ };
48
+ }
49
+ /*
50
+ Whether a drawn body moves with a state input -- the one judgement the still parts and the grade's moving parts are
51
+ both made by (ADR-0109). Every node that places the body is asked: the node that draws it (its place, or the row whose
52
+ copy it is) and, for a copy, the member it copies. A copy moves when its row is carried by a joint, and also when the
53
+ member moves inside a row that stands. A body whose node is not found is said to move: an unknown is never merged.
54
+ */
55
+ export function figureBodyMovesOf(asset, dependence) {
56
+ const depends = dependence ?? compileFigureDocument(asset.document).dependence;
57
+ const nodes = new Map(asset.document.model.nodes.map(node => [node.id, node]));
58
+ const writers = figureWritersOf(asset);
59
+ const nodeMoves = (id) => {
60
+ const node = id === undefined ? undefined : nodes.get(id);
61
+ return !node || Object.values(node.outputs).some(ref => (depends[ref]?.length ?? 0) > 0);
62
+ };
63
+ return body => {
64
+ const { key, path } = body;
65
+ if (nodeMoves(typeof path?.[0] === 'string' ? path[0] : body.id))
66
+ return true;
67
+ return key ? nodeMoves(writers.get(key)) : false;
68
+ };
69
+ }
70
+ /*
71
+ What carries a moving body (ADR-0111). A body drawn alone is placed by \`place@1(shape, pose)\`; its pose is a chain of
72
+ \`compose@1(a, b)\`. While \`b\` depends on no state input -- transitively, by the compiled \`dependence\`, so a joint that
73
+ follows another by mimic stops the walk -- the body keeps its pose relative to \`a\`, and the walk goes up to \`a\`. Where
74
+ it stops is the carrier: bodies with one carrier move as one. Proven from the graph, never sampled.
75
+ */
76
+ export function figureCarrierJudgeOf(asset, dependence) {
77
+ const depends = dependence ?? compileFigureDocument(asset.document).dependence;
78
+ const nodes = new Map(asset.document.model.nodes.map(node => [node.id, node]));
79
+ const writers = new Map();
80
+ for (const node of asset.document.model.nodes)
81
+ for (const ref of Object.values(node.outputs))
82
+ writers.set(ref, node);
83
+ const flagged = new Set(asset.appearance.filter(look => look.visibility !== undefined).map(look => look.target));
84
+ const moving = (ref) => typeof ref === 'string' && (depends[ref]?.length ?? 0) > 0;
85
+ const carriers = new Map();
86
+ const carrierOf = (ref) => {
87
+ const known = carriers.get(ref);
88
+ if (known !== undefined)
89
+ return known;
90
+ const node = writers.get(ref);
91
+ const found = node?.op === 'compose@1' && typeof node.args[0] === 'string' && !moving(node.args[1]) ? carrierOf(node.args[0]) : ref;
92
+ carriers.set(ref, found);
93
+ return found;
94
+ };
95
+ return geometry => {
96
+ const carried = new Map();
97
+ for (const body of geometry) {
98
+ if (!('pose' in body) || body.key || flagged.has(body.id))
99
+ continue;
100
+ const place = nodes.get(body.id);
101
+ const pose = place?.op === 'place@1' ? place.args[1] : undefined;
102
+ /* A shape a state input reaches is not baked: it would be drawn as it was when the mesh was made. */
103
+ if (typeof pose !== 'string' || !moving(pose) || moving(place.args[0]))
104
+ continue;
105
+ carried.set(body.id, carrierOf(pose));
106
+ }
107
+ return carried;
108
+ };
109
+ }
110
+ /**
111
+ * How the renderer draws these bodies of this asset: row copies batched, still parts merged by look (ADR-0109), moving
112
+ * parts carried by one pose merged by look (ADR-0111). The one plan the grade, the cost and the release metrics count
113
+ * draws by.
114
+ */
115
+ export function figureDrawPlanOf(asset, drawn) {
116
+ const dependence = compileFigureDocument(asset.document).dependence;
117
+ return figureRenderBatchesOf(drawn, { still: figureStillBodiesOf(asset, drawn, dependence), carried: figureCarrierJudgeOf(asset, dependence)(drawn) });
118
+ }
119
+ /** The draws a plan makes: a batch, a merged group, a carried group and a body drawn alone are one each. */
120
+ export const figureDrawsOf = (plan) => plan.batches.length + plan.merged.length + plan.carried.length + plan.alone.length;
121
+ /** What must be equal for still bodies to be one mesh: the look as drawn, and whether it is shown. */
122
+ const mergeKeyOf = (body) => `${figureMaterialKeyOf(body)}|${body.visible !== false ? 'shown' : 'hidden'}`;
123
+ export function figureRenderBatchesOf(geometry, options = {}) {
19
124
  const alone = [];
20
125
  const members = new Map();
21
126
  for (const body of geometry) {
@@ -36,7 +141,11 @@ export function figureRenderBatchesOf(geometry) {
36
141
  const bySignature = new Map();
37
142
  for (const body of bodies) {
38
143
  const signature = signatureOf(body);
39
- bySignature.set(signature, [...(bySignature.get(signature) ?? []), body.id]);
144
+ const same = bySignature.get(signature);
145
+ if (same)
146
+ same.push(body.id);
147
+ else
148
+ bySignature.set(signature, [body.id]);
40
149
  }
41
150
  for (const [signature, ids] of bySignature) {
42
151
  if (ids.length > 1) {
@@ -47,6 +156,62 @@ export function figureRenderBatchesOf(geometry) {
47
156
  unbatched.push({ member, ids, reason: bodies.length === 1 ? 'one-copy' : 'copies-differ' });
48
157
  }
49
158
  }
50
- return { batches, alone, unbatched };
159
+ /*
160
+ Still bodies drawn alone, of one render state, merge -- two or more; a lone one stays alone. A transparent body never
161
+ merges: its sorting is per part, and a merged lump would sort as one.
162
+ */
163
+ const merged = [];
164
+ if (options.still?.size) {
165
+ const byId = new Map(geometry.map(body => [body.id, body]));
166
+ const groups = new Map();
167
+ for (const id of alone) {
168
+ const body = byId.get(id);
169
+ if (!body || !options.still.has(id) || body.material.transparent)
170
+ continue;
171
+ const key = mergeKeyOf(body);
172
+ const same = groups.get(key);
173
+ if (same)
174
+ same.push(id);
175
+ else
176
+ groups.set(key, [id]);
177
+ }
178
+ const taken = new Set();
179
+ for (const [key, ids] of groups) {
180
+ if (ids.length < 2)
181
+ continue;
182
+ merged.push({ key, ids });
183
+ ids.forEach(id => taken.add(id));
184
+ }
185
+ if (taken.size)
186
+ alone.splice(0, alone.length, ...alone.filter(id => !taken.has(id)));
187
+ }
188
+ /* Moving bodies drawn alone, of one carrier and one render state, merge the same way: two or more, never transparent. */
189
+ const carried = [];
190
+ if (options.carried?.size) {
191
+ const byId = new Map(geometry.map(body => [body.id, body]));
192
+ const groups = new Map();
193
+ for (const id of alone) {
194
+ const body = byId.get(id);
195
+ const carrier = options.carried.get(id);
196
+ if (!body || carrier === undefined || options.still?.has(id) || body.material.transparent)
197
+ continue;
198
+ const key = `${carrier}|${mergeKeyOf(body)}`;
199
+ const same = groups.get(key);
200
+ if (same)
201
+ same.ids.push(id);
202
+ else
203
+ groups.set(key, { carrier, ids: [id] });
204
+ }
205
+ const taken = new Set();
206
+ for (const [key, { carrier, ids }] of groups) {
207
+ if (ids.length < 2)
208
+ continue;
209
+ carried.push({ key, carrier, ids });
210
+ ids.forEach(id => taken.add(id));
211
+ }
212
+ if (taken.size)
213
+ alone.splice(0, alone.length, ...alone.filter(id => !taken.has(id)));
214
+ }
215
+ return { batches, merged, carried, alone, unbatched };
51
216
  }
52
217
  //# sourceMappingURL=render-batches.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-batches.js","sourceRoot":"","sources":["../src/render-batches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-batches.js","sourceRoot":"","sources":["../src/render-batches.ts"],"names":[],"mappings":"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"}
package/dist/robots.d.ts CHANGED
@@ -1,14 +1,11 @@
1
1
  import { type FigurePrimitiveCreation } from './create.ts';
2
2
  import type { FigureAsset } from './asset-types.ts';
3
+ import { type FigureListedJoint } from './joint-list.ts';
3
4
  type Part = FigurePrimitiveCreation;
4
- /** A moving joint as a robot controller sees it: the joint's id, its axis and its range. */
5
- export interface RobotJoint {
6
- id: string;
7
- type: 'revolute' | 'prismatic';
8
- axis: 'X' | 'Y' | 'Z';
9
- /** Degrees or millimetres; absent on a revolute joint that turns without end (a wheel). */
10
- min?: number;
11
- max?: number;
5
+ /** A built robot and its joint list, as a controller reads it from a release. */
6
+ export interface RobotFigure {
7
+ asset: FigureAsset;
8
+ joints: FigureListedJoint[];
12
9
  }
13
10
  /** Front left, front right, hind left, hind right: which end of the body (X) and which side (Z) each leg hangs at. */
14
11
  export declare const QUADRUPED_LEGS: readonly [{
@@ -31,17 +28,19 @@ export declare const QUADRUPED_LEGS: readonly [{
31
28
  /**
32
29
  * A four-legged walking robot: a body standing on four legs, each leg three joints -- the hip swinging the leg out
33
30
  * (about the body's length), the thigh swinging it fore and aft, the knee bending the shin. A sensor head on the front.
34
- * The body stands as high as a straight leg is long; the legs hang straight at rest. Every knee bends the same way.
31
+ * The body stands as high as a straight leg is long -- the sum of the front left leg's hip, thigh, shin and foot, so it
32
+ * keeps standing on the floor when a leg's parts are made longer (ADR-0107 decision 2); the legs hang straight at rest.
33
+ * Every knee bends the same way.
35
34
  */
36
- export declare function quadrupedRobotFigure(): {
37
- asset: FigureAsset;
38
- joints: RobotJoint[];
39
- };
35
+ export declare function quadrupedRobotFigure(): RobotFigure;
40
36
  /** A collaborative arm's links from its base up; a joint joins each moving link to the one below. */
41
37
  export declare const COBOT_CHAIN: {
42
38
  part: Part;
43
- joint?: Omit<RobotJoint, 'type' | 'id'> & {
39
+ joint?: {
44
40
  id: string;
41
+ axis: 'X' | 'Y' | 'Z';
42
+ min: number;
43
+ max: number;
45
44
  };
46
45
  }[];
47
46
  /**
@@ -49,27 +48,25 @@ export declare const COBOT_CHAIN: {
49
48
  * its front, the arm's base on its top at the rear. Each drive wheel turns without end on its own value; the arm is
50
49
  * the collaborative arm chain with a two-finger gripper.
51
50
  */
52
- export declare function mobileManipulatorFigure(): {
53
- asset: FigureAsset;
54
- joints: RobotJoint[];
55
- };
51
+ export declare function mobileManipulatorFigure(): RobotFigure;
56
52
  /**
57
53
  * A SCARA: a column on the floor; the first arm turning about the column (J1), the second turning at the first arm's
58
54
  * end (J2), both in the horizontal plane; at the second arm's end a quill sliding down (J3) and its tool turning (J4).
59
55
  * Each arm turns on a hub at its pivot, so the arm reaches out from the axis it turns about.
60
56
  */
61
- export declare function scaraRobotFigure(): {
62
- asset: FigureAsset;
63
- joints: RobotJoint[];
64
- };
57
+ export declare function scaraRobotFigure(): RobotFigure;
65
58
  /**
66
59
  * A humanoid: a pelvis standing on two legs (hip roll, hip pitch, knee, ankle), a torso turning on it at the waist, a
67
60
  * head on a neck, and two arms (shoulder pitch at the torso's side, shoulder roll, elbow) with a hand each. It faces +X;
68
61
  * its left is -Z. The pelvis stands as high as a straight leg is long.
69
62
  */
70
- export declare function humanoidRobotFigure(): {
71
- asset: FigureAsset;
72
- joints: RobotJoint[];
73
- };
63
+ export declare function humanoidRobotFigure(): RobotFigure;
64
+ /**
65
+ * A palletizer: a base on the floor, a turret turning on it (J1), an upper arm swinging on the turret (J2), and at its
66
+ * top an elbow (J3) carrying the forearm out level. Under the forearm's far end the wrist turns by -(J2 + J3) -- a sum
67
+ * mimic, with no control of its own (ADR-0107 decision 2) -- so the tool flange under it stays level in every pose, as
68
+ * a palletizer's parallel link keeps it; the flange turns the tool about the vertical (J4).
69
+ */
70
+ export declare function palletizerRobotFigure(): RobotFigure;
74
71
  export {};
75
72
  //# sourceMappingURL=robots.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAOA,OAAO,EAAyC,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD,KAAK,IAAI,GAAG,uBAAuB,CAAA;AAUnC,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,UAAU,GAAG,WAAW,CAAA;IAC9B,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IACrB,2FAA2F;IAC3F,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAyCD,sHAAsH;AACtH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;EAKjB,CAAA;AAMV;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CA2BnF;AAID,qGAAqG;AACrG,eAAO,MAAM,WAAW,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAWjG,CAAA;AAmBD;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CAiCtF;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CAoB/E;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAA;CAAE,CA6BlF"}
1
+ {"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAQA,OAAO,EAAyC,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExE,KAAK,IAAI,GAAG,uBAAuB,CAAA;AAUnC,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B;AAgCD,sHAAsH;AACtH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;EAKjB,CAAA;AAMV;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CA6BlD;AAID,qGAAqG;AACrG,eAAO,MAAM,WAAW,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAWhH,CAAA;AAmBD;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,WAAW,CAiCrD;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAoB9C;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CA6BjD;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CA0BnD"}
package/dist/robots.js CHANGED
@@ -1,11 +1,13 @@
1
1
  /*
2
2
  * Industrial robots authored with the commands the modeller and the AI share: a four-legged walking robot, a mobile
3
- * manipulator (an autonomous mobile robot carrying a six-axis arm) and a SCARA. Each is its links joined at joints --
3
+ * manipulator (an autonomous mobile robot carrying a six-axis arm), a SCARA, a humanoid and a palletizer. Each is its links joined at joints --
4
4
  * the one relation a robot needs -- and every size is the part's own number. A joint's state input is what a robot
5
- * controller drives: one value per joint, in degrees or millimetres, named after the joint.
5
+ * controller drives: one value per joint, in degrees or millimetres, named after the joint. What a controller reads
6
+ * about the joints is the figure's joint list (`figureJointsOf`), measured from the built figure.
6
7
  */
7
8
  import { applyFigureAuthoring, proposeFigureOccupancy } from "./authoring-actions.js";
8
9
  import { addFigurePrimitive, createFigureAsset } from "./create.js";
10
+ import { figureJointsOf } from "./joint-list.js";
9
11
  const at = { x: 0, y: 0, z: 0 };
10
12
  const metal = (token) => ({ token, preset: 'metal' });
11
13
  const box = (id, width, height, depth, token) => ({ id, kind: 'box', dimensions: { width, height, depth }, position: at, material: metal(token) });
@@ -14,7 +16,6 @@ const cylinder = (id, radius, length, token) => ({ id, kind: 'cylinder', dimensi
14
16
  /** A small builder over the shared commands: each call is one command, as a person's step would be. */
15
17
  class Robot {
16
18
  asset;
17
- joints = [];
18
19
  constructor(name, palette) {
19
20
  this.asset = createFigureAsset(name);
20
21
  this.asset.palette = palette;
@@ -29,20 +30,12 @@ class Robot {
29
30
  return this;
30
31
  }
31
32
  joint(joint) {
32
- this.do({ kind: 'set-joint', joint });
33
- if (joint.type !== 'fixed' && !joint.mimic)
34
- this.joints.push({
35
- id: joint.id,
36
- type: joint.type,
37
- axis: joint.axis,
38
- ...(joint.lowerLimit !== undefined ? { min: joint.lowerLimit, max: joint.upperLimit } : {})
39
- });
40
- return this;
33
+ return this.do({ kind: 'set-joint', joint });
41
34
  }
42
35
  finish(level) {
43
36
  this.do({ kind: 'set-detail-level', level });
44
37
  this.do({ kind: 'declare-occupancy', proposal: proposeFigureOccupancy(this.asset, { over: 'range' }), placement: 'floor' });
45
- return this.asset;
38
+ return { asset: this.asset, joints: figureJointsOf(this.asset).joints };
46
39
  }
47
40
  }
48
41
  const hang = (parent, child, parentFace = 'top') => ({ body0: { part: parent, face: parentFace }, body1: { part: child, face: parentFace === 'top' ? 'bottom' : 'top' } });
@@ -60,7 +53,9 @@ const QUADRUPED_LEG = { hip: 80, hipRadius: 55, thigh: 340, shin: 340, foot: 40
60
53
  /**
61
54
  * A four-legged walking robot: a body standing on four legs, each leg three joints -- the hip swinging the leg out
62
55
  * (about the body's length), the thigh swinging it fore and aft, the knee bending the shin. A sensor head on the front.
63
- * The body stands as high as a straight leg is long; the legs hang straight at rest. Every knee bends the same way.
56
+ * The body stands as high as a straight leg is long -- the sum of the front left leg's hip, thigh, shin and foot, so it
57
+ * keeps standing on the floor when a leg's parts are made longer (ADR-0107 decision 2); the legs hang straight at rest.
58
+ * Every knee bends the same way.
64
59
  */
65
60
  export function quadrupedRobotFigure() {
66
61
  const r = new Robot('4족 보행 로봇', {
@@ -72,10 +67,12 @@ export function quadrupedRobotFigure() {
72
67
  const { hip, hipRadius, thigh, shin, foot } = QUADRUPED_LEG;
73
68
  const body = QUADRUPED_BODY;
74
69
  r.add(rounded('body', body.length, body.height, body.width, 40, 'palette.body'), box('head', 120, 140, 260, 'palette.sensor'));
75
- r.joint({ id: 'body', type: 'fixed', body0: { plane: 'mounting-plane' }, body1: { part: 'body', face: 'bottom' }, origin: { gap: hip + thigh + shin + foot } });
70
+ for (const { leg } of QUADRUPED_LEGS)
71
+ r.add(cylinder(`${leg}-hip`, hipRadius, hip, 'palette.joint'), box(`${leg}-thigh`, 80, thigh, 70, 'palette.dark'), box(`${leg}-shin`, 50, shin, 50, 'palette.dark'), cylinder(`${leg}-foot`, 38, foot, 'palette.sensor'));
72
+ const standing = ['hip', 'thigh', 'shin', 'foot'].map(p => ({ from: { of: 'part', part: `fl-${p}`, axis: 'y' } }));
73
+ r.joint({ id: 'body', type: 'fixed', body0: { plane: 'mounting-plane' }, body1: { part: 'body', face: 'bottom' }, origin: { gap: { sum: standing } } });
76
74
  r.joint({ id: 'head', type: 'fixed', body0: { part: 'body', face: 'right' }, body1: { part: 'head', face: 'left' } });
77
75
  for (const { leg, x, z } of QUADRUPED_LEGS) {
78
- r.add(cylinder(`${leg}-hip`, hipRadius, hip, 'palette.joint'), box(`${leg}-thigh`, 80, thigh, 70, 'palette.dark'), box(`${leg}-shin`, 50, shin, 50, 'palette.dark'), cylinder(`${leg}-foot`, 38, foot, 'palette.sensor'));
79
76
  /* At the body's corner, measured from its middle: a joint placed by an edge would turn about that edge (a hinge). */
80
77
  const corner = { x: { mm: x * (body.length / 2 - hipRadius) }, z: { mm: z * (body.width / 2 - hipRadius) } };
81
78
  r.joint({ id: `${leg}-hip`, type: 'revolute', ...hang('body', `${leg}-hip`, 'bottom'), origin: { align: corner }, axis: 'X', lowerLimit: -30, upperLimit: 30 });
@@ -83,7 +80,7 @@ export function quadrupedRobotFigure() {
83
80
  r.joint({ id: `${leg}-knee`, type: 'revolute', ...hang(`${leg}-thigh`, `${leg}-shin`, 'bottom'), axis: 'Z', lowerLimit: 0, upperLimit: 150 });
84
81
  r.joint({ id: `${leg}-foot`, type: 'fixed', ...hang(`${leg}-shin`, `${leg}-foot`, 'bottom') });
85
82
  }
86
- return { asset: r.finish('XL'), joints: r.joints };
83
+ return r.finish('XL');
87
84
  }
88
85
  /* ---------------------------------------------------------------- six-axis arm, as a chain on any face */
89
86
  /** A collaborative arm's links from its base up; a joint joins each moving link to the one below. */
@@ -152,7 +149,7 @@ export function mobileManipulatorFigure() {
152
149
  r.add(cylinder('scanner', 50, 70, 'palette.sensor'));
153
150
  r.joint({ id: 'scanner', type: 'fixed', ...hang('chassis', 'scanner'), origin: { align: { x: 'max' } } });
154
151
  addArm(r, { part: 'chassis', align: { x: { mm: -length / 4 } } });
155
- return { asset: r.finish('XL'), joints: r.joints };
152
+ return r.finish('XL');
156
153
  }
157
154
  /* ---------------------------------------------------------------- SCARA */
158
155
  const SCARA = { column: 420, reach1: 400, reach2: 350, quill: 380, stroke: 200 };
@@ -180,7 +177,7 @@ export function scaraRobotFigure() {
180
177
  r.add(cylinder('quill', 25, quill, 'palette.dark'), cylinder('tool-flange', 45, 30, 'palette.joint'));
181
178
  r.joint({ id: 'j3', type: 'prismatic', ...hang('arm-2', 'quill', 'bottom'), origin: { align: { x: { mm: reach2 / 2 } }, gap: -quill / 2 }, axis: 'Y', lowerLimit: -stroke, upperLimit: 0 });
182
179
  r.joint({ id: 'j4', type: 'revolute', ...hang('quill', 'tool-flange', 'bottom'), axis: 'Y', lowerLimit: -360, upperLimit: 360 });
183
- return { asset: r.finish('M'), joints: r.joints };
180
+ return r.finish('M');
184
181
  }
185
182
  /* ---------------------------------------------------------------- humanoid */
186
183
  const HUMANOID = { pelvis: 340, torso: 480, hip: 60, hipWidth: 110, thigh: 420, shin: 400, foot: 60, shoulder: 120 };
@@ -217,6 +214,41 @@ export function humanoidRobotFigure() {
217
214
  r.joint({ id: `${side}-elbow`, type: 'revolute', ...hang(`${side}-upper-arm`, `${side}-forearm`, 'bottom'), axis: 'Z', lowerLimit: 0, upperLimit: 140 });
218
215
  r.joint({ id: `${side}-hand`, type: 'fixed', ...hang(`${side}-forearm`, `${side}-hand`, 'bottom') });
219
216
  }
220
- return { asset: r.finish('XL'), joints: r.joints };
217
+ return r.finish('XL');
218
+ }
219
+ /* ---------------------------------------------------------------- palletizer */
220
+ const PALLETIZER = { base: 180, turret: 220, upper: 1000, elbow: 180, reach: 1100, wrist: 160, flange: 40 };
221
+ /**
222
+ * A palletizer: a base on the floor, a turret turning on it (J1), an upper arm swinging on the turret (J2), and at its
223
+ * top an elbow (J3) carrying the forearm out level. Under the forearm's far end the wrist turns by -(J2 + J3) -- a sum
224
+ * mimic, with no control of its own (ADR-0107 decision 2) -- so the tool flange under it stays level in every pose, as
225
+ * a palletizer's parallel link keeps it; the flange turns the tool about the vertical (J4).
226
+ */
227
+ export function palletizerRobotFigure() {
228
+ const r = new Robot('팔레타이징 로봇', {
229
+ 'palette.body': '#e8b100',
230
+ 'palette.joint': '#2b2f33',
231
+ 'palette.tool': '#5b636b'
232
+ });
233
+ const { base, turret, upper, elbow, reach, wrist, flange } = PALLETIZER;
234
+ r.add(cylinder('base', 220, base, 'palette.joint'), cylinder('turret', 180, turret, 'palette.body'), box('upper-arm', 170, upper, 170, 'palette.body'), box('elbow', elbow, elbow, elbow, 'palette.joint'), box('forearm', reach, 150, 150, 'palette.body'));
235
+ r.joint({ id: 'base', type: 'fixed', body0: { plane: 'mounting-plane' }, body1: { part: 'base', face: 'bottom' } });
236
+ r.joint({ id: 'j1', type: 'revolute', ...hang('base', 'turret'), axis: 'Y', lowerLimit: -180, upperLimit: 180 });
237
+ r.joint({ id: 'j2', type: 'revolute', ...hang('turret', 'upper-arm'), axis: 'Z', lowerLimit: -45, upperLimit: 60 });
238
+ r.joint({ id: 'j3', type: 'revolute', ...hang('upper-arm', 'elbow'), axis: 'Z', lowerLimit: -60, upperLimit: 30 });
239
+ /* The forearm reaches out level from the elbow's side. */
240
+ r.joint({ id: 'forearm', type: 'fixed', body0: { part: 'elbow', face: 'right' }, body1: { part: 'forearm', face: 'left' } });
241
+ r.add(box('wrist', wrist, wrist, wrist, 'palette.joint'), cylinder('flange', 80, flange, 'palette.joint'), box('tool', 600, 60, 400, 'palette.tool'));
242
+ r.joint({
243
+ id: 'wrist',
244
+ type: 'revolute',
245
+ ...hang('forearm', 'wrist', 'bottom'),
246
+ origin: { align: { x: { mm: reach / 2 - wrist / 2 } } },
247
+ axis: 'Z',
248
+ mimic: { sum: [{ joint: 'j2', multiplier: -1 }, { joint: 'j3', multiplier: -1 }] }
249
+ });
250
+ r.joint({ id: 'j4', type: 'revolute', ...hang('wrist', 'flange', 'bottom'), axis: 'Y', lowerLimit: -360, upperLimit: 360 });
251
+ r.joint({ id: 'tool', type: 'fixed', ...hang('flange', 'tool', 'bottom') });
252
+ return r.finish('M');
221
253
  }
222
254
  //# sourceMappingURL=robots.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"robots.js","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"robots.js","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM1D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAExE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAA;AAEzG,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAA6E,CAAA;AAEtI;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAGtH;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,eAAe,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,mHAAmH;IACnH,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,WAAW,CAAA;IAClB,sFAAsF;IACtF,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAED,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAIzE,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAGxD;AAED,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB;;;;CAItB,CAAA;AAEV,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAIrE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,CAG3G;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAqCzE"}
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../src/score.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAExE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAA;AAEzG,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAA6E,CAAA;AAEtI;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAGtH;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,eAAe,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,mHAAmH;IACnH,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,WAAW,CAAA;IAClB,sFAAsF;IACtF,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAED,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAIzE,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAGxD;AAED,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB;;;;CAItB,CAAA;AAEV,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAIrE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,CAG3G;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAyCzE"}
package/dist/score.js CHANGED
@@ -20,10 +20,8 @@
20
20
  */
21
21
  import { LIMITS, PART_LIMIT } from "./words.js";
22
22
  import { compileFigureAsset } from "./asset.js";
23
- import { compileFigureDocument } from "./document.js";
24
- import { figureWritersOf } from "./gate.js";
25
23
  import { figureTrianglesOf } from "./cost.js";
26
- import { figureRenderBatchesOf } from "./render-batches.js";
24
+ import { figureBodyMovesOf, figureDrawPlanOf, figureDrawsOf } from "./render-batches.js";
27
25
  /** Every budget, in the order a screen draws them. */
28
26
  export const FIGURE_BUDGET_KEYS = ['groups', 'triangles', 'independent', 'moving', 'transparent', 'parts'];
29
27
  /**
@@ -68,19 +66,9 @@ export function figureMaterialKeyOf(body) {
68
66
  * A visibility flag is not a placement, so a lamp that only switches on does not count.
69
67
  */
70
68
  export function figureIndependentBodiesOf(asset, drawn) {
71
- const moves = movingOf(asset);
69
+ const moves = figureBodyMovesOf(asset);
72
70
  return drawn.filter(moves).length;
73
71
  }
74
- /** Whether a drawn body moves with a state input: the value that places it depends on one. */
75
- function movingOf(asset) {
76
- const plan = compileFigureDocument(asset.document);
77
- const writers = figureWritersOf(asset);
78
- const nodes = new Map(asset.document.model.nodes.map(node => [node.id, node]));
79
- return body => {
80
- const node = nodes.get(('key' in body && body.key ? writers.get(body.key) : body.id) ?? '');
81
- return !!node && Object.values(node.outputs).some(ref => (plan.dependence[ref]?.length ?? 0) > 0);
82
- };
83
- }
84
72
  /**
85
73
  * The grade of one asset, evaluated at its own design and state defaults as `figureCostOf` is. Nothing when no body is
86
74
  * drawn: there is nothing to grade, and a grade of A would say otherwise.
@@ -94,15 +82,18 @@ export function figureScoreOf(asset) {
94
82
  const triangles = drawn.reduce((sum, body) => sum + figureTrianglesOf(body), 0);
95
83
  const transparent = new Set(drawn.filter(body => body.material.transparent).map(figureMaterialKeyOf)).size;
96
84
  /*
97
- As the renderer draws them (figureRenderBatchesOf, the rule it draws by -- ADR-0087 amended 2026-09-26): a draw group per
98
- batch of a row's copies and per body drawn alone; what moves on its own counted once a batch; and every body that
85
+ As the renderer draws them (figureDrawPlanOf, the rule it draws by -- ADR-0087 amended 2026-09-26, ADR-0109): a draw group per
86
+ batch of a row's copies, per still group merged by look and per body drawn alone; a merged group never moves; what moves on its own counted once a batch; and every body that
99
87
  moves re-evaluated and moved each frame.
100
88
  */
101
- const moves = movingOf(asset);
102
- const plan = figureRenderBatchesOf(drawn);
89
+ const moves = figureBodyMovesOf(asset);
90
+ const plan = figureDrawPlanOf(asset, drawn);
103
91
  const byId = new Map(drawn.map(body => [body.id, body]));
104
- const groups = plan.batches.length + plan.alone.length;
105
- const independent = plan.batches.filter(b => b.ids.some(id => moves(byId.get(id)))).length + plan.alone.filter(id => moves(byId.get(id))).length;
92
+ const groups = figureDrawsOf(plan);
93
+ /* A carried group still counts body by body (ADR-0111 Q2: as one only once the rig has measured one matrix a group). */
94
+ const independent = plan.batches.filter(b => b.ids.some(id => moves(byId.get(id)))).length +
95
+ plan.alone.filter(id => moves(byId.get(id))).length +
96
+ plan.carried.reduce((sum, group) => sum + group.ids.length, 0);
106
97
  const moving = drawn.filter(moves).length;
107
98
  const budget = (key, used, limit) => ({ key, used, limit, ratio: used / limit });
108
99
  const budgets = [