Deploy web Studio / deploy (push) Successful in 1m3s
- Robot arm (category Industry): picks goods off the end of the nearest conveyor within its reach and puts them on the start of another conveyor within reach, or on a pallet a quarter turn on (pick / put: auto or a side). One move per item coming in (cycle 0) or a set cycle; waits while the line before it stands. The belt it feeds carries its goods at its pace and starts its loop when they land (feeds carry a time offset `ph`), so arm and belts stay in step. - Drawn as a 16-pose flipbook: two-link inverse kinematics per pose, each pose shown for a sixteenth of the cycle by a stepped CSS animation (iso-flip; pose 0 alone when unanimated). Poses pointing away from the viewer are drawn before the base, the others after it. - New sprite method beam(a, b, n, w, mat): a square bar between two 3D points, six faces culled and shaded like face(). Native, so the factory demo renders in 4.7 ms instead of 18.8 ms. - Factory demo: a palletiser at the end of the carton line, a loading robot passing drums from the incline onto the loading belt into the truck. MCP instructions on robot arms. Checks: 70 Rust tests (arms and belts in step, waiting arm, beam faces from every side), Studio 109/109, web 90/90.
33 lines
3.1 KiB
JSON
33 lines
3.1 KiB
JSON
{
|
|
"version": 1,
|
|
"objects": [
|
|
{"id": "site", "type": "site", "x": 0, "y": 1, "props": {"w": 46, "d": 32, "mat": "g-grass"}, "name": "Yard", "locked": true},
|
|
{"id": "road", "type": "road", "x": 0, "y": -12.5, "props": {"w": 46, "d": 5}, "name": "Access road"},
|
|
{"id": "floor", "type": "area", "x": 0, "y": 1.5, "props": {"w": 36, "d": 19, "mat": "g-conc"}, "name": "Production floor", "locked": true},
|
|
{"id": "press-a", "type": "producer", "x": -14, "y": -4, "props": {"rate": 20, "product": "carton", "colour": "mach1"}, "name": "Carton press", "tag": "Cartons 20/min"},
|
|
{"id": "belt-a1", "type": "conveyor", "x": -8.4, "y": -4, "rot": 0, "props": {"w": 8}, "name": "Carton belt 1"},
|
|
{"id": "belt-a2", "type": "conveyor", "x": -4.4, "y": -1, "rot": 90, "props": {"w": 6}, "name": "Carton belt 2"},
|
|
{"id": "belt-a3", "type": "conveyor", "x": -1.4, "y": 2, "rot": 0, "props": {"w": 6, "speed": 0.8}, "name": "Carton belt 3"},
|
|
{"id": "robot-a", "type": "robot_arm", "x": 3.2, "y": 2, "name": "Palletiser", "tag": "Palletiser"},
|
|
{"id": "press-b", "type": "producer", "x": 14, "y": -4, "rot": 180, "props": {"rate": 10, "product": "drum", "colour": "mach2", "d": 2.6}, "name": "Drum filler", "tag": "Drums 10/min"},
|
|
{"id": "belt-b1", "type": "conveyor", "x": 9.4, "y": -4, "rot": 180, "props": {"w": 6, "d": 1.0, "speed": 0.4}, "name": "Drum belt"},
|
|
{"id": "belt-b2", "type": "conveyor", "x": 6.4, "y": -1, "rot": 90, "props": {"w": 6, "d": 1.0, "speed": 0.4, "rise": 0.8}, "name": "Drum incline"},
|
|
{"id": "robot-b", "type": "robot_arm", "x": 6.4, "y": 3.8, "props": {"reach": 2.4, "colour": "mach2"}, "name": "Loading robot"},
|
|
{"id": "belt-load", "type": "conveyor", "x": 11.5, "y": 5.2, "rot": 0, "props": {"w": 7, "d": 1.0, "speed": 0.6, "rise": 1.0}, "name": "Loading belt"},
|
|
{"id": "truck", "type": "truck", "x": 16.6, "y": 5.2, "rot": 90, "props": {"len": 9}, "name": "Truck at the dock"},
|
|
{"id": "press-c", "type": "producer", "x": -14, "y": 6, "props": {"rate": 6, "product": "part", "colour": "mach4", "running": false}, "name": "Parts press", "tag": "Stopped", "info": "Waiting for a tool change"},
|
|
{"id": "belt-c1", "type": "conveyor", "x": -9.9, "y": 6, "rot": 0, "props": {"w": 5}, "name": "Parts belt"},
|
|
{"id": "office", "type": "shed", "x": -5.5, "y": 9.2, "props": {"w": 6, "d": 3.5, "h": 3}, "name": "Shift office"},
|
|
{"id": "cont-1", "type": "container", "x": 12.5, "y": 9.8, "rot": 0, "props": {"size": "20ft", "stack": 2}, "name": "Empty drums"},
|
|
{"id": "cont-2", "type": "container", "x": -16.6, "y": 1.5, "rot": 90, "props": {"size": "20ft", "colour": "truckbox"}, "name": "Carton blanks"},
|
|
{"id": "op-a", "type": "person", "x": -14.2, "y": -6.2},
|
|
{"id": "op-c", "type": "person", "x": -11.8, "y": 7.8, "props": {"cls": "hivis"}},
|
|
{"id": "op-load", "type": "person", "x": 10.0, "y": 7.2},
|
|
{"id": "tree-1", "type": "tree", "x": -20, "y": 13},
|
|
{"id": "tree-2", "type": "tree", "x": -15, "y": 14},
|
|
{"id": "tree-3", "type": "tree", "x": 19, "y": 14},
|
|
{"id": "lamp-1", "type": "lamp", "x": -10, "y": -9.6},
|
|
{"id": "lamp-2", "type": "lamp", "x": 10, "y": -9.6}
|
|
]
|
|
}
|