mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 18:45:55 +00:00
Kernel rig: motion studies play, plot and trace to known values; a crank-slider's slider follows r cos t + sqrt(l^2 - r^2 sin^2 t)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a crank-slider driven to 90 degrees",
|
||||
"source": "analytic",
|
||||
"method": "a crank-slider: crank r 10 about z through the origin, rod l 30 from the crank pin (10,0) to the slider's pin (40,0), slider on +x; the slider sits at x = r cos \u03b8 + \u221a(l\u00b2 - r\u00b2 sin\u00b2 \u03b8); at 90: x = \u221a(900 - 100) = 28.28427; the rod's middle is halfway between (0,10) and (x,0), at z 3",
|
||||
"body_count": 4,
|
||||
"volume_mm3": 2720,
|
||||
"results": [
|
||||
{
|
||||
"step": 17,
|
||||
"json": {
|
||||
"conflicts": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 19,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
28.284271,
|
||||
0.0,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 20,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
14.142136,
|
||||
5.0,
|
||||
3.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,299 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 20,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-12
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BedBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 14,
|
||||
"width": 4,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-2,
|
||||
-2,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "CrankBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 34,
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
8,
|
||||
-1,
|
||||
2
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "RodBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 6,
|
||||
"width": 6,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
37,
|
||||
-3,
|
||||
4
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "SliderBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Bed",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BedBox"
|
||||
],
|
||||
"component": "Bed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Crank",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"CrankBox"
|
||||
],
|
||||
"component": "Crank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Rod",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"RodBox"
|
||||
],
|
||||
"component": "Rod"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Slider",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"SliderBox"
|
||||
],
|
||||
"component": "Slider"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Bed:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Crank pin",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Big end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "slider",
|
||||
"name": "Guide",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Small end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.drive",
|
||||
"params": {
|
||||
"joint": "Crank pin",
|
||||
"value": 90,
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Slider:1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Rod:1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.plot of a crank-slider's slider over a full turn of the crank, every 30 degrees",
|
||||
"source": "analytic",
|
||||
"method": "a crank-slider: crank r 10 about z through the origin, rod l 30 from the crank pin (10,0) to the slider's pin (40,0), slider on +x; the slider sits at x = r cos \u03b8 + \u221a(l\u00b2 - r\u00b2 sin\u00b2 \u03b8); the guide's value is x - 40",
|
||||
"body_count": 4,
|
||||
"volume_mm3": 2720,
|
||||
"results": [
|
||||
{
|
||||
"step": 17,
|
||||
"json": {
|
||||
"conflicts": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 19,
|
||||
"json": {
|
||||
"samples": 13,
|
||||
"stopped_at": null,
|
||||
"joints": [
|
||||
{
|
||||
"value": [
|
||||
0.0,
|
||||
-1.759347,
|
||||
-6.277187,
|
||||
-11.715729,
|
||||
-16.277187,
|
||||
-19.079855,
|
||||
-20.0,
|
||||
-19.079855,
|
||||
-16.277187,
|
||||
-11.715729,
|
||||
-6.277187,
|
||||
-1.759347,
|
||||
0.0
|
||||
]
|
||||
}
|
||||
],
|
||||
"point": {
|
||||
"position": [
|
||||
[
|
||||
40.0,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
38.240653,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
33.722813,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
28.284271,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
23.722813,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
20.920145,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
20.0,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
20.920145,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
23.722813,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
28.284271,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
33.722813,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
38.240653,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
40.0,
|
||||
0.0,
|
||||
5.0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+316
@@ -0,0 +1,316 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 20,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-12
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BedBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 14,
|
||||
"width": 4,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-2,
|
||||
-2,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "CrankBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 34,
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
8,
|
||||
-1,
|
||||
2
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "RodBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 6,
|
||||
"width": 6,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
37,
|
||||
-3,
|
||||
4
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "SliderBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Bed",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BedBox"
|
||||
],
|
||||
"component": "Bed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Crank",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"CrankBox"
|
||||
],
|
||||
"component": "Crank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Rod",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"RodBox"
|
||||
],
|
||||
"component": "Rod"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Slider",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"SliderBox"
|
||||
],
|
||||
"component": "Slider"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Bed:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Crank pin",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Big end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "slider",
|
||||
"name": "Guide",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Small end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Turn",
|
||||
"steps": 12,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Crank pin",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
12,
|
||||
360
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.plot",
|
||||
"params": {
|
||||
"study": "Turn",
|
||||
"joints": [
|
||||
"Guide"
|
||||
],
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a crank-slider study played where the crank is at 60 degrees",
|
||||
"source": "analytic",
|
||||
"method": "a crank-slider: crank r 10 about z through the origin, rod l 30 from the crank pin (10,0) to the slider's pin (40,0), slider on +x; the slider sits at x = r cos \u03b8 + \u221a(l\u00b2 - r\u00b2 sin\u00b2 \u03b8); at 60: x = 5 + \u221a(900 - 75) = 33.72281; the slider block's centre (x, 0, 5), the guide's value x - 40",
|
||||
"body_count": 4,
|
||||
"volume_mm3": 2720,
|
||||
"results": [
|
||||
{
|
||||
"step": 17,
|
||||
"json": {
|
||||
"conflicts": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 20,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
33.722813,
|
||||
0.0,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 21,
|
||||
"json": {
|
||||
"conflicts": []
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,319 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 20,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-12
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BedBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 14,
|
||||
"width": 4,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-2,
|
||||
-2,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "CrankBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 34,
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
8,
|
||||
-1,
|
||||
2
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "RodBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 6,
|
||||
"width": 6,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
37,
|
||||
-3,
|
||||
4
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "SliderBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Bed",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BedBox"
|
||||
],
|
||||
"component": "Bed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Crank",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"CrankBox"
|
||||
],
|
||||
"component": "Crank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Rod",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"RodBox"
|
||||
],
|
||||
"component": "Rod"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Slider",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"SliderBox"
|
||||
],
|
||||
"component": "Slider"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Bed:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Crank pin",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Big end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "slider",
|
||||
"name": "Guide",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Small end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Turn",
|
||||
"steps": 6,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Crank pin",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
6,
|
||||
360
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.play",
|
||||
"params": {
|
||||
"study": "Turn",
|
||||
"step": 1,
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Slider:1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.list",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.interference of the arm turning 0 to 90 in 9 steps into a grounded block",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); Stop: box 50x10x10 from (-10,30,0), grounded; the arm's corner (40,5) turned \u03b8 reaches y = 40 sin \u03b8 + 5 cos \u03b8, which is 30 at \u03b8 = asin(30/\u221a1625) - atan(5/40) = 40.9676; samples every 10 degrees: clear at 40, overlapping from step 5 (50) to 9 (90); at 90 the arm (x -5..5, y 0..40) and block (x -10..40, y 30..40) share 10x10x10 = 1000 mm3",
|
||||
"body_count": 3,
|
||||
"volume_mm3": 13000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 14,
|
||||
"json": {
|
||||
"clear": false,
|
||||
"samples": 10,
|
||||
"collisions": [
|
||||
{
|
||||
"first_step": 5.0,
|
||||
"last_step": 9.0,
|
||||
"steps": [
|
||||
[
|
||||
5.0,
|
||||
9.0
|
||||
]
|
||||
],
|
||||
"deepest_step": 9.0,
|
||||
"volume_mm3": 1000.0
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 15,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
20.0,
|
||||
0.0,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 50,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
30,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "StopBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Stop",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"StopBox"
|
||||
],
|
||||
"component": "Stop"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Stop:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Open",
|
||||
"steps": 9,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
9,
|
||||
90
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.interference",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"occurrences": [
|
||||
"Arm"
|
||||
],
|
||||
"against": [
|
||||
"Stop"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Arm:1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.interference of the arm turning 0 to 30, short of the block",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); Stop: box 50x10x10 from (-10,30,0), grounded; the arm's corner (40,5) turned \u03b8 reaches y = 40 sin \u03b8 + 5 cos \u03b8, which is 30 at \u03b8 = asin(30/\u221a1625) - atan(5/40) = 40.9676; 30 < 40.97: no collisions",
|
||||
"body_count": 3,
|
||||
"volume_mm3": 13000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 14,
|
||||
"json": {
|
||||
"clear": true,
|
||||
"collisions": []
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 50,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
30,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "StopBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Stop",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"StopBox"
|
||||
],
|
||||
"component": "Stop"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Stop:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Open",
|
||||
"steps": 3,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
3,
|
||||
30
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.interference",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"occurrences": [
|
||||
"Arm"
|
||||
],
|
||||
"against": [
|
||||
"Stop"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the same study played at step 2.5",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); step 2.5 of 10 is 22.5 degrees: Arm centre (20 cos22.5, 20 sin22.5, 5)",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 8000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 11,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
18.477591,
|
||||
7.653669,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Open",
|
||||
"steps": 10,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
90
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.play",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"step": 2.5,
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Arm:1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a study turning the hinge 0 to 90 over 10 steps, played at step 5",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); linear between keys: step 5 is 45 degrees: Arm centre (20 cos45, 20 sin45, 5)",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 8000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 10,
|
||||
"json": {
|
||||
"moved": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 11,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
14.142136,
|
||||
14.142136,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Open",
|
||||
"steps": 10,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
90
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.play",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"step": 5,
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Arm:1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.plot of a hinge keyed 0 to 90 over 10 steps, played in 1 s",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); 11 samples, 9 degrees apart; with duration 1 s the rate is 90 deg/s throughout and the acceleration 0",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 8000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 10,
|
||||
"json": {
|
||||
"samples": 11,
|
||||
"joints": [
|
||||
{
|
||||
"value": [
|
||||
0.0,
|
||||
9.0,
|
||||
18.0,
|
||||
27.0,
|
||||
36.0,
|
||||
45.0,
|
||||
54.0,
|
||||
63.0,
|
||||
72.0,
|
||||
81.0,
|
||||
90.0
|
||||
],
|
||||
"velocity": [
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0,
|
||||
90.0
|
||||
],
|
||||
"acceleration": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 11,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
20.0,
|
||||
0.0,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Open",
|
||||
"steps": 10,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
90
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.plot",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"joints": [
|
||||
"Hinge"
|
||||
],
|
||||
"duration": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Arm:1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.plot following the arm's tip (40,0,5) over the study, 3 samples",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); the tip turns at radius 40: at 0, 45 and 90 degrees it is at (40,0,5), (40 cos45, 40 sin45, 5), (0,40,5)",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 8000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 10,
|
||||
"json": {
|
||||
"point": {
|
||||
"position": [
|
||||
[
|
||||
40.0,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
28.284271,
|
||||
28.284271,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
40.0,
|
||||
5.0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Open",
|
||||
"steps": 10,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
90
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.plot",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"joints": [
|
||||
"Hinge"
|
||||
],
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"samples": 3
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.study editing a study's keys to turn the hinge 0 to -90",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); keys given replace all keys: step 5 of 10 is now -45 degrees: Arm centre (20 cos45, -20 sin45, 5)",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 8000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 12,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
14.142136,
|
||||
-14.142136,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"name": "Open",
|
||||
"steps": 10,
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
90
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.study",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"keys": [
|
||||
{
|
||||
"joint": "Hinge",
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
-90
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.play",
|
||||
"params": {
|
||||
"study": "Open",
|
||||
"step": 5,
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Arm:1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.trace of the arm's tip as the hinge turns 0 to 90, 3 samples",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); radius 40 about z: (40,0,5), (40 cos45, 40 sin45, 5), (0,40,5); the design is not changed",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 8000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 9,
|
||||
"json": {
|
||||
"samples": 3,
|
||||
"stopped_at": null,
|
||||
"points": [
|
||||
[
|
||||
40.0,
|
||||
0.0,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
28.284271,
|
||||
28.284271,
|
||||
5.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
40.0,
|
||||
5.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 10,
|
||||
"json": {
|
||||
"total": {
|
||||
"center_of_mass": [
|
||||
20.0,
|
||||
0.0,
|
||||
5.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.trace",
|
||||
"params": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"joint": "Hinge",
|
||||
"samples": 3,
|
||||
"from": 0,
|
||||
"to": 90
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.properties",
|
||||
"params": {
|
||||
"occurrence": "Arm:1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.trace of a crank-slider rod's middle over half a turn, 3 samples",
|
||||
"source": "analytic",
|
||||
"method": "a crank-slider: crank r 10 about z through the origin, rod l 30 from the crank pin (10,0) to the slider's pin (40,0), slider on +x; the slider sits at x = r cos \u03b8 + \u221a(l\u00b2 - r\u00b2 sin\u00b2 \u03b8); the rod's middle is ((10 cos \u03b8 + x)/2, 5 sin \u03b8, 3): \u03b8 0 (25,0,3), 90 (14.14214,5,3), 180 (5,0,3)",
|
||||
"body_count": 4,
|
||||
"volume_mm3": 2720,
|
||||
"results": [
|
||||
{
|
||||
"step": 17,
|
||||
"json": {
|
||||
"conflicts": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 18,
|
||||
"json": {
|
||||
"points": [
|
||||
[
|
||||
25.0,
|
||||
0.0,
|
||||
3.0
|
||||
],
|
||||
[
|
||||
14.142136,
|
||||
5.0,
|
||||
3.0
|
||||
],
|
||||
[
|
||||
5.0,
|
||||
0.0,
|
||||
3.0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,294 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 20,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-12
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BedBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 14,
|
||||
"width": 4,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
-2,
|
||||
-2,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "CrankBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 34,
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
8,
|
||||
-1,
|
||||
2
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "RodBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 6,
|
||||
"width": 6,
|
||||
"height": 2,
|
||||
"corner": [
|
||||
37,
|
||||
-3,
|
||||
4
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "SliderBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Bed",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BedBox"
|
||||
],
|
||||
"component": "Bed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Crank",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"CrankBox"
|
||||
],
|
||||
"component": "Crank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Rod",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"RodBox"
|
||||
],
|
||||
"component": "Rod"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Slider",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"SliderBox"
|
||||
],
|
||||
"component": "Slider"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Bed:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Crank pin",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Big end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Crank",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
10,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "slider",
|
||||
"name": "Guide",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Bed",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"z": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Small end",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Slider",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "motion.trace",
|
||||
"params": {
|
||||
"occurrence": "Rod",
|
||||
"point": [
|
||||
25,
|
||||
0,
|
||||
3
|
||||
],
|
||||
"joint": "Crank pin",
|
||||
"samples": 3,
|
||||
"from": 0,
|
||||
"to": 180
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "motion.trace of the arm's tip with a contact set between the arm and a block",
|
||||
"source": "analytic",
|
||||
"method": "Base: box 20x20x10 from (-10,-10,-10), grounded; Arm: box 40x10x10 from (0,-5,0), centre (20,0,5); Stop: box 50x10x10 from (-10,30,0), grounded; the arm's corner (40,5) turned \u03b8 reaches y = 40 sin \u03b8 + 5 cos \u03b8, which is 30 at \u03b8 = asin(30/\u221a1625) - atan(5/40) = 40.9676; contact sets stop the motion: the trace from 0 to 90 stops short of the block, its last point within the circle's arc up to \u03b8 = 40.97 (y \u2264 40 sin 40.97 = 26.22)",
|
||||
"body_count": 3,
|
||||
"volume_mm3": 13000.0,
|
||||
"results": [
|
||||
{
|
||||
"step": 15,
|
||||
"json": {
|
||||
"stopped_by_contact": {
|
||||
"a": "Stop:1",
|
||||
"b": "Arm:1"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,178 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
-10,
|
||||
-10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "BaseBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "ArmBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Base",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"BaseBox"
|
||||
],
|
||||
"component": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Arm",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"ArmBox"
|
||||
],
|
||||
"component": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Base:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 50,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-10,
|
||||
30,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "StopBox"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Stop",
|
||||
"parent": "root",
|
||||
"activate": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.move_bodies",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"StopBox"
|
||||
],
|
||||
"component": "Stop"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.ground",
|
||||
"params": {
|
||||
"occurrence": "Stop:1",
|
||||
"grounded": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "joint.create",
|
||||
"params": {
|
||||
"type": "revolute",
|
||||
"name": "Hinge",
|
||||
"flip": true,
|
||||
"a": {
|
||||
"occurrence": "Base",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"z": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"quiet": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "contact.create",
|
||||
"params": {
|
||||
"occurrences": [
|
||||
"Arm",
|
||||
"Stop"
|
||||
],
|
||||
"name": "Stop set"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "contact.enable_sets",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "motion.trace",
|
||||
"params": {
|
||||
"occurrence": "Arm",
|
||||
"point": [
|
||||
40,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"joint": "Hinge",
|
||||
"samples": 10,
|
||||
"from": 0,
|
||||
"to": 90
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user