Encoded Matter | AADRL | Robert stuart smith | Workshop-II

Page 1

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|


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.