MACHININGTHEGENERATIVE INSTRUCTING MACHINES
2
WORKSHOP BRIEF To instruct a machine
TUTORS Shajay Bhooshan Alicia Nahmad Vishu Bhooshan David Reeves
CONTENTS WORKFLOW GENERATIVE _ Forces & Vectors _ Grid Systems _ Keypress _Digital Output
PRODUCTION
STUDENT TEAM Pallavi Kumar Chi-Yen Fu Begum Aydinoglu Juan Carlos Naranjo
_ Optimization _ Layer System _Physical Output
ANALYSIS _ Joint Angle Analysis _ Inference
APPENDIX _ Three Target Catalogue _ Code Snippet _Nine Target Catalogue
3
WORKFLOW
4
GENERATIVE
PRODUCTION
ANALYSIS
INSTRUCTING THE COMPUTER WRITING CODE ON C++
INSTRUCTING THE ROBOT EXPORTING CODE TO PHYSICAL PRODUCTION
OPTIMIZATION OF OUTPUT/ PRODUCTION
WORKFLOW GENERATIVE
Code on C++
Conversion to G-code
Check if all points can be printed robotically
PRODUCTION
Optimization of output
Callibration of tool (pen/ marker)
Robotic generation of output
ANALYSIS
Analyse efficiency of joint rotation in space
Optimization
5
6
THE GENERATIVE INSTRUCTING THE COMPUTER
7
PARTICLE TO PARTICLE FORCES
PARTICLE TO TARGET FORCES
PARTICLE TO PARTICLE FORCES
PARTICLE TO TARGET FORCES
Collision Radius
Target Strength
Collision Radius
Target Strength
PARTICLE TO PARTICLE FORCES
PARTICLE TO TARGET FORCES
Collision Radius
Target Strength r
r
Collision Strength
Collision Strength Collision Strength
8
Spin Force
Spin Force Spin Force
VECTORS_BASICS orıgın ıtıon
pos tor vec
point B tor
vec
posıtıon 2
posıtıon 2 r
ecto
ty v
cı velo
vertıcal step
point A
posıtıon 1
horızontal step
posıtıon 2 = velocity applied to posıtıon 1
VECTORS_CALCULATIONS 10 3
7
5 B = (3 , 8 )
A = (7 , 5)
+ A LOCATION = LOCATION + VELOCITY
13
8 C = (10 , 13 )
= B X = X + XSPEED Y = Y + YSPEED
C CX = AX + BX CY = AY + BY
9
10
mytargets[0].charge *= -1;
keyPress
c
C
s
mytargets[0].charge *= -1; dragStrength = 0.8;
mytargets[0].charge *= -1;
keyPress
y
PARTICLE BEHAVIOR
dragStrength = 1.5;
mytargets[0].charge *= -1;
0
1
2
mytargets[0].tarPos = targetO1; mytargets[1].tarPos = targetO2; mytargets[2].tarPos = targetO3;
mytargets[0].tarPos = (targetL1); mytargets[1].tarPos = (targetL2); mytargets[2].tarPos = (targetL3);
mytargets[0].tarPos = (targetR1); mytargets[1].tarPos = (targetR2); mytargets[2].tarPos = (targetR3);
TARGET POSITIONING
keyPress
r
dragStrength = 1.5;
keyPress
R
keyPress
keyPress
keyPress
keyPress
keyPress
KEYPRESS_TYPES
GRID & TARGET SYSTEM
3 TARGET GRID
9 TARGET GRID
11
GRID & KEYPRESS
initialParticles 40 MaxTarget 3
initialParticles 40 MaxTarget 3
initialParticles 40 MaxTarget 3
// initialise points/particles for (int i = 0; i < MaxParticles; i++) { pos[i] = vec(ofRandom(0, 100), ofRandom(0, 100), 0); }
Press: RUN
keyPress: t mytargets[0].charge *= -1
// initialise targets target = vec(ofRandom(0, 100), ofRandom(0, 100), 0);
12
KEYPRESS SEQUENCE
t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
13
3 TARGET_CATALOGUE
14
RUN_3TAR_40PAR CcC
RUN_3TAR_40PAR crC
RUN_3TAR_40PAR cCr
RUN_3TAR_40PAR CRc
RUN_3TAR_40PAR rcC
RUN_3TAR_40PAR rCc
9 TARGET_CATALOGUE
15
GRID & TARGET SYSTEM
16
KEYPRESS_SEQUENCE
17
9 target system_final output t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
18
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
19
20
21
22
NACHITO THE ROBOT DRAWING IN LAYERS
23
nine point grid system
24
KEYPRESS_SEQUENCE
initialParticles 40 MaxTarget 3 vec targetO1(44.85, 0, 0); vec targetO2(44.85, 10.5, 0); vec targetO3(44.85, -10.5, 0); vec targetL1(34.95, 0, 0); vec targetL2(39.9, 5.25, 0); vec targetL3(39.9, -5.25, 0); vec targetR1(54.75, 0, 0); vec targetR2(49.8, 5.25, 0); vec targetR3(49.8, -5.25, 0); for (int i = 0; i < MaxTargets; i++) {
initialParticles 40 MaxTarget 3
initialParticles 40 MaxTarget 3
Press: RUN, r
keyPress: c
mytargets[0].charge *= -1; collisonStrength = 0; collisonRadius = 0; dragStrength = 3;
mytargets[0].charge *= -1; collisonStrength = 2; collisonRadius = 0.4;
mytargets[0].tarPos = (targetO1); mytargets[1].tarPos = (targetO2); mytargets[2].tarPos = (targetO3);
}
25
3 LAYERS
LAYER I
26
LAYER II
LAYER III
LAYER 1 t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
27
nine point grid system t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
28
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
KEYPRESS_SEQUENCE t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
29
nine point grid system t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
30
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
JOINT ANGLES & END EFFECTOR
nachi mzo7_joint angles J3 ±190° J3 Helps moving in the Z axis
J4 -136° ~ 270°
J5 ±120°
J2 -135° ~ 80° J5 Helps moving in the Z axis
J6 ±360° J1 ±170°
Since a layer system is employed, the end effector is a simple pen holder, which is required to move the maximum in the Z axis
31 NACHI MZ07 - JOINT ANGLES
FORWARD KINEMATICS
INVERSE KINEMATICS
FORWARD & INVERSE KINEMATICS
FORWARD KINEMATICS
JOINT ANGLE
END EFFECTOR POSITION
INVERSE KINEMATICS
FORWARD KINEMATICS VS INVERSE KINEMATICS
θ3
J4
J3
θ2
J5
J5
θ4 θ6
θ5 J6
J4
End-effector
J3
J2
J1
J1
θ1
32
End-effector Target (x,y,z)
Target (x,y,z)
J2
FORWARD KINEMATICS
J6
INVERSE KINEMATICS
end-effector development
Fixed onto J6 Locking System
Custom End-effector Tool Centre Point (TCP)
Pen Holder
Pen Pen
33
layer division
LAYER III
LAYER II
LAYER I
34
PRINTING IN LAYERS
35
physical output_final
LAYER III
LAYER II
LAYER I
36
physical output_final
37
38
production analysis movement of axis through time
39
OUPUT_INITIAL TESTS
Layer division 1000 lines 8 minutes approx.
Layer 1 14 text files 1 hour 52 min
Layer 2 16 text files 2 hours 8 min
Layer 3 10 text files 1 hour 20 min 40
PRODUCTION ANALYSIS LAYER 1 // FILE 3
LAYER 3 // FILE 9
LAYER 2 // FILE 5
CLOSEST POINT TRAIL PATH
41
OBSERVATIONS_INITIAL TESTS
Marker on transparent medium
Marker on opaque medium
TESTING
1st robotic output test
42
- of different surface materials - of different tool medium (pens, markers, etc) - of overlapping of materials and exploring the â&#x20AC;&#x2DC;layer systemâ&#x20AC;&#x2122; - of transparency
Overlaying of all output layers
FURTHER ANALYSIS CONSTRAINTS - Speed: 40% vs. markerâ&#x20AC;&#x2122;s pressure for ink - Text File Separation - Maximum of 1000 lines of code - Movement of the table for exact overlapping. - Excess number of particles in the digital vs. physical world - File order for quality printing (drying, movement, etc) - Pressure applired to the tool can cause damage during the printing process.
43
44
APPENDIX ADDITIONAL REASEARCH INFORMATION
45
3 TARGET keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
46
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
3 target KEYPRESS t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
47
3 TARGET keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
48
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
3 target keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
49
3 TARGET keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
50
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
3 target keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
51
c++ code
52
c++ code
53
c++ code
54
mytargets[0].charge *= -1;
keyPress
c
C
s
mytargets[0].charge *= -1; dragStrength = 0.8;
mytargets[0].charge *= -1;
keyPress
y
PARTICLE BEHAVIOR
dragStrength = 1.5;
0
1
2
mytargets[0].tarPos = targetO1; mytargets[1].tarPos = targetO2; mytargets[2].tarPos = targetO3;
mytargets[0].tarPos = (targetL1); mytargets[1].tarPos = (targetL2); mytargets[2].tarPos = (targetL3);
TARGET POSITIONING
keyPress
r
dragStrength = 1.5;
keyPress
R
keyPress
keyPress
keyPress
keyPress
keyPress
KEYPRESS_TYPES
mytargets[0].tarPos = (targetR1); mytargets[1].tarPos = (targetR2); mytargets[2].tarPos = (targetR3);
mytargets[0].charge *= -1;
55
c++ code
56
c++ code
57
9 TARGET keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
58
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
9 target keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
59
9 TARGET keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
60
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
9 target keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
61
9 TARGET keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
62
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
9 target keypress t/t 1000 3.00 0.05 0.00 1.50 0.10 1.50 0.00 0.00 0.00
sequence particle count targets timeStep gravityStrength targetStrength spinStrength dragStrength collisionStrength collisionRadius magnetStrength
63
PROCESS IMAGES
64
PROCESS IMAGES
65
DETAILED IMAGES
66
DETAILED IMAGES
67