{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural \f0\fs24 \cf0 processing:\ \ /* --------------------------------------------------------------------------\ * SimpleOpenNI DepthMap3d Test\ * --------------------------------------------------------------------------\ * Processing Wrapper for the OpenNI/Kinect library\ * http://code.google.com/p/simple-openni\ * --------------------------------------------------------------------------\ * prog: Max Rheiner / Interaction Design / zhdk / http://iad.zhdk.ch/\ * date: 02/16/2011 (m/d/y)\ * ----------------------------------------------------------------------------\ */\ \ import SimpleOpenNI.*;\ import processing.serial.*;\ \ //int serial_speed = 9600;\ //int serial_speed = 115200;\ \ int SERVOMIN = 200;\ int SERVOMAX = 680;\ \ Serial myPort;\ SimpleOpenNI context;\ float zoomF =0.3f;\ float rotX = radians(180); // by default rotate the hole scene 180deg around the x-axis, \ // the data from openni comes upside down\ float rotY = radians(0);\ \ //dimensions\ int H = 300;\ int W = 300;\ int D = 300;\ int Dstart = 550;\ \ int maxX = W/2; int minX = maxX-W; int minY = H/2 ; int maxY = minY-H ; int minZ = Dstart; int maxZ = Dstart+D;\ float Ddep = maxZ-minZ;\ \ int sint_w = abs (W/8);\ int x0 = minX; int x1 = x0+sint_w; int x2 = x1+sint_w; int x3 = x2+sint_w; int x4 = x3+sint_w; int x5 = x4+sint_w; int x6 = x5+sint_w; int x7 = x6+sint_w; int x8 = x7+sint_w;\ \ int sint_h = abs(H/8);\ int y0 = minY; int y1 = y0-sint_h; int y2 = y1-sint_h; int y3 = y2-sint_h; int y4 = y3-sint_h; int y5 = y4-sint_h; int y6 = y5-sint_h; int y7 = y6-sint_h; int y8 = y7-sint_h;\ \ float rpz1 = 0; float rpz2 = 0; float rpz3 = 0; float rpz4 = 0; float rpz5 = 0; float rpz6 = 0; float rpz7 = 0; float rpz8 = 0;\ float rpz9 = 0; float rpz10 = 0; float rpz11 = 0; float rpz12 = 0; float rpz13 = 0; float rpz14 = 0; float rpz15 = 0; float rpz16 = 0;\ float rpz17 = 0; float rpz18 = 0; float rpz19 = 0; float rpz20 = 0; float rpz21 = 0; float rpz22 = 0; float rpz23 = 0; float rpz24 = 0; \ float rpz25 = 0; float rpz26 = 0; float rpz27 = 0; float rpz28 = 0; float rpz29 = 0; float rpz30 = 0; float rpz31 = 0; float rpz32 = 0; \ float rpz33 = 0; float rpz34 = 0; float rpz35 = 0; float rpz36 = 0; float rpz37 = 0; float rpz38 = 0; float rpz39 = 0; float rpz40 = 0; \ float rpz41 = 0; float rpz42 = 0; float rpz43 = 0; float rpz44 = 0; float rpz45 = 0; float rpz46 = 0; float rpz47 = 0; float rpz48 = 0; \ float rpz49 = 0; float rpz50 = 0; float rpz51 = 0; float rpz52 = 0; float rpz53 = 0; float rpz54 = 0; float rpz55 = 0; float rpz56 = 0; \ float rpz57 = 0; float rpz58 = 0; float rpz59 = 0; float rpz60 = 0; float rpz61 = 0; float rpz62 = 0; float rpz63 = 0; float rpz64 = 0; \ \ int pos1; int pos2; int pos3; int pos4; int pos5; int pos6; int pos7; int pos8;\ int pos9; int pos10; int pos11; int pos12; int pos13; int pos14; int pos15; int pos16;\ int pos17; int pos18; int pos19; int pos20; int pos21; int pos22; int pos23; int pos24;\ int pos25; int pos26; int pos27; int pos28; int pos29; int pos30; int pos31; int pos32;\ int pos33; int pos34; int pos35; int pos36; int pos37; int pos38; int pos39; int pos40;\ int pos41; int pos42; int pos43; int pos44; int pos45; int pos46; int pos47; int pos48;\ int pos49; int pos50; int pos51; int pos52; int pos53; int pos54; int pos55; int pos56;\ int pos57; int pos58; int pos59; int pos60; int pos61; int pos62; int pos63; int pos64;\ \ \ ArrayList pts = new ArrayList();\ \ \ void setup()\ \{\ frameRate(10);\ \ size(1024+480,768,P3D); // strange, get drawing error in the cameraFrustum if i use P3D, in opengl there is no problem +480\ \ \ //context = new SimpleOpenNI(this,SimpleOpenNI.RUN_MODE_SINGLE_THREADED);\ context = new SimpleOpenNI(this);\ \ // disable mirror\ context.setMirror(true);\ \ // enable depthMap generation \ if(context.enableDepth() == false)\ \{\ println("Can't open the depthMap, maybe the camera is not connected!"); \ exit();\ return;\ \}\ \ stroke(255,255,255);\ smooth();\ perspective(radians(45),\ float(width)/float(height),\ 10,150000);\ myPort = new Serial (this, Serial.list()[0], 9600); \ \}\ \ void draw()\ \{\ // update the cam\ context.update();\ \ background(0,0,0);\ \ translate(width/2, height/2, 0);\ rotateX(rotX);\ rotateY(rotY);\ scale(zoomF);\ \ int[] depthMap = context.depthMap();\ int steps = 5; // to speed up the drawing, draw every third point\ int index;\ PVector realWorldPoint;\ pts.clear();\ translate(0,0,-1000); // set the rotation center of the scene 1000 infront of the camera\ \ stroke(255);\ \ PVector[] realWorldMap = context.depthMapRealWorld();\ \ rpz1 = maxZ; rpz2 = maxZ; rpz3 = maxZ; rpz4 = maxZ; rpz5 = maxZ; rpz6 = maxZ; rpz7 = maxZ; rpz8 = maxZ;\ rpz9 = maxZ; rpz10 = maxZ; rpz11 = maxZ; rpz12 = maxZ; rpz13 = maxZ; rpz14 = maxZ; rpz15 = maxZ; rpz16 = maxZ;\ rpz17 = maxZ; rpz18 = maxZ; rpz19 = maxZ; rpz20 = maxZ; rpz21 = maxZ; rpz22 = maxZ; rpz23 = maxZ; rpz24 = maxZ; \ rpz25 = maxZ; rpz26 = maxZ; rpz27 = maxZ; rpz28 = maxZ; rpz29 = maxZ; rpz30 = maxZ; rpz31 = maxZ; rpz32 = maxZ; \ rpz33 = maxZ; rpz34 = maxZ; rpz35 = maxZ; rpz36 = maxZ; rpz37 = maxZ; rpz38 = maxZ; rpz39 = maxZ; rpz40 = maxZ; \ rpz41 = maxZ; rpz42 = maxZ; rpz43 = maxZ; rpz44 = maxZ; rpz45 = maxZ; rpz46 = maxZ; rpz47 = maxZ; rpz48 = maxZ; \ rpz49 = maxZ; rpz50 = maxZ; rpz51 = maxZ; rpz52 = maxZ; rpz53 = maxZ; rpz54 = maxZ; rpz55 = maxZ; rpz56 = maxZ; \ rpz57 = maxZ; rpz58 = maxZ; rpz59 = maxZ; rpz60 = maxZ; rpz61 = maxZ; rpz62 = maxZ; rpz63 = maxZ; rpz64 = maxZ; \ \ \ for(int y=0;y < context.depthHeight();y+=steps)\ \{\ for(int x=0;x < context.depthWidth();x+=steps)\ \{\ index = x + y * context.depthWidth();\ if(depthMap[index] > 0)\ \{ \ \ // draw the projected point\ // realWorldPoint = context.depthMapRealWorld()[index];\ realWorldPoint = realWorldMap[index];\ //println("x = "+x);\ //println("y = "+y);\ if( index == 153100)\ \{\ //println(realWorldPoint.z);\ //ellipse(realWorldPoint.x,realWorldPoint.y, 10,10);\ fill(255,0,0);\ strokeWeight(10);\ stroke(255,0,0);\ \} else\{\ stroke(255);\ \}\ point(realWorldPoint.x,realWorldPoint.y,realWorldPoint.z); // make realworld z negative, in the 3d drawing coordsystem +z points in the direction of the eyeint col1 = 0; int col2 = 0; int col3 = 0; int col4 = 0; int col5 = 0; int col6 = 0; int col7 = 0; int col8 = 0;\ \ if(realWorldPoint.x > minX && realWorldPoint.x < maxX &&\ realWorldPoint.y < minY && realWorldPoint.y > maxY &&\ realWorldPoint.z>minZ && realWorldPoint.zy1)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpxy2)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpxy3)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpxy4)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpxy5)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpxy6)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpxy7)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpxy8)\{\ \ if(rpx>x0 && rpxx1 && rpxx2 && rpxx3 && rpxx4 && rpxx5 && rpxx6 && rpxx7 && rpx\ #include \ \ Adafruit_PWMServoDriver pwm_0 = Adafruit_PWMServoDriver();\ Adafruit_PWMServoDriver pwm_1 = Adafruit_PWMServoDriver(0x41);\ Adafruit_PWMServoDriver pwm_2 = Adafruit_PWMServoDriver(0x42);\ Adafruit_PWMServoDriver pwm_3 = Adafruit_PWMServoDriver(0x43);\ \ #define SERVOMIN 200\ #define SERVOMAX 650\ \ int serial_speed = 9600;\ int relay1 = 2;\ \ int degrees;\ \ int cV = 0;\ int val[] = \{0,0,0,0,0,0,0,0,\ 0,0,0,0,0,0,0,0,\ 0,0,0,0,0,0,0,0,\ 0,0,0,0,0,0,0,0,\ 0,0,0,0,0,0,0,0,\ 0,0,0,0,0,0,0,0,\ 0,0,0,0,0,0,0,0,\ 0,0,0,0,0,0,0,0\}; \ \ void setup() \ \{ \ pwm_0.begin();\ pwm_1.begin();\ pwm_2.begin();\ pwm_3.begin();\ \ pwm_0.setPWMFreq(60);\ pwm_1.setPWMFreq(60);\ pwm_2.setPWMFreq(60);\ pwm_3.setPWMFreq(60);\ \ Serial.begin(serial_speed);\ //pinMode(relay1, OUTPUT);\ \}\ \ \ void loop() \{ \ if(Serial.available())\{\ //digitalWrite(relay1, LOW);\ int incV = Serial.read();\ \ val[cV] = incV;\ \ cV++;\ if(cV > 63)\{\ cV = 0;\ \}\ \ \ \ int q = 6;\ \ int pos1 = val[0]*q;\ int pos2 = val[1]*q;\ int pos3 = val[2]*q;\ int pos4 = val[3]*q;\ int pos5 = val[4]*q;\ int pos6 = val[5]*q;\ int pos7 = val[6]*q;\ int pos8 = val[7]*q;\ \ int pos9 = val[8]*q;\ int pos10 = val[9]*q;\ int pos11 = val[10]*q;\ int pos12 = val[11]*q;\ int pos13 = val[12]*q;\ int pos14 = val[13]*q;\ int pos15 = val[14]*q;\ int pos16 = val[15]*q;\ \ int pos17 = val[16]*q;\ int pos18 = val[17]*q;\ int pos19 = val[18]*q;\ int pos20 = val[19]*q;\ int pos21 = val[20]*q;\ int pos22 = val[21]*q;\ int pos23 = val[22]*q;\ int pos24 = val[23]*q;\ \ int pos25 = val[24]*q;\ int pos26 = val[25]*q;\ int pos27 = val[26]*q;\ int pos28 = val[27]*q;\ int pos29 = val[28]*q;\ int pos30 = val[29]*q;\ int pos31 = val[30]*q;\ int pos32 = val[31]*q;\ \ int pos33 = val[32]*q;\ int pos34 = val[33]*q;\ int pos35 = val[34]*q;\ int pos36 = val[35]*q;\ int pos37 = val[36]*q;\ int pos38 = val[37]*q;\ int pos39 = val[38]*q;\ int pos40 = val[39]*q;\ \ int pos41 = val[40]*q;\ int pos42 = val[41]*q;\ int pos43 = val[42]*q;\ int pos44 = val[43]*q;\ int pos45 = val[44]*q;\ int pos46 = val[45]*q;\ int pos47 = val[46]*q;\ int pos48 = val[47]*q;\ \ int pos49 = val[48]*q;\ int pos50 = val[49]*q;\ int pos51 = val[50]*q;\ int pos52 = val[51]*q;\ int pos53 = val[52]*q;\ int pos54 = val[53]*q;\ int pos55 = val[54]*q;\ int pos56 = val[55]*q;\ \ int pos57 = val[56]*q;\ int pos58 = val[57]*q;\ int pos59 = val[58]*q;\ int pos60 = val[59]*q;\ int pos61 = val[60]*q;\ int pos62 = val[61]*q;\ int pos63 = val[62]*q;\ int pos64 = val[63]*q;\ \ \ \ pwm_0.setPWM(0, 0, pos1);\ pwm_0.setPWM(1, 0, pos2);\ pwm_0.setPWM(2, 0, pos3);\ pwm_0.setPWM(3, 0, pos4);\ pwm_0.setPWM(4, 0, pos5);\ pwm_0.setPWM(5, 0, pos6);\ pwm_0.setPWM(6, 0, pos7);\ pwm_0.setPWM(7, 0, pos8);\ \ pwm_0.setPWM(8, 0, pos9);\ pwm_0.setPWM(9, 0, pos10);\ pwm_0.setPWM(10, 0, pos11);\ pwm_0.setPWM(11, 0, pos12);\ pwm_0.setPWM(12, 0, pos13);\ pwm_0.setPWM(13, 0, pos14);\ pwm_0.setPWM(14, 0, pos15);\ pwm_0.setPWM(15, 0, pos16);\ \ pwm_1.setPWM(0, 0, pos17);\ pwm_1.setPWM(1, 0, pos18);\ pwm_1.setPWM(2, 0, pos19);\ pwm_1.setPWM(3, 0, pos20);\ pwm_1.setPWM(4, 0, pos21);\ pwm_1.setPWM(5, 0, pos22);\ pwm_1.setPWM(6, 0, pos23);\ pwm_1.setPWM(7, 0, pos24);\ \ pwm_1.setPWM(8, 0, pos25);\ pwm_1.setPWM(9, 0, pos26);\ pwm_1.setPWM(10, 0, pos27);\ pwm_1.setPWM(11, 0, pos28);\ pwm_1.setPWM(12, 0, pos29);\ pwm_1.setPWM(13, 0, pos30);\ pwm_1.setPWM(14, 0, pos31);\ pwm_1.setPWM(15, 0, pos32);\ \ pwm_2.setPWM(0, 0, pos33);\ pwm_2.setPWM(1, 0, pos34);\ pwm_2.setPWM(2, 0, pos35);\ pwm_2.setPWM(3, 0, pos36);\ pwm_2.setPWM(4, 0, pos37);\ pwm_2.setPWM(5, 0, pos38);\ pwm_2.setPWM(6, 0, pos39);\ pwm_2.setPWM(7, 0, pos40);\ \ pwm_2.setPWM(8, 0, pos41);\ pwm_2.setPWM(9, 0, pos42);\ pwm_2.setPWM(10, 0, pos43);\ pwm_2.setPWM(11, 0, pos44);\ pwm_2.setPWM(12, 0, pos45);\ pwm_2.setPWM(13, 0, pos46);\ pwm_2.setPWM(14, 0, pos47);\ pwm_2.setPWM(15, 0, pos48);\ \ pwm_3.setPWM(0, 0, pos49);\ pwm_3.setPWM(1, 0, pos50);\ pwm_3.setPWM(2, 0, pos51);\ pwm_3.setPWM(3, 0, pos52);\ pwm_3.setPWM(4, 0, pos53);\ pwm_3.setPWM(5, 0, pos54);\ pwm_3.setPWM(6, 0, pos55);\ pwm_3.setPWM(7, 0, pos56);\ \ pwm_3.setPWM(8, 0, pos57);\ pwm_3.setPWM(9, 0, pos58);\ pwm_3.setPWM(10, 0, pos59);\ pwm_3.setPWM(11, 0, pos60);\ pwm_3.setPWM(12, 0, pos61);\ pwm_3.setPWM(13, 0, pos62);\ pwm_3.setPWM(14, 0, pos63);\ pwm_3.setPWM(15, 0, pos64);\ \ \ \} else\{\ \ int i=600;\ \ pwm_0.setPWM(0, 0, i);\ pwm_0.setPWM(1, 0, i);\ pwm_0.setPWM(2, 0, i);\ pwm_0.setPWM(3, 0, i);\ pwm_0.setPWM(4, 0, i);\ pwm_0.setPWM(5, 0, i);\ pwm_0.setPWM(6, 0, i);\ pwm_0.setPWM(7, 0, i);\ \ pwm_0.setPWM(8, 0, i);\ pwm_0.setPWM(9, 0, i);\ pwm_0.setPWM(10, 0, i);\ pwm_0.setPWM(11, 0, i);\ pwm_0.setPWM(12, 0, i);\ pwm_0.setPWM(13, 0, i);\ pwm_0.setPWM(14, 0, i);\ pwm_0.setPWM(15, 0, i);\ \ pwm_1.setPWM(0, 0, i);\ pwm_1.setPWM(1, 0, i);\ pwm_1.setPWM(2, 0, i);\ pwm_1.setPWM(3, 0, i);\ pwm_1.setPWM(4, 0, i);\ pwm_1.setPWM(5, 0, i);\ pwm_1.setPWM(6, 0, i);\ pwm_1.setPWM(7, 0, i);\ \ pwm_1.setPWM(8, 0, i);\ pwm_1.setPWM(9, 0, i);\ pwm_1.setPWM(10, 0, i);\ pwm_1.setPWM(11, 0, i);\ pwm_1.setPWM(12, 0, i);\ pwm_1.setPWM(13, 0, i);\ pwm_1.setPWM(14, 0, i);\ pwm_1.setPWM(15, 0, i);\ \ pwm_2.setPWM(0, 0, i);\ pwm_2.setPWM(1, 0, i);\ pwm_2.setPWM(2, 0, i);\ pwm_2.setPWM(3, 0, i);\ pwm_2.setPWM(4, 0, i);\ pwm_2.setPWM(5, 0, i);\ pwm_2.setPWM(6, 0, i);\ pwm_2.setPWM(7, 0, i);\ \ pwm_2.setPWM(8, 0, i);\ pwm_2.setPWM(9, 0, i);\ pwm_2.setPWM(10, 0, i);\ pwm_2.setPWM(11, 0, i);\ pwm_2.setPWM(12, 0, i);\ pwm_2.setPWM(13, 0, i);\ pwm_2.setPWM(14, 0, i);\ pwm_2.setPWM(15, 0, i);\ \ pwm_3.setPWM(0, 0, i);\ pwm_3.setPWM(1, 0, i);\ pwm_3.setPWM(2, 0, i);\ pwm_3.setPWM(3, 0, i);\ pwm_3.setPWM(4, 0, i);\ pwm_3.setPWM(5, 0, i);\ pwm_3.setPWM(6, 0, i);\ pwm_3.setPWM(7, 0, i);\ \ pwm_3.setPWM(8, 0, i);\ pwm_3.setPWM(9, 0, i);\ pwm_3.setPWM(10, 0, i);\ pwm_3.setPWM(11, 0, i);\ pwm_3.setPWM(12, 0, i);\ pwm_3.setPWM(13, 0, i);\ pwm_3.setPWM(14, 0, i);\ pwm_3.setPWM(15, 0, i);\ \ \ \ \}\ \}\ \ \ \ \ \ \ \ }