From 52d5e572bbd32d81976f61cf9d76061b0a88b4a2 Mon Sep 17 00:00:00 2001 From: Wouter Horlings Date: Tue, 7 Jul 2020 16:47:24 +0200 Subject: [PATCH] Add documentation for kinematics model --- implementation/SCARA/01_kinematics/3D.png | Bin 0 -> 35693 bytes .../SCARA/01_kinematics/geometrics.odg | Bin 0 -> 12280 bytes .../SCARA/01_kinematics/geometrics.pdf | Bin 0 -> 8593 bytes .../SCARA/01_kinematics/implementation.md | 32 + .../SCARA/01_kinematics/kinematics.emx | 2333 +++++++++++++++++ .../SCARA/documentation/compatibility.odg | Bin 0 -> 12523 bytes .../SCARA/documentation/compatibility.pdf | Bin 0 -> 12442 bytes .../SCARA/documentation/division.odg | Bin 0 -> 13996 bytes .../SCARA/documentation/division.pdf | Bin 0 -> 12714 bytes .../SCARA/documentation/generaldesign.odg | Bin 0 -> 15383 bytes .../SCARA/documentation/generaldesign.pdf | Bin 0 -> 15781 bytes .../SCARA/documentation/implementation.md | 59 + .../SCARA/spike/inverse_kinematics.emx | 1771 +++++++++++++ .../SCARA/spike/motionprofiletest.emx | 407 +++ .../endeffector/endeffector.3dm | 0 .../endeffector/endeffector.emx | 0 implementation/endeffector/endeffector.scn | 1238 +++++++++ .../endeffector/endeffectorIcon.png | Bin 0 -> 6485 bytes .../{submodel => }/endeffector/gripper.scad | 0 implementation/endeffector/gripperbase.stl | 786 ++++++ implementation/endeffector/markerholder.stl | 1962 ++++++++++++++ .../library/SCARA/inverse_kinematics_v1.emx | 1628 ++++++++++++ .../library/setpoint/rectanglepath.emx | 17 + 23 files changed, 10233 insertions(+) create mode 100644 implementation/SCARA/01_kinematics/3D.png create mode 100644 implementation/SCARA/01_kinematics/geometrics.odg create mode 100644 implementation/SCARA/01_kinematics/geometrics.pdf create mode 100644 implementation/SCARA/01_kinematics/implementation.md create mode 100644 implementation/SCARA/01_kinematics/kinematics.emx create mode 100644 implementation/SCARA/documentation/compatibility.odg create mode 100644 implementation/SCARA/documentation/compatibility.pdf create mode 100644 implementation/SCARA/documentation/division.odg create mode 100644 implementation/SCARA/documentation/division.pdf create mode 100644 implementation/SCARA/documentation/generaldesign.odg create mode 100644 implementation/SCARA/documentation/generaldesign.pdf create mode 100644 implementation/SCARA/documentation/implementation.md create mode 100644 implementation/SCARA/spike/inverse_kinematics.emx create mode 100644 implementation/SCARA/spike/motionprofiletest.emx rename implementation/{submodel => }/endeffector/endeffector.3dm (100%) rename implementation/{submodel => }/endeffector/endeffector.emx (100%) create mode 100644 implementation/endeffector/endeffector.scn create mode 100644 implementation/endeffector/endeffectorIcon.png rename implementation/{submodel => }/endeffector/gripper.scad (100%) create mode 100644 implementation/endeffector/gripperbase.stl create mode 100644 implementation/endeffector/markerholder.stl create mode 100644 implementation/library/SCARA/inverse_kinematics_v1.emx create mode 100644 implementation/library/setpoint/rectanglepath.emx diff --git a/implementation/SCARA/01_kinematics/3D.png b/implementation/SCARA/01_kinematics/3D.png new file mode 100644 index 0000000000000000000000000000000000000000..41baf80b07a74b21ff1224879a86a00e6af76824 GIT binary patch literal 35693 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 literal 0 HcmV?d00001 diff --git a/implementation/SCARA/01_kinematics/implementation.md b/implementation/SCARA/01_kinematics/implementation.md new file mode 100644 index 0000000..eb1cca2 --- /dev/null +++ b/implementation/SCARA/01_kinematics/implementation.md @@ -0,0 +1,32 @@ +# Kinematics model + +This is a really simple model. +It has some inverse kinematics and forwards kinematics. + +## Inverse model + +The setpoint on the board is given as a x,y position. +We have to convert this point in to angles of the SCARA joints. +We have the following setup: +![Geometrics of the scara](geometrics.pdf) + +We can resolve this via the *law of cosines* and *pythagoras theorem*. +We can find the length of **C** with pythagoras. +Then with the use of a tangent we can find the angle **phi**. +Then filling in the *law of cosines* with **C** calculated and **A** and **B** as arm lengths, we can calculate the angles **a**, **b** and **c**. +As a check we sum these angles and they should add up to the value of Pi. + +Then we add **phi** and **b** to get the corner of the first joint relative to the world frame. +And **c** - Pi + **phi** + **b** gives the angle of the second joint relative to the world frame. + + +## Forward model +The forward model is as follows. +``` +joint1 = A_length*[cos(angle1);sin(angle1)]; +joint2 = B_length*[cos(angle2);sin(angle2)]; +end_effector = joint1 + joint2; +``` +This is then drawn as two arms in a 3D viewer. +![3D view of forward model](3D.png) +It follows the outside of the square. diff --git a/implementation/SCARA/01_kinematics/kinematics.emx b/implementation/SCARA/01_kinematics/kinematics.emx new file mode 100644 index 0000000..084a6e6 --- /dev/null +++ b/implementation/SCARA/01_kinematics/kinematics.emx @@ -0,0 +1,2333 @@ + + + + + + 4.8 +0 + False + C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\01_kinematics\kinematics.emx + 2020-7-10 15:12:13 + +'; + type Mainmodel + end; + implementation bg + submodels + Differentiate 432 256 + description '4.01False + Signal\Block Diagram\Differentiate.emx + 2007-9-26 12:9:46 +'; + type 'Differentiate-Default' + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + group + rectangle 416 240 448 272 color 0 fill 15132390; + text 'd/dt' 432 256 color 16711680 13 bold; + end; + end; + implementation eq +parameters + real initial = 0; // initial value +equations + output = ddt (input, initial); + implementation_end; + Differentiate1 432 112 + description '4.01False + Signal\Block Diagram\Differentiate.emx + 2007-9-26 12:9:46 +'; + type 'Differentiate-Default' + ports + signal in input; + signal out output; + end; + icon bg bottom + figures + group + rectangle 416 96 448 128 color 0 fill 15132390; + text 'd/dt' 432 112 color 16711680 13 bold; + end; + end; + implementation eq +parameters + real initial = 0; // initial value +equations + output = ddt (input, initial); + implementation_end; + inverse_kinematics 312 184 + description ' + + 4.8 + SCARA\inverse_kinematics_v1.emx +1 + False + 2020-7-10 12:26:18 +False + +'; + type 'Submodel-Equation' + ports + signal in input [2,1] {m} ; + signal out angle1 {rad} ; + signal out angle2 {rad} ; + signal out a {rad} ; + signal out b {rad} ; + signal out c {rad} ; + signal out phi {rad} ; + end; + implementation eq +parameters + real global A_length; // length of first arm + real global B_length; // length of second arm + real to_rad = 1 {rad}; +variables + real x {m}, y {m}; + real C_length {m}; // length to x and y. + real angle_sum {rad}; // test angle +equations + x = input[1]; + y = input[2]; + phi = atan2(y, x); + C_length = sqrt(x^2 + y^2); + a = arccos ((B_length^2 + C_length^2 - A_length^2) / (2 * B_length * C_length)); + b = arccos ((A_length^2 + C_length^2 - B_length^2) / (2 * A_length * C_length)); + c = arccos ((A_length^2 + B_length^2 - C_length^2) / (2 * A_length * B_length)); + angle1 = b + phi; + angle2 = angle1 - pi * to_rad + c; + + + + implementation_end; + kinematics 536 184 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal in angle1; + signal in angle2; + end; + implementation eq +parameters + real global A_length = 0.065; + real global B_length = 0.05; +variables + real joint1[2]{m}; + real joint2[2]{m}; + real end_effector[2]{m}; +equations + joint1 = A_length*[cos(angle1);sin(angle1)]; + joint2 = B_length*[cos(angle2);sin(angle2)]; + end_effector = joint1 + joint2; + implementation_end; + rectanglepath 136 184 + description ' + + 4.8 + setpoint\rectanglepath.emx +1 + False + 2020-7-10 12:30:38 +False + +'; + type 'Submodel-Equation' + ports + signal out output [2,1]; + end; + implementation eq +/* +This will generate coordinates for the box that has to be drawn +*/ +parameters + real w = 0.07{m} ; + real h = 0.05 {m}; + real t = 1 {s}; + real origin[2] = [0.01;0.03] {m}; +variables + real v {m/s}; + real t_w {s}; + real t_h {s}; + real period {s}; + real test1, test2, test3; +initialequations + v = (2*w + 2*h)/t; + t_w = w / v; + t_h = h / v; +equations + period = floor(time / t) * t; + output[1] = v*(ramp(period+t_h) - ramp(period + t_w+t_h) - ramp(period + t_w + t_h + t_h)) + origin[1]; + output[2] = v*(ramp(period) - ramp(period + t_h) - ramp(period + t_h + t_w) + ramp(period + 2 * t_h + t_w))+ origin[2]; +implementation_end; + Splitter1 432 200 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 +1 + False +'; + knot Splitter + ports + signal knot duplicatable out output [1]; + signal knot in input [1]; + end; + icon bg ellipse + figures + ellipse 428.8 196.8 435.2 203.2 color -1 fill 0; + ellipse 427.7 195.7 436.3 204.3 color -1; + terminals + input 432 200 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + Splitter2 432 176 + description '4.0 + Signal\Block Diagram\Splitter.emx + 2008-01-17 11:28:29 +1 + False +'; + knot Splitter + ports + signal knot duplicatable out output [1]; + signal knot in input [1]; + end; + icon bg ellipse + figures + ellipse 428.8 172.8 435.2 179.2 color -1 fill 0; + ellipse 427.7 171.7 436.3 180.3 color -1; + terminals + input 432 176 fixed; + end; + implementation eq +equations + collect (output) = input; +implementation_end; + end; + connections + inverse_kinematics\angle1 -> Splitter1\input; + inverse_kinematics\angle2 -> Splitter2\input; + rectanglepath\output -> inverse_kinematics\input; + Splitter1\output -> Differentiate\input; + Splitter1\output -> kinematics\angle1; + Splitter2\output -> Differentiate1\input; + Splitter2\output -> kinematics\angle2; + end; + implementation_end; +]]> + + + + + + + Experiment 1 + + + + 4.8 + + + + + + + + + + + + + time + kinematics\end_effector[2] + kinematics\joint1[2] + kinematics\end_effector[1] + kinematics\joint1[1] + rectanglepath\output[1] + rectanglepath\output[2] + rectanglepath\test1 + rectanglepath\test2 + rectanglepath\test3 + Constant\output[1] + Constant\output[2] + rectanglepath\origin[1] + rectanglepath\origin[2] + rectanglepath\w + rectanglepath\h + inverse_kinematics\angle1 + inverse_kinematics\angle2 + Differentiate\output + Differentiate1\output + + + + GraphPlot + + 1 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + -0.03999969673692048 + 0.08000000000000007 + true + 3 + + + + + + 0.009999999999999992 + 0.10999999999999999 + true + 2 + + + + 0.0 + 5.0 + true + 2 + + + + 0.0 + 5.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + kinematics\end_effector[1] + + + true + kinematics\end_effector[2] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + kinematics\joint1[1] + + + true + kinematics\joint1[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + Constant\output[1] + + + true + Constant\output[2] + + + + + true + 0 + 16777215 + + + + GraphPlot + + 2 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model(1) + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + 0.0 + 1.2 + true + 3 + + + + + + -3.469446951953614e-18 + 0.09999999999999999 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\output[1] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\output[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test1 + + + + 15086320 + 1 + 15086320 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test2 + + + + 15790150 + 1 + 15790150 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test3 + + + + + true + 0 + 16777215 + + + + D3DPlot + + 3 + false + 16777215 + true + + 3D Animation + 137 + true + false + 4294967295 + Gradients\BlueWhite.png + true + 1.0 + 1.0 + + + + + 1 + + + 1 + + + 1 + + + true + Reference Frame + + + + + + Bryant + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + Default Lights and Cameras + + + + + + Bryant + + false + false + false + false + false + false + + + false + Ambient + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0 + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + true + false + false + + + false + Parallel + + + -3 + + + 5 + + + 3 + + + + + + 0.457495710997814 + + + -0.762492851663023 + + + -0.457495710997814 + + + + + 0.235379601434674 + + + -0.392299335724456 + + + 0.889211827642101 + + + Direct3D + + false + false + false + false + false + false + + + 3 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.0 + + + 0.0 + + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 1 + + + -3 + + + -5 + + + 1 + + + + + + 0.50709255283711 + + + 0.845154254728517 + + + -0.169030850945703 + + + + + 0.0869656553478673 + + + 0.144942758913112 + + + 0.985610760609162 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.0471975511965976 + + + 1.0471975511965976 + + 0.0 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 2 + + + 2 + + + -3 + + + -1 + + + + + + -0.534522483824849 + + + 0.801783725737273 + + + 0.267261241912424 + + + + + 0.14824986333222 + + + -0.22237479499833 + + + 0.963624111659432 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.5707963267948966 + + + 1.5707963267948966 + + 0.0 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Camera Looking at Origin + + + 4.35387542422191 + + + -1.03177117653434 + + + 3.945815567335 + + + + + + -0.729811191908371 + + + 0.172948942896729 + + + -0.661410830963772 + + + + + -0.643586272446143 + + + 0.152515563910921 + + + 0.750023808077992 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 0.003926990816987242 + 45.0 + -10.0 + 10.0 + 10.0 + -10.0 + true + + + true + + + 1 + + + true + true + false + + + false + Front(XY)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + false + Side(YZ)-Camera + + + 9.99973746487942 + + + 0.555944228939501 + + + 0.542469812062668 + + + + + + -0.999973746487937 + + + 0.00440557710604975 + + + 0.00575301879373315 + + + + + 0.00575296296112807 + + + -2.53457873294314e-005 + + + 0.999983451250449 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 1.8901386620278369 + 45.0 + -1.8901386620278369 + 1.8901386620278369 + 1.8901386620278369 + -1.8901386620278369 + true + + + 0.599999999999999 + + + 0.6 + + + true + + + 1 + + + true + false + true + + + false + Top(XZ)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + + + + + 10 + + + 10 + + + 10 + + + false + Scenery + + + + + + Bryant + + false + false + false + false + false + false + + + 3.0 + + + kinematics\joint1[1] + 0.023995909562154565 + + + kinematics\joint1[2] + 0.06040857823426156 + + + 15 + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 0.447058823529412 + + + 0.113725490196078 + + + 0.945098039215686 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Line + + + + + + Bryant + + false + false + false + false + false + false + + + + + 3.0 + + + kinematics\end_effector[1] + 0.06999782466573422 + + + kinematics\end_effector[2] + 0.08000000000000002 + + + 15 + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 0.243137254901961 + + + 0.0392156862745098 + + + 0.945098039215686 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Line + + + kinematics\joint1[1] + 0.023995909562154565 + + + kinematics\joint1[2] + 0.06040857823426156 + + + + + + Bryant + + false + false + false + false + false + false + + + + + + + 1 + + + 1 + + + 1 + + + false + Square + + + -0.001 + + + rectanglepath\origin[1] + 0.01 + + + rectanglepath\origin[2] + 0.03 + + + + + + -1.5707963267949 + + + Bryant + + false + false + false + false + false + false + + + true + 1.0 + 1.0 + true + 20 + + + rectanglepath\h + 0.05 + + + rectanglepath\w + 0.07 + + + 1 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.498039215686275 + + + 0.498039215686275 + + + 0.498039215686275 + + + + + + 14.298713684082 + + false + false + Square + + + + + + Bryant + + false + false + false + false + false + false + + + + + + + + + + + + + GraphPlot + + 5 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + Plot + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + 0.0 + 1.2 + true + 3 + + + + + + -25.0 + 25.0 + true + 2 + + + + 0.0 + 10.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + inverse_kinematics\angle1 + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Differentiate\output + + + + + true + 0 + 16777215 + + + + GraphPlot + + 4 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model(2) + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + 0.0 + 1.2 + true + 3 + + + + + + -30.0 + 20.0 + true + 2 + + + + -2.0 + 3.0 + true + 2 + + + + + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + inverse_kinematics\angle2 + + + + 15086320 + 1 + 15086320 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + Differentiate1\output + + + + + true + 0 + 16777215 + + + + + + 1 + true + Window 1 + 0 + + 1 + 2 + + Base + + + 2 + true + Window 2 + 0 + + 3 + + Base + + + 3 + true + Window 3 + 0 + + 5 + 4 + + Base + + + + +0.108854 0.0953704 0.701562 0.813889 + + +0.194792 0.208333 0.811458 0.790741 + + +0.254688 0.165741 0.833333 0.786111 + + + + + + 0.0 + 1.2 + false + false + false + false + 0.1 + 1.0e-6 + 1.0e-7 + false + true + + + + Euler + 0.01 + false + + + BackwardEuler + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + 0.01 + 1.0 + + + AdamsBashforth + 0.01 + false + + + RungeKutta2 + 0.01 + false + + + RungeKutta4 + 0.01 + false + + + RungeKutta8 + false + 0.0 + false + 0.0 + 1.0e-6 + 1.0e-6 + 0.9 + 0.33 + 6.0 + 0.0 + false + 100000 + false + 1000 + + + RungeKuttaFehlberg + false + 0.0 + false + 0.0 + 1.0e-6 + 1.0e-6 + + + VodeAdams + false + 0.0 + false + 0.0 + 1.0e-6 + 1.0e-6 + true + true + + + BDFMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.0 + false + 0.0 + + + MeBDFiMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.0 + false + 0.0 + + 8 + + + + 10 + false + true + true + false + true + 0 + 0.0 + true + MultipleRun + true + + UseEndValue + 0.001 + BroydonFletcherGoldfarbShanno + + + + + true + true + true + true + + + false + + + + + + + + + 1.0 + + + + + diff --git a/implementation/SCARA/documentation/compatibility.odg b/implementation/SCARA/documentation/compatibility.odg new file mode 100644 index 0000000000000000000000000000000000000000..5876d459d4d9e8210b683c867030070206c605f3 GIT binary patch literal 12523 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 b{L#3|NkhGa-~a&X%ZKiTrd~w<^XmTq0L~BD literal 0 HcmV?d00001 diff --git a/implementation/SCARA/documentation/compatibility.pdf b/implementation/SCARA/documentation/compatibility.pdf new file mode 100644 index 0000000000000000000000000000000000000000..91e9e4d0248b4c8e3ee8f0574b1da4ddb68cae2f GIT binary patch literal 12442 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
  • K8Fk);yDZ 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 literal 0 HcmV?d00001 diff --git a/implementation/SCARA/documentation/generaldesign.pdf b/implementation/SCARA/documentation/generaldesign.pdf new file mode 100644 index 0000000000000000000000000000000000000000..85278d87a876214f34e5f077c9ae756d91ecf212 GIT binary patch literal 15781 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 literal 0 HcmV?d00001 diff --git a/implementation/SCARA/documentation/implementation.md b/implementation/SCARA/documentation/implementation.md new file mode 100644 index 0000000..b6f0b14 --- /dev/null +++ b/implementation/SCARA/documentation/implementation.md @@ -0,0 +1,59 @@ +# SCARA implementation + +## Design +The Scara moves the marker in a small space along the board. +The Scara has to be quick and precise. Therefore we want to keep it as small and light as possible. +In the next image we have a general idea of the design. + +![Rough design idea](generaldesign.pdf) + +## Specifications +The Scara has as goal to move the end-effector in a area of 50 mm high and 70 mm wide. +On of the first tests is to be able to travers that square with in a second. +Therefore it has to achieve an average speed of 240 mm/s. +Al be it not for very long. Probably up to 500 mm/s maximum velocity. + +The marker has to be lifted as well. +That will be the task of the end-effector. + +## Details +The levels of detail that we will implement are at least the following steps. + +### Kinematics +A first model is just a kinematics model without any physics. +If we look at the design it only implements the A and B part of the arms. +And we can just mathematically calculate the position of the arms. +This is usefull to check whether we can even reach all the corners of the square. + +### Simple Physics. +Start adding some Mass to the arms and the marker. +We can learn some basic requirements for the motor that we require. +The current implementation would require some infinite power as we have some instantanious speed. +Thus we have to update our path and induce some control. + +It is probably to make some pathing block where we can put some set points into. + +### Adding motor physics. +Start the better motor physics. +What kind of motor do we need to power the setup. + +### Complex arm structure. +Add the the C, D and E arms. +All the arms should now also have complete inertia and mass specifications. + +### Add parasitics to the arm structure +This has to be reviewed at the point that we get here. + +## Division +The submodels will be divided as follows. +However, during the design I will probably run in more blocks than normal. + +![Division of models](division.pdf) + +The submodels in the division should be compatible with each other. +To avoid that we have to update all our models all the time. +We will build every part of the model in a library for 20-sim. This way it is easy for 20-sim to find the updated models. + +![Compatibility solution between different versions](compatibility.pdf) + + diff --git a/implementation/SCARA/spike/inverse_kinematics.emx b/implementation/SCARA/spike/inverse_kinematics.emx new file mode 100644 index 0000000..30e6a10 --- /dev/null +++ b/implementation/SCARA/spike/inverse_kinematics.emx @@ -0,0 +1,1771 @@ + + + + + + 4.8 +0 + False + C:\users\wouter\My Documents\studie\ma\mahd\implementation\submodel\SCARA\spike\inverse_kinematics.emx + 2020-7-9 16:58:55 + +'; + type Mainmodel + end; + implementation bg + submodels + inverse_kinematics 352 184 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal in input [2,1] {m} ; + signal out angle1 {rad} ; + signal out angle2 {rad} ; + signal out a {rad} ; + signal out b {rad} ; + signal out c {rad} ; + signal out phi {rad} ; + end; + implementation eq +parameters + real global A_length; // length of first arm + real global B_length; // length of second arm + real to_rad = 1 {rad}; +variables + real x {m}, y {m}; + real C_length {m}; // length to x and y. + real angle_sum {rad}; // test angle +equations + x = input[1]; + y = input[2]; + phi = atan2(y, x); + C_length = sqrt(x^2 + y^2); + a = arccos ((B_length^2 + C_length^2 - A_length^2) / (2 * B_length * C_length)); + b = arccos ((A_length^2 + C_length^2 - B_length^2) / (2 * A_length * C_length)); + c = arccos ((A_length^2 + B_length^2 - C_length^2) / (2 * A_length * B_length)); + angle1 = b + phi; + angle2 = angle1 - pi * to_rad + c; + + + + implementation_end; + rectanglepath 112 184 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal out output [2,1]; + end; + implementation eq +/* +This will generate coordinates for the box that has to be drawn +*/ +parameters + real w = 0.07{m} ; + real h = 0.05 {m}; + real t = 1 {s}; + real origin[2] = [0.05,0.05]{m}; +variables + real v {m/s}; + real t_w {s}; + real t_h {s}; + real period {s}; + real test1, test2, test3; +initialequations + v = (2*w + 2*h)/t; + t_w = w / v; + t_h = h / v; +equations + period = floor(time / t) * t; + output[1] = v*(ramp(period+t_h) - ramp(period + t_w+t_h) - ramp(period + t_w + t_h + t_h)) + origin[1]; + output[2] = v*(ramp(period) - ramp(period + t_h) - ramp(period + t_h + t_w) + ramp(period + 2 * t_h + t_w))+ origin[2]; +implementation_end; + Submodel2 560 184 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal in angle1; + signal in angle2; + end; + implementation eq +parameters + real global A; + real global B; +variables + real joint1[2]{m}; + real joint2[2]{m}; + real end_effector[2]{m}; +equations + joint1 = A*[cos(angle1);sin(angle1)]; + joint2 = B*[cos(angle2);sin(angle2)]; + end_effector = joint1 + joint2; + implementation_end; + end; + connections + inverse_kinematics\angle1 -> Submodel2\angle1; + inverse_kinematics\angle2 -> Submodel2\angle2; + rectanglepath\output -> inverse_kinematics\input; + end; + implementation_end; +]]> + + + + + + + Experiment 1 + + + + 4.8 + + + + + + + + + time + Submodel2\end_effector[2] + Submodel2\joint1[2] + Submodel2\end_effector[1] + Submodel2\joint1[1] + rectanglepath\output[1] + rectanglepath\output[2] + rectanglepath\test1 + rectanglepath\test2 + rectanglepath\test3 + Constant\output[1] + Constant\output[2] + + + + GraphPlot + + 1 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + -0.049999931062904804 + 0.12000000000000034 + true + 3 + + + + + + 0.019999999999999997 + 0.12 + true + 2 + + + + 0.0 + 5.0 + true + 2 + + + + 0.0 + 5.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + Submodel2\end_effector[1] + + + true + Submodel2\end_effector[2] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + Submodel2\joint1[1] + + + true + Submodel2\joint1[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + Constant\output[1] + + + true + Constant\output[2] + + + + + true + 0 + 16777215 + + + + GraphPlot + + 2 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model(1) + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + 0.0 + 40.0 + true + 3 + + + + + + 0.03 + 0.13 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\output[1] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\output[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test1 + + + + 15086320 + 1 + 15086320 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test2 + + + + 15790150 + 1 + 15790150 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test3 + + + + + true + 0 + 16777215 + + + + D3DPlot + + 3 + false + 16777215 + true + + 3D Animation + 137 + true + false + 4294967295 + Gradients\BlueWhite.png + true + 1.0 + 1.0 + + + + + 1 + + + 1 + + + 1 + + + true + Reference Frame + + + + + + Bryant + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + Default Lights and Cameras + + + + + + Bryant + + false + false + false + false + false + false + + + false + Ambient + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0 + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + + 1 + + + 1 + + + 1 + + + true + + true + false + false + + + false + Parallel + + + -3 + + + 5 + + + 3 + + + + + + 0.457495710997814 + + + -0.762492851663023 + + + -0.457495710997814 + + + + + 0.235379601434674 + + + -0.392299335724456 + + + 0.889211827642101 + + + Direct3D + + false + false + false + false + false + false + + + 3 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.0 + + + 0.0 + + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 1 + + + -3 + + + -5 + + + 1 + + + + + + 0.50709255283711 + + + 0.845154254728517 + + + -0.169030850945703 + + + + + 0.0869656553478673 + + + 0.144942758913112 + + + 0.985610760609162 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.0471975511965976 + + + 1.0471975511965976 + + 0.0 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 2 + + + 2 + + + -3 + + + -1 + + + + + + -0.534522483824849 + + + 0.801783725737273 + + + 0.267261241912424 + + + + + 0.14824986333222 + + + -0.22237479499833 + + + 0.963624111659432 + + + Direct3D + + false + false + false + false + false + false + + + 2 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.5707963267948966 + + + 1.5707963267948966 + + 0.0 + + + + 1 + + + 1 + + + 1 + + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Camera Looking at Origin + + + 5.17039612254131 + + + -0.721279966459381 + + + 2.88738681298299 + + + + + + -0.866679128171114 + + + 0.120903365560907 + + + -0.483993455522493 + + + + + -0.479351652924763 + + + 0.0668704555607402 + + + 0.875071617075652 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 0.003926990816987242 + 45.0 + -10.0 + 10.0 + 10.0 + -10.0 + true + + + true + + + 1 + + + true + true + true + + + false + Front(XY)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + false + Side(YZ)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + false + Top(XZ)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + + true + + + 1 + + + true + false + false + + + + + + + 10 + + + 10 + + + 10 + + + false + Scenery + + + + + + Bryant + + false + false + false + false + false + false + + + 3.0 + + + Submodel2\joint1[1] + -0.0011199998032978117 + + + Submodel2\joint1[2] + 0.09999372780550071 + + + 15 + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Line + + + + + + Bryant + + false + false + false + false + false + false + + + + + 3.0 + + + Submodel2\end_effector[1] + 0.09888000000000007 + + + Submodel2\end_effector[2] + 0.09999999999999992 + + + 15 + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Line + + + Submodel2\joint1[1] + -0.0011199998032978117 + + + Submodel2\joint1[2] + 0.09999372780550071 + + + + + + Bryant + + false + false + false + false + false + false + + + + + + + + + + + + + 1 + true + Window 1 + 0 + + 1 + 2 + + Base + + + 2 + true + Window 2 + 0 + + 3 + + Base + + + + +0.411979 0.22037 0.885938 0.85 + + +0.0703125 0.135185 0.686979 0.717593 + + + + + + 0.0 + 10.0 + false + false + false + false + 0.1 + 1.0e-6 + 1.0e-7 + false + true + + + + Euler + 0.01 + false + + + BackwardEuler + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + 0.01 + 1.0 + + + AdamsBashforth + 0.01 + false + + + RungeKutta2 + 0.01 + false + + + RungeKutta4 + 0.01 + false + + + RungeKutta8 + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + 0.9 + 0.33 + 6.0 + 0.0 + false + 100000 + false + 1000 + + + RungeKuttaFehlberg + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + + + VodeAdams + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + true + true + + + BDFMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.001 + false + 1.0 + + + MeBDFiMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.001 + false + 1.0 + + 8 + + + + 10 + false + true + true + false + true + 0 + 0.0 + true + MultipleRun + true + + UseEndValue + 0.001 + BroydonFletcherGoldfarbShanno + + + + + true + true + true + true + + + false + + + + + + + + + + + diff --git a/implementation/SCARA/spike/motionprofiletest.emx b/implementation/SCARA/spike/motionprofiletest.emx new file mode 100644 index 0000000..67e20a1 --- /dev/null +++ b/implementation/SCARA/spike/motionprofiletest.emx @@ -0,0 +1,407 @@ + + + + + + 4.8 +0 + False + Z:\home\wouter\Documents\studie\ma\mahd\implementation\submodel\SCARA\spike\motionprofiletest.emx + 2020-7-9 14:43:21 + +'; + type Mainmodel + end; + implementation bg + submodels + Submodel1 328 200 + description '4.0 + Template\Submodel-Equation.emx +1 + False + 2007-11-1 22:32:1 + False +'; + type 'Submodel-Equation' + ports + signal out output; + end; + implementation eq +/* Equation Submodel +Enter your equations here. You can use the Toolbar buttons at the top ( Add , f(x) etc. ). +*/ +parameters + string dllname = 'MotionProfiles.dll'; +variables + real x[3]; + real t; +equations + // start typing here + t = time-0.5; + x = dll(dllname,'ProfileCycloidal',t); + output = x[1]; + implementation_end; + end; + connections + end; + implementation_end; +]]> + + + + + + + Experiment 1 + + + + 4.8 + + + + + + + + + time + Submodel1\x[1] + Submodel1\x[2] + Submodel1\x[3] + + + + GraphPlot + + 1 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + 0.0 + 10.0 + true + 3 + + + + + + -8.0 + 12.0 + true + 2 + + + + 0.0 + 10.0 + true + 2 + + + + 0.0 + 10.0 + true + 2 + + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 2 + 1 + true + + true + time + + + true + Submodel1\x[1] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 2 + 1 + true + + true + time + + + true + Submodel1\x[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 2 + 1 + true + + true + time + + + true + Submodel1\x[3] + + + + + true + 0 + 16777215 + + + + + + 1 + true + Window 1 + 0 + + 1 + + Base + + + + +0.146354 0.222222 0.856771 1.01296 + + + + + + 0.0 + 10.0 + false + false + false + false + 0.1 + 1.0e-6 + 1.0e-7 + false + true + + + + Euler + 0.01 + false + + + BackwardEuler + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + 0.01 + 1.0 + + + AdamsBashforth + 0.01 + false + + + RungeKutta2 + 0.01 + false + + + RungeKutta4 + 0.01 + false + + + RungeKutta8 + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + 0.9 + 0.33 + 6.0 + 0.0 + false + 100000 + false + 1000 + + + RungeKuttaFehlberg + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + + + VodeAdams + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + true + true + + + BDFMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.001 + false + 1.0 + + + MeBDFiMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.001 + false + 1.0 + + 8 + + + + 10 + false + true + true + false + true + 0 + 0.0 + true + MultipleRun + true + + UseEndValue + 0.001 + BroydonFletcherGoldfarbShanno + + + + + true + true + true + true + + + false + + + + + + + + + 1.0 + + + + + diff --git a/implementation/submodel/endeffector/endeffector.3dm b/implementation/endeffector/endeffector.3dm similarity index 100% rename from implementation/submodel/endeffector/endeffector.3dm rename to implementation/endeffector/endeffector.3dm diff --git a/implementation/submodel/endeffector/endeffector.emx b/implementation/endeffector/endeffector.emx similarity index 100% rename from implementation/submodel/endeffector/endeffector.emx rename to implementation/endeffector/endeffector.emx diff --git a/implementation/endeffector/endeffector.scn b/implementation/endeffector/endeffector.scn new file mode 100644 index 0000000..8092c28 --- /dev/null +++ b/implementation/endeffector/endeffector.scn @@ -0,0 +1,1238 @@ + +4.8.2.10124 + + + + + 1 + + + 1 + + + 1 + + + true + Body0 + holder + + + endeffector\holder\AbsH[1,4] + 0.0 + + + endeffector\holder\AbsH[2,4] + 0.11 + + + endeffector\holder\AbsH[3,4] + -0.0088 + + + + + + endeffector\holder\AbsH[1,3] + 0.0 + + + endeffector\holder\AbsH[2,3] + 0.0 + + + endeffector\holder\AbsH[3,3] + 1.0 + + + + + endeffector\holder\AbsH[1,2] + 0.0 + + + endeffector\holder\AbsH[2,2] + 1.0 + + + endeffector\holder\AbsH[3,2] + 0.0 + + + Matrix + + true + true + true + true + true + true + + + + + false + false + false + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 0.184313725490196 + + + 0.803921568627451 + + + 0.184313725490196 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Body0_Sub0 + Body + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + + + 1 + + + 1 + + + 1 + + + false + ConnectionPoint2 + Reference Frame + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + + + + + 1 + + + 1 + + + 1 + + + false + Body1 + marker + + + endeffector\marker\AbsH[1,4] + 0.0 + + + endeffector\marker\AbsH[2,4] + 0.1 + + + endeffector\marker\AbsH[3,4] + 0.0 + + + + + + endeffector\marker\AbsH[1,3] + 0.0 + + + endeffector\marker\AbsH[2,3] + -1.0 + + + endeffector\marker\AbsH[3,3] + -3.4914813388431334e-15 + + + + + endeffector\marker\AbsH[1,2] + 0.0 + + + endeffector\marker\AbsH[2,2] + -3.4914813388431334e-15 + + + endeffector\marker\AbsH[3,2] + 1.0 + + + Matrix + + true + true + true + true + true + true + + + 16 + 0.0075 + 0.0075 + 0.135 + true + true + true + true + false + true + + + 1 + + + 1 + + + 1 + + + true + + + 0 + + + 0 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Body1_Sub0 + Body + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + + + 1 + + + 1 + + + 1 + + + false + ConnectionPoint2 + Reference Frame + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + + + + + 1 + + + 1 + + + 1 + + + false + Body2 + grippertop + + + endeffector\grippertop\AbsH[1,4] + 0.0 + + + endeffector\grippertop\AbsH[2,4] + 0.11 + + + endeffector\grippertop\AbsH[3,4] + 0.015 + + + + + + endeffector\grippertop\AbsH[1,3] + 0.0 + + + endeffector\grippertop\AbsH[2,3] + 0.0 + + + endeffector\grippertop\AbsH[3,3] + 1.0 + + + + + endeffector\grippertop\AbsH[1,2] + 0.0 + + + endeffector\grippertop\AbsH[2,2] + 1.0 + + + endeffector\grippertop\AbsH[3,2] + 0.0 + + + Matrix + + true + true + true + true + true + true + + +
    Center
    + 1.0 + true + 4 + + + 0.07 + + + 0.04 + + + 0.01 + + + true + + + 0.188235294117647 + + + 0.803921568627451 + + + 0.188235294117647 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Body2_Sub0 + Body + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true +
    + + + + 1 + + + 1 + + + 1 + + + false + KP0\Hinge0 + Frame + + + 0.05 + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + 0 + 30 + false + + + true + + + 0.596078431372549 + + + 0.984313725490196 + + + 0.596078431372549 + + + 0.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + true + KP0\Hinge0_Sub0 + Cylinder + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + + + + + 1 + + + 1 + + + 1 + + + false + ConnectionPoint2 + Reference Frame + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + +
    + + + + + 1 + + + 1 + + + 1 + + + false + Body3 + gripperbase + + + endeffector\gripperbase\AbsH[1,4] + 0.0 + + + endeffector\gripperbase\AbsH[2,4] + 0.11 + + + endeffector\gripperbase\AbsH[3,4] + 0.0 + + + + + + endeffector\gripperbase\AbsH[1,3] + 0.0 + + + endeffector\gripperbase\AbsH[2,3] + 0.0 + + + endeffector\gripperbase\AbsH[3,3] + 1.0 + + + + + endeffector\gripperbase\AbsH[1,2] + 0.0 + + + endeffector\gripperbase\AbsH[2,2] + 1.0 + + + endeffector\gripperbase\AbsH[3,2] + 0.0 + + + Matrix + + true + true + true + true + true + true + + + + + false + false + false + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 0.188235294117647 + + + 0.803921568627451 + + + 0.188235294117647 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + Body3_Sub0 + Body + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + + + 1 + + + 1 + + + 1 + + + false + KP0\Hinge1 + Frame + + + 0.05 + + + 0.015 + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + 0 + 30 + false + + + true + + + 0.250980392156863 + + + 0.87843137254902 + + + 0.815686274509804 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 15 + + false + false + true + KP0\Hinge1_Sub0 + Cylinder + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + + + + + + + 1 + + + 1 + + + 1 + + + false + World + World + + + endeffector\World\AbsH[1,4] + 0.0 + + + endeffector\World\AbsH[2,4] + 0.0 + + + endeffector\World\AbsH[3,4] + 0.0 + + + + + + endeffector\World\AbsH[1,3] + 0.0 + + + endeffector\World\AbsH[2,3] + 0.0 + + + endeffector\World\AbsH[3,3] + 1.0 + + + + + endeffector\World\AbsH[1,2] + 0.0 + + + endeffector\World\AbsH[2,2] + 1.0 + + + endeffector\World\AbsH[3,2] + 0.0 + + + Matrix + + true + true + true + true + true + true + + + + + 1 + + + 1 + + + 1 + + + false + ConnectionPoint1 + Reference Frame + + + 0.11 + + + -0.0088 + + + + + + 1 + + + + + 1 + + + Direct3D + + true + true + true + true + true + true + + + + + 1 + + + 1 + + + 1 + + + false + ConnectionPoint1 + Reference Frame + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + ConnectionPoint1 + Reference Frame + + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + + + + false + Obj4 + Camera + + + -0.0660004684295535 + + + -0.100709685524672 + + + 0.0118876250113675 + + + + + + 0.545480432037758 + + + 0.832345043566174 + + + -0.0982488000676071 + + + + + 0.0538533467027166 + + + 0.0821744714837986 + + + 0.995161882954364 + + + Direct3D + + false + false + false + false + false + false + + + 5.0e-4 + 5.0 + true + 1.9634954084936205e-4 + 45.0 + -10.0 + 10.0 + 10.0 + -10.0 + true + + + true + + + 1 + + + true + true + true + +
    diff --git a/implementation/endeffector/endeffectorIcon.png b/implementation/endeffector/endeffectorIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..61024e31f99a9be75fee2e614261d809192c7e10 GIT binary patch literal 6485 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 literal 0 HcmV?d00001 diff --git a/implementation/submodel/endeffector/gripper.scad b/implementation/endeffector/gripper.scad similarity index 100% rename from implementation/submodel/endeffector/gripper.scad rename to implementation/endeffector/gripper.scad diff --git a/implementation/endeffector/gripperbase.stl b/implementation/endeffector/gripperbase.stl new file mode 100644 index 0000000..9717c81 --- /dev/null +++ b/implementation/endeffector/gripperbase.stl @@ -0,0 +1,786 @@ +solid OpenSCAD_Model + facet normal 0.808756 -0 0.588145 + outer loop + vertex 0.012145 -0.0149994 -0.00508404 + vertex 0.0133677 0.0149994 -0.00676537 + vertex 0.012145 0.0149994 -0.00508404 + endloop + endfacet + facet normal 0.808756 0 0.588145 + outer loop + vertex 0.0133677 0.0149994 -0.00676537 + vertex 0.012145 -0.0149994 -0.00508404 + vertex 0.0133677 -0.0149994 -0.00676537 + endloop + endfacet + facet normal 0.978185 -0 0.207738 + outer loop + vertex 0.0133677 -0.0149994 -0.00676537 + vertex 0.0137997 0.0149994 -0.00879955 + vertex 0.0133677 0.0149994 -0.00676537 + endloop + endfacet + facet normal 0.978185 0 0.207738 + outer loop + vertex 0.0137997 0.0149994 -0.00879955 + vertex 0.0133677 -0.0149994 -0.00676537 + vertex 0.0137997 -0.0149994 -0.00879955 + endloop + endfacet + facet normal 0.808917 0 -0.587923 + outer loop + vertex 0.0133677 -0.0149994 -0.0108328 + vertex 0.012145 0.0149994 -0.0125151 + vertex 0.0133677 0.0149994 -0.0108328 + endloop + endfacet + facet normal 0.808917 0 -0.587923 + outer loop + vertex 0.012145 0.0149994 -0.0125151 + vertex 0.0133677 -0.0149994 -0.0108328 + vertex 0.012145 -0.0149994 -0.0125151 + endloop + endfacet + facet normal -0.30921 0 -0.950994 + outer loop + vertex 0.00629997 -0.0149994 -0.0131292 + vertex 0.00827694 0.0149994 -0.013772 + vertex 0.00827694 -0.0149994 -0.013772 + endloop + endfacet + facet normal -0.30921 0 -0.950994 + outer loop + vertex 0.00827694 0.0149994 -0.013772 + vertex 0.00629997 -0.0149994 -0.0131292 + vertex 0.00629997 0.0149994 -0.0131292 + endloop + endfacet + facet normal 0.499993 0 -0.866029 + outer loop + vertex 0.0103445 -0.0149994 -0.0135546 + vertex 0.012145 0.0149994 -0.0125151 + vertex 0.012145 -0.0149994 -0.0125151 + endloop + endfacet + facet normal 0.499993 0 -0.866029 + outer loop + vertex 0.012145 0.0149994 -0.0125151 + vertex 0.0103445 -0.0149994 -0.0135546 + vertex 0.0103445 0.0149994 -0.0135546 + endloop + endfacet + facet normal -0.913697 0 0.406395 + outer loop + vertex 0.00390911 -0.0149994 -0.00776005 + vertex 0.00475407 0.0149994 -0.00586033 + vertex 0.00390911 0.0149994 -0.00776005 + endloop + endfacet + facet normal -0.913697 0 0.406395 + outer loop + vertex 0.00475407 0.0149994 -0.00586033 + vertex 0.00390911 -0.0149994 -0.00776005 + vertex 0.00475407 -0.0149994 -0.00586033 + endloop + endfacet + facet normal 0.499997 0 0.866027 + outer loop + vertex 0.0103445 0.0149994 -0.00404453 + vertex 0.012145 -0.0149994 -0.00508404 + vertex 0.012145 0.0149994 -0.00508404 + endloop + endfacet + facet normal 0.499997 0 0.866027 + outer loop + vertex 0.012145 -0.0149994 -0.00508404 + vertex 0.0103445 0.0149994 -0.00404453 + vertex 0.0103445 -0.0149994 -0.00404453 + endloop + endfacet + facet normal -0.668739 0 0.743497 + outer loop + vertex 0.00475407 0.0149994 -0.00586033 + vertex 0.00629997 -0.0149994 -0.00446987 + vertex 0.00629997 0.0149994 -0.00446987 + endloop + endfacet + facet normal -0.668739 0 0.743497 + outer loop + vertex 0.00629997 -0.0149994 -0.00446987 + vertex 0.00475407 0.0149994 -0.00586033 + vertex 0.00475407 -0.0149994 -0.00586033 + endloop + endfacet + facet normal 0.104586 0 0.994516 + outer loop + vertex 0.00827694 0.0149994 -0.0038271 + vertex 0.0103445 -0.0149994 -0.00404453 + vertex 0.0103445 0.0149994 -0.00404453 + endloop + endfacet + facet normal 0.104586 0 0.994516 + outer loop + vertex 0.0103445 -0.0149994 -0.00404453 + vertex 0.00827694 0.0149994 -0.0038271 + vertex 0.00827694 -0.0149994 -0.0038271 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0149994 -0.00446987 + vertex 0.0103445 -0.0149994 -0.00404453 + vertex 0.00827694 -0.0149994 -0.0038271 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0149994 -0.00446987 + vertex 0.012145 -0.0149994 -0.00508404 + vertex 0.0103445 -0.0149994 -0.00404453 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0149994 -0.00586033 + vertex 0.012145 -0.0149994 -0.00508404 + vertex 0.00629997 -0.0149994 -0.00446987 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0149994 -0.00586033 + vertex 0.0133677 -0.0149994 -0.00676537 + vertex 0.012145 -0.0149994 -0.00508404 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0149994 -0.00776005 + vertex 0.0133677 -0.0149994 -0.00676537 + vertex 0.00475407 -0.0149994 -0.00586033 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0149994 -0.00776005 + vertex 0.0137997 -0.0149994 -0.00879955 + vertex 0.0133677 -0.0149994 -0.00676537 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0149994 -0.00983906 + vertex 0.0137997 -0.0149994 -0.00879955 + vertex 0.00390911 -0.0149994 -0.00776005 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0149994 -0.00983906 + vertex 0.0133677 -0.0149994 -0.0108328 + vertex 0.0137997 -0.0149994 -0.00879955 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0149994 -0.0117388 + vertex 0.0133677 -0.0149994 -0.0108328 + vertex 0.00390911 -0.0149994 -0.00983906 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0149994 -0.0117388 + vertex 0.012145 -0.0149994 -0.0125151 + vertex 0.0133677 -0.0149994 -0.0108328 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0149994 -0.0131292 + vertex 0.012145 -0.0149994 -0.0125151 + vertex 0.00475407 -0.0149994 -0.0117388 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0149994 -0.0131292 + vertex 0.0103445 -0.0149994 -0.0135546 + vertex 0.012145 -0.0149994 -0.0125151 + endloop + endfacet + facet normal -0 -1 0 + outer loop + vertex 0.0103445 -0.0149994 -0.0135546 + vertex 0.00629997 -0.0149994 -0.0131292 + vertex 0.00827694 -0.0149994 -0.013772 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex 0.00390911 -0.0149994 -0.00983906 + vertex 0.00390911 0.0149994 -0.00776005 + vertex 0.00390911 0.0149994 -0.00983906 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0.00390911 0.0149994 -0.00776005 + vertex 0.00390911 -0.0149994 -0.00983906 + vertex 0.00390911 -0.0149994 -0.00776005 + endloop + endfacet + facet normal 0.978165 0 -0.207829 + outer loop + vertex 0.0137997 -0.0149994 -0.00879955 + vertex 0.0133677 0.0149994 -0.0108328 + vertex 0.0137997 0.0149994 -0.00879955 + endloop + endfacet + facet normal 0.978165 0 -0.207829 + outer loop + vertex 0.0133677 0.0149994 -0.0108328 + vertex 0.0137997 -0.0149994 -0.00879955 + vertex 0.0133677 -0.0149994 -0.0108328 + endloop + endfacet + facet normal -0.309197 0 0.950998 + outer loop + vertex 0.00629997 0.0149994 -0.00446987 + vertex 0.00827694 -0.0149994 -0.0038271 + vertex 0.00827694 0.0149994 -0.0038271 + endloop + endfacet + facet normal -0.309197 0 0.950998 + outer loop + vertex 0.00827694 -0.0149994 -0.0038271 + vertex 0.00629997 0.0149994 -0.00446987 + vertex 0.00629997 -0.0149994 -0.00446987 + endloop + endfacet + facet normal -0.913699 0 -0.406392 + outer loop + vertex 0.00475407 -0.0149994 -0.0117388 + vertex 0.00390911 0.0149994 -0.00983906 + vertex 0.00475407 0.0149994 -0.0117388 + endloop + endfacet + facet normal -0.913699 -0 -0.406392 + outer loop + vertex 0.00390911 0.0149994 -0.00983906 + vertex 0.00475407 -0.0149994 -0.0117388 + vertex 0.00390911 -0.0149994 -0.00983906 + endloop + endfacet + facet normal 0.104572 0 -0.994517 + outer loop + vertex 0.00827694 -0.0149994 -0.013772 + vertex 0.0103445 0.0149994 -0.0135546 + vertex 0.0103445 -0.0149994 -0.0135546 + endloop + endfacet + facet normal 0.104572 0 -0.994517 + outer loop + vertex 0.0103445 0.0149994 -0.0135546 + vertex 0.00827694 -0.0149994 -0.013772 + vertex 0.00827694 0.0149994 -0.013772 + endloop + endfacet + facet normal -0.668723 0 -0.743512 + outer loop + vertex 0.00475407 -0.0149994 -0.0117388 + vertex 0.00629997 0.0149994 -0.0131292 + vertex 0.00629997 -0.0149994 -0.0131292 + endloop + endfacet + facet normal -0.668723 0 -0.743512 + outer loop + vertex 0.00629997 0.0149994 -0.0131292 + vertex 0.00475407 -0.0149994 -0.0117388 + vertex 0.00475407 0.0149994 -0.0117388 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0103445 0.0149994 -0.00404453 + vertex 0.00629997 0.0149994 -0.00446987 + vertex 0.00827694 0.0149994 -0.0038271 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 0.0149994 -0.00508404 + vertex 0.00629997 0.0149994 -0.00446987 + vertex 0.0103445 0.0149994 -0.00404453 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 0.0149994 -0.00508404 + vertex 0.00475407 0.0149994 -0.00586033 + vertex 0.00629997 0.0149994 -0.00446987 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 0.0149994 -0.00676537 + vertex 0.00475407 0.0149994 -0.00586033 + vertex 0.012145 0.0149994 -0.00508404 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 0.0149994 -0.00676537 + vertex 0.00390911 0.0149994 -0.00776005 + vertex 0.00475407 0.0149994 -0.00586033 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0137997 0.0149994 -0.00879955 + vertex 0.00390911 0.0149994 -0.00776005 + vertex 0.0133677 0.0149994 -0.00676537 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0137997 0.0149994 -0.00879955 + vertex 0.00390911 0.0149994 -0.00983906 + vertex 0.00390911 0.0149994 -0.00776005 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.0133677 0.0149994 -0.0108328 + vertex 0.00390911 0.0149994 -0.00983906 + vertex 0.0137997 0.0149994 -0.00879955 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 0.0149994 -0.0108328 + vertex 0.00475407 0.0149994 -0.0117388 + vertex 0.00390911 0.0149994 -0.00983906 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.012145 0.0149994 -0.0125151 + vertex 0.00475407 0.0149994 -0.0117388 + vertex 0.0133677 0.0149994 -0.0108328 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 0.0149994 -0.0125151 + vertex 0.00629997 0.0149994 -0.0131292 + vertex 0.00475407 0.0149994 -0.0117388 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.0103445 0.0149994 -0.0135546 + vertex 0.00629997 0.0149994 -0.0131292 + vertex 0.012145 0.0149994 -0.0125151 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.00629997 0.0149994 -0.0131292 + vertex 0.0103445 0.0149994 -0.0135546 + vertex 0.00827694 0.0149994 -0.013772 + endloop + endfacet + facet normal 0.808776 -0 0.588116 + outer loop + vertex -0.00545406 -0.0149994 -0.00508404 + vertex -0.00423145 0.0149994 -0.00676537 + vertex -0.00545406 0.0149994 -0.00508404 + endloop + endfacet + facet normal 0.808776 0 0.588116 + outer loop + vertex -0.00423145 0.0149994 -0.00676537 + vertex -0.00545406 -0.0149994 -0.00508404 + vertex -0.00423145 -0.0149994 -0.00676537 + endloop + endfacet + facet normal 0.978184 -0 0.207742 + outer loop + vertex -0.00423145 -0.0149994 -0.00676537 + vertex -0.00379944 0.0149994 -0.00879955 + vertex -0.00423145 0.0149994 -0.00676537 + endloop + endfacet + facet normal 0.978184 0 0.207742 + outer loop + vertex -0.00379944 0.0149994 -0.00879955 + vertex -0.00423145 -0.0149994 -0.00676537 + vertex -0.00379944 -0.0149994 -0.00879955 + endloop + endfacet + facet normal 0.808938 0 -0.587895 + outer loop + vertex -0.00423145 -0.0149994 -0.0108328 + vertex -0.00545406 0.0149994 -0.0125151 + vertex -0.00423145 0.0149994 -0.0108328 + endloop + endfacet + facet normal 0.808938 0 -0.587895 + outer loop + vertex -0.00545406 0.0149994 -0.0125151 + vertex -0.00423145 -0.0149994 -0.0108328 + vertex -0.00545406 -0.0149994 -0.0125151 + endloop + endfacet + facet normal -0.309216 0 -0.950992 + outer loop + vertex -0.0112991 -0.0149994 -0.0131292 + vertex -0.00932217 0.0149994 -0.013772 + vertex -0.00932217 -0.0149994 -0.013772 + endloop + endfacet + facet normal -0.309216 0 -0.950992 + outer loop + vertex -0.00932217 0.0149994 -0.013772 + vertex -0.0112991 -0.0149994 -0.0131292 + vertex -0.0112991 0.0149994 -0.0131292 + endloop + endfacet + facet normal 0.499985 0 -0.866034 + outer loop + vertex -0.0072546 -0.0149994 -0.0135546 + vertex -0.00545406 0.0149994 -0.0125151 + vertex -0.00545406 -0.0149994 -0.0125151 + endloop + endfacet + facet normal 0.499985 0 -0.866034 + outer loop + vertex -0.00545406 0.0149994 -0.0125151 + vertex -0.0072546 -0.0149994 -0.0135546 + vertex -0.0072546 0.0149994 -0.0135546 + endloop + endfacet + facet normal -0.91369 0 0.406412 + outer loop + vertex -0.01369 -0.0149994 -0.00776005 + vertex -0.012845 0.0149994 -0.00586033 + vertex -0.01369 0.0149994 -0.00776005 + endloop + endfacet + facet normal -0.91369 0 0.406412 + outer loop + vertex -0.012845 0.0149994 -0.00586033 + vertex -0.01369 -0.0149994 -0.00776005 + vertex -0.012845 -0.0149994 -0.00586033 + endloop + endfacet + facet normal 0.499988 0 0.866032 + outer loop + vertex -0.0072546 0.0149994 -0.00404453 + vertex -0.00545406 -0.0149994 -0.00508404 + vertex -0.00545406 0.0149994 -0.00508404 + endloop + endfacet + facet normal 0.499988 0 0.866032 + outer loop + vertex -0.00545406 -0.0149994 -0.00508404 + vertex -0.0072546 0.0149994 -0.00404453 + vertex -0.0072546 -0.0149994 -0.00404453 + endloop + endfacet + facet normal -0.668739 0 0.743497 + outer loop + vertex -0.012845 0.0149994 -0.00586033 + vertex -0.0112991 -0.0149994 -0.00446987 + vertex -0.0112991 0.0149994 -0.00446987 + endloop + endfacet + facet normal -0.668739 0 0.743497 + outer loop + vertex -0.0112991 -0.0149994 -0.00446987 + vertex -0.012845 0.0149994 -0.00586033 + vertex -0.012845 -0.0149994 -0.00586033 + endloop + endfacet + facet normal 0.104585 0 0.994516 + outer loop + vertex -0.00932217 0.0149994 -0.0038271 + vertex -0.0072546 -0.0149994 -0.00404453 + vertex -0.0072546 0.0149994 -0.00404453 + endloop + endfacet + facet normal 0.104585 0 0.994516 + outer loop + vertex -0.0072546 -0.0149994 -0.00404453 + vertex -0.00932217 0.0149994 -0.0038271 + vertex -0.00932217 -0.0149994 -0.0038271 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0149994 -0.00446987 + vertex -0.0072546 -0.0149994 -0.00404453 + vertex -0.00932217 -0.0149994 -0.0038271 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0149994 -0.00446987 + vertex -0.00545406 -0.0149994 -0.00508404 + vertex -0.0072546 -0.0149994 -0.00404453 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0149994 -0.00586033 + vertex -0.00545406 -0.0149994 -0.00508404 + vertex -0.0112991 -0.0149994 -0.00446987 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0149994 -0.00586033 + vertex -0.00423145 -0.0149994 -0.00676537 + vertex -0.00545406 -0.0149994 -0.00508404 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0149994 -0.00776005 + vertex -0.00423145 -0.0149994 -0.00676537 + vertex -0.012845 -0.0149994 -0.00586033 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0149994 -0.00776005 + vertex -0.00379944 -0.0149994 -0.00879955 + vertex -0.00423145 -0.0149994 -0.00676537 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0149994 -0.00983906 + vertex -0.00379944 -0.0149994 -0.00879955 + vertex -0.01369 -0.0149994 -0.00776005 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0149994 -0.00983906 + vertex -0.00423145 -0.0149994 -0.0108328 + vertex -0.00379944 -0.0149994 -0.00879955 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0149994 -0.0117388 + vertex -0.00423145 -0.0149994 -0.0108328 + vertex -0.01369 -0.0149994 -0.00983906 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0149994 -0.0117388 + vertex -0.00545406 -0.0149994 -0.0125151 + vertex -0.00423145 -0.0149994 -0.0108328 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0149994 -0.0131292 + vertex -0.00545406 -0.0149994 -0.0125151 + vertex -0.012845 -0.0149994 -0.0117388 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0149994 -0.0131292 + vertex -0.0072546 -0.0149994 -0.0135546 + vertex -0.00545406 -0.0149994 -0.0125151 + endloop + endfacet + facet normal -0 -1 0 + outer loop + vertex -0.0072546 -0.0149994 -0.0135546 + vertex -0.0112991 -0.0149994 -0.0131292 + vertex -0.00932217 -0.0149994 -0.013772 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -0.01369 -0.0149994 -0.00983906 + vertex -0.01369 0.0149994 -0.00776005 + vertex -0.01369 0.0149994 -0.00983906 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex -0.01369 0.0149994 -0.00776005 + vertex -0.01369 -0.0149994 -0.00983906 + vertex -0.01369 -0.0149994 -0.00776005 + endloop + endfacet + facet normal 0.978164 0 -0.207833 + outer loop + vertex -0.00379944 -0.0149994 -0.00879955 + vertex -0.00423145 0.0149994 -0.0108328 + vertex -0.00379944 0.0149994 -0.00879955 + endloop + endfacet + facet normal 0.978164 0 -0.207833 + outer loop + vertex -0.00423145 0.0149994 -0.0108328 + vertex -0.00379944 -0.0149994 -0.00879955 + vertex -0.00423145 -0.0149994 -0.0108328 + endloop + endfacet + facet normal -0.309203 0 0.950996 + outer loop + vertex -0.0112991 0.0149994 -0.00446987 + vertex -0.00932217 -0.0149994 -0.0038271 + vertex -0.00932217 0.0149994 -0.0038271 + endloop + endfacet + facet normal -0.309203 0 0.950996 + outer loop + vertex -0.00932217 -0.0149994 -0.0038271 + vertex -0.0112991 0.0149994 -0.00446987 + vertex -0.0112991 -0.0149994 -0.00446987 + endloop + endfacet + facet normal -0.913692 0 -0.406408 + outer loop + vertex -0.012845 -0.0149994 -0.0117388 + vertex -0.01369 0.0149994 -0.00983906 + vertex -0.012845 0.0149994 -0.0117388 + endloop + endfacet + facet normal -0.913692 -0 -0.406408 + outer loop + vertex -0.01369 0.0149994 -0.00983906 + vertex -0.012845 -0.0149994 -0.0117388 + vertex -0.01369 -0.0149994 -0.00983906 + endloop + endfacet + facet normal 0.104571 0 -0.994517 + outer loop + vertex -0.00932217 -0.0149994 -0.013772 + vertex -0.0072546 0.0149994 -0.0135546 + vertex -0.0072546 -0.0149994 -0.0135546 + endloop + endfacet + facet normal 0.104571 0 -0.994517 + outer loop + vertex -0.0072546 0.0149994 -0.0135546 + vertex -0.00932217 -0.0149994 -0.013772 + vertex -0.00932217 0.0149994 -0.013772 + endloop + endfacet + facet normal -0.668723 0 -0.743512 + outer loop + vertex -0.012845 -0.0149994 -0.0117388 + vertex -0.0112991 0.0149994 -0.0131292 + vertex -0.0112991 -0.0149994 -0.0131292 + endloop + endfacet + facet normal -0.668723 0 -0.743512 + outer loop + vertex -0.0112991 0.0149994 -0.0131292 + vertex -0.012845 -0.0149994 -0.0117388 + vertex -0.012845 0.0149994 -0.0117388 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0072546 0.0149994 -0.00404453 + vertex -0.0112991 0.0149994 -0.00446987 + vertex -0.00932217 0.0149994 -0.0038271 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 0.0149994 -0.00508404 + vertex -0.0112991 0.0149994 -0.00446987 + vertex -0.0072546 0.0149994 -0.00404453 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 0.0149994 -0.00508404 + vertex -0.012845 0.0149994 -0.00586033 + vertex -0.0112991 0.0149994 -0.00446987 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 0.0149994 -0.00676537 + vertex -0.012845 0.0149994 -0.00586033 + vertex -0.00545406 0.0149994 -0.00508404 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 0.0149994 -0.00676537 + vertex -0.01369 0.0149994 -0.00776005 + vertex -0.012845 0.0149994 -0.00586033 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00379944 0.0149994 -0.00879955 + vertex -0.01369 0.0149994 -0.00776005 + vertex -0.00423145 0.0149994 -0.00676537 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00379944 0.0149994 -0.00879955 + vertex -0.01369 0.0149994 -0.00983906 + vertex -0.01369 0.0149994 -0.00776005 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.00423145 0.0149994 -0.0108328 + vertex -0.01369 0.0149994 -0.00983906 + vertex -0.00379944 0.0149994 -0.00879955 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 0.0149994 -0.0108328 + vertex -0.012845 0.0149994 -0.0117388 + vertex -0.01369 0.0149994 -0.00983906 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.00545406 0.0149994 -0.0125151 + vertex -0.012845 0.0149994 -0.0117388 + vertex -0.00423145 0.0149994 -0.0108328 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 0.0149994 -0.0125151 + vertex -0.0112991 0.0149994 -0.0131292 + vertex -0.012845 0.0149994 -0.0117388 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.0072546 0.0149994 -0.0135546 + vertex -0.0112991 0.0149994 -0.0131292 + vertex -0.00545406 0.0149994 -0.0125151 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0112991 0.0149994 -0.0131292 + vertex -0.0072546 0.0149994 -0.0135546 + vertex -0.00932217 0.0149994 -0.013772 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/implementation/endeffector/markerholder.stl b/implementation/endeffector/markerholder.stl new file mode 100644 index 0000000..eb22322 --- /dev/null +++ b/implementation/endeffector/markerholder.stl @@ -0,0 +1,1962 @@ +solid OpenSCAD_Model + facet normal -0.913621 0 -0.406567 + outer loop + vertex 0.00475407 0.0299997 -0.00293827 + vertex 0.00390911 0.0499992 -0.00103951 + vertex 0.00475407 0.0499992 -0.00293827 + endloop + endfacet + facet normal -0.913621 -0 -0.406567 + outer loop + vertex 0.00390911 0.0499992 -0.00103951 + vertex 0.00475407 0.0299997 -0.00293827 + vertex 0.00390911 0.0299997 -0.00103951 + endloop + endfacet + facet normal 0.808915 -0 0.587925 + outer loop + vertex 0.012145 0.0299997 0.00371552 + vertex 0.0133677 0.0499992 0.00203323 + vertex 0.012145 0.0499992 0.00371552 + endloop + endfacet + facet normal 0.808915 0 0.587925 + outer loop + vertex 0.0133677 0.0499992 0.00203323 + vertex 0.012145 0.0299997 0.00371552 + vertex 0.0133677 0.0299997 0.00203323 + endloop + endfacet + facet normal 0.978165 -0 0.207831 + outer loop + vertex 0.0133677 0.0299997 0.00203323 + vertex 0.0137997 0.0499992 0 + vertex 0.0133677 0.0499992 0.00203323 + endloop + endfacet + facet normal 0.978165 0 0.207831 + outer loop + vertex 0.0137997 0.0499992 0 + vertex 0.0133677 0.0299997 0.00203323 + vertex 0.0137997 0.0299997 0 + endloop + endfacet + facet normal 0.499993 0 -0.866029 + outer loop + vertex 0.0103445 0.0299997 -0.00475502 + vertex 0.012145 0.0499992 -0.00371552 + vertex 0.012145 0.0299997 -0.00371552 + endloop + endfacet + facet normal 0.499993 0 -0.866029 + outer loop + vertex 0.012145 0.0499992 -0.00371552 + vertex 0.0103445 0.0299997 -0.00475502 + vertex 0.0103445 0.0499992 -0.00475502 + endloop + endfacet + facet normal -0.913621 0 0.406567 + outer loop + vertex 0.00390911 0.0299997 0.00103951 + vertex 0.00475407 0.0499992 0.00293827 + vertex 0.00390911 0.0499992 0.00103951 + endloop + endfacet + facet normal -0.913621 0 0.406567 + outer loop + vertex 0.00475407 0.0499992 0.00293827 + vertex 0.00390911 0.0299997 0.00103951 + vertex 0.00475407 0.0299997 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0103445 0.0499992 0.00475502 + vertex 0.00629997 0.0499992 0.00432968 + vertex 0.00827694 0.0499992 0.00497246 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 0.0499992 0.00371552 + vertex 0.00629997 0.0499992 0.00432968 + vertex 0.0103445 0.0499992 0.00475502 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 0.0499992 0.00371552 + vertex 0.00475407 0.0499992 0.00293827 + vertex 0.00629997 0.0499992 0.00432968 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 0.0499992 0.00203323 + vertex 0.00475407 0.0499992 0.00293827 + vertex 0.012145 0.0499992 0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 0.0499992 0.00203323 + vertex 0.00390911 0.0499992 0.00103951 + vertex 0.00475407 0.0499992 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0137997 0.0499992 0 + vertex 0.00390911 0.0499992 0.00103951 + vertex 0.0133677 0.0499992 0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0137997 0.0499992 0 + vertex 0.00390911 0.0499992 -0.00103951 + vertex 0.00390911 0.0499992 0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.0133677 0.0499992 -0.00203323 + vertex 0.00390911 0.0499992 -0.00103951 + vertex 0.0137997 0.0499992 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 0.0499992 -0.00203323 + vertex 0.00475407 0.0499992 -0.00293827 + vertex 0.00390911 0.0499992 -0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.012145 0.0499992 -0.00371552 + vertex 0.00475407 0.0499992 -0.00293827 + vertex 0.0133677 0.0499992 -0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 0.0499992 -0.00371552 + vertex 0.00629997 0.0499992 -0.00432968 + vertex 0.00475407 0.0499992 -0.00293827 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.0103445 0.0499992 -0.00475502 + vertex 0.00629997 0.0499992 -0.00432968 + vertex 0.012145 0.0499992 -0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.00629997 0.0499992 -0.00432968 + vertex 0.0103445 0.0499992 -0.00475502 + vertex 0.00827694 0.0499992 -0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 0.0299997 0.00432968 + vertex 0.0103445 0.0299997 0.00475502 + vertex 0.00827694 0.0299997 0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 0.0299997 0.00432968 + vertex 0.012145 0.0299997 0.00371552 + vertex 0.0103445 0.0299997 0.00475502 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 0.0299997 0.00293827 + vertex 0.012145 0.0299997 0.00371552 + vertex 0.00629997 0.0299997 0.00432968 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 0.0299997 0.00293827 + vertex 0.0133677 0.0299997 0.00203323 + vertex 0.012145 0.0299997 0.00371552 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 0.0299997 0.00103951 + vertex 0.0133677 0.0299997 0.00203323 + vertex 0.00475407 0.0299997 0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 0.0299997 0.00103951 + vertex 0.0137997 0.0299997 0 + vertex 0.0133677 0.0299997 0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 0.0299997 -0.00103951 + vertex 0.0137997 0.0299997 0 + vertex 0.00390911 0.0299997 0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 0.0299997 -0.00103951 + vertex 0.0133677 0.0299997 -0.00203323 + vertex 0.0137997 0.0299997 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 0.0299997 -0.00293827 + vertex 0.0133677 0.0299997 -0.00203323 + vertex 0.00390911 0.0299997 -0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 0.0299997 -0.00293827 + vertex 0.012145 0.0299997 -0.00371552 + vertex 0.0133677 0.0299997 -0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 0.0299997 -0.00432968 + vertex 0.012145 0.0299997 -0.00371552 + vertex 0.00475407 0.0299997 -0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 0.0299997 -0.00432968 + vertex 0.0103445 0.0299997 -0.00475502 + vertex 0.012145 0.0299997 -0.00371552 + endloop + endfacet + facet normal -0 -1 0 + outer loop + vertex 0.0103445 0.0299997 -0.00475502 + vertex 0.00629997 0.0299997 -0.00432968 + vertex 0.00827694 0.0299997 -0.00497246 + endloop + endfacet + facet normal -0.309201 0 0.950997 + outer loop + vertex 0.00629997 0.0499992 0.00432968 + vertex 0.00827694 0.0299997 0.00497246 + vertex 0.00827694 0.0499992 0.00497246 + endloop + endfacet + facet normal -0.309201 0 0.950997 + outer loop + vertex 0.00827694 0.0299997 0.00497246 + vertex 0.00629997 0.0499992 0.00432968 + vertex 0.00629997 0.0299997 0.00432968 + endloop + endfacet + facet normal 0.499993 0 0.866029 + outer loop + vertex 0.0103445 0.0499992 0.00475502 + vertex 0.012145 0.0299997 0.00371552 + vertex 0.012145 0.0499992 0.00371552 + endloop + endfacet + facet normal 0.499993 0 0.866029 + outer loop + vertex 0.012145 0.0299997 0.00371552 + vertex 0.0103445 0.0499992 0.00475502 + vertex 0.0103445 0.0299997 0.00475502 + endloop + endfacet + facet normal -0.309201 0 -0.950997 + outer loop + vertex 0.00629997 0.0299997 -0.00432968 + vertex 0.00827694 0.0499992 -0.00497246 + vertex 0.00827694 0.0299997 -0.00497246 + endloop + endfacet + facet normal -0.309201 0 -0.950997 + outer loop + vertex 0.00827694 0.0499992 -0.00497246 + vertex 0.00629997 0.0299997 -0.00432968 + vertex 0.00629997 0.0499992 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex 0.00475407 0.0299997 -0.00293827 + vertex 0.00629997 0.0499992 -0.00432968 + vertex 0.00629997 0.0299997 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex 0.00629997 0.0499992 -0.00432968 + vertex 0.00475407 0.0299997 -0.00293827 + vertex 0.00475407 0.0499992 -0.00293827 + endloop + endfacet + facet normal 0.978165 0 -0.207831 + outer loop + vertex 0.0137997 0.0299997 0 + vertex 0.0133677 0.0499992 -0.00203323 + vertex 0.0137997 0.0499992 0 + endloop + endfacet + facet normal 0.978165 0 -0.207831 + outer loop + vertex 0.0133677 0.0499992 -0.00203323 + vertex 0.0137997 0.0299997 0 + vertex 0.0133677 0.0299997 -0.00203323 + endloop + endfacet + facet normal 0.808915 0 -0.587925 + outer loop + vertex 0.0133677 0.0299997 -0.00203323 + vertex 0.012145 0.0499992 -0.00371552 + vertex 0.0133677 0.0499992 -0.00203323 + endloop + endfacet + facet normal 0.808915 0 -0.587925 + outer loop + vertex 0.012145 0.0499992 -0.00371552 + vertex 0.0133677 0.0299997 -0.00203323 + vertex 0.012145 0.0299997 -0.00371552 + endloop + endfacet + facet normal 0.104591 0 -0.994515 + outer loop + vertex 0.00827694 0.0299997 -0.00497246 + vertex 0.0103445 0.0499992 -0.00475502 + vertex 0.0103445 0.0299997 -0.00475502 + endloop + endfacet + facet normal 0.104591 0 -0.994515 + outer loop + vertex 0.0103445 0.0499992 -0.00475502 + vertex 0.00827694 0.0299997 -0.00497246 + vertex 0.00827694 0.0499992 -0.00497246 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex 0.00475407 0.0499992 0.00293827 + vertex 0.00629997 0.0299997 0.00432968 + vertex 0.00629997 0.0499992 0.00432968 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex 0.00629997 0.0299997 0.00432968 + vertex 0.00475407 0.0499992 0.00293827 + vertex 0.00475407 0.0299997 0.00293827 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex 0.00390911 0.0299997 -0.00103951 + vertex 0.00390911 0.0499992 0.00103951 + vertex 0.00390911 0.0499992 -0.00103951 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0.00390911 0.0499992 0.00103951 + vertex 0.00390911 0.0299997 -0.00103951 + vertex 0.00390911 0.0299997 0.00103951 + endloop + endfacet + facet normal 0.104591 0 0.994515 + outer loop + vertex 0.00827694 0.0499992 0.00497246 + vertex 0.0103445 0.0299997 0.00475502 + vertex 0.0103445 0.0499992 0.00475502 + endloop + endfacet + facet normal 0.104591 0 0.994515 + outer loop + vertex 0.0103445 0.0299997 0.00475502 + vertex 0.00827694 0.0499992 0.00497246 + vertex 0.00827694 0.0299997 0.00497246 + endloop + endfacet + facet normal -0.913614 0 -0.406583 + outer loop + vertex -0.012845 0.0299997 -0.00293827 + vertex -0.01369 0.0499992 -0.00103951 + vertex -0.012845 0.0499992 -0.00293827 + endloop + endfacet + facet normal -0.913614 -0 -0.406583 + outer loop + vertex -0.01369 0.0499992 -0.00103951 + vertex -0.012845 0.0299997 -0.00293827 + vertex -0.01369 0.0299997 -0.00103951 + endloop + endfacet + facet normal 0.808936 -0 0.587897 + outer loop + vertex -0.00545406 0.0299997 0.00371552 + vertex -0.00423145 0.0499992 0.00203323 + vertex -0.00545406 0.0499992 0.00371552 + endloop + endfacet + facet normal 0.808936 0 0.587897 + outer loop + vertex -0.00423145 0.0499992 0.00203323 + vertex -0.00545406 0.0299997 0.00371552 + vertex -0.00423145 0.0299997 0.00203323 + endloop + endfacet + facet normal 0.978164 -0 0.207835 + outer loop + vertex -0.00423145 0.0299997 0.00203323 + vertex -0.00379944 0.0499992 0 + vertex -0.00423145 0.0499992 0.00203323 + endloop + endfacet + facet normal 0.978164 0 0.207835 + outer loop + vertex -0.00379944 0.0499992 0 + vertex -0.00423145 0.0299997 0.00203323 + vertex -0.00379944 0.0299997 0 + endloop + endfacet + facet normal 0.499985 0 -0.866034 + outer loop + vertex -0.0072546 0.0299997 -0.00475502 + vertex -0.00545406 0.0499992 -0.00371552 + vertex -0.00545406 0.0299997 -0.00371552 + endloop + endfacet + facet normal 0.499985 0 -0.866034 + outer loop + vertex -0.00545406 0.0499992 -0.00371552 + vertex -0.0072546 0.0299997 -0.00475502 + vertex -0.0072546 0.0499992 -0.00475502 + endloop + endfacet + facet normal -0.913614 0 0.406583 + outer loop + vertex -0.01369 0.0299997 0.00103951 + vertex -0.012845 0.0499992 0.00293827 + vertex -0.01369 0.0499992 0.00103951 + endloop + endfacet + facet normal -0.913614 0 0.406583 + outer loop + vertex -0.012845 0.0499992 0.00293827 + vertex -0.01369 0.0299997 0.00103951 + vertex -0.012845 0.0299997 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0072546 0.0499992 0.00475502 + vertex -0.0112991 0.0499992 0.00432968 + vertex -0.00932217 0.0499992 0.00497246 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 0.0499992 0.00371552 + vertex -0.0112991 0.0499992 0.00432968 + vertex -0.0072546 0.0499992 0.00475502 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 0.0499992 0.00371552 + vertex -0.012845 0.0499992 0.00293827 + vertex -0.0112991 0.0499992 0.00432968 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 0.0499992 0.00203323 + vertex -0.012845 0.0499992 0.00293827 + vertex -0.00545406 0.0499992 0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 0.0499992 0.00203323 + vertex -0.01369 0.0499992 0.00103951 + vertex -0.012845 0.0499992 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00379944 0.0499992 0 + vertex -0.01369 0.0499992 0.00103951 + vertex -0.00423145 0.0499992 0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00379944 0.0499992 0 + vertex -0.01369 0.0499992 -0.00103951 + vertex -0.01369 0.0499992 0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.00423145 0.0499992 -0.00203323 + vertex -0.01369 0.0499992 -0.00103951 + vertex -0.00379944 0.0499992 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 0.0499992 -0.00203323 + vertex -0.012845 0.0499992 -0.00293827 + vertex -0.01369 0.0499992 -0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.00545406 0.0499992 -0.00371552 + vertex -0.012845 0.0499992 -0.00293827 + vertex -0.00423145 0.0499992 -0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 0.0499992 -0.00371552 + vertex -0.0112991 0.0499992 -0.00432968 + vertex -0.012845 0.0499992 -0.00293827 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.0072546 0.0499992 -0.00475502 + vertex -0.0112991 0.0499992 -0.00432968 + vertex -0.00545406 0.0499992 -0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0112991 0.0499992 -0.00432968 + vertex -0.0072546 0.0499992 -0.00475502 + vertex -0.00932217 0.0499992 -0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 0.0299997 0.00432968 + vertex -0.0072546 0.0299997 0.00475502 + vertex -0.00932217 0.0299997 0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 0.0299997 0.00432968 + vertex -0.00545406 0.0299997 0.00371552 + vertex -0.0072546 0.0299997 0.00475502 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 0.0299997 0.00293827 + vertex -0.00545406 0.0299997 0.00371552 + vertex -0.0112991 0.0299997 0.00432968 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 0.0299997 0.00293827 + vertex -0.00423145 0.0299997 0.00203323 + vertex -0.00545406 0.0299997 0.00371552 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 0.0299997 0.00103951 + vertex -0.00423145 0.0299997 0.00203323 + vertex -0.012845 0.0299997 0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 0.0299997 0.00103951 + vertex -0.00379944 0.0299997 0 + vertex -0.00423145 0.0299997 0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 0.0299997 -0.00103951 + vertex -0.00379944 0.0299997 0 + vertex -0.01369 0.0299997 0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 0.0299997 -0.00103951 + vertex -0.00423145 0.0299997 -0.00203323 + vertex -0.00379944 0.0299997 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 0.0299997 -0.00293827 + vertex -0.00423145 0.0299997 -0.00203323 + vertex -0.01369 0.0299997 -0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 0.0299997 -0.00293827 + vertex -0.00545406 0.0299997 -0.00371552 + vertex -0.00423145 0.0299997 -0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 0.0299997 -0.00432968 + vertex -0.00545406 0.0299997 -0.00371552 + vertex -0.012845 0.0299997 -0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 0.0299997 -0.00432968 + vertex -0.0072546 0.0299997 -0.00475502 + vertex -0.00545406 0.0299997 -0.00371552 + endloop + endfacet + facet normal -0 -1 0 + outer loop + vertex -0.0072546 0.0299997 -0.00475502 + vertex -0.0112991 0.0299997 -0.00432968 + vertex -0.00932217 0.0299997 -0.00497246 + endloop + endfacet + facet normal -0.309207 0 0.950995 + outer loop + vertex -0.0112991 0.0499992 0.00432968 + vertex -0.00932217 0.0299997 0.00497246 + vertex -0.00932217 0.0499992 0.00497246 + endloop + endfacet + facet normal -0.309207 0 0.950995 + outer loop + vertex -0.00932217 0.0299997 0.00497246 + vertex -0.0112991 0.0499992 0.00432968 + vertex -0.0112991 0.0299997 0.00432968 + endloop + endfacet + facet normal 0.499985 0 0.866034 + outer loop + vertex -0.0072546 0.0499992 0.00475502 + vertex -0.00545406 0.0299997 0.00371552 + vertex -0.00545406 0.0499992 0.00371552 + endloop + endfacet + facet normal 0.499985 0 0.866034 + outer loop + vertex -0.00545406 0.0299997 0.00371552 + vertex -0.0072546 0.0499992 0.00475502 + vertex -0.0072546 0.0299997 0.00475502 + endloop + endfacet + facet normal -0.309207 0 -0.950995 + outer loop + vertex -0.0112991 0.0299997 -0.00432968 + vertex -0.00932217 0.0499992 -0.00497246 + vertex -0.00932217 0.0299997 -0.00497246 + endloop + endfacet + facet normal -0.309207 0 -0.950995 + outer loop + vertex -0.00932217 0.0499992 -0.00497246 + vertex -0.0112991 0.0299997 -0.00432968 + vertex -0.0112991 0.0499992 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex -0.012845 0.0299997 -0.00293827 + vertex -0.0112991 0.0499992 -0.00432968 + vertex -0.0112991 0.0299997 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex -0.0112991 0.0499992 -0.00432968 + vertex -0.012845 0.0299997 -0.00293827 + vertex -0.012845 0.0499992 -0.00293827 + endloop + endfacet + facet normal 0.978164 0 -0.207835 + outer loop + vertex -0.00379944 0.0299997 0 + vertex -0.00423145 0.0499992 -0.00203323 + vertex -0.00379944 0.0499992 0 + endloop + endfacet + facet normal 0.978164 0 -0.207835 + outer loop + vertex -0.00423145 0.0499992 -0.00203323 + vertex -0.00379944 0.0299997 0 + vertex -0.00423145 0.0299997 -0.00203323 + endloop + endfacet + facet normal 0.808936 0 -0.587897 + outer loop + vertex -0.00423145 0.0299997 -0.00203323 + vertex -0.00545406 0.0499992 -0.00371552 + vertex -0.00423145 0.0499992 -0.00203323 + endloop + endfacet + facet normal 0.808936 0 -0.587897 + outer loop + vertex -0.00545406 0.0499992 -0.00371552 + vertex -0.00423145 0.0299997 -0.00203323 + vertex -0.00545406 0.0299997 -0.00371552 + endloop + endfacet + facet normal 0.10459 0 -0.994515 + outer loop + vertex -0.00932217 0.0299997 -0.00497246 + vertex -0.0072546 0.0499992 -0.00475502 + vertex -0.0072546 0.0299997 -0.00475502 + endloop + endfacet + facet normal 0.10459 0 -0.994515 + outer loop + vertex -0.0072546 0.0499992 -0.00475502 + vertex -0.00932217 0.0299997 -0.00497246 + vertex -0.00932217 0.0499992 -0.00497246 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex -0.012845 0.0499992 0.00293827 + vertex -0.0112991 0.0299997 0.00432968 + vertex -0.0112991 0.0499992 0.00432968 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex -0.0112991 0.0299997 0.00432968 + vertex -0.012845 0.0499992 0.00293827 + vertex -0.012845 0.0299997 0.00293827 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -0.01369 0.0299997 -0.00103951 + vertex -0.01369 0.0499992 0.00103951 + vertex -0.01369 0.0499992 -0.00103951 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex -0.01369 0.0499992 0.00103951 + vertex -0.01369 0.0299997 -0.00103951 + vertex -0.01369 0.0299997 0.00103951 + endloop + endfacet + facet normal 0.10459 0 0.994515 + outer loop + vertex -0.00932217 0.0499992 0.00497246 + vertex -0.0072546 0.0299997 0.00475502 + vertex -0.0072546 0.0499992 0.00475502 + endloop + endfacet + facet normal 0.10459 0 0.994515 + outer loop + vertex -0.0072546 0.0299997 0.00475502 + vertex -0.00932217 0.0499992 0.00497246 + vertex -0.00932217 0.0299997 0.00497246 + endloop + endfacet + facet normal -0.913621 0 -0.406567 + outer loop + vertex 0.00475407 -0.0499992 -0.00293827 + vertex 0.00390911 -0.0299997 -0.00103951 + vertex 0.00475407 -0.0299997 -0.00293827 + endloop + endfacet + facet normal -0.913621 -0 -0.406567 + outer loop + vertex 0.00390911 -0.0299997 -0.00103951 + vertex 0.00475407 -0.0499992 -0.00293827 + vertex 0.00390911 -0.0499992 -0.00103951 + endloop + endfacet + facet normal 0.808915 -0 0.587925 + outer loop + vertex 0.012145 -0.0499992 0.00371552 + vertex 0.0133677 -0.0299997 0.00203323 + vertex 0.012145 -0.0299997 0.00371552 + endloop + endfacet + facet normal 0.808915 0 0.587925 + outer loop + vertex 0.0133677 -0.0299997 0.00203323 + vertex 0.012145 -0.0499992 0.00371552 + vertex 0.0133677 -0.0499992 0.00203323 + endloop + endfacet + facet normal 0.978165 -0 0.207831 + outer loop + vertex 0.0133677 -0.0499992 0.00203323 + vertex 0.0137997 -0.0299997 0 + vertex 0.0133677 -0.0299997 0.00203323 + endloop + endfacet + facet normal 0.978165 0 0.207831 + outer loop + vertex 0.0137997 -0.0299997 0 + vertex 0.0133677 -0.0499992 0.00203323 + vertex 0.0137997 -0.0499992 0 + endloop + endfacet + facet normal 0.499993 0 -0.866029 + outer loop + vertex 0.0103445 -0.0499992 -0.00475502 + vertex 0.012145 -0.0299997 -0.00371552 + vertex 0.012145 -0.0499992 -0.00371552 + endloop + endfacet + facet normal 0.499993 0 -0.866029 + outer loop + vertex 0.012145 -0.0299997 -0.00371552 + vertex 0.0103445 -0.0499992 -0.00475502 + vertex 0.0103445 -0.0299997 -0.00475502 + endloop + endfacet + facet normal -0.913621 0 0.406567 + outer loop + vertex 0.00390911 -0.0499992 0.00103951 + vertex 0.00475407 -0.0299997 0.00293827 + vertex 0.00390911 -0.0299997 0.00103951 + endloop + endfacet + facet normal -0.913621 0 0.406567 + outer loop + vertex 0.00475407 -0.0299997 0.00293827 + vertex 0.00390911 -0.0499992 0.00103951 + vertex 0.00475407 -0.0499992 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0103445 -0.0299997 0.00475502 + vertex 0.00629997 -0.0299997 0.00432968 + vertex 0.00827694 -0.0299997 0.00497246 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 -0.0299997 0.00371552 + vertex 0.00629997 -0.0299997 0.00432968 + vertex 0.0103445 -0.0299997 0.00475502 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 -0.0299997 0.00371552 + vertex 0.00475407 -0.0299997 0.00293827 + vertex 0.00629997 -0.0299997 0.00432968 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 -0.0299997 0.00203323 + vertex 0.00475407 -0.0299997 0.00293827 + vertex 0.012145 -0.0299997 0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 -0.0299997 0.00203323 + vertex 0.00390911 -0.0299997 0.00103951 + vertex 0.00475407 -0.0299997 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0137997 -0.0299997 0 + vertex 0.00390911 -0.0299997 0.00103951 + vertex 0.0133677 -0.0299997 0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0137997 -0.0299997 0 + vertex 0.00390911 -0.0299997 -0.00103951 + vertex 0.00390911 -0.0299997 0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.0133677 -0.0299997 -0.00203323 + vertex 0.00390911 -0.0299997 -0.00103951 + vertex 0.0137997 -0.0299997 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.0133677 -0.0299997 -0.00203323 + vertex 0.00475407 -0.0299997 -0.00293827 + vertex 0.00390911 -0.0299997 -0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.012145 -0.0299997 -0.00371552 + vertex 0.00475407 -0.0299997 -0.00293827 + vertex 0.0133677 -0.0299997 -0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.012145 -0.0299997 -0.00371552 + vertex 0.00629997 -0.0299997 -0.00432968 + vertex 0.00475407 -0.0299997 -0.00293827 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 0.0103445 -0.0299997 -0.00475502 + vertex 0.00629997 -0.0299997 -0.00432968 + vertex 0.012145 -0.0299997 -0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0.00629997 -0.0299997 -0.00432968 + vertex 0.0103445 -0.0299997 -0.00475502 + vertex 0.00827694 -0.0299997 -0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0499992 0.00432968 + vertex 0.0103445 -0.0499992 0.00475502 + vertex 0.00827694 -0.0499992 0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0499992 0.00432968 + vertex 0.012145 -0.0499992 0.00371552 + vertex 0.0103445 -0.0499992 0.00475502 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0499992 0.00293827 + vertex 0.012145 -0.0499992 0.00371552 + vertex 0.00629997 -0.0499992 0.00432968 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0499992 0.00293827 + vertex 0.0133677 -0.0499992 0.00203323 + vertex 0.012145 -0.0499992 0.00371552 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0499992 0.00103951 + vertex 0.0133677 -0.0499992 0.00203323 + vertex 0.00475407 -0.0499992 0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0499992 0.00103951 + vertex 0.0137997 -0.0499992 0 + vertex 0.0133677 -0.0499992 0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0499992 -0.00103951 + vertex 0.0137997 -0.0499992 0 + vertex 0.00390911 -0.0499992 0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00390911 -0.0499992 -0.00103951 + vertex 0.0133677 -0.0499992 -0.00203323 + vertex 0.0137997 -0.0499992 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0499992 -0.00293827 + vertex 0.0133677 -0.0499992 -0.00203323 + vertex 0.00390911 -0.0499992 -0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00475407 -0.0499992 -0.00293827 + vertex 0.012145 -0.0499992 -0.00371552 + vertex 0.0133677 -0.0499992 -0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0499992 -0.00432968 + vertex 0.012145 -0.0499992 -0.00371552 + vertex 0.00475407 -0.0499992 -0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0.00629997 -0.0499992 -0.00432968 + vertex 0.0103445 -0.0499992 -0.00475502 + vertex 0.012145 -0.0499992 -0.00371552 + endloop + endfacet + facet normal -0 -1 0 + outer loop + vertex 0.0103445 -0.0499992 -0.00475502 + vertex 0.00629997 -0.0499992 -0.00432968 + vertex 0.00827694 -0.0499992 -0.00497246 + endloop + endfacet + facet normal -0.309201 0 0.950997 + outer loop + vertex 0.00629997 -0.0299997 0.00432968 + vertex 0.00827694 -0.0499992 0.00497246 + vertex 0.00827694 -0.0299997 0.00497246 + endloop + endfacet + facet normal -0.309201 0 0.950997 + outer loop + vertex 0.00827694 -0.0499992 0.00497246 + vertex 0.00629997 -0.0299997 0.00432968 + vertex 0.00629997 -0.0499992 0.00432968 + endloop + endfacet + facet normal 0.499993 0 0.866029 + outer loop + vertex 0.0103445 -0.0299997 0.00475502 + vertex 0.012145 -0.0499992 0.00371552 + vertex 0.012145 -0.0299997 0.00371552 + endloop + endfacet + facet normal 0.499993 0 0.866029 + outer loop + vertex 0.012145 -0.0499992 0.00371552 + vertex 0.0103445 -0.0299997 0.00475502 + vertex 0.0103445 -0.0499992 0.00475502 + endloop + endfacet + facet normal -0.309201 0 -0.950997 + outer loop + vertex 0.00629997 -0.0499992 -0.00432968 + vertex 0.00827694 -0.0299997 -0.00497246 + vertex 0.00827694 -0.0499992 -0.00497246 + endloop + endfacet + facet normal -0.309201 0 -0.950997 + outer loop + vertex 0.00827694 -0.0299997 -0.00497246 + vertex 0.00629997 -0.0499992 -0.00432968 + vertex 0.00629997 -0.0299997 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex 0.00475407 -0.0499992 -0.00293827 + vertex 0.00629997 -0.0299997 -0.00432968 + vertex 0.00629997 -0.0499992 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex 0.00629997 -0.0299997 -0.00432968 + vertex 0.00475407 -0.0499992 -0.00293827 + vertex 0.00475407 -0.0299997 -0.00293827 + endloop + endfacet + facet normal 0.978165 0 -0.207831 + outer loop + vertex 0.0137997 -0.0499992 0 + vertex 0.0133677 -0.0299997 -0.00203323 + vertex 0.0137997 -0.0299997 0 + endloop + endfacet + facet normal 0.978165 0 -0.207831 + outer loop + vertex 0.0133677 -0.0299997 -0.00203323 + vertex 0.0137997 -0.0499992 0 + vertex 0.0133677 -0.0499992 -0.00203323 + endloop + endfacet + facet normal 0.808915 0 -0.587925 + outer loop + vertex 0.0133677 -0.0499992 -0.00203323 + vertex 0.012145 -0.0299997 -0.00371552 + vertex 0.0133677 -0.0299997 -0.00203323 + endloop + endfacet + facet normal 0.808915 0 -0.587925 + outer loop + vertex 0.012145 -0.0299997 -0.00371552 + vertex 0.0133677 -0.0499992 -0.00203323 + vertex 0.012145 -0.0499992 -0.00371552 + endloop + endfacet + facet normal 0.104591 0 -0.994515 + outer loop + vertex 0.00827694 -0.0499992 -0.00497246 + vertex 0.0103445 -0.0299997 -0.00475502 + vertex 0.0103445 -0.0499992 -0.00475502 + endloop + endfacet + facet normal 0.104591 0 -0.994515 + outer loop + vertex 0.0103445 -0.0299997 -0.00475502 + vertex 0.00827694 -0.0499992 -0.00497246 + vertex 0.00827694 -0.0299997 -0.00497246 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex 0.00475407 -0.0299997 0.00293827 + vertex 0.00629997 -0.0499992 0.00432968 + vertex 0.00629997 -0.0299997 0.00432968 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex 0.00629997 -0.0499992 0.00432968 + vertex 0.00475407 -0.0299997 0.00293827 + vertex 0.00475407 -0.0499992 0.00293827 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex 0.00390911 -0.0499992 -0.00103951 + vertex 0.00390911 -0.0299997 0.00103951 + vertex 0.00390911 -0.0299997 -0.00103951 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0.00390911 -0.0299997 0.00103951 + vertex 0.00390911 -0.0499992 -0.00103951 + vertex 0.00390911 -0.0499992 0.00103951 + endloop + endfacet + facet normal 0.104591 0 0.994515 + outer loop + vertex 0.00827694 -0.0299997 0.00497246 + vertex 0.0103445 -0.0499992 0.00475502 + vertex 0.0103445 -0.0299997 0.00475502 + endloop + endfacet + facet normal 0.104591 0 0.994515 + outer loop + vertex 0.0103445 -0.0499992 0.00475502 + vertex 0.00827694 -0.0299997 0.00497246 + vertex 0.00827694 -0.0499992 0.00497246 + endloop + endfacet + facet normal -0.913614 0 -0.406583 + outer loop + vertex -0.012845 -0.0499992 -0.00293827 + vertex -0.01369 -0.0299997 -0.00103951 + vertex -0.012845 -0.0299997 -0.00293827 + endloop + endfacet + facet normal -0.913614 -0 -0.406583 + outer loop + vertex -0.01369 -0.0299997 -0.00103951 + vertex -0.012845 -0.0499992 -0.00293827 + vertex -0.01369 -0.0499992 -0.00103951 + endloop + endfacet + facet normal 0.808936 -0 0.587897 + outer loop + vertex -0.00545406 -0.0499992 0.00371552 + vertex -0.00423145 -0.0299997 0.00203323 + vertex -0.00545406 -0.0299997 0.00371552 + endloop + endfacet + facet normal 0.808936 0 0.587897 + outer loop + vertex -0.00423145 -0.0299997 0.00203323 + vertex -0.00545406 -0.0499992 0.00371552 + vertex -0.00423145 -0.0499992 0.00203323 + endloop + endfacet + facet normal 0.978164 -0 0.207835 + outer loop + vertex -0.00423145 -0.0499992 0.00203323 + vertex -0.00379944 -0.0299997 0 + vertex -0.00423145 -0.0299997 0.00203323 + endloop + endfacet + facet normal 0.978164 0 0.207835 + outer loop + vertex -0.00379944 -0.0299997 0 + vertex -0.00423145 -0.0499992 0.00203323 + vertex -0.00379944 -0.0499992 0 + endloop + endfacet + facet normal 0.499985 0 -0.866034 + outer loop + vertex -0.0072546 -0.0499992 -0.00475502 + vertex -0.00545406 -0.0299997 -0.00371552 + vertex -0.00545406 -0.0499992 -0.00371552 + endloop + endfacet + facet normal 0.499985 0 -0.866034 + outer loop + vertex -0.00545406 -0.0299997 -0.00371552 + vertex -0.0072546 -0.0499992 -0.00475502 + vertex -0.0072546 -0.0299997 -0.00475502 + endloop + endfacet + facet normal -0.913614 0 0.406583 + outer loop + vertex -0.01369 -0.0499992 0.00103951 + vertex -0.012845 -0.0299997 0.00293827 + vertex -0.01369 -0.0299997 0.00103951 + endloop + endfacet + facet normal -0.913614 0 0.406583 + outer loop + vertex -0.012845 -0.0299997 0.00293827 + vertex -0.01369 -0.0499992 0.00103951 + vertex -0.012845 -0.0499992 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0072546 -0.0299997 0.00475502 + vertex -0.0112991 -0.0299997 0.00432968 + vertex -0.00932217 -0.0299997 0.00497246 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 -0.0299997 0.00371552 + vertex -0.0112991 -0.0299997 0.00432968 + vertex -0.0072546 -0.0299997 0.00475502 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 -0.0299997 0.00371552 + vertex -0.012845 -0.0299997 0.00293827 + vertex -0.0112991 -0.0299997 0.00432968 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 -0.0299997 0.00203323 + vertex -0.012845 -0.0299997 0.00293827 + vertex -0.00545406 -0.0299997 0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 -0.0299997 0.00203323 + vertex -0.01369 -0.0299997 0.00103951 + vertex -0.012845 -0.0299997 0.00293827 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00379944 -0.0299997 0 + vertex -0.01369 -0.0299997 0.00103951 + vertex -0.00423145 -0.0299997 0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00379944 -0.0299997 0 + vertex -0.01369 -0.0299997 -0.00103951 + vertex -0.01369 -0.0299997 0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.00423145 -0.0299997 -0.00203323 + vertex -0.01369 -0.0299997 -0.00103951 + vertex -0.00379944 -0.0299997 0 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00423145 -0.0299997 -0.00203323 + vertex -0.012845 -0.0299997 -0.00293827 + vertex -0.01369 -0.0299997 -0.00103951 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.00545406 -0.0299997 -0.00371552 + vertex -0.012845 -0.0299997 -0.00293827 + vertex -0.00423145 -0.0299997 -0.00203323 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.00545406 -0.0299997 -0.00371552 + vertex -0.0112991 -0.0299997 -0.00432968 + vertex -0.012845 -0.0299997 -0.00293827 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.0072546 -0.0299997 -0.00475502 + vertex -0.0112991 -0.0299997 -0.00432968 + vertex -0.00545406 -0.0299997 -0.00371552 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0112991 -0.0299997 -0.00432968 + vertex -0.0072546 -0.0299997 -0.00475502 + vertex -0.00932217 -0.0299997 -0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0499992 0.00432968 + vertex -0.0072546 -0.0499992 0.00475502 + vertex -0.00932217 -0.0499992 0.00497246 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0499992 0.00432968 + vertex -0.00545406 -0.0499992 0.00371552 + vertex -0.0072546 -0.0499992 0.00475502 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0499992 0.00293827 + vertex -0.00545406 -0.0499992 0.00371552 + vertex -0.0112991 -0.0499992 0.00432968 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0499992 0.00293827 + vertex -0.00423145 -0.0499992 0.00203323 + vertex -0.00545406 -0.0499992 0.00371552 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0499992 0.00103951 + vertex -0.00423145 -0.0499992 0.00203323 + vertex -0.012845 -0.0499992 0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0499992 0.00103951 + vertex -0.00379944 -0.0499992 0 + vertex -0.00423145 -0.0499992 0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0499992 -0.00103951 + vertex -0.00379944 -0.0499992 0 + vertex -0.01369 -0.0499992 0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.01369 -0.0499992 -0.00103951 + vertex -0.00423145 -0.0499992 -0.00203323 + vertex -0.00379944 -0.0499992 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0499992 -0.00293827 + vertex -0.00423145 -0.0499992 -0.00203323 + vertex -0.01369 -0.0499992 -0.00103951 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.012845 -0.0499992 -0.00293827 + vertex -0.00545406 -0.0499992 -0.00371552 + vertex -0.00423145 -0.0499992 -0.00203323 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0499992 -0.00432968 + vertex -0.00545406 -0.0499992 -0.00371552 + vertex -0.012845 -0.0499992 -0.00293827 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0112991 -0.0499992 -0.00432968 + vertex -0.0072546 -0.0499992 -0.00475502 + vertex -0.00545406 -0.0499992 -0.00371552 + endloop + endfacet + facet normal -0 -1 0 + outer loop + vertex -0.0072546 -0.0499992 -0.00475502 + vertex -0.0112991 -0.0499992 -0.00432968 + vertex -0.00932217 -0.0499992 -0.00497246 + endloop + endfacet + facet normal -0.309207 0 0.950995 + outer loop + vertex -0.0112991 -0.0299997 0.00432968 + vertex -0.00932217 -0.0499992 0.00497246 + vertex -0.00932217 -0.0299997 0.00497246 + endloop + endfacet + facet normal -0.309207 0 0.950995 + outer loop + vertex -0.00932217 -0.0499992 0.00497246 + vertex -0.0112991 -0.0299997 0.00432968 + vertex -0.0112991 -0.0499992 0.00432968 + endloop + endfacet + facet normal 0.499985 0 0.866034 + outer loop + vertex -0.0072546 -0.0299997 0.00475502 + vertex -0.00545406 -0.0499992 0.00371552 + vertex -0.00545406 -0.0299997 0.00371552 + endloop + endfacet + facet normal 0.499985 0 0.866034 + outer loop + vertex -0.00545406 -0.0499992 0.00371552 + vertex -0.0072546 -0.0299997 0.00475502 + vertex -0.0072546 -0.0499992 0.00475502 + endloop + endfacet + facet normal -0.309207 0 -0.950995 + outer loop + vertex -0.0112991 -0.0499992 -0.00432968 + vertex -0.00932217 -0.0299997 -0.00497246 + vertex -0.00932217 -0.0499992 -0.00497246 + endloop + endfacet + facet normal -0.309207 0 -0.950995 + outer loop + vertex -0.00932217 -0.0299997 -0.00497246 + vertex -0.0112991 -0.0499992 -0.00432968 + vertex -0.0112991 -0.0299997 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex -0.012845 -0.0499992 -0.00293827 + vertex -0.0112991 -0.0299997 -0.00432968 + vertex -0.0112991 -0.0499992 -0.00432968 + endloop + endfacet + facet normal -0.668991 0 -0.74327 + outer loop + vertex -0.0112991 -0.0299997 -0.00432968 + vertex -0.012845 -0.0499992 -0.00293827 + vertex -0.012845 -0.0299997 -0.00293827 + endloop + endfacet + facet normal 0.808936 0 -0.587897 + outer loop + vertex -0.00423145 -0.0499992 -0.00203323 + vertex -0.00545406 -0.0299997 -0.00371552 + vertex -0.00423145 -0.0299997 -0.00203323 + endloop + endfacet + facet normal 0.808936 0 -0.587897 + outer loop + vertex -0.00545406 -0.0299997 -0.00371552 + vertex -0.00423145 -0.0499992 -0.00203323 + vertex -0.00545406 -0.0499992 -0.00371552 + endloop + endfacet + facet normal 0.10459 0 -0.994515 + outer loop + vertex -0.00932217 -0.0499992 -0.00497246 + vertex -0.0072546 -0.0299997 -0.00475502 + vertex -0.0072546 -0.0499992 -0.00475502 + endloop + endfacet + facet normal 0.10459 0 -0.994515 + outer loop + vertex -0.0072546 -0.0299997 -0.00475502 + vertex -0.00932217 -0.0499992 -0.00497246 + vertex -0.00932217 -0.0299997 -0.00497246 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex -0.012845 -0.0299997 0.00293827 + vertex -0.0112991 -0.0499992 0.00432968 + vertex -0.0112991 -0.0299997 0.00432968 + endloop + endfacet + facet normal -0.668991 0 0.74327 + outer loop + vertex -0.0112991 -0.0499992 0.00432968 + vertex -0.012845 -0.0299997 0.00293827 + vertex -0.012845 -0.0499992 0.00293827 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -0.01369 -0.0499992 -0.00103951 + vertex -0.01369 -0.0299997 0.00103951 + vertex -0.01369 -0.0299997 -0.00103951 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex -0.01369 -0.0299997 0.00103951 + vertex -0.01369 -0.0499992 -0.00103951 + vertex -0.01369 -0.0499992 0.00103951 + endloop + endfacet + facet normal 0.10459 0 0.994515 + outer loop + vertex -0.00932217 -0.0299997 0.00497246 + vertex -0.0072546 -0.0499992 0.00475502 + vertex -0.0072546 -0.0299997 0.00475502 + endloop + endfacet + facet normal 0.10459 0 0.994515 + outer loop + vertex -0.0072546 -0.0499992 0.00475502 + vertex -0.00932217 -0.0299997 0.00497246 + vertex -0.00932217 -0.0499992 0.00497246 + endloop + endfacet + facet normal 0.978164 0 -0.207835 + outer loop + vertex -0.00379944 -0.0499992 0 + vertex -0.00423145 -0.0299997 -0.00203323 + vertex -0.00379944 -0.0299997 0 + endloop + endfacet + facet normal 0.978164 0 -0.207835 + outer loop + vertex -0.00423145 -0.0299997 -0.00203323 + vertex -0.00379944 -0.0499992 0 + vertex -0.00423145 -0.0499992 -0.00203323 + endloop + endfacet + facet normal 0.809168 -0 0.587577 + outer loop + vertex -0.0142536 -0.0199995 0.0160351 + vertex -0.013032 0.0199995 0.0143528 + vertex -0.0142536 0.0199995 0.0160351 + endloop + endfacet + facet normal 0.809168 0 0.587577 + outer loop + vertex -0.013032 0.0199995 0.0143528 + vertex -0.0142536 -0.0199995 0.0160351 + vertex -0.013032 -0.0199995 0.0143528 + endloop + endfacet + facet normal 0.978154 -0 0.207879 + outer loop + vertex -0.013032 -0.0199995 0.0143528 + vertex -0.0125999 0.0199995 0.0123196 + vertex -0.013032 0.0199995 0.0143528 + endloop + endfacet + facet normal 0.978154 0 0.207879 + outer loop + vertex -0.0125999 0.0199995 0.0123196 + vertex -0.013032 -0.0199995 0.0143528 + vertex -0.0125999 -0.0199995 0.0123196 + endloop + endfacet + facet normal -0.668938 0 0.743318 + outer loop + vertex -0.0216446 0.0199995 0.0152588 + vertex -0.0200996 -0.0199995 0.0166492 + vertex -0.0200996 0.0199995 0.0166492 + endloop + endfacet + facet normal -0.668938 0 0.743318 + outer loop + vertex -0.0200996 -0.0199995 0.0166492 + vertex -0.0216446 0.0199995 0.0152588 + vertex -0.0216446 -0.0199995 0.0152588 + endloop + endfacet + facet normal 0.499976 0 -0.866039 + outer loop + vertex -0.0160542 -0.0199995 0.00756454 + vertex -0.0142536 0.0199995 0.00860405 + vertex -0.0142536 -0.0199995 0.00860405 + endloop + endfacet + facet normal 0.499976 0 -0.866039 + outer loop + vertex -0.0142536 0.0199995 0.00860405 + vertex -0.0160542 -0.0199995 0.00756454 + vertex -0.0160542 0.0199995 0.00756454 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0200996 -0.0199995 0.0166492 + vertex -0.0160542 -0.0199995 0.0170746 + vertex -0.0181217 -0.0199995 0.017292 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0200996 -0.0199995 0.0166492 + vertex -0.0142536 -0.0199995 0.0160351 + vertex -0.0160542 -0.0199995 0.0170746 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0216446 -0.0199995 0.0152588 + vertex -0.0142536 -0.0199995 0.0160351 + vertex -0.0200996 -0.0199995 0.0166492 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0216446 -0.0199995 0.0152588 + vertex -0.013032 -0.0199995 0.0143528 + vertex -0.0142536 -0.0199995 0.0160351 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0224905 -0.0199995 0.0133591 + vertex -0.013032 -0.0199995 0.0143528 + vertex -0.0216446 -0.0199995 0.0152588 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0224905 -0.0199995 0.0133591 + vertex -0.0125999 -0.0199995 0.0123196 + vertex -0.013032 -0.0199995 0.0143528 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0224905 -0.0199995 0.0112801 + vertex -0.0125999 -0.0199995 0.0123196 + vertex -0.0224905 -0.0199995 0.0133591 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0224905 -0.0199995 0.0112801 + vertex -0.013032 -0.0199995 0.0102854 + vertex -0.0125999 -0.0199995 0.0123196 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0216446 -0.0199995 0.00938034 + vertex -0.013032 -0.0199995 0.0102854 + vertex -0.0224905 -0.0199995 0.0112801 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0216446 -0.0199995 0.00938034 + vertex -0.0142536 -0.0199995 0.00860405 + vertex -0.013032 -0.0199995 0.0102854 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0200996 -0.0199995 0.00798893 + vertex -0.0142536 -0.0199995 0.00860405 + vertex -0.0216446 -0.0199995 0.00938034 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex -0.0200996 -0.0199995 0.00798893 + vertex -0.0160542 -0.0199995 0.00756454 + vertex -0.0142536 -0.0199995 0.00860405 + endloop + endfacet + facet normal -0 -1 0 + outer loop + vertex -0.0160542 -0.0199995 0.00756454 + vertex -0.0200996 -0.0199995 0.00798893 + vertex -0.0181217 -0.0199995 0.00734711 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex -0.0224905 -0.0199995 0.0112801 + vertex -0.0224905 0.0199995 0.0133591 + vertex -0.0224905 0.0199995 0.0112801 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex -0.0224905 0.0199995 0.0133591 + vertex -0.0224905 -0.0199995 0.0112801 + vertex -0.0224905 -0.0199995 0.0133591 + endloop + endfacet + facet normal 0.104589 0 -0.994516 + outer loop + vertex -0.0181217 -0.0199995 0.00734711 + vertex -0.0160542 0.0199995 0.00756454 + vertex -0.0160542 -0.0199995 0.00756454 + endloop + endfacet + facet normal 0.104589 0 -0.994516 + outer loop + vertex -0.0160542 0.0199995 0.00756454 + vertex -0.0181217 -0.0199995 0.00734711 + vertex -0.0181217 0.0199995 0.00734711 + endloop + endfacet + facet normal 0.809011 0 -0.587794 + outer loop + vertex -0.013032 -0.0199995 0.0102854 + vertex -0.0142536 0.0199995 0.00860405 + vertex -0.013032 0.0199995 0.0102854 + endloop + endfacet + facet normal 0.809011 0 -0.587794 + outer loop + vertex -0.0142536 0.0199995 0.00860405 + vertex -0.013032 -0.0199995 0.0102854 + vertex -0.0142536 -0.0199995 0.00860405 + endloop + endfacet + facet normal 0.104575 0 0.994517 + outer loop + vertex -0.0181217 0.0199995 0.017292 + vertex -0.0160542 -0.0199995 0.0170746 + vertex -0.0160542 0.0199995 0.0170746 + endloop + endfacet + facet normal 0.104575 0 0.994517 + outer loop + vertex -0.0160542 -0.0199995 0.0170746 + vertex -0.0181217 0.0199995 0.017292 + vertex -0.0181217 -0.0199995 0.017292 + endloop + endfacet + facet normal -0.309078 0 0.951037 + outer loop + vertex -0.0200996 0.0199995 0.0166492 + vertex -0.0181217 -0.0199995 0.017292 + vertex -0.0181217 0.0199995 0.017292 + endloop + endfacet + facet normal -0.309078 0 0.951037 + outer loop + vertex -0.0181217 -0.0199995 0.017292 + vertex -0.0200996 0.0199995 0.0166492 + vertex -0.0200996 -0.0199995 0.0166492 + endloop + endfacet + facet normal -0.913528 0 0.406776 + outer loop + vertex -0.0224905 -0.0199995 0.0133591 + vertex -0.0216446 0.0199995 0.0152588 + vertex -0.0224905 0.0199995 0.0133591 + endloop + endfacet + facet normal -0.913528 0 0.406776 + outer loop + vertex -0.0216446 0.0199995 0.0152588 + vertex -0.0224905 -0.0199995 0.0133591 + vertex -0.0216446 -0.0199995 0.0152588 + endloop + endfacet + facet normal 0.499972 0 0.866041 + outer loop + vertex -0.0160542 0.0199995 0.0170746 + vertex -0.0142536 -0.0199995 0.0160351 + vertex -0.0142536 0.0199995 0.0160351 + endloop + endfacet + facet normal 0.499972 0 0.866041 + outer loop + vertex -0.0142536 -0.0199995 0.0160351 + vertex -0.0160542 0.0199995 0.0170746 + vertex -0.0160542 -0.0199995 0.0170746 + endloop + endfacet + facet normal 0.978175 0 -0.207782 + outer loop + vertex -0.0125999 -0.0199995 0.0123196 + vertex -0.013032 0.0199995 0.0102854 + vertex -0.0125999 0.0199995 0.0123196 + endloop + endfacet + facet normal 0.978175 0 -0.207782 + outer loop + vertex -0.013032 0.0199995 0.0102854 + vertex -0.0125999 -0.0199995 0.0123196 + vertex -0.013032 -0.0199995 0.0102854 + endloop + endfacet + facet normal -0.308652 0 -0.951175 + outer loop + vertex -0.0200996 -0.0199995 0.00798893 + vertex -0.0181217 0.0199995 0.00734711 + vertex -0.0181217 -0.0199995 0.00734711 + endloop + endfacet + facet normal -0.308652 0 -0.951175 + outer loop + vertex -0.0181217 0.0199995 0.00734711 + vertex -0.0200996 -0.0199995 0.00798893 + vertex -0.0200996 0.0199995 0.00798893 + endloop + endfacet + facet normal -0.669207 0 -0.743076 + outer loop + vertex -0.0216446 -0.0199995 0.00938034 + vertex -0.0200996 0.0199995 0.00798893 + vertex -0.0200996 -0.0199995 0.00798893 + endloop + endfacet + facet normal -0.669207 0 -0.743076 + outer loop + vertex -0.0200996 0.0199995 0.00798893 + vertex -0.0216446 -0.0199995 0.00938034 + vertex -0.0216446 0.0199995 0.00938034 + endloop + endfacet + facet normal -0.913533 0 -0.406766 + outer loop + vertex -0.0216446 -0.0199995 0.00938034 + vertex -0.0224905 0.0199995 0.0112801 + vertex -0.0216446 0.0199995 0.00938034 + endloop + endfacet + facet normal -0.913533 -0 -0.406766 + outer loop + vertex -0.0224905 0.0199995 0.0112801 + vertex -0.0216446 -0.0199995 0.00938034 + vertex -0.0224905 -0.0199995 0.0112801 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0160542 0.0199995 0.0170746 + vertex -0.0200996 0.0199995 0.0166492 + vertex -0.0181217 0.0199995 0.017292 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0142536 0.0199995 0.0160351 + vertex -0.0200996 0.0199995 0.0166492 + vertex -0.0160542 0.0199995 0.0170746 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0142536 0.0199995 0.0160351 + vertex -0.0216446 0.0199995 0.0152588 + vertex -0.0200996 0.0199995 0.0166492 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.013032 0.0199995 0.0143528 + vertex -0.0216446 0.0199995 0.0152588 + vertex -0.0142536 0.0199995 0.0160351 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.013032 0.0199995 0.0143528 + vertex -0.0224905 0.0199995 0.0133591 + vertex -0.0216446 0.0199995 0.0152588 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0125999 0.0199995 0.0123196 + vertex -0.0224905 0.0199995 0.0133591 + vertex -0.013032 0.0199995 0.0143528 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0125999 0.0199995 0.0123196 + vertex -0.0224905 0.0199995 0.0112801 + vertex -0.0224905 0.0199995 0.0133591 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.013032 0.0199995 0.0102854 + vertex -0.0224905 0.0199995 0.0112801 + vertex -0.0125999 0.0199995 0.0123196 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.013032 0.0199995 0.0102854 + vertex -0.0216446 0.0199995 0.00938034 + vertex -0.0224905 0.0199995 0.0112801 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.0142536 0.0199995 0.00860405 + vertex -0.0216446 0.0199995 0.00938034 + vertex -0.013032 0.0199995 0.0102854 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0142536 0.0199995 0.00860405 + vertex -0.0200996 0.0199995 0.00798893 + vertex -0.0216446 0.0199995 0.00938034 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex -0.0160542 0.0199995 0.00756454 + vertex -0.0200996 0.0199995 0.00798893 + vertex -0.0142536 0.0199995 0.00860405 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex -0.0200996 0.0199995 0.00798893 + vertex -0.0160542 0.0199995 0.00756454 + vertex -0.0181217 0.0199995 0.00734711 + endloop + endfacet +endsolid OpenSCAD_Model diff --git a/implementation/library/SCARA/inverse_kinematics_v1.emx b/implementation/library/SCARA/inverse_kinematics_v1.emx new file mode 100644 index 0000000..e2ab193 --- /dev/null +++ b/implementation/library/SCARA/inverse_kinematics_v1.emx @@ -0,0 +1,1628 @@ + + + + + + + 4.8 + SCARA\inverse_kinematics_v1.emx +1 + False + 2020-7-10 12:26:18 +False + +'; type 'Submodel-Equation' ports signal in input [2,1] {m} ; signal out angle1 {rad} ; signal out angle2 {rad} ; signal out a {rad} ; signal out b {rad} ; signal out c {rad} ; signal out phi {rad} ; end; implementation eq parameters real global A_length; // length of first arm real global B_length; // length of second arm real to_rad = 1 {rad}; variables real x {m}, y {m}; real C_length {m}; // length to x and y. real angle_sum {rad}; // test angle equations x = input[1]; y = input[2]; phi = atan2(y, x); C_length = sqrt(x^2 + y^2); a = arccos ((B_length^2 + C_length^2 - A_length^2) / (2 * B_length * C_length)); b = arccos ((A_length^2 + C_length^2 - B_length^2) / (2 * A_length * C_length)); c = arccos ((A_length^2 + B_length^2 - C_length^2) / (2 * A_length * B_length)); angle1 = b + phi; angle2 = angle1 - pi * to_rad + c; implementation_end; ]]> + + + + + + + Experiment 1 + + + + 4.8 + + + + + + A + 0.1 + + + A_length + + + 0 + + + B + 0.1 + + + B_length + + + 0 + + + + + + time + Submodel2\end_effector[2] + Submodel2\joint1[2] + Submodel2\end_effector[1] + Submodel2\joint1[1] + rectanglepath\output[1] + rectanglepath\output[2] + rectanglepath\test1 + rectanglepath\test2 + rectanglepath\test3 + Constant\output[1] + Constant\output[2] + + + + GraphPlot + + 1 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + -0.049999931062904804 + 0.12000000000000034 + true + 3 + + + + + + 0.019999999999999997 + 0.12 + true + 2 + + + + 0.0 + 5.0 + true + 2 + + + + 0.0 + 5.0 + true + 2 + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + Submodel2\end_effector[1] + + + true + Submodel2\end_effector[2] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + Submodel2\joint1[1] + + + true + Submodel2\joint1[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + Constant\output[1] + + + true + Constant\output[2] + + + + + true + 0 + 16777215 + + + + GraphPlot + + 2 + false + 16777215 + true + + + true + 15780518 + 12624260 + 0 + 10 + 10 + 10 + false + + 16777215 + true + 1 + model(1) + true + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 10 + 34 + 400 + 0 + 0 + 0 + 0 + + + Arial + 12 + 34 + 400 + 0 + 0 + 0 + 0 + + + true + true + false + + + 0.0 + 40.0 + true + 3 + + + + + + 0.03 + 0.13 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + -4.0 + 1.0 + true + 2 + + + + + + + 3355111 + 1 + 3355111 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\output[1] + + + + 6076255 + 1 + 6076255 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\output[2] + + + + 12553035 + 1 + 12553035 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test1 + + + + 15086320 + 1 + 15086320 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test2 + + + + 15790150 + 1 + 15790150 + 0 + true + 1 + 1 + 1 + true + + true + time + + + true + rectanglepath\test3 + + + + + true + 0 + 16777215 + + + + D3DPlot + + 3 + false + 16777215 + true + + 3D Animation + 137 + true + false + 4294967295 + Gradients\BlueWhite.png + true + 1.0 + 1.0 + + + + + 1 + + + 1 + + + 1 + + + true + Reference Frame + + + + Bryant + + false + false + false + false + false + false + + + + + 1 + + + 1 + + + 1 + + + false + Default Lights and Cameras + + + + Bryant + + false + false + false + false + false + false + + + false + Ambient + + + + + 1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + 0 + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.3 + + + 0.3 + + + 0.3 + + + + + + 1 + + + 1 + + + 1 + + + true + + true + false + false + + + false + Parallel + + + -3 + + + 5 + + + 3 + + + + + + 0.457495710997814 + + + -0.762492851663023 + + + -0.457495710997814 + + + + + 0.235379601434674 + + + -0.392299335724456 + + + 0.889211827642101 + + + Direct3D + + false + false + false + false + false + false + + 3 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.0 + + + 0.0 + + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 1 + + + -3 + + + -5 + + + 1 + + + + + + 0.50709255283711 + + + 0.845154254728517 + + + -0.169030850945703 + + + + + 0.0869656553478673 + + + 0.144942758913112 + + + 0.985610760609162 + + + Direct3D + + false + false + false + false + false + false + + 2 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.0471975511965976 + + + 1.0471975511965976 + + 0.0 + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Spot Light 2 + + + 2 + + + -3 + + + -1 + + + + + + -0.534522483824849 + + + 0.801783725737273 + + + 0.267261241912424 + + + + + 0.14824986333222 + + + -0.22237479499833 + + + 0.963624111659432 + + + Direct3D + + false + false + false + false + false + false + + 2 + + + + 1 + + + 1 + + + 1 + + + + + + 1 + + + 1 + + + 1 + + + true + + + + 1.0 + + + 0.05 + + + 0.05 + + + + 1.5707963267948966 + + + 1.5707963267948966 + + 0.0 + + + + 1 + + + 1 + + + 1 + + + + + + 1 + + + 1 + + + 1 + + + true + + + + + 0.5 + + + 0.5 + + + 0.5 + + + + + + 1 + + + 1 + + + 1 + + + true + + false + true + true + + + false + Camera Looking at Origin + + + 5.17039612254131 + + + -0.721279966459381 + + + 2.88738681298299 + + + + + + -0.866679128171114 + + + 0.120903365560907 + + + -0.483993455522493 + + + + + -0.479351652924763 + + + 0.0668704555607402 + + + 0.875071617075652 + + + Direct3D + + false + false + false + false + false + false + + 0.01 + 100.0 + true + 0.003926990816987242 + 45.0 + -10.0 + 10.0 + 10.0 + -10.0 + true + + true + + + 1 + + + true + true + true + + + false + Front(XY)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + true + + + 1 + + + true + false + false + + + false + Side(YZ)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + true + + + 1 + + + true + false + false + + + false + Top(XZ)-Camera + + + 10 + + + + + + -1 + + + + + 1 + + + Direct3D + + false + false + false + false + false + false + + 0.01 + 100.0 + true + 9.999999999999998 + 45.0 + -9.999999999999998 + 9.999999999999998 + 9.999999999999998 + -9.999999999999998 + true + + true + + + 1 + + + true + false + false + + + + + + + 10 + + + 10 + + + 10 + + + false + Scenery + + + + Bryant + + false + false + false + false + false + false + + + 3.0 + + + Submodel2\joint1[1] + -0.0011199998032978117 + + + Submodel2\joint1[2] + 0.09999372780550071 + + + 15 + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + 15 + + false + false + Line + + + + Bryant + + false + false + false + false + false + false + + + + 3.0 + + + Submodel2\end_effector[1] + 0.09888000000000007 + + + Submodel2\end_effector[2] + 0.09999999999999992 + + + 15 + true + false + + + 1 + + + 1 + + + 1 + + + true + + + 1 + + + 1 + + + 1 + + + 1.0 + + + 1 + + + 1 + + + 1 + + + + true + + + 0.5 + + + 0.5 + + + 0.5 + + + + + 15 + + false + false + Line + + + Submodel2\joint1[1] + -0.0011199998032978117 + + + Submodel2\joint1[2] + 0.09999372780550071 + + + + + Bryant + + false + false + false + false + false + false + + + + + + + + + + + + 1 + true + Window 1 + 0 + + 1 + 2 + + Base + + + 2 + true + Window 2 + 0 + + 3 + + Base + + + + 0.411979 0.22037 0.885938 0.85 + 0.0703125 0.135185 0.686979 0.717593 + + + + + 0.0 + 10.0 + false + false + false + false + 0.1 + 1.0e-6 + 1.0e-7 + false + true + + + + Euler + 0.01 + false + + + BackwardEuler + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + 0.01 + 1.0 + + + AdamsBashforth + 0.01 + false + + + RungeKutta2 + 0.01 + false + + + RungeKutta4 + 0.01 + false + + + RungeKutta8 + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + 0.9 + 0.33 + 6.0 + 0.0 + false + 100000 + false + 1000 + + + RungeKuttaFehlberg + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + + + VodeAdams + false + 0.001 + false + 1.0 + 1.0e-6 + 1.0e-6 + true + true + + + BDFMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.001 + false + 1.0 + + + MeBDFiMethod + 1.0e-5 + 1.0e-5 + 1.0e-5 + 1.0e-5 + false + 0.001 + false + 1.0 + + 8 + + + + 10 + false + true + true + false + true + 0 + 0.0 + true + MultipleRun + true + + UseEndValue + 0.001 + BroydonFletcherGoldfarbShanno + + + + true + true + true + true + + + false + + + + + + + + diff --git a/implementation/library/setpoint/rectanglepath.emx b/implementation/library/setpoint/rectanglepath.emx new file mode 100644 index 0000000..84f36a5 --- /dev/null +++ b/implementation/library/setpoint/rectanglepath.emx @@ -0,0 +1,17 @@ + + + + + + + 4.8 + setpoint\rectanglepath.emx +1 + False + 2020-7-10 12:30:38 +False + +'; type 'Submodel-Equation' ports signal out output [2,1]; end; implementation eq /* This will generate coordinates for the box that has to be drawn */ parameters real w = 0.07{m} ; real h = 0.05 {m}; real t = 1 {s}; real origin[2] = [0.05,0.05]{m}; variables real v {m/s}; real t_w {s}; real t_h {s}; real period {s}; real test1, test2, test3; initialequations v = (2*w + 2*h)/t; t_w = w / v; t_h = h / v; equations period = floor(time / t) * t; output[1] = v*(ramp(period+t_h) - ramp(period + t_w+t_h) - ramp(period + t_w + t_h + t_h)) + origin[1]; output[2] = v*(ramp(period) - ramp(period + t_h) - ramp(period + t_h + t_w) + ramp(period + 2 * t_h + t_w))+ origin[2]; implementation_end; ]]> + + +