ENCODED MATTER |ROBERT STUART SMITH |2015| |TYSON HOMER| >> >> >> >>
SUJITHA SUNDRARAJ VIKRAM GAIKWAD YANG HONG YIING XIA
CONTENTS
//AGENT SIMULATION 1.0 AGENTS PARAMETERS 1.1 SINGLE AGENT SIMULATION 1.2 MULTIPLE AGENT SIMULATION
The aim of the workshop is to generate local rules that modifies the behaviour of the agents and engage the agents real time with the CNC (Computer Numerical Code)and to obtain a feed back loop. The criteria is to make the mill respond according to the local behaviour of the agent in real time.
//CNC MILLING 2.0 3D MODEL TESTS 2.1 IMAGE TESTS
//REAL TIME MILLING 3.0 INITIAL TESTS & TECHNICAL ISSUES 3.1 SINGLE AGENT REAL TIME 3.2 SINGLE AGENT REAL TIME ON A SURFACE
//STRATEGY 4.0 SURFACE MILLING SINGLE AGENT - SURFACE INTERACTION //SENSORS & REAL TIME CNC MILLING 5.0 KINECT & ARDUINO 5.1 KINECT TESTS 5.2 KINECT SET UP 5.3 REAL TIME CNC MILLING - Test 1 - Test 2 - Test 3
|
| ENCODED MATTER |
PG.NO 2 3 5
31 33
41 45 51
57
60 61 65 69 71 79 83
| ENCODED MATTER |
|
WORK FLOW > MULTI AGENT
>
> SINGLE AGENT
KINECT
BASED ON X-Y
BASED ON DEPTH Z
MULTIPLE AGENT SIMULATION
KINECT TESTS- 2D
PARAMETERS
BEHAVIOUR RELATING TO Z
CNC TESTS - 3D MODEL
ARDUINO TESTS
LOCAL BEHAVIOUR
CNC MILLING REAL TIME WITH SURFACE
CNC TESTS - IMAGES
DISTANCE TESTS
MULTIPLE AGENT SIMULATION SURFACE
KINECT SETUP
SPECIAL BEHAVIOUR CNC REAL TIME
Our workflow starts on exploring local behaviour of agents simultaneously with single agent and multiagent . In regard to CNC milling , real time feedback is achieved through kinect. Milling multiagent simulation as a surface and single agent behaviour on it changed the morphology of the surface with the feedback from kinect.
PARAMETERS
CNC TESTS - RELIEFS
TECHNICAL PROBLEMS
CNC TESTS - REAL TIME
>>
>> >>
STRATEGY CNC MILLING REAL TIME WITH SURFACE
|
| ENCODED MATTER |
| ENCODED MATTER |
|
1.0 AGENT PARAMETERS RANGE OF VISION
SEPARATION
WANDER
ALIGNMENT
COHESION
GLOBAL PARAMETERS
AGENT SIMULATION
>> AGENTS & PARAMETERS >> SINGLE AGENT SIMULATION >> MULTIPLE AGENT SIMULATION
- maxVel -max Force
1|
| ENCODED MATTER |
| ENCODED MATTER |
|2
1.1 SINGLE AGENT SIMULATION << ROTATION>>
<< PATTERNS>>
<< ROTATION+ LIFE COUNTER>>
<< PATTERNS>>
if (lifeCounter<50) {acc.addSelf(rotateVector(vel , 5 , new Vec3D(0, 0, 1)));} if (lifeCounter>=50&&lifeCounter<100) {acc. addSelf(rotateVector(vel, 15, new Vec3D(0, 0, 1))); } if (lifeCounter>100)lifeCounter=0;
position->750 rot (degree)- 1.5
maxVel - 3.5 maxForce- 4
<< ROTATION+ LIFE COUNTER+ COHESION +SEPARATION + ALIGNMENT>>
position-<750 rot (degree)- 2
maxVel - 2.5 maxForce- 2.5
if (lifeCounter<100) { acc.addSelf(coh); acc.addSelf(ali);} if (lifeCounter>=100&&lifeCounter<200) { acc.addSelf(rotateVector(vel, 10, new Vec3D(0, 0, 1))); acc.addSelf(sep); acc.addSelf(ali);} if (lifeCounter>300)lifeCounter=0;
<< ROTATION+ LIFE COUNTER+ COHESION +SEPARATION + ALIGNMENT + WANDER>>
if (lifeCounter<100) { acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(wan);} if (lifeCounter>=100&&lifeCounter<200) {acc.addSelf(rotateVector(vel, 10, new Vec3D(0, 0, 1))); acc.addSelf(sep); acc.addSelf(ali);acc.addSelf(wan); } if (lifeCounter>200)lifeCounter=0;
position-<750 rot (degree)- 3.5
|3
maxVel - 3 maxForce- 3.5
| ENCODED MATTER |
| ENCODED MATTER |
|4
1.2 MULTIPLE AGENT SIMULATION << ALIGNMENT>
1.2 MULTIPLE AGENT SIMULATION << ALIGNMENT> AGENT TYPES: 1,2 coh.scaleSelf(.02); sep.scaleSelf(1); sep1.scaleSelf(.30); ali.scaleSelf(0.1)
if (frameCount>=10 { Vec3D vvv = new Vec3D(.1, .1, 0); degree-=.5; rot = rotateVector(vel, degree, vvv); }
<<ALIGNMENT>> coh.scaleSelf(.01); sep.scaleSelf(.1); sep1.scaleSelf(.30); ali.scaleSelf(1); wan.scaleSelf(0); tra.scaleSelf(.1);
TYPE - 1 & 2
AGENT TYPES: 1,2 coh.scaleSelf(.01); sep.scaleSelf(1); sep1.scaleSelf(.30); ali.scaleSelf(0.8)
5|
| ENCODED MATTER |
<<WANDER>> coh.scaleSelf(0.1); sep.scaleSelf(.1); sep1.scaleSelf(.30); ali.scaleSelf(1); wan.scaleSelf(4); tra.scaleSelf(.1);
| ENCODED MATTER |
|6
1.2 MULTIPLE AGENT SIMULATION << ROTATION + MAX VELOCITY>>
1.2 MULTIPLE AGENT SIMULATION << ROTATION + MAX VELOCITY>>
Global Variables: if (type ==1) {rot(55); maxVel = 10; } if (type ==2) {float degree = -55; degree-=5; rot(55); maxVel = 5; } if (type ==3) {float degree = -35; degree--; rot(55); maxVel = 15; } if (type ==4) {rot(90); maxVel = 10; }
50 Agents for (int i = 0; i<50 ;i++) { Vec3D initPos = new Vec3D(random(width), 0, 0); Vec3D initVel= new Vec3D(random(2,-2), random(2,-2), 0); rangeOfVis = 50;
Type based on NeighborList if (neighborList.size()>0 && neighborList.size()<=5) {type =1;} if (neighborList.size()>5 && neighborList.size()<=10) {type =2;} if (neighborList.size()>10 && neighborList.size()<=15) {type =3;} if (neighborList.size()>15) {type =4;}
if (type ==1) {rot(10); maxVel = 10; } if (type ==2) {float degree = -25; degree-=5; rot(55); maxVel = 15; } if (type ==3) {float degree = 35; degree--; rot(55); maxVel = 5; } if (type ==4) {rot(-30); maxVel = 20; }
if (type ==1) {rot(90); maxVel = 5; } if (type ==2) {float degree = -55; degree-=5; rot(55); maxVel = 5; } if (type ==3) {float degree = -35; degree--; rot(55); maxVel = 15; } if (type ==4) {rot(50); maxVel = 5; }
TYPE - 1
7|
TYPE - 2
| ENCODED MATTER |
TYPE - 3
TYPE - 4
| ENCODED MATTER |
|8
1.2 MULTIPLE AGENT SIMULATION << ROTATION + COHESION+ SEPARATION + WANDER+ ALIGNMENT+ SEEKTRAIL>>
1.2 MULTIPLE AGENT SIMULATION << ROTATION + COHESION+ SEPARATION + WANDER+ ALIGNMENT+ SEEKTRAIL>>
200 Agents
coh.scaleSelf(0.0); sep.scaleSelf(0.0); ali.scaleSelf(0.0); wan.scaleSelf(0.0); tra.scaleSelf(0.3); if (type ==1) {acc.addSelf(tra); maxVel = 5; } if (type ==2) {rot(15); acc.addSelf(tra); maxVel = 5; } if (type ==3) {rot(-15); acc.addSelf(tra); maxVel = 5; } if (type ==4) {rot(15); acc.addSelf(tra); maxVel = 5; }
for (int i = 0; i<200 ;i++) { Vec3D p = new Vec3D(random(boxWidth), random(boxHeight), 0); Vec3D v = new Vec3D(2, 2, 0);} rangeOfVis = 80;
Type based on NeighborList if (neighborList.size()>0 && neighborList.size()<=5) {type =1;} if (neighborList.size()>5 && neighborList.size()<=10) {type =2;} if (neighborList.size()>10 && neighborList.size()<=15) {type =3;} if (neighborList.size()>15) {type =4;}
coh.scaleSelf(0.1); sep.scaleSelf(0.8); ali.scaleSelf(0.4); wan.scaleSelf(0.0); tra.scaleSelf(0.3); if (type ==1) {acc.addSelf(coh); acc.addSelf(sep); acc.addSelf(tra); maxVel = 5; } if (type ==2) {acc.addSelf(coh); acc.addSelf(tra); maxVel = 5; } if (type ==3) {acc.addSelf(sep); maxVel = 5; } if (type ==4) {rot(15); acc.addSelf(sep); maxVel = 5; }
coh.scaleSelf(0.1); sep.scaleSelf(0.2); ali.scaleSelf(0.4); wan.scaleSelf(0.5); tra.scaleSelf(0.3); if (type ==1) {acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(tra); maxVel = 5; } if (type ==2) {acc.addSelf(wan); acc.addSelf(sep); acc.addSelf(ali); acc.addSelf(tra); maxVel = 5; } if (type ==3) {rot(10); acc.addSelf(sep); acc.addSelf(ali); acc.addSelf(tra); maxVel = 5; } if (type ==4) {rot(10); acc.addSelf(sep); acc.addSelf(ali); acc.addSelf(tra); maxVel = 5; }
TYPE - 1
9|
TYPE - 2
| ENCODED MATTER |
TYPE - 3
TYPE - 4
| ENCODED MATTER |
| 10
1.2 MULTIPLE AGENT SIMULATION << ROTATION + COHESION+ SEPARATION + WANDER+ ALIGNMENT+ ALIGN TRAIL>>
1.2 MULTIPLE AGENT SIMULATION << ROTATION + COHESION+ SEPARATION + WANDER+ ALIGNMENT+ ALIGN TRAIL>> coh.scaleSelf(0.1); sep.scaleSelf(2.0); ali.scaleSelf(0.4); wan.scaleSelf(0.5); tra.scaleSelf(0.3); aliT.scaleSelf(1); if (type ==1) {acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==2) {rot(35); acc.addSelf(coh); acc.addSelf(sep); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==3) {rot(-35); acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(aliT); maxVel = 5; } if (type ==4) {acc.addSelf(tra); acc.addSelf(ali); acc.addSelf(aliT); maxVel = 5; }
200 Agents for (int i = 0; i<200 ;i++) { Vec3D p = new Vec3D(random(boxWidth), random(boxHeight), 0); Vec3D v = new Vec3D(random(-2,2), random(-2,2), 0);} rangeOfVis = 80;
Type based on NeighborList if (neighborList.size()>0 && neighborList.size()<=5) {type =1;} if (neighborList.size()>5 && neighborList.size()<=10) {type =2;} if (neighborList.size()>10 && neighborList.size()<=15) {type =3;} if (neighborList.size()>15) {type =4;}
coh.scaleSelf(0.1); sep.scaleSelf(0.8); ali.scaleSelf(0.4); wan.scaleSelf(0.5); tra.scaleSelf(0.3); aliT.scaleSelf(1); if (type ==1) {acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 8; } if (type ==2) {rot(10); acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==3) {rot(-15); acc.addSelf(coh); acc.addSelf(coh); acc.addSelf(aliT); maxVel = 5; } if (type ==4) {acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; }
TYPE - 1
11 |
TYPE - 2
| ENCODED MATTER |
TYPE - 3
TYPE - 4
coh.scaleSelf(0.1); sep.scaleSelf(0.8); ali.scaleSelf(0.4); wan.scaleSelf(0.5); tra.scaleSelf(0.3); aliT.scaleSelf(1); if (type ==1) {rot(10); acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 8; } if (type ==2) {acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==3) {acc.addSelf(coh); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==4) {acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 7; }
| ENCODED MATTER |
| 12
1.2 MULTIPLE AGENT SIMULATION << FRAME COUNT & ORIGIN POINT>>
1.2 MULTIPLE AGENT SIMULATION << FRAME COUNT & ORIGIN POINT>> if ( frameCount % 20 == 0) {Vec3D p = new Vec3D(200,350, 0); Vec3D v = new Vec3D(1, 0, 0);} coh.scaleSelf(0.1); sep.scaleSelf(2.0); ali.scaleSelf(0.4); wan.scaleSelf(0.5); tra.scaleSelf(0.3); aliT.scaleSelf(1); if (type ==1) {rot(2); acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 8; } if (type ==2) {acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==3) {acc.addSelf(coh); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==4) {acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 7; }
rangeOfVis = 40;
Type based on NearTrailList if (nearTrailList.size() > 10) type = 1; if (nearTrailList.size() > 50) type = 2; if (nearTrailList.size() > 100) type = 3; if (nearTrailList.size() > 300) type = 4;
if ( frameCount % 20 == 0) {Vec3D p = new Vec3D(200,300, 0); p = new Vec3D(1300,600, 0); Vec3D v = new Vec3D(1, 0, 0);} coh.scaleSelf(0.1); sep.scaleSelf(0.5); ali.scaleSelf(0.4); wan.scaleSelf(0.3); tra.scaleSelf(0.3); aliT.scaleSelf(0.3); if (type ==1) {rot(5); acc.addSelf(coh); acc.addSelf(sep); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 8; } if (type ==2) {acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==3) {acc.addSelf(coh); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==4) {acc.addSelf(sep); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 7; }
TYPE - 1
13|
TYPE - 2
| ENCODED MATTER |
TYPE - 3
TYPE - 4
if ( frameCount % 20 == 0) {Vec3D p = new Vec3D(200,350, 0); p = new Vec3D(1300,600, 0); p = new Vec3D(1300,350, 0); p = new Vec3D(200,600, 0); Vec3D v = new Vec3D(1, 0, 0);} coh.scaleSelf(0.1); sep.scaleSelf(0.8); ali.scaleSelf(0.4); wan.scaleSelf(0.5); tra.scaleSelf(0.3); aliT.scaleSelf(0.5); if (type ==1) {rot(15); acc.addSelf(coh); acc.addSelf(ali); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 10; } if (type ==2) {rot(-15); acc.addSelf(sep); acc.addSelf(wan); addSelf(aliT); maxVel = 5; } if (type ==3) {acc.addSelf(coh); acc.addSelf(wan); acc.addSelf(aliT); maxVel = 5; } if (type ==4) {acc.addSelf(wan); acc.addSelf(aliT); maxVel = 10; }
| ENCODED MATTER |
| 14
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>> PARAMETERS
<< GRID >>
<< COHESION>>
<< ALIGNMENT>>
<< SEEK TRAIL>>
15 |
| ENCODED MATTER |
| ENCODED MATTER |
| 16
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
<< COHESION - SEPARATION- ALIGNMENT >> NEIGHBOURLIST - RANGE OF VISION>> Global Variables: Grid Condition for (int i = 0; i<1200; i=i+30) { for (int j = 0; j<600; j=j+20) { Vec3D p = new Vec3D(i, j, 0); kAgent a = new kAgent ( p, new Vec3D(random(-1, 1), random(-1, 1), 0), 4, 3.5, aType)
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis *2.1); ali = align(neighborList, rangeOfVis * 3.5)
coh = cohesion(neighborList, rangeOfVis * 2.1); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.0);
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5)
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.3);
coh = cohesion(neighborList, rangeOfVis * 0.9); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5)
17 |
| ENCODED MATTER |
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.3);
| ENCODED MATTER |
| 18
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
Global Variables: Grid Condition for (int i = 0; i<1200; i=i+30) { for (int j = 0; j<600; j=j+20) { Vec3D p = new Vec3D(i, j, 0); kAgent a = new kAgent ( p, new Vec3D(random(-1, 1), random(-1, 1), 0), 4, 3.5, aType)
TYPE - 1 TYPE - 2
19 |
| ENCODED MATTER |
coh = cohesion(neighborList, rangeOfVis * 0.9); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.5);
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.5);
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.3);
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.3);
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.3);
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.3);
| ENCODED MATTER |
| 20
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
if (type == 1) rangeOfVis = 25; if (type == 2) rangeOfVis = 150; if(neighborList.size() > 15) { rangeOfVis = rangeOfVis*.9; } if((neighborList.size()>0)&&(neighborList.size()<=20)){ type = 1; } if(neighborList.size()>20){ type = 2;
coh = cohesion(neighborList, rangeOfVis * 2.1); sep = separation(neighborList, rangeOfVis * 3.5); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.0)
TYPE - 1 TYPE - 2
coh = cohesion(neighborList, rangeOfVis * 2.1); sep = separation(neighborList, rangeOfVis * 3.5); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.0); coh.scaleSelf(0.4); sep.scaleSelf(1.2); ali.scaleSelf(2.2); coh.scaleSelf(0.4); sep.scaleSelf(1.2); ali.scaleSelf(2.2);
coh = cohesion(neighborList, rangeOfVis * 2.1); sep = separation(neighborList, rangeOfVis * 3.5); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.0); coh.scaleSelf(0.4); sep.scaleSelf(1.2); ali.scaleSelf(2.2);
21 |
| ENCODED MATTER |
coh = cohesion(neighborList, rangeOfVis * 2.1); sep = separation(neighborList, rangeOfVis * 3.5); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.0);
coh = cohesion(neighborList, rangeOfVis * 3.2); sep = separation(neighborList, rangeOfVis * 2.1); ali = align(neighborList, rangeOfVis * 3.5) att.scaleSelf(1.5);
| ENCODED MATTER |
| 22
1.2 MULTIPLE AGENT SIMULATION << GRID & SURFACE>>
Condition: if (type == 1) rangeOfVis = 25; if (type == 2) rangeOfVis = 150; if(neighborList.size() > 15) { rangeOfVis = rangeOfVis*.9; } if((neighborList.size()>0)&&(neighborList.size()<=20)){ type = 1; } if(neighborList.size()>20){ type = 2; }
if (type == 1) { coh.scaleSelf(3.2); sep.scaleSelf(0.2); ali.scaleSelf(3.2); att.scaleSelf(1.5); tra.scaleSelf(5.2); } if (type == 2) { coh.scaleSelf(3.0); sep.scaleSelf(0.9); ali.scaleSelf(9.0); tra.scaleSelf(9.5); att.scaleSelf(1.5); }
TYPE - 1
TYPE - 1& 2 if (type == 1) { coh.scaleSelf(2.2); sep.scaleSelf(0.2); ali.scaleSelf(2.2); att.scaleSelf(1.0); tra.scaleSelf(1.2); } if (type == 2) { coh.scaleSelf(3.0); sep.scaleSelf(0.9); ali.scaleSelf(9.0); att.scaleSelf(1.0);
23|
| ENCODED MATTER |
TYPE - 2
if (type == 1) { coh.scaleSelf(3.2); sep.scaleSelf(0.2); ali.scaleSelf(3.2); att.scaleSelf(1.5); tra.scaleSelf(5.2); } if (type == 2) { coh.scaleSelf(3.0); sep.scaleSelf(0.9); ali.scaleSelf(9.0); tra.scaleSelf(9.5); att.scaleSelf(1.5); }
| ENCODED MATTER |
| 24
1.2 MULTIPLE AGENT SWARM BEHAVIOUR << FLOCKING>>
1.2 MULTIPLE AGENT SWARM BEHAVIOUR << ATTRACTION>>
void flocking() { if(type ==1){ coh(0.05); sep(10); ali(0.03); } if(type ==2){ coh(0.2); sep(10); ali(0.03); } if(type ==3){ coh(0.05); sep(15); ali(0.03); } }
if (neighborList.size()>1 && neighborList. size()<=15) { type =1; } if (neighborList.size()>15 && neighborList. size()<=40) { type =2; } if (neighborList.size()>40 ) { type =3; } }
<< BOUNCE>>
Reverse velocity
<< ATTRACTOR>> maxVel=3 kAttractor(Vec3D _pos) { pos = _pos; magnatude = -10; attDisScale =0.2; // display render size range = 1000;
<< AVOIDING TRAIL>> if (type==5){ acc.addSelf(att); acc.addSelf(sep); avoidThread();
TYPE - 2
void avoidThread(){ //loop through all agents in pop for (int i = 0; i < AllTrail.size(); i++) { Vec3D other = (Vec3D) AllTrail.get(i); float dist = pos.distanceTo(other);
TYPE - 1&2 TYPE - 5
if ((dist > 0) && (dist < 10)) { vel.x=vel.x*-1; vel.y=vel.y*-1; vel.z=vel.z*-1; } }
void bounce() { if (pos.x>width-radius || pos.x<radius) { vel.x=vel.x*-1; }
}
25|
| ENCODED MATTER |
if (pos.y>height-radius || pos.y<radius) { vel.y=vel.y*-1; }
| ENCODED MATTER |
| 26
CNC MILLING
>> 3D MODEL TETS >> IMAGE TESTS
27|
| ENCODED MATTER |
| ENCODED MATTER |
| 28
2.0 CNC MILLING
2.0 CNC MILLING<<INITIAL TESTS>>
CNC MACHINE
FEED BACK LOOP
SERIAL
READER
SERIAL
BRIDGE
WRITER
AGENT SIMULATION
29|
| ENCODED MATTER |
| ENCODED MATTER |
| 30
2.0 CNC TESTS << 3D MODEL>>
2.0 CNC TESTS << 3D MODEL>>
IMAGE OF THE MULTIAGENT SIMULATION
3mm BALL NOSE Step over - 1 Step down- 4 Feed rate- 15000 Plunge rate- 600 Speed- 60%
3D MODEL
Z Depth - 25mm Blue foam (75mm)
CNC
MILLED FOAM
31 |
| ENCODED MATTER |
| ENCODED MATTER |
| 32
2.1CNC TESTS << IMAGE AS RELIEF>>
2.1 CNC TESTS << IMAGE AS RELIEF>> B&W IMAGE OF THE MULTIAGENT SIMULATION
V BIT 30mm Step up - 0.1 Step down- 4 Feed rate- 1500 Plunge rate-600 Speed-100%
ART CAM 3D RELIEF
Z Depth - 20mm Blue foam (75mm)
CNC
MILLED FOAM
33|
| ENCODED MATTER |
| ENCODED MATTER |
| 34
2.1 CNC TESTS << IMAGE AS RELIEF - SURFACE>>
2.1 CNC TESTS << IMAGE AS RELIEF - SURFACE>>
Blue foam (50mm) Z Depth - 20mm
V BIT 32mm
Step over -1.3 Step down- 4 Feed rate- 15000 Plunge rate-600 Speed-100%
Z Depth - 25mm
V BIT 30mm
Blue foam (50mm)
Step over -1.3 Step down- 4 Feed rate- 15000 Plunge rate-600 Speed-100%
35|
| ENCODED MATTER |
| ENCODED MATTER |
| 36
2.1 CNC TESTS << IMAGE AS RELIEF - SURFACE>>
2.1 CNC TESTS << IMAGE AS RELIEF - SURFACE>>
V BIT 32mm Step over -1.3 Step down- 4 Feed rate- 15000 Plunge rate-600 Speed-100%
Blue foam (50mm) Z Depth - 30mm
37 |
| ENCODED MATTER |
| ENCODED MATTER |
| 38
2.1 CNC TESTS <<SURFACE>>
2.1 CNC TESTS <<SURFACE>>
V BIT 32mm
35mm 30mm 25mm 20mm 0mm
Section
Z Depth - 35mm Blue foam (50mm) Step over - 2 Step down- 6.5 Feed rate- 42 Plunge rate-12 Spindle speed-15000 r.p.mSpeed-100%
39|
| ENCODED MATTER |
| ENCODED MATTER |
| 40
3.0 REAL TIME MILLING
3.0 REAL TIME MILLING<< SINGLE AGENT>>
G CODE CNC
MILLING
AGENT SIMULATION
41 |
| ENCODED MATTER |
| ENCODED MATTER |
| 42
3.0 REAL TIME MILLING SINGLE AGENT <<TECHNICAL ISSUES>>
We encountered this problem as the pre position and current position was not updated. So the drill would not lift up and go to the next space rather drags to the next position.
43 |
| ENCODED MATTER |
3.0 REAL TIME MILLING SINGLE AGENT <<TECHNICAL ISSUES>>
<<SOLVED IN THE CODE>> If (pause==0){ pre_pos= b.pos.copy(); b.update(); }
| ENCODED MATTER |
| 44
3.1 SINGLE AGENT BEHAVIOUR
3.1 SINGLE AGENT BEHAVIOUR << TYPE & NEIGHBORLIST>>
NeighborList >40 TYPE - 1&2 TYPE -3
Single agent inflenced by neighborList TYPE - 5
TYPE - 6
NeighborList>10 && <=40
<< AVOIDING TRAIL>> TYPE - 1&2
TYPE -3
<< TYPE & NEIGHBORLIST>> if (neighborList.size()>0 && neighborList.size()<=11) { type =1; } if (neighborList.size()>11 && neighborList.size()<=40) { type =2; } if (neighborList.size()>40 ) { type =3;} if (neighborList.size()>0 && neighborList.size()<=10) { type =5; } if (neighborList.size()>10 && neighborList.size()<=40) { type =6;}
TYPE - 5(Single agent real time milling) << WANDER & ROTATION>> if (type==1 ||type==5) { wan(1) } if (type==2 || type == 6) { wan(1.5);} if (type == 1||type==5) { rot(0.01);} if (type == 2||type==6) { rot(2);
<< TRAIL SEEKING>>
void flocking() { if (type ==1||type==5) { coh(0.1); sep(0.2); ali(0.03); } if (type ==2||type==6) { coh(0.05); sep(0.1); ali(0.03); }
if (trailSeeking == true) { if (type==1||type==5) { seekTrail(0.05); } if (type==2||type==6) { seekTrail(0.01); }
| ENCODED MATTER |
<< AVOIDING TRAIL>> if(traceAvoiding == true){ if(type==1||type==2||type==3||type==5){ traceAvoiding(800); }
Agent type-5 follow the other agents but avoid the trail of all agents
<< FLOCKING>>
|
TYPE - 6
| ENCODED MATTER |
| 46
3.1REAL TIME MILLING<< SINGLE AGENT>>
3.1REAL TIME MILLING<< SINGLE AGENT>>
<< DEPTH BASED ON TYPE & AVOID TRACE(MILLED AGENT)>>
if (type == 1) zDepth = -1000; if (type == 2) zDepth = -500; TYPE - 1 TYPE - 2
Z Depth -30mm
3mm BALL NOSE
47 |
| ENCODED MATTER |
| ENCODED MATTER |
| 48
3.1REAL TIME MILLING<< SINGLE AGENT>>
3.1REAL TIME MILLING<< SINGLE AGENT>>
<< DEPTH BASED ON TYPE & SINE CONDITION>>
if (frameCount%1==0) { degreeZ += 0.01; zDepth = 400*sin(PI*(0.5*degreeZ))-2200;} if (b.type==1) {depthCount =zDepth;} if (b.type==6) {depthCount =-1900;}
TYPE - 1 TYPE - 2
49 |
| ENCODED MATTER |
Z Depth - 25mm
| ENCODED MATTER |
| 50
3.2 REAL TIME MILLING<< SINGLE AGENT ON A SURFACE>>
3.2 REAL TIME MILLING<< SINGLE AGENT ON A SURFACE>>
3mm BALL NOSE
25mm 20mm 15mm 0mm
Section
3D MODELLED SURFACE
CNC MILLING
Z Depth - 20mm Blue foam (50mm)
MILLED SURFACE
AGENT SIMULATION
CNC REAL TIME MILLING
MILLED SURFACE SINGLE AGENT REAL TIME
51 |
| ENCODED MATTER |
| ENCODED MATTER |
| 52
3.2 REAL TIME MILLING<< SINGLE AGENT ON A SURFACE>>
3.2 REAL TIME MILLING<< SINGLE AGENT ON A SURFACE>>
<< DENSITY BASED ON SEEKING IMAGE>> if (type == 1) zDepth = -1000; if (type == 2) zDepth = -500;
Z Depth -15mm
Z Depth - 20mm
3mm BALL NOSE
53|
| ENCODED MATTER |
| ENCODED MATTER |
| 54
3.2 SINGLE AGENT BEHAVIOUR - Z DEPTH
3.2 SINGLE AGENT BEHAVIOUR - Z DEPTH
TYPE - 5(Single agent real time milling)
TYPE - 6
<< start value for zHeight to cut in machine units>> float depthCount = -800; float zDepth = -800; float degreeZ = 0;
<< Z DEPTH VARIATION>> if (frameCount%1==0) { degreeZ += 0.01; zDepth = 400*sin(PI*(0.5*degreeZ))-2200}
55 |
| ENCODED MATTER |
if (b.type==5) { depthCount =zDepth; } if (b.type==6) { depthCount =-1900; }
1900
| ENCODED MATTER |
| 56
STRATEGY >
>
>
STRATEGY
SINGLE AGENT
MULTI AGENT
SINGLE AGENT SIMULATION REAL TIME
KINECT
MULTI AGENT SIMULATED SURFACE
>> SURFACE MILLING >> SINGLE AGENT - SURFACE INTERACTION >>
>> >> FINAL MODEL
Our strategy is to change the morphology of the surface simulated from multiagent by the interaction of single agent with the kinect . The single agent varies depth according to the feed back from the kinect.
57 |
| ENCODED MATTER |
| ENCODED MATTER |
| 58
5.0 KINECT & ARDUINO
MILLED FOAM FROM THE CONNECT FEEDBACK
AGENT SIMULATION
SENSORS & REAL TIME CNC MILLING >> KINECT & ARDUINO >> KINECT TESTS >> KINECT SET UP >> REAL TIME CNC MILLING
CNC REAL TIME MILLING
ADRINO
PROXIMITY SENSOR KINECT SENSOR
59|
| ENCODED MATTER |
| ENCODED MATTER |
| 60
5.0 ARDUINO - KINECT TESTS
5.1 KINECT TESTS
ARDUINO and PROXIMITY SENSORS are tested first to detect the distance reflecting on the brightness of the image. But it detects distance point to point rather than the entire surface. So arduino and proximity sensor is replaced by KINECT.
PROXIMITY SENSOR
200mm max z depth
-200mm min z depth
61 |
| ENCODED MATTER |
| ENCODED MATTER |
| 62
<<SENSOR AFFECTING XY AXIS BEHAVIOUR>>
<<SENSOR AFFECTING DEPTH>>
kinect closer
further Get topographical information (distance) from kinect
Transfer distance information to gradient color
Avoid the brightest pixel (Hightest part) in range of vision
Map the processing depth (-300, 0) to real cutting depth (-35mm, -5.5mm)
63|
| ENCODED MATTER |
Set gradient value to the depth of processing by pixels (-300, 0)
| ENCODED MATTER |
| 64
5.2 KINECT SET UP
5.2 KINECT SET UP
75 cm 120degree
<<REAL TIME CNC MILLING>>
65|
| ENCODED MATTER |
| ENCODED MATTER |
| 66
5.2 KINECT SET UP
5.2 KINECT SET UP ISSUES AND OPTIMUM SOLUTIONS The problems encountered with the kinect sensor were the
-Angle -Distance -Resolution of the kinect. The appropriate distance for the kinect to have the best resolution was 75 cm from the machine bed. The most effective angle for the kinect to be placed would be parallel to the machine bed, so as to enable it to give a top view of the surface. However, since there was a definite possibility of the frame used to hold the kinect, colliding with the CNC drill, the frame was restricted to a 120 degree angle from the machine bed. and also the ‘Z’depth of the CNC.
75 cm
DETECTION OF SURFACE FROM KINECT
67 |
| ENCODED MATTER |
| ENCODED MATTER |
| 68
5.3 REAL TIME CNC MILLING
5.3 REAL TIME CNC MILLING
Kinect reads the topological information and the data is passed to the agent simulation so that the Z depth is updated accordingly. At the same time, drill bit of CNC is following the same path of the trace of the single agent (yellow trace) affected by the single agent generating new morphology of the surface.
KINECT SENSOR Read topographical information (distance) by kinect
>
>
FEED BACK LOOP
TOPOGRAPHY
PROCESSING
An existing model which keep changing topography and pattern by CNC
Set different behavior based on topographical information and send to CNC machine
>
> CNC Get information by G code and mill on the existing model
69|
| ENCODED MATTER |
| ENCODED MATTER |
| 70
SURFACE MILLING<<IMAGE AS RELIEF>>
SURFACE MILLING<<IMAGE AS RELIEF>>
TEST-1
Step over: 2 Step down: 6.5 Feed rate: 42 Plunge rate: 12 Spindle speed:15000
V BIT 32mm Blue foam: 50mm
Max Z Depth: 30mm
35mm 30mm 25mm 20mm 0mm
SECTION
71 |
| ENCODED MATTER |
| ENCODED MATTER |
| 72
5.3 REAL TIME CNC MILLING (SINGLE AGENT) ON THE SURFACE <<PROCESS>>
5.3 REAL TIME CNC MILLING (SINGLE AGENT) ON THE SURFACE <<PROCESS>>
TEST-1
DETECTION OF SURFACE & SINGLE AGENT INTERACTION WITH THE SURFACE
PARAMETERS IN THE REAL TIME SIMULATON AGENT NUMBER WANDER-1 WANDER-5 ROATATE-1 ROATATE-5 HEIGHT AVOID
SEEK TRAIL SEEK TRAIL TRACE AVOID ALIGN TRAIL COHESION-1 SEPARATION-1 ALIGNMENT-1 COHESION-5 SEPARATION-5 ALIGNMENT-5
73 |
| ENCODED MATTER |
| ENCODED MATTER |
| 74
5.3 REAL TIME CNC MILLING ON THE SURFACE
5.3 REAL TIME CNC MILLING ON THE SURFACE
TOPOGRAPHY CHANGE Real time milling with sensor feedback loop changed the original topography. There is a continuity of toolpath on the original surface. We use V Bit 32mm which is same with the image milling because this drill bit is big enough that can actually change the topography, then give the kinect different input constantly.
Because of the difference origin between CNC and Processing, the output from CNC is mirrored. Drill bit blocked the visibility of the kinect.
BEFORE
AFTER
SINGLE AGENT MILLING ON THE SURFACE
V BIT 32mm
75 |
| ENCODED MATTER |
| ENCODED MATTER |
| 76
<<TOPOGRAPHY VARIATIONS>>
77 |
| ENCODED MATTER |
| ENCODED MATTER |
| 78
SURFACE MILLING<<IMAGE AS RELIEF>>
SURFACE MILLING<<IMAGE AS RELIEF>>
TEST-2
Step over: 2 Step down: 6.5 Feed rate: 42 Plunge rate: 12 Spindle speed:15000
V BIT 32mm
Max Z Depth: 35mm
Blue foam: 50mm
35mm 30mm 25mm 20mm 0mm
SECTION
79 |
| ENCODED MATTER |
| ENCODED MATTER |
| 80
5.3 REAL TIME CNC MILLING ON THE SURFACE
5.3 REAL TIME CNC MILLING ON THE SURFACE BEFORE
V BIT 32mm AFTER
V BIT 30mm
81 |
| ENCODED MATTER |
AFTER
| ENCODED MATTER |
| 82
SURFACE MILLING<<IMAGE AS RELIEF>>
SURFACE MILLING<<IMAGE AS RELIEF>>
TEST-3
Step over: 2 Step down: 6.5 Feed rate: 42 Plunge rate: 12 Spindle speed:15000
Max Z Depth: 35mm
6mm BALL NOSE Blue foam: 50mm
35mm 30mm 25mm 20mm 0mm
SECTION
83|
| ENCODED MATTER |
| ENCODED MATTER |
| 84
5.3 REAL TIME CNC MILLING (SINGLE AGENT) ON THE SURFACE <<PROCESS>>
5.3 REAL TIME CNC MILLING (SINGLE AGENT) ON THE SURFACE <<PROCESS>>
TEST-3
85|
| ENCODED MATTER |
| ENCODED MATTER |
| 86
BEFORE
V BIT 32mm
AFTER
AFTER
V BIT 32mm
87 |
| ENCODED MATTER |
| ENCODED MATTER |
| 88
|WORKSHOP-2 |DECEMBER 2015| |DRL|