From 8aead128f6de566c5ff51129400eb095c79acac6 Mon Sep 17 00:00:00 2001 From: mmxm Date: Sun, 26 Mar 2017 15:53:26 +0200 Subject: [PATCH 01/74] Gestion d'un seul hokuyo par raspi --- hokuyo/src/communication.c | 2 +- hokuyo/src/global.h | 4 +- hokuyo/src/hokuyo_config.c | 31 ++++++------ hokuyo/src/main.c | 101 ++++++------------------------------- 4 files changed, 34 insertions(+), 104 deletions(-) diff --git a/hokuyo/src/communication.c b/hokuyo/src/communication.c index 4ddf0e4..fbb498e 100644 --- a/hokuyo/src/communication.c +++ b/hokuyo/src/communication.c @@ -40,7 +40,7 @@ void pushData(Hok_t hok, long* data) { } char type[10]; char message[MAX_DATA*50]; - if (hok.c == 'c') + if (hok.c == 'e') strcpy(type, "one"); else strcpy(type, "two"); diff --git a/hokuyo/src/global.h b/hokuyo/src/global.h index eecfa2c..104388d 100644 --- a/hokuyo/src/global.h +++ b/hokuyo/src/global.h @@ -28,14 +28,14 @@ #define CALIB_X (TABLE_X/2) #define CALIB_Y (TABLE_Y/2) -#define HOK1_SERIAL "1102605"//"1102605" +#define HOK1_SERIAL "1102605"//one-enemy #define HOK1_X -40 // old : 25 #define HOK1_Y -40 // old : 25 #define HOK1_A M_PI // orientation #define HOK1_CONE_MIN (-M_PI/2) #define HOK1_CONE_MAX (M_PI/2)//(M_PI/2) -#define HOK2_SERIAL "1320252" +#define HOK2_SERIAL "1320252"//two-corner 1320252 #define HOK2_X 3040 // old 3025 #define HOK2_Y 1000 #define HOK2_A M_PI diff --git a/hokuyo/src/hokuyo_config.c b/hokuyo/src/hokuyo_config.c index 7f6bcd1..814c395 100644 --- a/hokuyo/src/hokuyo_config.c +++ b/hokuyo/src/hokuyo_config.c @@ -17,8 +17,8 @@ extern FILE* logfile; char expected_serial[2][20] = { - HOK1_SERIAL, - HOK2_SERIAL, + HOK1_SERIAL, //one - enemy + HOK2_SERIAL, //two - corner }; #define NR_ACM_TRY 4 @@ -26,15 +26,11 @@ char expected_serial[2][20] = { int detectHokuyos1(Hok_t *hok1, Hok_t *hok2) { char base_path[] = "/dev/ttyACMx"; - int i; + int i = 42; int j; int found = 0; //hok1->path = "/dev/ttyACMx"; - if (hok1->c == 'c') - i = 0; - else - i = 1; - fprintf(stderr, "Searching hokuyo %d\n", i); + fprintf(stderr, "Searching hokuyo \n"); for (j=0; jc); + fprintf(stderr, "Found serial %s on port %s\n i = %d\n", serial_nr, try_path, i); //fprintf(stderr, "i = %d\n", i); #endif // check if it is the right hokuyo - if (strcmp(serial_nr, expected_serial[i]) == 0) { + if (strcmp(serial_nr, expected_serial[0]) == 0) { + strcpy(hok1->path, try_path); + hok1->c = 'e'; + + i = 0; + found = 1; + } + else if (strcmp(serial_nr, expected_serial[1]) == 0) { strcpy(hok1->path, try_path); + hok1->c = 'c'; + i = 1; found = 1; } @@ -120,7 +121,7 @@ int detectHokuyos1(Hok_t *hok1, Hok_t *hok2) { } if (found) { #if DEBUG - fprintf(stderr, "Found hokuyo %d (%s) on port %s\n", i, expected_serial[i], try_path); + fprintf(stderr, "Found hokuyo (%s) on port %s, c = %c\n", expected_serial[i], try_path, hok1->c); #endif break; } diff --git a/hokuyo/src/main.c b/hokuyo/src/main.c index 01c153a..d0d1ff4 100644 --- a/hokuyo/src/main.c +++ b/hokuyo/src/main.c @@ -49,11 +49,10 @@ int main(int argc, char **argv){ // int nb_robots_to_find = 4; hok1.urg = 0; - hok2.urg = 0; // Open log file logfile = fopen("/var/log/hokuyo.log", "a+"); - //logfile = stderr; +// logfile = stderr; if (logfile == NULL) { fprintf(stderr, "Can't open log file (what do you think about beeing a sudoer ? :P )\n"); exit(EXIT_FAILURE); @@ -93,12 +92,15 @@ int main(int argc, char **argv){ fflush(logfile); hok1 = initHokuyo( HOK1_A, HOK1_CONE_MIN, HOK1_CONE_MAX, (Pt_t){HOK1_X, HOK1_Y}, 'c'); - if (detectHokuyos1(&hok1, &hok2)) { + if (detectHokuyos1(&hok1,&hok2)) { fprintf(stderr, "Failed to detect hokuyos paths\n"); //exit(EXIT_FAILURE); } else checkAndConnect(&hok1); +/***** +A remettre si deux hokuyos sur une raspi +***** hok2 = initHokuyo( HOK2_A, HOK2_CONE_MIN, HOK2_CONE_MAX, (Pt_t){HOK2_X, HOK2_Y}, 'e'); if (detectHokuyos1(&hok2, &hok1)) { @@ -107,7 +109,7 @@ int main(int argc, char **argv){ } else checkAndConnect(&hok2); - +*/ //hok2 = initHokuyo(paths[1], HOK2_A, HOK2_CONE_MIN, HOK2_CONE_MAX, (Pt_t){HOK2_X, HOK2_Y} ); //checkAndConnect(&hok2); @@ -123,9 +125,9 @@ int main(int argc, char **argv){ while(1){ long now = timeMillis(); if (now - time_last_try > TIMEOUT) { - fprintf(logfile, "%sChecking hokuyos\n", PREFIX); - checkAndConnect(&hok1); - checkAndConnect(&hok2); + fprintf(logfile, "%sChecking hokuyos hok1: %d \n", PREFIX, hok1.isWorking); + //checkAndConnect(&hok1); +// checkAndConnect(&hok2); // If an Hokuyo isn't connected, we scan the ports and try to reconect if (!hok1.isWorking) { @@ -138,7 +140,7 @@ int main(int argc, char **argv){ } } } - if (!hok2.isWorking) { +/* if (!hok2.isWorking) { if (detectHokuyos1(&hok2, &hok1)) { fprintf(stderr, "Failed to detect hokuyos paths (looking for Hokuyo 2)\n"); } else { @@ -148,6 +150,7 @@ int main(int argc, char **argv){ } } } + */ /*if (!hok2.isWorking && nb_hokuyo == 2) { if (detectHokuyos(paths, 2)) { fprintf(stderr, "Failed to detect hokuyos paths (looking for Hokuyo 2)\n"); @@ -170,8 +173,8 @@ int main(int argc, char **argv){ } void frame(){ - int nPts1 = 0, nPts2 =0; - long data1[MAX_DATA], data2[MAX_DATA]; + int nPts1 = 0 ; + long data1[MAX_DATA] ; if (hok1.isWorking) { nPts1 = urg_receiveData(hok1.urg, data1, MAX_DATA); if (nPts1 < 1){ @@ -181,7 +184,7 @@ void frame(){ } if (hok1.isWorking ) pushData(hok1, data1); - +/* if(hok2.isWorking ){ nPts2 = urg_receiveData(hok2.urg, data2, MAX_DATA); if (nPts2 < 1){ @@ -192,6 +195,7 @@ void frame(){ if (hok2.isWorking ) pushData(hok2, data2); //pushInfo('9'); + */ /*for (i=0; i Date: Tue, 28 Mar 2017 17:38:42 +0200 Subject: [PATCH 02/74] Hokuyo name and env var (1st part) --- .gitignore | 1 + hokuyo/client_hok.js | 1 + hokuyo/src/communication.c | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8b5a19e..70f7a62 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ node_modules/ npm-debug.log *.sublime* hokuyo/bin/hokuyo +Makefile CMakeCache* CMakeFiles* cmake_install* diff --git a/hokuyo/client_hok.js b/hokuyo/client_hok.js index b39eba4..4bfd61d 100644 --- a/hokuyo/client_hok.js +++ b/hokuyo/client_hok.js @@ -209,6 +209,7 @@ // Execute C program // var command = "/home/pi/coupe15/hokuyo/bin/hokuyo"; + var command = "$UTCOUPE_WORKSPACE/hokuyo/bin/hokuyo"; var args = [color]; // var options = // default : { cwd: undefined, env: process.env}; logger.info('Launching : ' + command + ' ' + args); diff --git a/hokuyo/src/communication.c b/hokuyo/src/communication.c index 16e1fb3..389a50a 100644 --- a/hokuyo/src/communication.c +++ b/hokuyo/src/communication.c @@ -41,9 +41,9 @@ void pushData(Hok_t hok, long* data) { char type[10]; char message[MAX_DATA*50]; if (hok.c == 'c') - strcpy(type, "corner"); + strcpy(type, "two"); else - strcpy(type, "enemy"); + strcpy(type, "one"); int i = hok.imin; int fin; int mid = floor((float)(hok.imax-hok.imin)/3); From 42feecb7b95a38b3f1a3a6f45630abc8b23b43f2 Mon Sep 17 00:00:00 2001 From: Mewen Date: Tue, 28 Mar 2017 18:02:26 +0200 Subject: [PATCH 03/74] Cleaning up Hokuyo --- hokuyo/client_hok_old.js | 315 -------------------- hokuyo/{client_hok.js => main.js} | 1 + hokuyo/main.sh | 2 +- hokuyo/{client_hok.simu.js => main.simu.js} | 0 hokuyo/orders.json | 2 +- server/server.class.js | 2 +- 6 files changed, 4 insertions(+), 318 deletions(-) delete mode 100644 hokuyo/client_hok_old.js rename hokuyo/{client_hok.js => main.js} (99%) rename hokuyo/{client_hok.simu.js => main.simu.js} (100%) diff --git a/hokuyo/client_hok_old.js b/hokuyo/client_hok_old.js deleted file mode 100644 index 3df0f66..0000000 --- a/hokuyo/client_hok_old.js +++ /dev/null @@ -1,315 +0,0 @@ -// TODO : -// message/objet erreur ou pas ? - -(function (){ - "use strict"; - - /* JS which will connect to the server, and then - * will execute the C program to control the Hokuyos. - * It will transfer datas from the C Hokuyo controller to AI - */ - - var log4js = require('log4js'); - var logger = log4js.getLogger('Client'); - var spawn = require('child_process').spawn; - var fs = require('fs'); - var match_name = ""; - var child_process = require('child_process'); - var child; - var SocketClient = require('../server/socket_client.class.js'); - var config = require('../config.js'); - var lastT = Date.now(); - var startingT = lastT; - - var FREQ_ENVOI_INFO = 50; // tous les 10 infos (genre 1 seconde) - var nth = 0; - - var server = process.argv[2] || config.server; - var command = process.argv[3] || config.hokuyo_command; - - var client = new SocketClient({ - server_ip: server, - type: "hokuyo", - }); - - var started = false; - var nb_active_hokuyos = -1; - var lastStatus = { - "status": "waiting" - }; - sendChildren(lastStatus); - - logger.info("Starting with pid " + process.pid); - - client.order(function(from, name, params){ - var now = Date.now(); - logger.info("Time since last order : "+(now - lastT)); - if (now - lastT > 500) { // half a second between two orders - logger.info("Just received an order `" + name + "` from " + from + " with params :"); - logger.info(params); - - lastT = now; - switch (name){ - case "start": - if(!!params.color && !started) { - started = true; - start(params.color); - } else - logger.error("ALready started or Missing parameters !"); - break; - case "shutdown": - quitC("stop"); - spawn('sudo', ['halt']); - break; - case "stop": - started = false; - quitC("stop"); - break; - case "sync_git": - spawn('/root/sync_git.sh', [], { - detached: true - }); - break; - default: - logger.warn("Name not understood : " + data); - } - } else { - logger.warn("Received two orders too closely !"); - } - }); - - function matchLogger(name, line){ - fs.appendFile('/var/log/utcoupe/'+name+'.log', line+'\n', function (err) { - if (err) logger.error('Ecriture dans le fichier de log de match "/var/log/utcoupe/'+name+'.log" impossible'); - // logger.debug('The "data to append" was appended to file!'); - }); - } - - function quitC(code){ - if(!!child){ - logger.info("Closing child "+child.pid+" at "+code); - child.kill('SIGINT'); - child = null; - } else { - logger.info("Can't close child at "+code+" : never born :P"); - logger.info("Father's pid : " + process.pid); - // process.kill(process.pid, 'SIGINT'); - } - } - - function uException(code){ - logger.error("uException sent with code "+code); - } - - function start(color){ - // We just an order to start, with the flavour :P (color, number of robots) - - sendChildren({"status": "starting"}); - - // Generates the match name (for the log file) - var tmp = new Date(); - match_name = tmp.toJSON().replace(/T/, ' ').replace(/\..+/, ''); - var now = Date.now() - lastT; - matchLogger(match_name, now+"; color:"+color); - now = lastT; - - // If there's a child, kill it - quitC("start"); - - // Exit handlers - //do something when app is closing - process.on('exit', quitC); - // catches ctrl+c event - // process.on('SIGINT', quitC); - //catches uncaught exceptions - //process.on('uncaughtException', uException); - - // Functions - function parseRobots(string) { - var dots = []; - now = Date.now() - lastT; - - if(!!string){ - var temp = string.split("#"); - for (var i = 0; i <= temp.length - 1; i++) { - temp[i] = temp[i].split(","); - dots.push({x: 0, y: 0}); - dots[i].x = parseInt(temp[i][0]); - dots[i].y = parseInt(temp[i][1]); - - // Log them : - matchLogger(match_name, now+"; dotx:"+dots[i].x+"; doty:"+dots[i].y); - } - logger.info('[J-HOK] Robots'); - logger.info(dots); - } else { - logger.info('[J-HOK] No robot detected !'); - } - - now = lastT; - - // Send all robots - client.send("ia", "hokuyo.position_tous_robots", {dots: dots}); - } - - function parseInfo(string) { - logger.info("Read info..."); - // logger.info(string); - - var prev_n_a_h = nb_active_hokuyos; - - now = Date.now() - lastT; - - switch (string.substring(0,1)){ - case "0": - // Send error : no Hokuyo working - // client.send("ia", "nb_hokuyo", {nb: 0}); - nb_active_hokuyos = 0; - break; - case "1": - // Send warning : one Hokuyo is missing - // client.send("ia", "nb_hokuyo", {nb: 1}); - nb_active_hokuyos = 1; - break; - case "2": - // Send message : Hokuyos are ok - // client.send("ia", "nb_hokuyo", {nb: 2}); - nb_active_hokuyos = 2; - break; - default: - logger.info("Error not understood : " + string); - return; - } - - if ((prev_n_a_h != nb_active_hokuyos) || (nth == FREQ_ENVOI_INFO)){ - logger.info("Info sent to server"); - sendChildren(getStatus()); - nth = 0; - } - - matchLogger(match_name, now+"; nb_hokuyo:"+nb_active_hokuyos); - now = lastT; - nth += 1; - } - - function dataFromCHandler(input) { - // input format (XXXX type and xxxx values) : "[XXXX]xxxxxxxxx" maybe many times, seperated with \n - - var inputAr = input.toString().split('\n'); - - for (var i = 0; i <= inputAr.length - 1; i++) { - if (!!inputAr[i]){ - switch (inputAr[i].substring(1,5)){ - case "HI:)": - // send "C started" to server - logger.info('C Hokuyo software says "Hi !" :)'); - sendChildren({"status": "starting"}); - break; - case "DATA": - logger.info('C Hokuyo software sends datas'); - parseRobots(inputAr[i].substring(6)); - break; - case "INFO": - logger.info('C Hokuyo software sends information :'+inputAr[i].substring(6)); - parseInfo(inputAr[i].substring(6)); - break; - case "WARN": - logger.warn('C Hokuyo software sends a warning :'+inputAr[i].substring(6)); - parseInfo(inputAr[i].substring(6)); - break; - default: - logger.info("Data "+ inputAr[i].substring(1,5) + " not understood at line " + i + " : " + inputAr[i]); - } - } - } - } - - - // Execute C program - // var command = "/home/pi/coupe15/hokuyo/bin/hokuyo"; - var args = [color]; - // var options = // default : { cwd: undefined, env: process.env}; - logger.info('Launching : ' + command + ' ' + args); - child = child_process.spawn(command, args); - - // Events - child.stdout.on('data', function(data) { - logger.debug(data.toString()); - dataFromCHandler(data); - }); - - child.on('error', function(data) { - logger.fatal('Erreur avec le process C : ' + data.toString()); - sendChildren({"status": "error", "children":[]}); - setTimeout(function(){ - sendChildren({"status": "waiting", "children":[]}); - }, 5000); - }); - - child.stderr.on('error', function(data) { - logger.fatal(data.toString()); - sendChildren({"status": "error", "children":[]}); - setTimeout(function(){ - sendChildren({"status": "waiting", "children":[]}); - }, 5000); - }); - - child.stderr.on('data', function(data) { - logger.error(data.toString()); - }); - - - child.on('close', function(code) { - started = false; - if (code == 0) - logger.info('Child closed correctly'); - else - logger.error('Child closed with code: ' + code); - - // Send message - if (code != -1) - sendChildren({"status": "waiting", "children":[]}); - }); - } - - function getStatus(){ - var data = { - "status": "", - "children": [] - }; - - switch (nb_active_hokuyos){ - case 0: - data.status = "error"; - break; - case 1: - data.status = "ok"; - data.children = ["Lonesome hokuyo"]; - break; - case 2: - data.status = "everythingIsAwesome"; - data.children = ["Hokuyo 1", "Hokuyo 2"]; - break; - } - - return data; - } - - - // Sends status to server - function sendChildren(status){ - lastStatus = status; - - client.send("server", "server.childrenUpdate", lastStatus); - client.send("ia", "hokuyo.nb_hokuyo", { nb: nb_active_hokuyos }); - } - - function isOk(){ - if(lastStatus.status != "waiting") - lastStatus = getStatus(); - - client.send("ia", "isOkAnswer", lastStatus); - client.send("server", "server.childrenUpdate", lastStatus); - client.send("ia", "hokuyo.nb_hokuyo", { nb: nb_active_hokuyos }); - } -})(); diff --git a/hokuyo/client_hok.js b/hokuyo/main.js similarity index 99% rename from hokuyo/client_hok.js rename to hokuyo/main.js index 4bfd61d..df67e12 100644 --- a/hokuyo/client_hok.js +++ b/hokuyo/main.js @@ -80,6 +80,7 @@ }); function matchLogger(name, line){ + spawn("mkdir", ["-p", "/var/log/utcoupe"]); fs.appendFile('/var/log/utcoupe/'+name+'.log', line+'\n', function (err) { if (err) logger.error('Ecriture dans le fichier de log de match "/var/log/utcoupe/'+name+'.log" impossible'); // logger.debug('The "data to append" was appended to file!'); diff --git a/hokuyo/main.sh b/hokuyo/main.sh index ab9fef5..861aa74 100644 --- a/hokuyo/main.sh +++ b/hokuyo/main.sh @@ -1,3 +1,3 @@ #!/bin/sh # echo "Launching Hokuyo Node.JS app..." -sudo LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH node /home/mewen/Bureau/UTCoupe/coupe15/hokuyo/client_hok.js & +sudo LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH node $UTCOUPE_WORKSPACE/hokuyo/main.js & diff --git a/hokuyo/client_hok.simu.js b/hokuyo/main.simu.js similarity index 100% rename from hokuyo/client_hok.simu.js rename to hokuyo/main.simu.js diff --git a/hokuyo/orders.json b/hokuyo/orders.json index ed23840..a2b68a2 100644 --- a/hokuyo/orders.json +++ b/hokuyo/orders.json @@ -4,7 +4,7 @@ Please make sure take a look at the "plan.svg" file (part Communication), it's a summary of this part of the structure : - the Raspberry Pi is linked to the server/AI wirelessly - it hosts 2 programs : - ¤ client_hok.js : always running nodeJS script, which starts the + ¤ main.js : always running nodeJS script, which starts the other when it is needed. ¤ hokuyo : (compilation of the src files), connects to the Hokuyos, recieves the spots and sends the computed robots to the nodeJS. diff --git a/server/server.class.js b/server/server.class.js index b58d9ab..a4e5571 100644 --- a/server/server.class.js +++ b/server/server.class.js @@ -193,7 +193,7 @@ module.exports = (function () { this.progs[prog] = spawn('node', ['./clients/gr/main.js']); break; case 'hokuyo': - this.progs[prog] = spawn('node', ['./hokuyo/client_hok.js']); + this.progs[prog] = spawn('node', ['./hokuyo/main.js']); break; case 'lidar': this.progs[prog] = spawn('node', ['./lidar/main.js'/*, params.color, params.nb_erobots, params.EGR_d, params.EPR_d*/]); From fd12fed2acf6972e7442d580d27060e06e8f6497 Mon Sep 17 00:00:00 2001 From: mmxm Date: Sat, 1 Apr 2017 14:40:34 +0200 Subject: [PATCH 04/74] improvement of communication on c client --- hokuyo/src/communication.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hokuyo/src/communication.c b/hokuyo/src/communication.c index fbb498e..3bf4b0c 100644 --- a/hokuyo/src/communication.c +++ b/hokuyo/src/communication.c @@ -45,7 +45,7 @@ void pushData(Hok_t hok, long* data) { else strcpy(type, "two"); int i = hok.imin; - int fin; + /*int fin; int mid = floor((float)(hok.imax-hok.imin)/3); //while(i<= hok.imax){ for (j=1 ; j<4 ; j++){ @@ -62,6 +62,14 @@ void pushData(Hok_t hok, long* data) { printf( "%s[0,0]]\n", message); fflush(stdin); } + */ + while(i<= hok.imax){ + sprintf(message, "%s[%lf,%ld]", message, hok.angles[i], data[i]); + sprintf(message, "%s,", message); + i = i +1; + } + printf( "%s[0,0]]\n", message); + fflush(stdin); } void pushInfo(char info){ From 5984b4774104a4abc2c6ee276e64f465a73a1d35 Mon Sep 17 00:00:00 2001 From: mmxm Date: Sat, 1 Apr 2017 14:42:46 +0200 Subject: [PATCH 05/74] Implementation of clustering algorithm (instable) --- lidar/lidar.class.js | 245 ++++++++++++++++++++++++++++++++++--------- lidar/main.js | 108 +++++++++---------- 2 files changed, 249 insertions(+), 104 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 1666a16..a21b0bb 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -1,6 +1,6 @@ /** * Lidar module - * + * * @module ia/Lidar * @see ia/Lidar.Lidar */ @@ -16,7 +16,7 @@ module.exports = (function () { /** * Lidar Constructor - * + * * @exports ia/Lidar.Lidar * @constructor * @param {Object} ia IA @@ -32,6 +32,7 @@ module.exports = (function () { this.sendStatus = sendStatus; this.statusTimer; + this.lastSignOfLife = {}; // of each hokuyo this.hokuyoPositions = { @@ -117,39 +118,91 @@ module.exports = (function () { this.changeStatus("waiting"); }; + function Spot(angle, distance){ + this.angle = angle; + this.distance = distance; + } + Spot.prototype.toCartesian = function(lidar, hokName) { + let ret = []; + let hokPos = lidar.hokuyoPositions[hokName]; + + // For each point, transform it to the table frame + // Get the polar pt (angle, dist) in the hokuyo cartesian frame (xh, yh) + // x is the forward axe + // y is the RIGHT axe looking from the top + // ie : the hokuyo on the back left hand corner, oriented to 0, has the same frame as the table translated a little + // thus, hokuyo positive angles are at its right hand + let cartPt = [ + this.distance * Math.cos(lidar.toRadian(this.angle)), + this.distance * Math.sin(lidar.toRadian(this.angle)) + ] + // Change to table frame + this.x = hokPos.x + cartPt[0] * Math.cos(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.sin(lidar.toRadian(hokPos.w)), + this.y = hokPos.y + cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) + + } + + function Cluster(){ + this.spots = []; + } + Cluster.prototype.calculCenter = function() { + let x = 0.0, y =0.0; + let nb = this.spots.length; + for(let i = 0; i < nb ; i++){ + x = x + this.spots[i].x; + y = y + this.spots[i].y; + } + this.x = x/nb; + this.y = y/nb; + + } /** * When Hokuyo data arrives */ Lidar.prototype.onHokuyoPolar = function (hokuyoName, polarSpots) { - - // Filter - let filteredPolar = this.filterPolar(polarSpots); - - // Polar to cartesian - let cartesianSpots = this.toCartesian(hokuyoName, filteredPolar); - + logger.warn("nb points :" + polarSpots.length) + let spots = this.createSpot(polarSpots); + this.toCartesian(hokuyoName, spots); + + //clusterize + let clusters = this.clusterize(spots) + logger.warn("nb clusters" + clusters.length); + + // First Filter - Delete unused clusters and corresponding spots : + // too big or too small clusters + let filteredSpots = this.filterPolar(clusters); + logger.warn("nb spots:" + filteredSpots.length); // Save this.lastCartSpots[hokuyoName] = {}; this.lastCartSpots[hokuyoName].isWorking = function() { return Date.now() - this.time < 2 * DELTA_T; }; // we had some data no long ago this.lastCartSpots[hokuyoName].time = Date.now(); - this.lastCartSpots[hokuyoName].spots = cartesianSpots; + this.lastCartSpots[hokuyoName].spots = filteredSpots; + this.lastCartSpots[hokuyoName].clusters = clusters; + // If we reached the DELTAT, send newly merged data - // console.log(Date.now() - this.lastDataSent); + //console.log(Date.now() - this.lastDataSent); if (Date.now() - this.lastDataSent > DELTA_T) { + // Merge spots + //logger.warn(this.lastCartSpots) this.mergedSpots = this.mergeSpots(this.lastCartSpots); + //logger.warn(this.mergedSpots); + /* Merge very close clusters provided by two different hokuyo */ + + // Filter (bis) - this.mergedSpots = this.filterCart(this.mergedSpots); + //this.mergedSpots = this.filterCart(this.mergedSpots); // Find enemy robots this.robotsSpots = this.findRobots(this.mergedSpots); + this.displaySpots = this.prepareData(this.mergedSpots); //renvoie un tableau de coordonnées prêt à être affiché // Prepare data let toBeSent = { hokuyos: this.hokuyosWorking(), - cartesianSpots: this.mergedSpots, + cartesianSpots: this.displaySpots, robotsSpots: this.robotsSpots }; @@ -159,6 +212,7 @@ module.exports = (function () { } this.updateStatus(); + }; Lidar.prototype.hokuyosWorking = function() { @@ -178,40 +232,114 @@ module.exports = (function () { return hokuyos; }; + Lidar.prototype.createSpot = function(polarSpots){ + let ret = []; + for(let i = 0; i < polarSpots.length ; i ++){ + var point = new Spot(polarSpots[i][0], polarSpots[i][1]); + ret.push(point); + } + return ret; + }; - Lidar.prototype.filterPolar = function(polarSpots) { - let ret; - - logger.warn("TODO: filterPolar"); - ret = polarSpots; // TMP + Lidar.prototype.clusterize = function(spotsIn) { + /***** + classe les points en cluster en fonction des parametres k et D + D : distance maximale entre deux points d'un même cluster + k : la distance est calculée entre le point i et les k points précédents + *****/ + var clusters = [], k = 5; + if(spotsIn.length < k){ + return clusters; + } + var g = 0, D = 3; + var G = []; //le point Spot[i] appartient au groupe G[i] + var d=[]; + + var jmin, dmin, x, y + clusters[0] = new Cluster; + clusters[0].spots = new Array; + /* A modifier !! + On met les k premiers points dans un même cluster + */ + + let nulSpot = new Spot; + nulSpot.angle = 0; nulSpot.distance = 0;nulSpot.x = 0; nulSpot.y = 0; + + for (i = 0; i < k; i++){ + spotsIn.unshift(nulSpot); + G.push(0); + clusters[0].spots.push(spotsIn[i]); + } + for (var i = k; i < spotsIn.length; i++){ + G.push(0); + if (spotsIn[i].distance > 1){ + jmin = 1; + dmin = 0; + for (var j = 1; j <= k; j++){ + x = spotsIn[i].x - spotsIn[i - j].x; + y = spotsIn[i].y - spotsIn[i - j].y ; + d[j] =Math.sqrt(x*x + y*y); + if (d[j] <= d[jmin]){ + dmin = d[j]; + jmin = j; + } + } + + if (dmin < D) { + if (G[i - jmin] == 0){ + g = g + 1; + G[i - jmin] = g; + + clusters[g] = new Cluster; + clusters[g].spots = new Array; + } + + g = G[i - jmin]; + G[i] = g; + clusters[g].spots.push(spotsIn[i]) ; + } + } + } + for (i = 0; i < k; i++){ + spotsIn.shift(); + } + clusters.shift(); + return clusters; + }; + /* Delete unused clusters in clusters + Return filteredSpots */ + Lidar.prototype.filterPolar = function(clusters) { + let filteredClusters = []; + let filteredSpots = []; + let count = [], count1 = [], count3 = 0; + for(let i = 0; i < clusters.length ; i++){ + count.push(clusters[i].spots.length); + clusters[i].calculCenter(); + if (clusters[i].spots.length >= 3 && clusters[i].spots.length <= 10 + && clusters[i].x <300 && clusters[i].x > 0 + && clusters[i].y <200 && clusters[i].y > 0){ + count3 = count3 +1; + count1.push(clusters[i].spots.length); + filteredClusters.push(clusters[i]); + for(let j = 0; j < clusters[i].spots.length ; j++){ + filteredSpots.push(clusters[i].spots[j]) + } - return ret; + } + } + clusters = filteredClusters; + //logger.warn(count, count1, count3); + return filteredSpots; }; - Lidar.prototype.toCartesian = function(hokName, polarSpots) { - let ret = []; + Lidar.prototype.toCartesian = function(hokName, spots) { let hokPos = this.hokuyoPositions[hokName]; // For each point, transform it to the table frame - for(let pt of polarSpots){ - // Get the polar pt (angle, dist) in the hokuyo cartesian frame (xh, yh) - // x is the forward axe - // y is the RIGHT axe looking from the top - // ie : the hokuyo on the back left hand corner, oriented to 0, has the same frame as the table translated a little - // thus, hokuyo positive angles are at its right hand - let cartPt = [ - pt[1] * Math.cos(this.toRadian(pt[0])), - pt[1] * Math.sin(this.toRadian(pt[0])) - ] - - // Change to table frame - ret.push([ - hokPos.x + cartPt[0] * Math.cos(this.toRadian(hokPos.w)) + cartPt[1] * Math.sin(this.toRadian(hokPos.w)), - hokPos.y + cartPt[0] * Math.sin(this.toRadian(hokPos.w)) + cartPt[1] * Math.cos(this.toRadian(hokPos.w)) - ]); + for(let i = 0; i < spots.length ; i++){ + spots[i].toCartesian(this,hokName); } - return ret; }; Lidar.prototype.filterCart = function(cartSpots) { @@ -235,43 +363,60 @@ module.exports = (function () { return ret; }; + Lidar.prototype.mergeSpots = function(cartSpots) { let ret = []; let workingHokuyos = this.hokuyosWorking(); - logger.warn("TODO: take half of the points"); - logger.warn("TODO: check that cartSpots[workingHokuyos[0].name].spots works"); + //logger.warn("TODO: take half of the points"); + //logger.warn("TODO: check that cartSpots[workingHokuyos[0].name].spots works"); if (workingHokuyos.length == 2) { for(let spot of cartSpots.one.spots) { - ret.push( spot ); + if(spot.x < 300 && spot.y < 200){ + ret.push(spot); + } } for(let spot of cartSpots.two.spots) { - ret.push( spot ); + if(spot.x < 300 && spot.y < 200 ){ + ret.push(spot); + } } } else if (workingHokuyos.length == 1) { for(let spot of cartSpots[workingHokuyos[0].name].spots) { - ret.push( spot ); + if(spot.x < 300 && spot.x > 0 && spot.y < 200 && spot.y > 0){ + ret.push(spot); + } } } else if (workingHokuyos.length == 0) { logger.warn("Trying to merge point without active hokuyo"); } - return ret; }; Lidar.prototype.findRobots = function(cartSpots) { - let ret; + let ret = []; + let clusters = this.clusterize(cartSpots); - logger.warn("TODO: findRobots"); - ret = [ + for (let i = 0 ; i < clusters.length ; i++){ + clusters[i].calculCenter(); + ret.push([clusters[i].x, clusters[i].y]); + } + /*ret = [ [ 150, 100 ], [ 100, 135 ] - ]; // TMP - + ]; // TMP */ + //logger.warn(ret); return ret; }; + Lidar.prototype.prepareData = function(spots){ + let ret = []; + for(let i = 0; i < spots.length ; i++){ + ret.push([spots[i].x, spots[i].y]) + } + return ret; + } Lidar.prototype.toRadian = function(angleInDegree) { let angleInRadian; @@ -290,4 +435,4 @@ module.exports = (function () { }; return Lidar; -})(); \ No newline at end of file +})(); diff --git a/lidar/main.js b/lidar/main.js index 5171e54..a832d26 100644 --- a/lidar/main.js +++ b/lidar/main.js @@ -32,57 +32,57 @@ }); client.connect(function(){ - - // setTimeout(function() { - // client.send("lidar", "start", { - // color: "yellow" - // }); // TMP - // }, 300); - - // setTimeout(function() { - // client.send("lidar", "hokuyo.polar_raw_data", { - // hokuyo: "one", - // polarSpots: [ - // [ -40, 200 ], - // [ -35, 200 ], - // [ -30, 200 ], - // [ -25, 230 ], - // [ -20, 100 ], - // [ -15, 105 ], - // [ -5, 120 ], - // [ 0, 100 ], - // [ 5, 90 ], - // [ 10, 95 ], - // [ 15, 100 ], - // [ 20, 100 ], - // [ 25, 130 ], - // [ 30, 135 ] - // ] - // }); // TMP - // }, 1000); - - - // setTimeout(function() { - // client.send("lidar", "hokuyo.polar_raw_data", { - // hokuyo: "two", - // polarSpots: [ - // [ -40, 155 ], - // [ -30, 155 ], - // [ -35, 150 ], - // [ -25, 150 ], - // [ -20, 100 ], - // [ -15, 105 ], - // [ -5, 120 ], - // [ 0, 100 ], - // [ 5, 90 ], - // [ 10, 95 ], - // [ 15, 100 ], - // [ 20, 100 ], - // [ 25, 230 ], - // [ 30, 235 ] - // ] - // }); // TMP - // }, 1100); +/* + setTimeout(function() { + client.send("lidar", "start", { + color: "yellow" + }); // TMP + }, 300); + + setTimeout(function() { + client.send("lidar", "hokuyo.polar_raw_data", { + hokuyo: "one", + polarSpots: [ + [ -40, 200 ], + [ -35, 200 ], + [ -30, 200 ], + [ -25, 230 ], + [ -20, 100 ], + [ -15, 105 ], + [ -5, 120 ], + [ 0, 100 ], + [ 5, 90 ], + [ 10, 95 ], + [ 15, 100 ], + [ 20, 100 ], + [ 25, 130 ], + [ 30, 135 ] + ] + }); // TMP + }, 1000); + + + setTimeout(function() { + client.send("lidar", "hokuyo.polar_raw_data", { + hokuyo: "two", + polarSpots: [ + [ -40, 155 ], + [ -30, 155 ], + [ -35, 150 ], + [ -25, 150 ], + [ -20, 100 ], + [ -15, 105 ], + [ -5, 120 ], + [ 0, 100 ], + [ 5, 90 ], + [ 10, 95 ], + [ 15, 100 ], + [ 20, 100 ], + [ 25, 230 ], + [ 30, 235 ] + ] + }); // TMP + }, 1100);*/ client.order(function(from, name, params){ @@ -90,8 +90,8 @@ // var now = Date.now(); // logger.info("Time since last order : "+(now - lastT)); // if (now - lastT > 500) { // half a second between two orders - logger.info("Just received an order `" + name + "` from " + from + " with params :"); - logger.info(params); + //logger.info("Just received an order `" + name + "` from " + from + " with params :"); + //logger.info(params); // lastT = now; switch (name){ @@ -106,7 +106,7 @@ } break; case "hokuyo.polar_raw_data": - if (hokMng.started) { + if (hokMng.started = 1) { //a modifier hokMng.onHokuyoPolar(params.hokuyo, params.polarSpots); } else { logger.warn("Start the Lidar before sending data !"); From 9730d50c802fe777c7c03f0bc108c13e6a4583c3 Mon Sep 17 00:00:00 2001 From: mmxm Date: Sat, 1 Apr 2017 16:36:01 +0200 Subject: [PATCH 06/74] send one block of data --- hokuyo/src/communication.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hokuyo/src/communication.c b/hokuyo/src/communication.c index 3bf4b0c..cc971cc 100644 --- a/hokuyo/src/communication.c +++ b/hokuyo/src/communication.c @@ -45,8 +45,8 @@ void pushData(Hok_t hok, long* data) { else strcpy(type, "two"); int i = hok.imin; + //int mid = floor((float)(hok.imax-hok.imin)/3); /*int fin; - int mid = floor((float)(hok.imax-hok.imin)/3); //while(i<= hok.imax){ for (j=1 ; j<4 ; j++){ strcpy(message, "[DATA]"); @@ -63,12 +63,15 @@ void pushData(Hok_t hok, long* data) { fflush(stdin); } */ - while(i<= hok.imax){ + strcpy(message, "[DATA]"); + sprintf(message, "%s%s#[", message, type); + while(i < hok.imax){ sprintf(message, "%s[%lf,%ld]", message, hok.angles[i], data[i]); sprintf(message, "%s,", message); i = i +1; } printf( "%s[0,0]]\n", message); + //printf("ok"); fflush(stdin); } From 10c3a01fcc66151f57379e4b3cef927e871a2d86 Mon Sep 17 00:00:00 2001 From: Mewen Date: Sat, 1 Apr 2017 16:37:33 +0200 Subject: [PATCH 07/74] Removing hokuyo color --- hokuyo/main.js | 20 ++++--- hokuyo/src/main.c | 12 ++-- ia/hokuyo.class.js | 57 ------------------- webclient/pages/telecommande/telecommande.js | 4 +- .../pages/telecommande/telecommande.tpl.html | 4 +- 5 files changed, 22 insertions(+), 75 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index df67e12..81f09e3 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -27,6 +27,12 @@ var server = process.argv[2] || config.server; var command = process.argv[3] || config.hokuyo_command; + + if (!process.env.UTCOUPE_WORKSPACE) { + logger.error("Missing UTCOUPE_WORKSPACE environment variable. Make sure to call 'sudo -E node ...'"); + process.exit(1); + } + var client = new SocketClient({ server_ip: server, type: "hokuyo", @@ -51,12 +57,12 @@ lastT = now; switch (name){ case "start": - if(!!params.color && !started) { + if(!started) { started = true; logger.info("Receive order to start"); - start(params.color); + start(); } else - logger.error("ALready started or Missing parameters !"); + logger.error("ALready started !"); break; case "shutdown": quitC("stop"); @@ -103,7 +109,7 @@ logger.error("uException sent with code "+code); } - function start(color){ + function start(){ // We just an order to start, with the flavour :P (color, number of robots) sendChildren({"status": "starting"}); @@ -112,7 +118,7 @@ var tmp = new Date(); match_name = tmp.toJSON().replace(/T/, ' ').replace(/\..+/, ''); var now = Date.now() - lastT; - matchLogger(match_name, now+"; color:"+color); + matchLogger(match_name, now); now = lastT; // If there's a child, kill it @@ -210,8 +216,8 @@ // Execute C program // var command = "/home/pi/coupe15/hokuyo/bin/hokuyo"; - var command = "$UTCOUPE_WORKSPACE/hokuyo/bin/hokuyo"; - var args = [color]; + var command = process.env.UTCOUPE_WORKSPACE + "/bin/hokuyo"; + var args = []; // [color]; // var options = // default : { cwd: undefined, env: process.env}; logger.info('Launching : ' + command + ' ' + args); child = child_process.spawn(command, args); diff --git a/hokuyo/src/main.c b/hokuyo/src/main.c index d0d1ff4..3b265c5 100644 --- a/hokuyo/src/main.c +++ b/hokuyo/src/main.c @@ -62,11 +62,11 @@ int main(int argc, char **argv){ atexit(exit_handler); // en cas de signal de fermeture, on déconnecte proprement - if(argc <= 1 || ( strcmp(argv[1], "green") != 0 && strcmp(argv[1], "yellow") ) ){ - // fprintf(stderr, "usage: hokuyo {green|yellow} [nbr_robots]\n"); - fprintf(stderr, "usage: hokuyo {green|yellow}\n"); - exit(EXIT_FAILURE); - } + // if(argc <= 1 || ( strcmp(argv[1], "green") != 0 && strcmp(argv[1], "yellow") ) ){ + // // fprintf(stderr, "usage: hokuyo {green|yellow} [nbr_robots]\n"); + // fprintf(stderr, "usage: hokuyo {green|yellow}\n"); + // exit(EXIT_FAILURE); + // } if (signal(SIGINT, catch_SIGINT) == SIG_ERR) { fprintf(stderr, "An error occurred while setting a signal handler for SIGINT.\n"); @@ -117,7 +117,7 @@ A remettre si deux hokuyos sur une raspi initSDL(); #endif - fprintf(logfile, "%sStarting hokuyo :\n%sLooking for %s robots\n", PREFIX, PREFIX, argv[1]); + fprintf(logfile, "%sStarting hokuyo :\n" /*"%sLooking for %s robots\n"*/, PREFIX/*, PREFIX, argv[1]*/); fflush(stdout); timeStart = timeMillis(); long time_last_try = 0; diff --git a/ia/hokuyo.class.js b/ia/hokuyo.class.js index 66890e9..e3eecca 100644 --- a/ia/hokuyo.class.js +++ b/ia/hokuyo.class.js @@ -460,63 +460,6 @@ module.exports = (function () { } }; - // Hokuyo.prototype.detectCollision = function() { - // var collision = false; - // var pf = this.ia.pr.path; - // var ebots = [{ // estimated positions - // x:this.ia.data.erobot[0].pos.x + this.ia.data.erobot[0].speed.x*DELTA_T, - // y:this.ia.data.erobot[0].pos.y + this.ia.data.erobot[0].speed.y*DELTA_T, - // d:this.ia.data.erobot[0].d - // }]; - - // if (this.ia.data.nb_erobots == 2) { - // ebots.push = { - // x:this.ia.data.erobot[1].pos.x + this.ia.data.erobot[1].speed.x*DELTA_T, - // y:this.ia.data.erobot[1].pos.y + this.ia.data.erobot[1].speed.y*DELTA_T, - // d:this.ia.data.erobot[1].d - // }; - // } - - // // for each path segment - // var complete_path = [this.ia.pr.pos].concat(this.ia.pr.path); - // for (var i = 0; i < complete_path.length-1 && !collision; (i++) ) { - // var segment = [complete_path[i], complete_path[i+1]]; // so segment[0][0] is the x value of the beginning of the segment - // var segLength = this.getDistance({x:segment[0].x , y:segment[0].y }, {x:segment[1].x , y:segment[1].y }); - // var nthX = (segment[1].x-segment[0].x)*SEGMENT_DELTA_D/segLength; // segment X axis length nth - // var nthY = (segment[1].y-segment[0].y)*SEGMENT_DELTA_D/segLength; - - // // for each X cm of the segment - // for (var j = 0; (j*SEGMENT_DELTA_D) < segLength && !collision; (j++)) { - - // var segPoint = { - // x: segment[0].x + nthX*j, - // y: segment[0].y + nthY*j - // }; - - // // distance to each estimated position of the ennemi robots - // var minDist = this.getDistance(ebots[0], segPoint); - - // /* - // if (ebots.length == 2) { - // var tmp = this.getDistance(ebots[1], segPoint); - // if (tmp < minDist) { - // minDist = tmp; - // } - // }*/ - - // // if one of the dist < security diameter, there will be a collision - // if (minDist < SECURITY_COEF*ebots[0].d/2.0) { - // collision = true; - // } - - // } - // } - - // if (collision) { - // this.ia.pr.collision(); - // } - // }; - /** * Updates number of robots * diff --git a/webclient/pages/telecommande/telecommande.js b/webclient/pages/telecommande/telecommande.js index d4ce546..ad5c91b 100644 --- a/webclient/pages/telecommande/telecommande.js +++ b/webclient/pages/telecommande/telecommande.js @@ -174,9 +174,7 @@ angular.module('app').controller('TelecommandeCtrl', ['$rootScope', '$scope', 'C $(document).on("click", "#rc_hok_start", function(e) { - Client.send("hokuyo", "start", { - "color": $("#rc_hok_color").val(), - "nbrobots": parseInt($("#rc_hok_nbrobots").val())}); + Client.send("hokuyo", "start", {}); console.log("Message `start` sent"); }); diff --git a/webclient/pages/telecommande/telecommande.tpl.html b/webclient/pages/telecommande/telecommande.tpl.html index 1f5ac1a..f018596 100644 --- a/webclient/pages/telecommande/telecommande.tpl.html +++ b/webclient/pages/telecommande/telecommande.tpl.html @@ -89,7 +89,7 @@

PR



Hokuyo

- Nb robots : + From b761516aed070c3638f7d52b497aa46ac981594c Mon Sep 17 00:00:00 2001 From: mmxm Date: Sat, 1 Apr 2017 17:26:15 +0200 Subject: [PATCH 08/74] create buffer to handle data sent by c program --- hokuyo/main.js | 33 +++++++++++++++++++++++++++------ hokuyo/src/communication.c | 18 +++++++++++------- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index df67e12..c175e04 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -20,6 +20,8 @@ var config = require('../config.js'); var lastT = Date.now(); var startingT = lastT; + var bufferData; + var count = 0; var FREQ_ENVOI_INFO = 50; // tous les 10 infos (genre 1 seconde) var nth = 0; @@ -128,11 +130,30 @@ // Functions function parseData(string) { - + //logger.warn(string.length); var temp = string.split("#") + if(temp[1] == "0" && count == 0){ + bufferData = temp[2]; + count = count + 1; + } + else { + if(temp[1] == "1" && count == 1){ + bufferData = bufferData + temp[2]; + count = count + 1; + } + else { + if(temp[1] == "2" && count == 2){ + bufferData = bufferData + temp[2]; + client.send("lidar", "hokuyo.polar_raw_data", { "hokuyo": temp[0], "polarSpots" : JSON.parse(bufferData) }); + count = 0; + logger.warn(JSON.parse(bufferData)); + } + } + } + // Send all robots - client.send("webclient", "hokuyo.polar_raw_data", { "hokuyo": temp[0], "polarSpots" : JSON.parse(temp[1]) }); - logger.info(string); + + } function parseInfo(string) { @@ -189,7 +210,7 @@ sendChildren({"status": "starting"}); break; case "DATA": - logger.info('C Hokuyo software sends datas'); + //logger.info('C Hokuyo software sends datas'); parseData(inputAr[i].substring(6)); break; case "INFO": @@ -210,7 +231,7 @@ // Execute C program // var command = "/home/pi/coupe15/hokuyo/bin/hokuyo"; - var command = "$UTCOUPE_WORKSPACE/hokuyo/bin/hokuyo"; + var command = "/home/francois/dev/utcoupe/coupe17/bin/hokuyo"; var args = [color]; // var options = // default : { cwd: undefined, env: process.env}; logger.info('Launching : ' + command + ' ' + args); @@ -219,7 +240,7 @@ // Events child.stdout.on('data', function(data) { - logger.debug(data.toString()); + //logger.debug(data.toString()); dataFromCHandler(data); }); diff --git a/hokuyo/src/communication.c b/hokuyo/src/communication.c index cc971cc..7bc354f 100644 --- a/hokuyo/src/communication.c +++ b/hokuyo/src/communication.c @@ -45,13 +45,15 @@ void pushData(Hok_t hok, long* data) { else strcpy(type, "two"); int i = hok.imin; - //int mid = floor((float)(hok.imax-hok.imin)/3); - /*int fin; + int mid = floor((float)(hok.imax-hok.imin)/3); + int fin; //while(i<= hok.imax){ for (j=1 ; j<4 ; j++){ strcpy(message, "[DATA]"); fin = hok.imin + j * mid; - sprintf(message, "%s%s#[", message, type); + sprintf(message, "%s%s#%d#", message, type, j-1); + if(j == 1) + sprintf(message, "%s[", message); while(i<= fin){ @@ -59,11 +61,13 @@ void pushData(Hok_t hok, long* data) { sprintf(message, "%s,", message); i = i +1; } - printf( "%s[0,0]]\n", message); + if(j == 3) + sprintf(message, "%s[0,0]]", message); + printf( "%s\n", message); fflush(stdin); } - */ - strcpy(message, "[DATA]"); + + /*strcpy(message, "[DATA]"); sprintf(message, "%s%s#[", message, type); while(i < hok.imax){ sprintf(message, "%s[%lf,%ld]", message, hok.angles[i], data[i]); @@ -72,7 +76,7 @@ void pushData(Hok_t hok, long* data) { } printf( "%s[0,0]]\n", message); //printf("ok"); - fflush(stdin); + fflush(stdin);*/ } void pushInfo(char info){ From b0780e1314f8fe0c9d9d61168445fcaadbbd6b3c Mon Sep 17 00:00:00 2001 From: Mamal Date: Sat, 1 Apr 2017 18:35:20 +0200 Subject: [PATCH 09/74] Set up of the new struture of Client --- clients/Asserv/Asserv.class.js | 151 +++++ clients/Asserv/AsservReal.class.js | 7 + clients/Asserv/AsservSimu.class.js | 8 + clients/Robot/grobot.class.js | 8 + clients/Robot/robot.class.js | 8 + clients/Robot/tibot.class.js | 8 + clients/client.class.js | 27 + clients/fifo.class.js | 67 ++ clients/old_files/gr/actuators.class.js | 177 +++++ clients/old_files/gr/detect.class.js | 59 ++ clients/old_files/gr/main.js | 199 ++++++ clients/old_files/gr/servos.class.js | 93 +++ clients/old_files/gr/servos.simu.class.js | 41 ++ clients/old_files/pr/actuators.class.js | 605 ++++++++++++++++++ clients/old_files/pr/ax12.class.js | 237 +++++++ clients/old_files/pr/ax12.simu.class.js | 84 +++ clients/old_files/pr/detect.class.js | 93 +++ clients/old_files/pr/elevator.class.js | 123 ++++ clients/old_files/pr/main.js | 184 ++++++ clients/old_files/pr/others.class.js | 313 +++++++++ clients/old_files/pr/others.simu.class.js | 194 ++++++ clients/old_files/shared/asserv.class.js | 437 +++++++++++++ clients/old_files/shared/asserv.simu.class.js | 359 +++++++++++ clients/old_files/shared/defineParser.js | 49 ++ clients/old_files/shared/fifo.class.js | 67 ++ .../shared/genericRobotClient.class.js | 81 +++ clients/old_files/shared/test.js | 12 + 27 files changed, 3691 insertions(+) create mode 100644 clients/Asserv/Asserv.class.js create mode 100644 clients/Asserv/AsservReal.class.js create mode 100644 clients/Asserv/AsservSimu.class.js create mode 100644 clients/Robot/grobot.class.js create mode 100644 clients/Robot/robot.class.js create mode 100644 clients/Robot/tibot.class.js create mode 100644 clients/client.class.js create mode 100644 clients/fifo.class.js create mode 100644 clients/old_files/gr/actuators.class.js create mode 100644 clients/old_files/gr/detect.class.js create mode 100644 clients/old_files/gr/main.js create mode 100644 clients/old_files/gr/servos.class.js create mode 100644 clients/old_files/gr/servos.simu.class.js create mode 100644 clients/old_files/pr/actuators.class.js create mode 100644 clients/old_files/pr/ax12.class.js create mode 100644 clients/old_files/pr/ax12.simu.class.js create mode 100644 clients/old_files/pr/detect.class.js create mode 100644 clients/old_files/pr/elevator.class.js create mode 100644 clients/old_files/pr/main.js create mode 100644 clients/old_files/pr/others.class.js create mode 100644 clients/old_files/pr/others.simu.class.js create mode 100644 clients/old_files/shared/asserv.class.js create mode 100644 clients/old_files/shared/asserv.simu.class.js create mode 100644 clients/old_files/shared/defineParser.js create mode 100644 clients/old_files/shared/fifo.class.js create mode 100644 clients/old_files/shared/genericRobotClient.class.js create mode 100644 clients/old_files/shared/test.js diff --git a/clients/Asserv/Asserv.class.js b/clients/Asserv/Asserv.class.js new file mode 100644 index 0000000..ae66e22 --- /dev/null +++ b/clients/Asserv/Asserv.class.js @@ -0,0 +1,151 @@ + + + +module.exports = class Asserv{ + constructor(client, who, fifo){ + /** @type {Log4js} */ + this.logger = require('log4js').getLogger('asserv'); + + /** @type {Object} */ + this.client = client; + + /** @type {Object} */ + this.who = who; + + /** @type {Object} */ + this.pos = {}; + + /** @type {clients/Asserv/asserv.asserv} */ + this.fifo = fifo; + } + + /** + * Convert Angle + * + * @param {int} a Angle + */ + // Attention, c'est une fonction a la base, pas une methode + convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); } + + /** + * Set Angle + * + * @param {int} a Angle + */ + setA(a) { + this.pos.a = convertA(a); + } + + /** + * Position ? + * + * @param {Object} pos + */ + Pos(pos) { + this.pos.x = pos.x; + this.pos.y = pos.y; + this.setA(pos.a); + } + + /** + * Sets Position + * + * @param {Object} pos + * @param {Object} callback + */ + setPos(pos, callback){} + + /** + * Gets Position + * + * @param {Object} pos + */ + getPos(pos) { + this.client.send('ia', this.who+'.getpos'); + } + + + /** + * Sends Position + */ + sendPos() { + this.client.send('ia', this.who+'.pos', this.pos); + } + + /** + * Calage X + * + * @param {int} x + * @param {int} a Angle + * @param {Object} callback + */ + calageX(x, a, callback){} + + /** + * Calage Y + * + * @param {int} y + * @param {int} a Angle + * @param {Object} callback + */ + calageX(y, a, callback){} + + /** + * Set Vitesse + * + * @param {int} v Speed + * @param {float} r Rotation + * @param {Object} callback + */ + setVitesse(v, r, callback){} + + /** + * Speed ? + * + * @param {int} l + * @param {int} a Angle + * @param {int} ms + * @param {Object} callback + */ + speed(l, a, ms, callback){} + + /** + * Pulse Width Modulation + * + * @param {int} left + * @param {int} right + * @param {int} ms + * @param {Object} callback + */ + pwm(left, right, ms, callback){} + + /** + * Go X Y + * + * @param {int} x + * @param {int} y + * @param {string} sens + * @param {Object} callback + * @param {boolean} no_fifo + */ + goxy(x, y, sens, callback, no_fifo){} + + /** + * Simu Go Angle + * + * @param {int} a Angle + * @param {Object} callback + * @param {boolean} no_fifo + */ + goa(a, callback, no_fifo){} + + /** + * Set P I D + * + * @param {int} p + * @param {int} i + * @param {int} d + * @param {Object} callback + */ + setPid(p, i, d, callback){} +} \ No newline at end of file diff --git a/clients/Asserv/AsservReal.class.js b/clients/Asserv/AsservReal.class.js new file mode 100644 index 0000000..22f5b87 --- /dev/null +++ b/clients/Asserv/AsservReal.class.js @@ -0,0 +1,7 @@ + + +module.exports = class AsservReal extends Asserv{ + constructor(){ + + } +} \ No newline at end of file diff --git a/clients/Asserv/AsservSimu.class.js b/clients/Asserv/AsservSimu.class.js new file mode 100644 index 0000000..b3fe2e5 --- /dev/null +++ b/clients/Asserv/AsservSimu.class.js @@ -0,0 +1,8 @@ + + + +module.exports = class AsservSimu extends Asserv{ + constructor(){ + + } +} \ No newline at end of file diff --git a/clients/Robot/grobot.class.js b/clients/Robot/grobot.class.js new file mode 100644 index 0000000..084e592 --- /dev/null +++ b/clients/Robot/grobot.class.js @@ -0,0 +1,8 @@ + + + +module.exports = class Grobot extends Robot{ + constructor(){ + + } +} \ No newline at end of file diff --git a/clients/Robot/robot.class.js b/clients/Robot/robot.class.js new file mode 100644 index 0000000..3cc9d96 --- /dev/null +++ b/clients/Robot/robot.class.js @@ -0,0 +1,8 @@ + + + +module.exports = class Robot extends Client{ + constructor(){ + + } +} \ No newline at end of file diff --git a/clients/Robot/tibot.class.js b/clients/Robot/tibot.class.js new file mode 100644 index 0000000..63dc1da --- /dev/null +++ b/clients/Robot/tibot.class.js @@ -0,0 +1,8 @@ + + + +module.exports = class Tibot extends Robot{ + constructor(){ + + } +} \ No newline at end of file diff --git a/clients/client.class.js b/clients/client.class.js new file mode 100644 index 0000000..59a9d57 --- /dev/null +++ b/clients/client.class.js @@ -0,0 +1,27 @@ + + + +module.exports = class Client { + constructor(status){ + this.Log4js = require('log4js'); + this.SocketClient = require('../../server/socket_client.class.js'); + this.parser = null; + this.status = status; + } + + send(){ + + } + + start(){ + + } + + stop(){ + + } + + status(){ + + } +} \ No newline at end of file diff --git a/clients/fifo.class.js b/clients/fifo.class.js new file mode 100644 index 0000000..8d359f1 --- /dev/null +++ b/clients/fifo.class.js @@ -0,0 +1,67 @@ +/** + * First In First Out module + * + * @module clients/shared/fifo + * @see {@link clients/shared/fifo.Fifo} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('Fifo'); + + /** + * Fifo Constructor + * + * @exports clients/shared/fifo.Fifo + * @constructor + */ + function Fifo() { + this.clean(); + } + + /** + * Clean + */ + Fifo.prototype.clean = function(callback) { + /** fifo */ + this.fifo = []; + /** @type {boolean} */ + this.order_in_progress = false; + } + + /** + * Order finished + */ + Fifo.prototype.orderFinished = function() { + this.order_in_progress = false; + this.nextOrder(); + } + + /** + * New Order + * + * @param {Object} callback + * @param {string} [name] + */ + Fifo.prototype.newOrder = function(callback, name) { + if (name === undefined) + name = ""; + this.fifo.push({callback: callback, name: name}); + this.nextOrder(); + } + + /** + * Next Order + */ + Fifo.prototype.nextOrder = function() { + if(!this.order_in_progress && this.fifo.length > 0) { + // logger.debug(this.fifo.length); + this.order_in_progress = true; + object = this.fifo.shift(); + // logger.debug("Calling : "+object.name); + object.callback(); + } + } + + + return Fifo; +})(); diff --git a/clients/old_files/gr/actuators.class.js b/clients/old_files/gr/actuators.class.js new file mode 100644 index 0000000..13d64e1 --- /dev/null +++ b/clients/old_files/gr/actuators.class.js @@ -0,0 +1,177 @@ +/** + * Actuators module + * + * @module clients/gr/actuators + * @requires module:clients/shared/fifo + * @requires module:clients/gr/servos + * @requires module:clients/gr/servos-simu + * @requires module:clients/shared/asserv + * @requires module:clients/shared/asserv-simu + * @see {@link clients/gr/actuators.Acts} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('gr.acts'); + /** @type {Object} */ + var SerialPort = require("serialport"); + /** @type {clients/shared/fifo.Fifo} */ + var fifo = new (require('../shared/fifo.class.js'))(); + + /** @type {clients/gr/servos.Servos} */ + var servos = null; + /** @type {clients/gr/asserv.Asserv} */ + var asserv = null; + var date = new Date(); + /** @type {int} */ + var lastSendStatus = date.getTime(); + + /** + * Acts Constructor + * + * @exports clients/gr/actuators.Acts + * @constructor + * @param {Object} client + * @param {Object} sendChildren + */ + function Acts(client, sendChildren) { + /** @type {Object} */ + this.client = client; + /** @type {Object} */ + this.sendChildren = sendChildren; + this.start(); + } + + /** + * Starts (nothing ?) + */ + Acts.prototype.start = function(){ + + }; + + /** + * Cleans fifo and asserv + */ + Acts.prototype.clean = function(){ + fifo.clean(); // A priori déjà vide + asserv.clean(); + }; + + /** + * Connect to the servos + * + * @param {Object} [struct] + */ + Acts.prototype.connectTo = function(struct){ + if (!struct.servos) { + logger.fatal("Lancement des servos gr en mode simu !"); + servos = new (require('./servos.simu.class.js'))(); + } else { + servos = new (require('./servos.class.js'))(struct.servos, this.sendStatus); + } + if (!struct.asserv) { + logger.fatal("Lancement de l'asserv gr en mode simu !"); + asserv = new (require('../shared/asserv.simu.class.js'))(this.client, 'gr', fifo); + } else { + asserv = new (require('../shared/asserv.class.js'))( + new SerialPort(struct.asserv, { + baudrate: 57600, + parser:SerialPort.parsers.readline('\n') + }), this.client, 'gr', this.sendStatus, fifo + ); + } + }; + + /** + * Sends Status + */ + Acts.prototype.sendStatus = function() { + if(lastSendStatus < date.getTime()-1000){ + this.sendChildren(this.getStatus); + lastSendStatus = date.getTime(); + } + }; + + /** + * Gets the status + */ + Acts.prototype.getStatus = function(){ + var data = { + "status": "", + "children": [] + }; + + data.status = "everythingIsAwesome"; + + if(servos && servos.ready){ + data.children.push("Arduino servos"); + }else + data.status = "ok"; + + if(asserv && asserv.ready){ + data.children.push("Arduino asserv"); + }else + data.status = "error"; + + return data; + }; + + /** + * Tries to quit + */ + Acts.prototype.quit = function(){ + if (!!servos && servos.ready) + servos.disconnect(); + if (!!asserv && asserv.ready) + asserv.disconnect(); + }; + + /** + * Order switch + * + * @param {string} from + * @param {string} name + * @param {Object} params + * @param {Object} callback + */ + Acts.prototype.orderHandler = function (from, name, params, callback) { + // logger.info("Just received an order `" + name + "` from " + from + " with params :"); + logger.info(name, params); + + switch (name){ + // Others + case "acheter": + servos.acheter(callback); + break; + case "vendre": + servos.vendre(callback); + break; + // Asserv + case "pwm": + asserv.pwm(params.left, params.right, params.ms,callback); + break; + case "setvit": + asserv.setVitesse(params.v, params.r, callback); + break; + case "clean": + asserv.clean(callback); + break; + case "goa": + asserv.goa(params.a,callback); + break; + case "goxy": + asserv.goxy(params.x, params.y, "avant",callback); + break; + case "setpos": + asserv.setPos(params,callback); + break; + case "setpid": + asserv.setPid(params.p, params.i, params.d,callback); + break; + default: + logger.warn("Order name " + name + " " + from + " not understood"); + callback(); + } + }; + + return Acts; +})(); diff --git a/clients/old_files/gr/detect.class.js b/clients/old_files/gr/detect.class.js new file mode 100644 index 0000000..c31e617 --- /dev/null +++ b/clients/old_files/gr/detect.class.js @@ -0,0 +1,59 @@ +/** + * Detect module + * + * @module clients/gr/detect + * @see {@link clients/gr/detect.Detect} + */ + +module.exports = (function () { + var log4js = require('log4js'); + var logger = log4js.getLogger('pr.detect'); + var serialPort = require("serialport"); + + var sp = []; + + /** + * Detect constructor + * + * @exports clients/gr/detect.Detect + * @constructor + * @param {Object} callback + */ + function Detect(callback) { + /** @type {Object} */ + this.devicesFound = { + asserv: null, + servos: null + }; + /** @type {Object} */ + this.callback = callback; + this.searchArduinos(); + } + + /** + * Send SP + */ + Detect.prototype.sendSP = function (){ + // Sent to acts + this.callback(this.devicesFound); + }; + + /** + * Searches Arduino + */ + Detect.prototype.searchArduinos = function() { + // On check tous les ports disponibles + serialPort.list(function (err, ports) { + for(var i in ports) { + if(ports[i].comName.indexOf('ttyUSB') >= 0) { + this.devicesFound.servos = ports[i].comName; + } else if(ports[i].comName.indexOf('ttyACM') >= 0) { + this.devicesFound.asserv = ports[i].comName; + } + } + this.sendSP(); + }.bind(this)); + }; + + return Detect; +})(); \ No newline at end of file diff --git a/clients/old_files/gr/main.js b/clients/old_files/gr/main.js new file mode 100644 index 0000000..fb42e1c --- /dev/null +++ b/clients/old_files/gr/main.js @@ -0,0 +1,199 @@ +/** + * Main module + * + * @module clients/gr/main + * @requires server/socket_client + * @requires config + * @requires clients/gr/actuators + * @requires clients/gr/detect + */ + +(function () { + "use strict"; + // Requires + var log4js = require('log4js'); + var logger = log4js.getLogger('gr'); + + // logger.info("Started NodeJS client with pid " + process.pid); + + var SocketClient = require('../../server/socket_client.class.js'); + var server = require('../../config.js').server; + /** @type {server/socket_client.SocketClient} */ + var client = new SocketClient({ + server_ip: server, + type: "gr" + }); + + /** @type {Object} */ + var lastStatus = { + "status": "waiting" + }; + sendChildren(lastStatus); + + /** @type {clients/gr/actuators.Acts} */ + var acts = new (require('./actuators.class.js'))(client, sendChildren); + /** @type {clients/gr/detect.Detect} */ + var detect = null; // new (require('./detect.class.js'))(devicesDetected); + + var queue = []; + var orderInProgress = null; + + start(); + + // On message + client.order(function (from, name, params){ + // logger.info("Recieved an order "+name); + switch (name){ + case "collision": + queue = []; + acts.clean(); + orderInProgress = false; + break; + case "stop": + acts.clean(); + logger.fatal("Stop GR"); + process.exit(); + break; + + // useless // + case "start": + queue = []; + start(); + break; + default: + addOrder2Queue(from, name, params); + } + }); + + /** + * Starts the GR + */ + function start(){ + logger.info("Starting :)"); + sendChildren({ + status: "starting", + children:[] + }); + detect = new (require('./detect.class.js'))(devicesDetected); + } + + /** + * Stops the robot + */ + function stop(){ + acts.quit(); + + // Send struct to server + sendChildren({ + status: "waiting", + children:[] + }); + } + + /** + * Devices detected + * + * @param {Object} struct + */ + function devicesDetected(struct){ + // Verify content + if (!struct.servos) + logger.warn("Missing servos Nano"); + if (!struct.asserv) + logger.warn("Missing asserv Nano"); + + // Connect to what's detected + acts.connectTo(struct); + + // Send struct to server + sendChildren(acts.getStatus()); + } + + /** + * Sends status to server + * + * @param {Object} status + */ + function sendChildren(status){ + lastStatus = status; + + client.send("server", "server.childrenUpdate", lastStatus); + } + + /** + * Looks if everything is Ok + */ + function isOk(){ + if(lastStatus.status != "waiting") + lastStatus = acts.getStatus(); + + client.send("ia", "isOkAnswer", lastStatus); + client.send("server", "server.childrenUpdate", lastStatus); + } + + /** + * Push the order (enfiler) + * + * @param {string} f from + * @param {string} n name + * @param {Object} p parameters + */ + function addOrder2Queue(f, n, p){ + if(queue.length < 50) { + // Adds the order to the queue + queue.push({ + from: f, + name: n, + params: p + }); + // logger.info("Order added to queue ! : "); + // logger.info(queue); + executeNextOrder(); + } + } + + /** + * Execute order + */ + function executeNextOrder(){ + if ((queue.length > 0) && (!orderInProgress)){ + var order = queue.shift(); + orderInProgress = order.name; + + logger.info("Going to do '" + orderInProgress + "' "+order.params.toString()); + acts.orderHandler(order.from, order.name, order.params, actionFinished); + + executeNextOrder(); + } + } + + /** + * Launch the next order + */ + function actionFinished(){ + logger.info(orderInProgress + " just finished !"); + + orderInProgress = false; + executeNextOrder(); + } + + /** + * Tries to exit + * + * @todo do something when app is closing + */ + function quit () { + logger.info("Please wait while exiting..."); + // acts.quit(); + process.exit(0); + } + + + // Exiting : + //do something when app is closing + //process.on('exit', quit); + // catches ctrl+c event + //process.on('SIGINT', quit); + // //catches uncaught exceptions + // process.on('uncaughtException', quit); +})(); diff --git a/clients/old_files/gr/servos.class.js b/clients/old_files/gr/servos.class.js new file mode 100644 index 0000000..4d3f98e --- /dev/null +++ b/clients/old_files/gr/servos.class.js @@ -0,0 +1,93 @@ +/** + * Servos module + * + * @module clients/gr/servos + * @see {@link clients/gr/servos.Servos} + * @see module:clients/gr/servos-simu + */ + +module.exports = (function () { + var log4js = require('log4js'); + var logger = log4js.getLogger('gr.servos'); + var five = require("johnny-five"); + /** @type {Object} */ + var board = null; + /** @type {Object} */ + var servo_gauche, servo_droit; + + /** + * Servos Constructors + * + * @exports clients/gr/servos.Servos + * @constructor + * @param {string} sp Server port + * @param {Object} sendStatus + */ + function Servos(sp, sendStatus) { + /** @type {boolean} */ + this.ready = false; + /** @type {Object} */ + this.sendStatus = sendStatus; + this.connect(sp); + } + + /** + * Connect + * + * @param {string} sp Server port + */ + Servos.prototype.connect = function(sp) { + board = new five.Board({ + port: sp, + repl: false + }); + + board.on("ready", function() { + logger.info("Board servos Ready"); + servo_gauche = new five.Servo(2); + servo_droit = new five.Servo(3); + this.ready = true; + this.sendStatus(); + this.acheter(); + }.bind(this)); + }; + + /** + * Acheter + * + * @param {Object} callback + */ + Servos.prototype.acheter = function(callback) { + servo_gauche.to(170); + servo_droit.to(0); + setTimeout(callback, 500); + }; + /** + * Vendre + * + * @param {Object} callback + */ + Servos.prototype.vendre = function(callback) { + servo_gauche.to(50); + servo_droit.to(120); + setTimeout(function(){ // remontée lente + servo_gauche.to(100, 1000); + servo_droit.to(70, 1000); + }, 500); + setTimeout(function(){ + servo_gauche.to(50); + servo_droit.to(120); + }, 2000); + setTimeout(function(){ // remontée lente + servo_gauche.to(100, 1000); + servo_droit.to(70, 1000); + }, 2500); + setTimeout(function(){ + servo_gauche.to(50); + servo_droit.to(120); + }, 4000); + setTimeout(callback, 6000); + }; + + return Servos; +})(); \ No newline at end of file diff --git a/clients/old_files/gr/servos.simu.class.js b/clients/old_files/gr/servos.simu.class.js new file mode 100644 index 0000000..6afd4f6 --- /dev/null +++ b/clients/old_files/gr/servos.simu.class.js @@ -0,0 +1,41 @@ +/** + * Servos Simulator module + * + * @module clients/gr/servos-simu + * @see clients/gr/servos-simu.Servos + */ + +module.exports = (function () { + var log4js = require('log4js'); + var logger = log4js.getLogger('gr.servos'); + + /** + * Servos constructor + * + * @exports clients/gr/servos-simu.Servos + * @constructor + * @param {Object} sp + */ + function Servos(sp) { + + } + + /** + * Acheter + * + * @param {Object} callback + */ + Servos.prototype.acheter = function(callback) { + setTimeout(callback, 500); + }; + /** + * Vendre + * + * @param {Object} callback + */ + Servos.prototype.vendre = function(callback) { + setTimeout(callback, 500); + }; + + return Servos; +})(); \ No newline at end of file diff --git a/clients/old_files/pr/actuators.class.js b/clients/old_files/pr/actuators.class.js new file mode 100644 index 0000000..1a45ee8 --- /dev/null +++ b/clients/old_files/pr/actuators.class.js @@ -0,0 +1,605 @@ +/** + * Actuators module + * + * @module clients/pr/actuators + * @requires clients/shared/fifo + * @see {@link clients/pr/actuators.Acts} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('pr.acts'); + var SerialPort = require("serialport"); + var spawn = require('child_process').spawn; + /** @type {clients/shared/fifo.Fifo} */ + var fifo = new (require('../shared/fifo.class.js'))(); + + var others = null; + var asserv = null; + var ax12 = null; + var date = new Date(); + /** @type {int} */ + var lastSendStatus = date.getTime(); + + /** + * Acts Constructor + * + * @exports clients/pr/actuators.Acts + * @constructor + * @param {Object} client + * @param {Object} sendChildren + */ + function Acts(client, sendChildren) { + /** @type {Object} */ + this.client = client; + /** @type {Object} */ + this.sendChildren = sendChildren; + this.start(); + /** @type {int} */ + this.nb_plots = 0; + /** @type {boolean} */ + this.new_has_ball = false; + /** @type {boolean} */ + this.has_gobelet = false; + } + + /** + * Starts (nothing ?) + */ + Acts.prototype.start = function(){ + + }; + + /** + * Cleans all + */ + Acts.prototype.clean = function(){ + fifo.clean(); // A priori déjà vide + asserv.clean(); + ax12.ouvrir(); + others.ouvrirStabilisateurGrand(); + others.ouvrirBloqueurGrand(); + }; + + /** + * Connect to + * + * @param {Object} struct + */ + Acts.prototype.connectTo = function(struct){ + if (!struct.others) { + logger.fatal("Lancement de others pr en mode simu !"); + others = new (require('./others.simu.class.js'))(fifo); + } else { + others = new (require('./others.class.js'))( + new SerialPort(struct.others, { baudrate: 57600 }), + this.sendStatus, + fifo + ); + } + + if (!struct.asserv) { + logger.fatal("Lancement de l'asserv pr en mode simu !"); + asserv = new (require('../shared/asserv.simu.class.js'))(this.client, 'pr', fifo); + } else { + asserv = new (require('../shared/asserv.class.js'))( + new SerialPort(struct.asserv, { + baudrate: 57600, + parser:SerialPort.parsers.readline('\n') + }), this.client, 'pr', this.sendStatus, fifo + ); + } + + if (!struct.ax12) { + logger.fatal("Lancement de l'usb2ax pr en mode simu !"); + ax12 = new (require('./ax12.simu.class.js'))(fifo); + } else { + ax12 = new (require('./ax12.class.js'))(struct.ax12, this.sendStatus, fifo); + } + + // Initialisation + setTimeout(function() { + others.ouvrirStabilisateurGrand(); + others.lacherGobelet(); + others.ouvrirBloqueurGrand(); + others.descendreAscenseur(); + ax12.ouvrir(function() { + logger.fatal('BAZOOKA'); + }); + }, 1000); + }; + + /** + * Send status + */ + Acts.prototype.sendStatus = function() { + if(lastSendStatus < date.getTime()-1000){ + this.sendChildren(this.getStatus); + lastSendStatus = date.getTime(); + } + }; + + /** + * Get Status + */ + Acts.prototype.getStatus = function(){ + var data = { + "status": "", + "children": [] + }; + + data.status = "everythingIsAwesome"; + + if(others && !!others.ready) + data.children.push("Arduino others"); + else + data.status = "ok"; + + if(ax12 && !!ax12.ready) + data.children.push("USB2AX"); + else + data.status = "ok"; + + if(asserv && !!asserv.ready) + data.children.push("Arduino asserv"); + else + data.status = "error"; + + return data; + }; + + /** + * Quit + */ + Acts.prototype.quit = function(){ + if (ax12 && ax12.ready) + ax12.disconnect(); + }; + + /** + * fake + */ + function fake() {} + Acts.prototype.delay = function(ms, callback){ + fifo.newOrder(function() { + setTimeout(function() { + if(callback !== undefined) + callback(); + fifo.orderFinished(); + }, ms); + }, 'delay'); + } + + /** + * Prendre plot + * + * @param {Object} [callback] + * @param {int} [monter] + */ + Acts.prototype.prendre_plot = function(callback, monter){ + if(callback === undefined) { + callback = function() {}; + } + if (monter === undefined) { + monter = 1; + } + var that = this; + if (that.new_has_ball) { + that.new_has_ball = false; + others.descendreUnPeuAscenseur(); + ax12.ouvrir(); + others.descendreAscenseur(); + that.prendre_plot(callback); + } + else if (that.nb_plots>=3 || !monter){ + ax12.ouvrir(); + others.fermerStabilisateur(); + ax12.fermer(); + others.monterUnPeuAscenseur(function() { + that.client.send('ia', 'pr.plot++'); + callback(); + }); + others.ouvrirBloqueurMoyen(); + others.fermerBloqueur(); + } + else if (that.nb_plots==0) { + ax12.ouvrir(); + others.ouvrirBloqueurMoyen(); + ax12.fermer(); + others.monterAscenseur(function() { + that.client.send('ia', 'pr.plot++'); + setTimeout(callback, 200); + }); + others.fermerBloqueur(); + ax12.ouvrir(); + others.ouvrirStabilisateurMoyen(function() {}, 0); + others.descendreAscenseur(); + } + else if(that.nb_plots==1){ + ax12.ouvrir(); + others.ouvrirStabilisateurMoyen(); + ax12.fermer(); + others.ouvrirBloqueurMoyen(); + others.monterAscenseur(function() { + that.client.send('ia', 'pr.plot++'); + setTimeout(callback, 200); + }); + others.fermerBloqueur(); + ax12.ouvrir(function() {}); + others.descendreAscenseur(); + } + else { + ax12.ouvrir(); + others.ouvrirStabilisateurMoyen(); + ax12.fermer(); + others.ouvrirBloqueurMoyen(); + others.monterAscenseur(function() { + that.client.send('ia', 'pr.plot++'); + setTimeout(callback, 200); + }); + others.fermerStabilisateur(fake,0); + others.fermerBloqueur(); + ax12.ouvrir(function() {}); + others.descendreAscenseur(); + } + that.nb_plots++; + } + + /** + * Pousser plot + * + * @param {Object} [callback] + */ + Acts.prototype.pousser_plot = function(callback){ + if(callback === undefined) { + callback = function() {}; + } + ax12.ouvrir(); + asserv.goxy(1150, 200, "avant"); + asserv.goxy(1100, 250, "arriere", callback); + } + + /** + * Prendre plot + * + * @param {Object} [callback] + */ + Acts.prototype.prendre_plot2 = function(callback){ + if(callback === undefined) { + callback = function() {}; + } + var that = this; + asserv.speed(300, 0, 750); + if (that.new_has_ball) { + that.new_has_ball = false; + others.descendreUnPeuAscenseur(); + ax12.ouvrir(); + others.descendreAscenseur(); + that.prendre_plot(callback); + } + else { + + ax12.ouvrir(); + ax12.fermer(); + others.monterUnPeuAscenseur(function() { + that.client.send('ia', 'pr.plot++'); + callback(); + }); + } + + that.nb_plots++; + } + + /** + * Monter plot 2 + * + * @param {Object} [callback] + */ + Acts.prototype.monter_plot2 = function(callback){ + if(callback === undefined) { + callback = function() {}; + } + var that = this; + + callback(); + if (that.nb_plots == 1) { + others.ouvrirBloqueurMoyen(); + others.monterAscenseur(); + others.fermerBloqueur(); + others.fermerStabilisateur(); + ax12.ouvrir(); + others.descendreAscenseur(); + } else { + others.ouvrirStabilisateurMoyen(); + others.ouvrirBloqueurMoyen(); + others.monterAscenseur(); + others.fermerBloqueur(); + others.fermerStabilisateur(); + ax12.ouvrir(); + others.descendreAscenseur(); + } + } + + /** + * Order switch + * + * @param {string} from + * @param {string} name + * @param {Object} params + * @param {Object} callback + */ + Acts.prototype.orderHandler = function (from, name, params, callback) { + // logger.info("Just received an order `" + name + "` from " + from + " with params :"); + // logger.info(params); + var that = this; + /** @todo : add a callback parameter to all functions (and call it) */ + switch (name){ + // others + case "placer": + asserv.setPid(0.25, 130, 13); + asserv.goxy(500, 940); + asserv.goa(-0.62); + this.orderHandler('ia','fermer_tout', {}, callback); + break; + case "prendre_plot": + this.prendre_plot(callback); + break; + case "pousser_plot": + this.pousser_plot(callback); + break; + case "prendre_plot2": + this.prendre_plot2(callback); + break; + case "monter_plot2": + this.monter_plot2(callback); + break; + case "reset_nb_plots": + this.nb_plots = 0; + callback(); + break; + case "prendre_plot_rear_left": + asserv.goxy(160, 1800, "avant"); + that.prendre_plot(undefined, 0); + asserv.goxy(270, 1800, "arriere", callback); + break; + case "prendre_plot_rear_left_calage": + asserv.goxy(250, 1450, "arriere"); + asserv.goa(1.5708); + asserv.pwm(-70, -70, 1500); + asserv.calageY(1288, 1.5708); + asserv.goxy(250, 1450, 500); + asserv.goa(0); + asserv.pwm(-70, -70, 1500); + asserv.calageX(65, 0); + asserv.goxy(120, 1450, "avant"); + asserv.goxy(120, 1790, "avant"); + that.prendre_plot(); + asserv.goa(-1); + asserv.speed(500, 0, 750, callback); + break; + case "prendre_gobelet_et_2_plots_front": + others.lacherGobelet(fake,0); + asserv.goxy(275, 260, "arriere"); + others.prendreGobelet(function() { + that.has_gobelet = true; + that.client.send('ia', 'pr.gobelet1'); + }); + asserv.speed(500, 0, 500); + asserv.goxy(165, 270, "avant"); //100 au lieu de 90 pos plot + that.prendre_plot(undefined, 1); + //asserv.speed(-300, -300, 600); + asserv.goxy(285, 310, "arriere"); + asserv.goxy(155, 180, "avant"); + that.prendre_plot(callback); + break; + + case "deposer_pile_left_2": + asserv.goxy(650, 1000, "avant"); + others.descendreAscenseur(); + ax12.ouvrir(); + others.ouvrirBloqueurMoyen(fake,0); + others.ouvrirStabilisateurMoyen(); + that.delay(500); + others.ouvrirBloqueurGrand(fake,0); + others.ouvrirStabilisateurGrand(function() { + that.nb_plots = 0; + that.client.send('ia', 'pr.plot0'); + }); + asserv.speed(-300, 0, 1000); + break; + + case "recalage_stairs": + asserv.goxy(250, 1450, "arriere"); + asserv.goa(1.5708); + asserv.pwm(-80, -80, 1500); + asserv.calageY(1288, 1.5708); + asserv.goxy(250, 1450, 500); + asserv.goa(0); + asserv.pwm(-80, -80, 1500); + asserv.calageY(65, 0); + asserv.goxy(120, 1450, "avant"); + break; + + case "prendre_2_plots_stairs": + asserv.goxy(800, 1740, "avant"); + that.prendre_plot(undefined, 1); + that.delay(1000); + asserv.goxy(830, 1850, "avant"); + that.prendre_plot(undefined, 0); + asserv.speed(-300, 0, 1000, callback); + break; + + case "prendre_gobelet": + others.lacherGobelet(fake,0); + asserv.speed(-300, 0, 500); + others.prendreGobelet(function() { + that.client.send('ia', 'pr.gobelet1'); + that.has_gobelet = true; + callback(); + }); + break; + + case "deposer_pile_et_gobelet": + asserv.goxy(250, 1000, "avant"); + others.descendreUnPeuAscenseur(); + ax12.ouvrir(); + others.ouvrirBloqueurMoyen(fake,0); + others.ouvrirStabilisateurMoyen(); + that.delay(500); + others.ouvrirBloqueurGrand(fake,0); + others.ouvrirStabilisateurGrand(function() { + that.nb_plots = 0; + that.client.send('ia', 'pr.plot0'); + }); + asserv.speed(-300, 0, 1000); + asserv.goa(0); + others.lacherGobelet(function() { + that.client.send('ia', 'pr.gobelet0'); + }); + that.delay(300); + asserv.speed(300, 0, 750, callback); + others.ouvrirStabilisateurMoyen(fake,0); + others.ouvrirBloqueurMoyen(fake,0); + others.descendreAscenseur(); + break; + + case "deposer_pile_gobelet_prendre_balle_gauche": + asserv.goxy(300, 1000, "avant"); + //asserv.goa(-2.3562); + others.descendreUnPeuAscenseur(); + ax12.ouvrir(); + others.ouvrirBloqueurGrand(fake,0); + others.ouvrirStabilisateurMoyen(); + that.delay(500); + others.ouvrirStabilisateurGrand(); + asserv.speed(-300, 0, 1000); + asserv.goa(0); + others.lacherGobelet(); + that.delay(300); + asserv.speed(300, 0, 750); + /*asserv.goxy(700, 1300, "arriere", function() { + that.client.send('ia', 'data.add_dynamic', {pos:{x:450, y:880}, d:8}); + }); + others.ouvrirBloqueurMoyen(fake,0); + others.ouvrirStabilisateurMoyen(fake,0); + others.monterMoyenAscenseur(); + + asserv.goxy(260, 1050, "osef"); + asserv.goa(3.1416/2); + asserv.pwm(50, 50, 1500); + asserv.calageY(1126, 3.1416/2); + asserv.goxy(260, 1000, "arriere"); + asserv.goa(3.1416); + + asserv.goxy(200, 1000, "avant"); + asserv.goa(3.1416); + asserv.pwm(50, 50, 1500); + asserv.calageX(145, 3.1416); + ax12.fermerBalle(); + asserv.goxy(260, 1000, "arriere"); + others.descendreMoyenAscenseur(); + ax12.fermerBalle2(); + asserv.goxy(260, 1000, "arriere"); + others.monterAscenseur(); + asserv.goxy(330, 1000, "avant"); + asserv.goa(0.1863); + others.lacherGobelet(); + that.delay(100); + that.new_has_ball = true; + that.client.send('ia', 'pr.plot0'); + that.client.send('ia', 'pr.gobelet0'); + that.nb_plots = 0; + that.has_gobelet = false; + asserv.goxy(600, 1050, "avant", callback);*/ + break; + + case "deposer_gobelet": + asserv.goa(3.1416); + that.delay(100); + others.lacherGobelet(); + that.client.send('ia', 'pr.gobelet0'); + asserv.speed(500, 0, 800, callback); + break; + + case "fermer_tout": + others.lacherGobelet(); + others.fermerBloqueur(); + others.descendreAscenseur(); + others.rangerClap(); + others.fermerStabilisateur(); + ax12.fermer(callback); + break; + case "ouvrir_ax12": + ax12.ouvrir(callback); + break; + case "monter_ascenseur": + others.monterAscenseur(callback); + break; + case "clap_1": + others.sortirClap(); + asserv.goxy(330, 140, "osef", function() { + callback(); + others.rangerClap(); + }); + break; + case "clap_3": + others.sortirClap(); + asserv.goxy(1000, 140, "osef", function() { + callback(); + others.rangerClap(); + }); + break; + case "clap_5": + others.sortirClap(); + asserv.goxy(2300, 140, "osef", function() { + callback(); + others.rangerClap(); + }); + break; + + // Asserv + case "pwm": + asserv.pwm(params.left, params.right, params.ms, callback); + break; + case "setvit": + asserv.setVitesse(params.v, params.r, callback); + break; + case "clean": + asserv.clean(callback); + break; + case "goa": + asserv.goa(params.a, callback, true); + break; + case "goxy": + asserv.goxy(params.x, params.y, params.sens, callback, true); + break; + case "setpos": + asserv.setPos(params, callback); + break; + case "setacc": + asserv.setAcc(params.acc, callback); + break; + case "setpid": + asserv.setPid(params.p, params.i, params.d, callback); + break; + case "sync_git": + spawn('/root/sync_git.sh', [], { + detached: true + }); + break; + + + // Debug + case "AX12_close": + ax12.fermer(callback); + break; + case "AX12_open": + ax12.ouvrir(callback); + break; + default: + logger.warn("Order name " + name + " " + from + " not understood"); + callback(); + } + }; + + return Acts; +})(); diff --git a/clients/old_files/pr/ax12.class.js b/clients/old_files/pr/ax12.class.js new file mode 100644 index 0000000..e65a963 --- /dev/null +++ b/clients/old_files/pr/ax12.class.js @@ -0,0 +1,237 @@ +/** + * AX12 module + * + * @module clients/pr/ax12 + * @see clients/pr/ax12.Ax12 + */ + +module.exports = (function () { + var log4js = require('log4js'); + var logger = log4js.getLogger('pr.ax12'); + var ffi = require('ffi'); + var libusb2ax = ffi.Library('./libs/dynamixel/lib/libusb2ax', { + 'dxl_initialize': ['int', ['int', 'int']], + 'dxl_write_word': ['void', ['int', 'int', 'int']], + 'dxl_read_word': ['int', ['int', 'int']], + 'dxl_terminate': ['void', ['void']], + 'dxl_get_result': ['int', ['void']] + }); + + // Constants + var AX12_COUPLE = 800; + var P_GOAL_POSITION_L = 30; + var P_POSITION = 36; + var P_SPEED = 0x26; + var P_COUPLE = 34; + var MARGE_POS = 80; + var MARGE_POS_MVT = 5; + var ax12s = { + '2':{ + id: 2, + obj: 0, pos: 0, arrived: false + }, + '3':{ + id: 3, + obj: 0, pos: 0, arrived: false + } + }; + + /** + * Ax12 Constructor + * + * @exports clients/pr/ax12.Ax12 + * @constructor + * @param {string} sp Serial Port NAME + * @param {Object} sendStatus + * @param {clients/shared/fifo.Fifo} fifo + */ + function Ax12(sp, sendStatus, fifo) { + /** @type {boolean} */ + this.ready = false; + /** @type {Object} */ + this.sendStatus = sendStatus; + /** @type {Object} */ + this.orders_sent = []; + /** @type {clients/shared/fifo.Fifo} */ + this.fifo = fifo; + + this.connect(sp); + } + + + // ====== General actions ====== + + POS_OPENED = 40; + POS_CLOSED = 10; + POS_BALL_1 = 0; + POS_BALL_2 = 0; + + + /** + * Connect + * + * @param {string} sp Serial Port NAME + */ + Ax12.prototype.connect = function(sp) { + if(libusb2ax.dxl_initialize(sp.substring("/dev/ttyACM".length), 1) <= 0) { + logger.error("Impossible de se connecter à l'USB2AX"); + } else { + logger.info("Connecté à l'USB2AX !"); + } + this.ready = true; + this.sendStatus(); + /** @type {array} */ + this.ax12s = {}; + /** @type {Object} */ + this.type_callback = null; + + libusb2ax.dxl_write_word(2, P_COUPLE, 400); + libusb2ax.dxl_write_word(3, P_COUPLE, 400); + + this.ouvrir(); + this.loopAX12(); + }; + + /** + * Disconnect + * + * @param {} x + */ + Ax12.prototype.disconnect = function(x) { + this.ready = false; + this.sendStatus(); + }; + + /** + * Loop AX12 + */ + Ax12.prototype.loopAX12 = function() { + var speed; + for(var i in ax12s) { + // S'il n'est pas à la bonne position + ax12s[i].pos = libusb2ax.dxl_read_word(ax12s[i].id, P_POSITION); + speed = libusb2ax.dxl_read_word(ax12s[i].id, P_SPEED); + + if (!ax12s[i].started) { + libusb2ax.dxl_write_word(ax12s[i].id, P_COUPLE, AX12_COUPLE); + libusb2ax.dxl_write_word(ax12s[i].id, P_GOAL_POSITION_L, ax12s[i].obj); + if (Math.abs(speed) > MARGE_POS_MVT) { + ax12s[i].started = true; + } + } else { + speed = libusb2ax.dxl_read_word(ax12s[i].id, P_SPEED); + if (Math.abs(speed) < MARGE_POS_MVT) { + ax12s[i].arrived = true; + } + } + if(Math.abs(ax12s[i].pos - ax12s[i].obj) < MARGE_POS) { + ax12s[i].arrived = true; + } + } + // logger.debug(ax12s['2'].pos + ' ; ' + ax12s['3'].pos); + if(ax12s['2'].started && ax12s['3'].started && this.type_callback == "ouvrir" || + ax12s['2'].arrived && ax12s['3'].arrived && this.type_callback) { + this.type_callback = null; + this.callback(); + this.fifo.orderFinished(); + } + + setTimeout(function() { this.loopAX12(); }.bind(this), 50); + }; + + /** + * Deg to AX12 + * + * @param {int} deg + */ + Ax12.prototype.degToAx12 = function(deg) { + return parseInt((deg+150)*1024/300); + }; + + /** + * Ouvrir + * + * @param {Object} [callback] + */ + Ax12.prototype.ouvrir = function(callback) { + if(callback === undefined) { + callback = function(){}; + } + this.fifo.newOrder(function() { + ax12s['2'].obj = this.degToAx12(0); + ax12s['3'].obj = this.degToAx12(0); + ax12s['2'].arrived = false; + ax12s['2'].started = false; + ax12s['3'].arrived = false; + ax12s['3'].started = false; + this.callback = callback; + this.type_callback = 'ouvrir'; + }.bind(this), 'AX12-Ouvrir'); + }; + + /** + * Fermer + * + * @param {Object} [callback] + */ + Ax12.prototype.fermer = function(callback) { + if(callback === undefined) { + callback = function(){}; + } + this.fifo.newOrder(function() { + ax12s['2'].obj = this.degToAx12(-85); + ax12s['3'].obj = this.degToAx12(85); + // logger.debug(ax12s['2'].obj); + ax12s['2'].arrived = false; + ax12s['2'].started = false; + ax12s['3'].arrived = false; + ax12s['3'].started = false; + this.callback = callback; + this.type_callback = 'fermer'; + }.bind(this), 'AX12-Fermer'); + }; + /** + * Fermer balle + * + * @param {Object} [callback] + */ + Ax12.prototype.fermerBalle = function(callback) { + if(callback === undefined) { + callback = function(){}; + } + this.fifo.newOrder(function() { + ax12s['2'].obj = this.degToAx12(-50); + ax12s['3'].obj = this.degToAx12(50); + // logger.debug(ax12s['2'].obj); + ax12s['2'].arrived = false; + ax12s['2'].started = false; + ax12s['3'].arrived = false; + ax12s['3'].started = false; + this.callback = callback; + this.type_callback = 'fermer'; + }.bind(this), 'AX12-Fermer balle'); + }; + /** + * Fermer balle 2 + * + * @param {Object} [callback] + */ + Ax12.prototype.fermerBalle2 = function(callback) { + if(callback === undefined) { + callback = function(){}; + } + this.fifo.newOrder(function() { + ax12s['2'].obj = this.degToAx12(-75); + ax12s['3'].obj = this.degToAx12(75); + // logger.debug(ax12s['2'].obj); + ax12s['2'].arrived = false; + ax12s['2'].started = false; + ax12s['3'].arrived = false; + ax12s['3'].started = false; + this.callback = callback; + this.type_callback = 'fermer'; + }.bind(this), 'AX12-Fermer balle 2'); + }; + + return Ax12; +})(); diff --git a/clients/old_files/pr/ax12.simu.class.js b/clients/old_files/pr/ax12.simu.class.js new file mode 100644 index 0000000..70136d2 --- /dev/null +++ b/clients/old_files/pr/ax12.simu.class.js @@ -0,0 +1,84 @@ +/** + * AX12 Simulator module + * + * @module clients/pr/ax12-simu + * @see {@link clients/pr/ax12-simu.Ax12} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('pr.ax12'); + + /** + * Ax12 constructor + * + * @exports clients/pr/ax12-simu.Ax12 + * @constructor + * @param {clients/shared/fifo.Fifo} fifo + */ + function Ax12(fifo) { + this.fifo = fifo; + } + + /** + * Disconnects (nothing ?) + * + * @param {} x + */ + Ax12.prototype.disconnect = function(x) { + + }; + + /** + * Calls callback + * + * @param {Object} [callback] + * @param {int} ms + */ + Ax12.prototype.callCallback = function(callback, ms) { + if(callback === undefined) { + callback = function(){}; + } + this.fifo.newOrder(function() { + setTimeout(function() { + callback(); + this.fifo.orderFinished(); + }.bind(this), parseInt(ms/5)); + }.bind(this)); + } + + /** + * Ouvrir + * + * @param {Object} callback + */ + Ax12.prototype.ouvrir = function(callback) { + this.callCallback(callback, 1000); + }; + + /** + * Fermer + * + * @param {Object} callback + */ + Ax12.prototype.fermer = function(callback) { + this.callCallback(callback, 1000); + }; + /** + * Fermer Balle + * + * @param {Object} callback + */ + Ax12.prototype.fermerBalle = function(callback) { + this.callCallback(callback, 800); + }; + /** + * Fermer Balle 2 + * + * @param {Object} callback + */ + Ax12.prototype.fermerBalle2 = function(callback) { + this.callCallback(callback, 900); + }; + + return Ax12; +})(); diff --git a/clients/old_files/pr/detect.class.js b/clients/old_files/pr/detect.class.js new file mode 100644 index 0000000..5f5e7c9 --- /dev/null +++ b/clients/old_files/pr/detect.class.js @@ -0,0 +1,93 @@ +/** + * Detect module + * + * @module clients/pr/detect + * @see {@link clients/pr/detect.Detect} + */ + +module.exports = (function () { + var log4js = require('log4js'); + var logger = log4js.getLogger('pr.detect'); + var serialPort = require("serialport"); + + + var sp = []; + + /** + * Detect constructor + * + * @exports clients/pr/detect.Detect + * @constructor + * @param {Object} callback + */ + function Detect(callback) { + /** @type {Object} */ + this.devicesFound = { + asserv: null, + others: null, + ax12: null + }; + /** @type {Object} */ + this.callback = callback; + this.searchArduinos(); + } + + /** + * Sends Server port + */ + Detect.prototype.sendSP = function (){ + // Close opened ports & detect other devices + serialPort.list(function (err, ports) { + for(var i in ports) { + if(ports[i].comName.indexOf('ttyUSB') >= 0) { + this.devicesFound.asserv = ports[i].comName; + } else if((ports[i].comName.indexOf('ttyACM') >= 0) && ports[i].comName != this.devicesFound.others) { + // logger.debug(ports[i].comName); + this.devicesFound.ax12 = ports[i].comName; + } + if(sp[i].readable){ + logger.info("Closing "+ports[i].comName); + // this.devicesFound.ax12 = ports[i].comName; + sp[i].close(); + } + } + + // Sent to acts + this.callback(this.devicesFound); + }.bind(this)); + }; + + /** + * Searches Arduino + */ + Detect.prototype.searchArduinos = function() { + // On check tous les ports disponibles + serialPort.list(function (err, ports) { + var nb_found = 0; + for(var i in ports) { + sp[i] = new SerialPort(ports[i].comName, { baudrate: 57600 }); + sp[i].on('open', function (i) { + sp[i].write('O\n'); + }.bind(this, i)); + + sp[i].on("data", function (i, data) { + data = data.toString(); + console.log(ports[i].comName, data); + if (data == 'O' && !this.devicesFound.others){ // Stepper + this.devicesFound.others = ports[i].comName; + clearTimeout(timeout); + this.sendSP(); + } + sp[i].close(); + }.bind(this, i)); + + sp[i].on("error", function() {}); // Node JS Error if it doesn't exist (and if an "error" event is sent) + } + }.bind(this)); + + // On check tous les ports qui ne sont pas enregistrés + timeout = setTimeout(function(){this.sendSP(); }.bind(this), 3000); + }; + + return Detect; +})(); \ No newline at end of file diff --git a/clients/old_files/pr/elevator.class.js b/clients/old_files/pr/elevator.class.js new file mode 100644 index 0000000..d032f6a --- /dev/null +++ b/clients/old_files/pr/elevator.class.js @@ -0,0 +1,123 @@ +/** + * Elevator module + * + * @module clients/pr/elevator + * @see {@link clients/pr/elevator.Elevator} + */ + +module.exports = (function () { + var log4js = require('log4js'); + var logger = log4js.getLogger('pr.elevator'); + + var ORDER_ACHIEVED = 'K'; // Like Ok + var ORDER_UNKNOWN = 'U'; // Like Unknown + + var ELEV_MOVE_UP = 'u'; + var ELEV_MOVE_DOWN = 'd'; + var ELEV_RELEASE = 'r'; + var ELEV_CHOUILLA = 'c'; + + /** + * Elevator constructor + * + * @exports clients/pr/elevator.Elevator + * @constructor + * @param {Object} sp Serial Port OBJECT + */ + function Elevator(sp, sendStatus) { + /** @type {Object} */ + this.sp = sp; + /** @type {boolean} */ + this.ready = false; + /** @type {Object} */ + this.sendStatus = sendStatus; + /** @type {string} */ + this.pos = 'down'; + /** @type {array} */ + this.orders_sent = []; + + this.sp.on("data", function(data) { + this.ready = true; + this.sendStatus(); + this.parseOrder(data.toString()); + }.bind(this)); + } + + /** + * Fonctions for sending orders to the Arduino + * + * @param {string} order + */ + Elevator.prototype.sendOrder = function(order) { + this.sp.write(order); + this.orders_sent.push(order); + }; + + /** + * Disconnects + */ + Elevator.prototype.disconnect = function() { + this.sp.close(); + this.ready = false; + this.sendStatus(); + }; + + + // ====== General actions ====== + + /** + * Monter + */ + Elevator.prototype.monter = function() { + this.sendOrder(ELEV_MOVE_UP); + }; + + /** + * Monter choilla + */ + Elevator.prototype.monterChouilla = function() { + this.sendOrder(ELEV_CHOUILLA); + }; + + /** + * Descendre + */ + Elevator.prototype.descendre = function() { + this.sendOrder(ELEV_MOVE_DOWN); + this.lacher(); + }; + + /** + * Release + */ + Elevator.prototype.release = function() { + this.sendOrder(ELEV_RELEASE); + }; + + /** + * Parse Order + * + * @param {string} order + */ + Elevator.prototype.parseOrder = function(order) { + if(order == ORDER_ACHIEVED) { + switch(this.orders_sent.shift()) { + case ELEV_MOVE_UP: + this.pos = 'up'; + logger.info("Elevator is up"); + break; + case ELEV_MOVE_DOWN: + this.pos1 = 'down'; + logger.info("Elevator is down"); + break; + } + } else if (order == ORDER_UNKNOWN) { + oldest_order = this.orders_sent.shift(); + logger.warn("Order sent unknown: "+this.orders_sent.shift()); + } else { + logger.warn("Order received unknown: "+order); + } + }; + + return Elevator; +})(); \ No newline at end of file diff --git a/clients/old_files/pr/main.js b/clients/old_files/pr/main.js new file mode 100644 index 0000000..5d94b87 --- /dev/null +++ b/clients/old_files/pr/main.js @@ -0,0 +1,184 @@ +/** + * Main module + * + * @module clients/pr/main + * @requires server/socket_client + * @requires config + * @requires clients/pr/actuators + * @requires clients/pr/detect + */ + +(function () { + "use strict"; + + // Requires + var logger = require('log4js').getLogger('pr'); + + // logger.info("Started NodeJS client with pid " + process.pid); + + var SocketClient = require('../../server/socket_client.class.js'); + var server = require('../../config.js').server + var client = new SocketClient({ + server_ip: server, + type: "pr" + }); + + var lastStatus = { + "status": "waiting" + }; + sendChildren(lastStatus); + + var acts = new (require('./actuators.class.js'))(client, sendChildren); + var detect = null; + + var queue = []; + var orderInProgress = false; + + start(); + + // On message + client.order(function (from, name, params){ + // logger.info("Recieved an order "+name); + switch (name){ + case "collision": + queue = []; + acts.clean(); + orderInProgress = false; + break; + case "stop": + acts.clean(); + setTimeout(function() { + logger.fatal("Stop PR"); + process.exit(); + }, 800); + break; + + // useless // + case "start": + queue = []; + start(); + break; + default: + addOrder2Queue(from, name, params); + } + }); + + function start(){ + logger.info("Starting :)"); + sendChildren({ + status: "starting", + children:[] + }); + detect = new (require('./detect.class.js'))(devicesDetected); + } + + // function stop(){ + // acts.quit(); + + // // Send struct to server + // sendChildren({ + // status: "waiting", + // children:[] + // }); + // } + + function devicesDetected(struct){ + // Verify content + if (!struct.others) + logger.warn("Missing others Mega"); + + // if (!struct.servos) + // logger.warn("Missing servos Nano"); + + if (!struct.asserv) + logger.warn("Missing asserv Nano"); + + if (!struct.ax12) + logger.warn("Missing USB2AX"); + + // Connect to what's detected + acts.connectTo(struct); + + // Send struct to server + sendChildren(acts.getStatus()); + } + + // Sends status to server + function sendChildren(status){ + lastStatus = status; + + client.send("server", "server.childrenUpdate", lastStatus); + } + + function isOk(){ + if(lastStatus.status != "waiting") + lastStatus = acts.getStatus(); + + client.send("ia", "isOkAnswer", lastStatus); + client.send("server", "server.childrenUpdate", lastStatus); + } + + + // Push the order (enfiler) + function addOrder2Queue(f, n, p){ + // if(n == 'clean') { + // logger.info(n+" : Begin"); + // acts.orderHandler(f, n, p, actionFinished); + // } else + if(queue.length < 100){ + // Adds the order to the queue + queue.push({ + from: f, + name: n, + params: p + }); + // logger.info("Order added to queue ! : "); + // logger.info(queue); + + executeNextOrder(); + } + } + + // Execute order + function executeNextOrder(){ + if ((queue.length > 0) && (!orderInProgress)) { + var order = queue.shift(); + if(order.name == "send_message") { + // logger.debug("Send message %s", order.params.name); + client.send('ia', order.params.name, order.params || {}); + executeNextOrder(); + } else { + orderInProgress = order.name; + + logger.info(orderInProgress+" : Begin"); + // logger.debug(order.params); + acts.orderHandler(order.from, order.name, order.params, actionFinished); + + // executeNextOrder(); + } + } + } + + function actionFinished(){ + if(orderInProgress !== false) { + logger.info(orderInProgress + " : End"); + + orderInProgress = false; + executeNextOrder(); + } + } + function quit () { + logger.info("Please wait while exiting..."); + acts.quit(); + process.exit(); + } + + + // Exiting : + //do something when app is closing + // process.on('exit', quit); + // catches ctrl+c event + // process.on('SIGINT', quit); + // //catches uncaught exceptions + // process.on('uncaughtException', quit); +})(); diff --git a/clients/old_files/pr/others.class.js b/clients/old_files/pr/others.class.js new file mode 100644 index 0000000..577d677 --- /dev/null +++ b/clients/old_files/pr/others.class.js @@ -0,0 +1,313 @@ +/** + * Others module + * + * @module clients/pr/others + * @see {@link clients/pr/others.Others} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('Others'); + + /** + * Others Constructor + * + * @exports clients/pr/others.Others + * @constructor + * @param {Object} sp Server port + * @param {Object} sendStatus + * @param {clients/shared/fifo.Fifo} + */ + function Others(sp, sendStatus, fifo) { + /** @type {Object} */ + this.sp = sp; + // this.client = client; + /** @type {boolean} */ + this.ready = true; + logger.debug(sendStatus); + /** @type {Object} */ + this.sendStatus = sendStatus; + /** @type {clients/shared/fifo.Fifo} */ + this.fifo = fifo; + + this.sp.on("data", function(data){ + if(this.ready === false){ + this.ready = true; + this.sendStatus(); + } + this.parseCommand(data.toString()); + }.bind(this)); + this.sp.on("error", function(data){ + logger.debug(data.toString()); + }); + this.sp.on("close", function(){ + this.ready = false; + this.sendStatus(); + logger.error("Serial port close"); + }.bind(this)); + } + + /** + * Parse command + * + * @param {string} data + */ + Others.prototype.parseCommand = function(data) { + if(this.order_sent == data) { + this.order_sent = ''; + setTimeout(function() { + this.callback(); + this.fifo.orderFinished(); + }.bind(this), this.callback_delay); + } else { + logger.warn("Arduino others unknown: "+data+" (order_sent : "+this.order_sent+")"); + } + }; + + /** + * Send command + * + * @param {Object} [callback] + * @param {string} cmd + * @param {string} args + * @param {int} callback_delay + */ + Others.prototype.sendCommand = function(callback, cmd, args, callback_delay){ + if(callback === undefined) { + callback = function(){}; + } + + this.fifo.newOrder(function() { + this.callback = callback; + this.callback_delay = callback_delay; + this.order_sent = cmd; + + //logger.debug([cmd].concat(args).join(";")); + this.sp.write([cmd].concat(args).join(";")+"\n"); + }.bind(this), 'sendCommandOther('+cmd+':'+args+')'); + }; + + /** + * Fermer stabilisateur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.fermerStabilisateur = function(callback, time) { + if (time === undefined) { + time = 100; + } + this.sendCommand(callback, 'H', [100, 23], time); + }; + + /** + * Ouvrir stabilisateur moyen + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.ouvrirStabilisateurMoyen = function(callback, time) { + if (time === undefined) { + time = 100; + } + this.sendCommand(callback, 'H', [90, 30], time); + }; + + /** + * Ouvrir stabilisateur grand + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.ouvrirStabilisateurGrand = function(callback, time) { + if (time === undefined) { + time = 400; + } + this.sendCommand(callback, 'H', [40, 80], time); + }; + + /** + * Fermer bloqueur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.fermerBloqueur = function(callback, time) { + if (time === undefined) { + time = 200; + } + this.sendCommand(callback, 'M', [32, 68], time); + }; + + /** + * Ouvrir bloqueur moyen + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.ouvrirBloqueurMoyen = function(callback, time) { + if (time === undefined) { + time = 200; + } + this.sendCommand(callback, 'M', [66, 29], time); + }; + + /** + * Ouvrir stabilisateur grand + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.ouvrirBloqueurGrand = function(callback, time) { + if (time === undefined) { + time = 400; + } + this.sendCommand(callback, 'M', [106, 1], time); + }; + + /** + * Prendre gobelet + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.prendreGobelet = function(callback, time) { + if (time === undefined) { + time = 200; + } + this.sendCommand(callback, 'G', [115], time); + }; + + /** + * Lacher gobelet + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.lacherGobelet = function(callback, time) { + if (time === undefined) { + time = 200; + } + this.sendCommand(callback, 'G', [50], time); + }; + + /** + * Sortir Clap + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.sortirClap = function(callback, time) { + if (time === undefined) { + time = 200; + } + this.sendCommand(callback, 'C', [130], time); + }; + + /** + * Ranger Clap + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.rangerClap = function(callback, time) { + if (time === undefined) { + time = 100; + } + this.sendCommand(callback, 'C', [40], time); + }; + + /** + * Monter ascenseur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.monterAscenseur = function(callback, time) { + if (time === undefined) { + time = 0; + } + this.sendCommand(callback, 'S', [-250], time); + }; + + /** + * Monter un peu ascenseur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.monterUnPeuAscenseur = function(callback, time) { + if (time === undefined) { + time = 0; + } + this.sendCommand(callback, 'S', [-30], time); + }; + + /** + * Descendre un peu ascenseur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.descendreUnPeuAscenseur = function(callback, time) { + if (time === undefined) { + time = 0; + } + this.sendCommand(callback, 'S', [30], time); + }; + + /** + * Monter moyen ascenseur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.monterMoyenAscenseur = function(callback, time) { + if (time === undefined) { + time = 0; + } + this.sendCommand(callback, 'S', [-60], time); + }; + + /** + * Descendre un peu ascenseur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.descendreMoyenAscenseur = function(callback, time) { + if (time === undefined) { + time = 0; + } + this.sendCommand(callback, 'S', [60], time); + }; + + /** + * Relacher ascenseur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.relacherAscenseur = function(callback, time) { + if (time === undefined) { + time = 0; + } + this.sendCommand(callback, 'S', [0], time); + }; + + /** + * Descendre ascenseur + * + * @param {Object} callback + * @param {int} [time] + */ + Others.prototype.descendreAscenseur = function(callback, time) { + if (time === undefined) { + time = 0; + } + this.sendCommand(function() { + this.relacherAscenseur(callback); + }.bind(this), 'S', [250], time); + }; + + return Others; +})(); diff --git a/clients/old_files/pr/others.simu.class.js b/clients/old_files/pr/others.simu.class.js new file mode 100644 index 0000000..67e5922 --- /dev/null +++ b/clients/old_files/pr/others.simu.class.js @@ -0,0 +1,194 @@ +/** + * Others Simulator module + * + * @module clients/pr/others-simu + * @see {@link clients/pr/others-simu.Others} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('pr.others'); + + /** + * Others constructor + * + * @exports clients/pr/others-simu.Others + * @constructor + * @param {clients/shared/fifo.Fifo} fifo + */ + function Others(fifo) { + /** @type {clients/shared/fifo.Fifo} */ + this.fifo = fifo; + } + + /** + * Disconnects (nothing ?) + */ + Others.prototype.disconnect = function(x) { + + }; + + /** + * Call callback + * + * @param {Object} [callback] + * @param {int} ms + */ + Others.prototype.callCallback = function(callback, ms) { + if(callback === undefined) { + callback = function(){}; + } + this.fifo.newOrder(function() { + setTimeout(function() { + callback(); + this.fifo.orderFinished(); + }.bind(this), parseInt(ms/5)); + }.bind(this)); + }; + + /** + * Fermer stabilisateur + * + * @param {Object} callback + */ + Others.prototype.fermerStabilisateur = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Ouvrir stabilisateur moyen + * + * @param {Object} callback + */ + Others.prototype.ouvrirStabilisateurMoyen = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Ouvrir stabilisateur grand + * + * @param {Object} callback + */ + Others.prototype.ouvrirStabilisateurGrand = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Fermer bloqueur + * + * @param {Object} callback + */ + Others.prototype.fermerBloqueur = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Ouvrir bloqueur moyen + * + * @param {Object} callback + */ + Others.prototype.ouvrirBloqueurMoyen = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Ouvrir bloqueur grand + * + * @param {Object} callback + */ + Others.prototype.ouvrirBloqueurGrand = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Sortir clap + * + * @param {Object} callback + */ + Others.prototype.sortirClap = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Ranger clap + * + * @param {Object} callback + */ + Others.prototype.rangerClap = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Prendre Gobelet + * + * @param {Object} callback + */ + Others.prototype.prendreGobelet = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Lacher Gobelet + * + * @param {Object} callback + */ + Others.prototype.lacherGobelet = function(callback) { + this.callCallback(callback, 200); + }; + + /** + * Monter ascenseur + * + * @param {Object} callback + */ + Others.prototype.monterAscenseur = function(callback) { + this.callCallback(callback, 1000); + }; + + /** + * Monter un peu ascenseur + * + * @param {Object} callback + */ + Others.prototype.monterUnPeuAscenseur = function(callback) { + this.callCallback(callback, 300); + }; + + /** + * Descendre un peu ascenseur + * + * @param {Object} callback + */ + Others.prototype.descendreUnPeuAscenseur = function(callback) { + this.callCallback(callback, 300); + }; + + /** + * Monter moyen ascenseur + * + * @param {Object} callback + */ + Others.prototype.monterMoyenAscenseur = function(callback) { + this.callCallback(callback, 500); + }; + + /** + * Descendre moyen ascenseur + * + * @param {Object} callback + */ + Others.prototype.descendreMoyenAscenseur = function(callback) { + this.callCallback(callback, 500); + }; + + /** + * Descendre ascenseur + * + * @param {Object} callback + */ + Others.prototype.descendreAscenseur = function(callback) { + this.callCallback(callback, 1000); + }; + + + return Others; +})(); diff --git a/clients/old_files/shared/asserv.class.js b/clients/old_files/shared/asserv.class.js new file mode 100644 index 0000000..976b3de --- /dev/null +++ b/clients/old_files/shared/asserv.class.js @@ -0,0 +1,437 @@ +/** + * Asserv module + * + * @module clients/shared/asserv + * @requires module:clients/shared/defineParser + * @see {@link clients/shared/asserv.Asserv} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('asserv'); + var COMMANDS = require('./defineParser.js')('./arduino/asserv/protocol.h'); + var DETECT_SERIAL_TIMEOUT = 100; //ms, -1 to disable + + // function Asserv(sp, client) { + // this.client = client; + // this.getPos(); + // this.sp = sp; + // this.pos = {}; + // this.sentCommands = {}; + // this.currentId = 0; + // } + + /** + * Asserv Constructor + * + * @exports clients/shared/asserv.Asserv + * @constructor + * @param {Object} sp + * @param {Object} client + * @param {Object} who + * @param {Object} sendStatus + * @param {clients/shared/asserv.Asserv} fifo + */ + function Asserv(sp, client, who, sendStatus, fifo) { + /** @type {boolean} */ + this.ready = true; + /** @type {Object} */ + this.sendStatus = sendStatus; + /** @type {Object} */ + this.sp = sp; + /** @type {Object} */ + this.client = client; + /** @type {Object} */ + this.pos = {}; + /** @type {Object} */ + this.who = who; + /** @type {int} */ + this.currentId = 0; + /** @type {string} */ + this.color = "yellow"; + /** @type {clients/shared/asserv.Asserv} */ + this.fifo = fifo; + + this.sp.on("data", function(data){ + if(this.ready === false){ + this.ready = true; + this.sendStatus(); + } + this.parseCommand(data.toString()); + }.bind(this)); + this.sp.on("error", function(data){ + this.ready = false; + this.sendStatus(); + logger.debug("error", data.toString()); + }.bind(this)); + this.sp.on("close", function(data){ + this.ready = false; + this.sendStatus(); + logger.error("Serial port close"); + }.bind(this)); + + setTimeout(function() { + this.getPos(); + }.bind(this), 2000); + } + /** + * Convert color x + * + * @param {int} x + */ + Asserv.prototype.convertColorX = function(x) { + if(this.color == "yellow") { + return x; + } else { + return 3000-x; + } + } + /** + * Convert color y + * + * @param {int} y + */ + Asserv.prototype.convertColorY = function(y) { + if(this.color == "yellow") { + return y; + } else { + return y; + } + } + /** + * Convert color Angle + * + * @param {int} a + */ + Asserv.prototype.convertColorA = function(a) { + if(this.color == "yellow") { + return convertA(a); + } else { + return convertA(Math.PI - a); + } + } + + /** + * Convert Angle + * + * @param {int} a + */ + function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); } + /** + * Set Angle + * + * @param {int} a + */ + Asserv.prototype.setA = function(a) { + // logger.debug(a, convertA(a)); + this.pos.a = convertA(a); + } + /** + * Position ? + * + * @param {Object} pos + */ + Asserv.prototype.Pos = function(pos) { + this.pos.x = pos.x; + this.pos.y = pos.y; + this.setA(pos.a); + } + /** + * Sets Position + * + * @param {Object} pos + * @param {Object} callback + */ + Asserv.prototype.setPos = function(pos, callback) { + logger.debug(pos); + if(pos.color !== undefined) + this.color = pos.color; + this.sendCommand(COMMANDS.SET_POS, [ + parseInt(this.convertColorX(pos.x)), + parseInt(this.convertColorY(pos.y)), + myWriteFloat(this.convertColorA(pos.a)) + ], false, callback); + } + /** + * Gets Potition + * + * @param {Object} pos + */ + Asserv.prototype.getPos = function(pos) { + this.client.send('ia', this.who+'.getpos'); + } + /** + * Sends Position + */ + Asserv.prototype.sendPos = function() { + this.client.send('ia', this.who+'.pos', this.pos); + } + + /** + * Set position calage + * + * @param {Object} pos + * @param {Object} callback + */ + Asserv.prototype.setPosCalage = function(pos, callback) { + this.sendCommand(COMMANDS.SET_POS, [ + parseInt(this.convertColorX(pos.x)), + parseInt(this.convertColorY(pos.y)), + myWriteFloat(this.convertColorA(pos.a)) + ], false, function() { + callback(); + this.fifo.orderFinished(); + }.bind(this), true); + } + + /** + * Calage X + * + * @param {int} x + * @param {int} a Angle + * @param {Object} callback + */ + Asserv.prototype.calageX = function(x, a, callback) { + if(callback === undefined) + callback = function(){}; + this.fifo.newOrder(function() { + this.setPosCalage({x: x, y: this.pos.y, a: a}, callback); + }.bind(this), 'calageX'); + + } + /** + * Calage Y + * + * @param {int} y + * @param {int} a Angle + * @param {Object} callback + */ + Asserv.prototype.calageY = function(y, a, callback) { + if(callback === undefined) + callback = function(){}; + this.fifo.newOrder(function() { + this.setPosCalage({x: this.pos.x, y: y, a: a}, callback, true); + }.bind(this), 'calageY'); + } + + // For float + /** + * My write float + * + * @param {float} f + */ + function myWriteFloat(f){ return Math.round(f*COMMANDS.FLOAT_PRECISION); } + /** + * My Parse float + * + * @param {float} f + */ + function myParseFloat(f){ return parseInt(f)/COMMANDS.FLOAT_PRECISION; } + + + /** + * Parse Command + * + * @param {string} data + */ + Asserv.prototype.parseCommand = function(data){ + // logger.debug(data); + var datas = data.split(';'); + var cmd = datas.shift();//, id = datas.shift(); + if(cmd == COMMANDS.AUTO_SEND && datas.length >= 4) { // periodic position update + var lastFinishedId = parseInt(datas.shift()); // TODO + this.Pos({ + x: this.convertColorX(parseInt(datas.shift())), + y: this.convertColorY(parseInt(datas.shift())), + a: this.convertColorA(myParseFloat(datas.shift())) + }); + + + this.sendPos(); + + // logger.debug(lastFinishedId); + if(this.currentId != lastFinishedId) { + // logger.fatal('finish id', lastFinishedId); + this.currentId = lastFinishedId; + var use_fifo = this.use_fifo; + this.use_fifo = true; + this.callback(); + if(use_fifo) + this.fifo.orderFinished(); + } + } else if(cmd == this.order_sent) { + this.order_sent = ''; + // logger.debug('finish', datas.shift()); + if(!this.wait_for_id) { + var use_fifo = this.use_fifo; + this.use_fifo = true; + this.callback(); + if(use_fifo) + this.fifo.orderFinished(); + } + } else if (cmd == COMMANDS.JACK) { + logger.info("JACK !"); + this.client.send("ia", "ia.jack"); + } else { + // logger.warn(datas); + logger.warn("Command return from Arduino to unknown cmd="+cmd); + } + } + /** + * Sends Command + * + * @param {string} cmd + * @param {string} args + * @param {int} wait_for_id + * @param {Object} [callback] + * @param {boolean} no_fifo + */ + Asserv.prototype.sendCommand = function(cmd, args, wait_for_id, callback, no_fifo){ + function nextOrder() { + if(callback === undefined) + callback = function(){}; + this.callback = callback; + args = args || []; + this.order_sent = cmd; + this.wait_for_id = wait_for_id; + logger.debug([cmd,this.currentId+1].concat(args).join(";")+"\n"); + this.sp.write([cmd,this.currentId+1].concat(args).join(";")+"\n"); + } + + this.use_fifo = !no_fifo; + + if(this.use_fifo) { + this.fifo.newOrder(nextOrder.bind(this), 'sendCommandAsserv('+cmd+':'+args+')'); + } else { + nextOrder.call(this); + } + } + + /** + * Set Vitesse + * + * @param {int} v Speed + * @param {float} r Rotation + * @param {Object} callback + */ + Asserv.prototype.setVitesse = function(v, r, callback) { + // logger.debug(myWriteFloat(r)); + this.sendCommand(COMMANDS.SPDMAX, [ + parseInt(v), + myWriteFloat(r) + ], false, callback); + }; + + /** + * Speed ? + * + * @param {int} l + * @param {int} a Angle + * @param {int} ms + * @param {Object} callback + */ + Asserv.prototype.speed = function(l, a, ms, callback) { + // logger.debug(myWriteFloat(r)); + this.sendCommand(COMMANDS.SPD, [ + parseInt(l), + parseInt(a), + parseInt(ms) + ], true, callback); + }; + + /** + * Set Acceleration + * + * @param {int} acc + * @param {Object} callback + */ + Asserv.prototype.setAcc = function(acc,callback) { + // logger.debug(myWriteFloat(r)); + this.sendCommand(COMMANDS.ACCMAX, [ + parseInt(acc) + ], false, callback); + }; + + /** + * Clean + * + * @param {Object} callback + */ + Asserv.prototype.clean = function(callback){ + this.sendCommand(COMMANDS.CLEANG, false, callback); + }; + + /** + * Pulse Width Modulation + * + * @param {int} left + * @param {int} right + * @param {int} ms + * @param {Object} callback + */ + Asserv.prototype.pwm = function(left, right, ms, callback) { + this.sendCommand(COMMANDS.PWM, [ + parseInt(left), + parseInt(right), + parseInt(ms) + ], true, callback); + + }; + + /** + * Go X Y + * + * @param {int} x + * @param {int} y + * @param {string} sens + * @param {Object} callback + * @param {boolean} no_fifo + */ + Asserv.prototype.goxy = function(x, y, sens, callback, no_fifo){ + if(sens == "avant") sens = 1; + else if(sens == "arriere") sens = -1; + else sens = 0; + + this.sendCommand(COMMANDS.GOTO, [ + parseInt(this.convertColorX(x)), + parseInt(this.convertColorY(y)), + sens + ], true, callback, no_fifo); + }; + /** + * Go Angle + * + * @param {int} a + * @param {Object} callback + * @param {boolean} no_fifo + */ + Asserv.prototype.goa = function(a, callback, no_fifo){ + // this.clean(); + this.sendCommand(COMMANDS.ROT, [ + myWriteFloat(this.convertColorA(a)) + ], true, callback, no_fifo); + }; + + /** + * Set P I D + * @param {float} p + * @param {float} i + * @param {float} d + * @param {Object} callback + */ + Asserv.prototype.setPid = function(p, i, d, callback){ + // this.clean(); + this.sendCommand(COMMANDS.PIDALL, [ + myWriteFloat(p), + myWriteFloat(i), + myWriteFloat(d) + ],false, callback); + }; + + // Asserv.prototype.gotoPath = function(callback, path){ + // this.clean(); + // if(instanceof path !=== "Array") path = path.path; // not sure about Path class right now + // path.forEach(function(item)); + // }; + + return Asserv; +})(); diff --git a/clients/old_files/shared/asserv.simu.class.js b/clients/old_files/shared/asserv.simu.class.js new file mode 100644 index 0000000..21e3a9d --- /dev/null +++ b/clients/old_files/shared/asserv.simu.class.js @@ -0,0 +1,359 @@ +/** + * Asserv Simulator module + * + * @module clients/shared/asserv-simu + * @see {@link clients/shared/asserv-simu.Asserv} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('asserv'); + + // For simu + var SIMU_FACTOR_VIT = 1; + var SIMU_FACTOR_A = 0.3; // Facteur + // var SIMU_PWM_REF = 255; // à une PWM de 80 + function SIMU_DIST(pwm, dt, vitesse) { return (vitesse*SIMU_FACTOR_VIT)*dt; } + function SIMU_DIST_ROT(a) { return Math.abs(a)*100; } // Rayon aproximatif de 10cm + function SIMU_ROT_TIME(a, vitesse) { return SIMU_DIST_ROT(a)/(vitesse*SIMU_FACTOR_VIT*SIMU_FACTOR_A); } + var FPS = 30; + + var timeouts = []; + + /** + * Asserv Constructor + * + * @exports clients/shared/asserv-simu.Asserv + * @constructor + * @param {Object} client + * @param {Object} who + * @param {clients/shared/asserv.Asserv} fifo + */ + function Asserv(client, who, fifo) { + /** @type {Object} */ + this.client = client; + /** @type {Object} */ + this.who = who; + /** @type {Object} */ + this.pos = { + x:0,y:0,a:0 + }; + /** @type {clients/shared/asserv.Asserv} */ + this.fifo = fifo; + /** @type {int} */ + this.vitesse = 800; + this.getPos(); + } + + /** + * New Order + * + * @param {Object} callback + * @param {int} ms + * @param {boolean} no_fifo + */ + Asserv.prototype.newOrder = function(callback, ms, no_fifo, delay_order_finished){ + if(callback === undefined) + callback = function(){}; + var use_fifo = !no_fifo; + if(ms === undefined) ms = 0; + if(delay_order_finished === undefined) delay_order_finished = 0; + + function nextOrder() { + timeouts.push(setTimeout(function() { + callback(); + timeouts.push(setTimeout(function() { + this.fifo.orderFinished(); + }.bind(this), delay_order_finished)); + }.bind(this), ms)); + } + + if(use_fifo) { + // logger.debug('use_fifo'); + this.fifo.newOrder(nextOrder.bind(this)); + } else { + // logger.debug('no_fifo'); + timeouts.push(setTimeout(callback, ms));//.call(this)); + } + } + + /** + * Convert Angle + * + * @param {int} a Angle + */ + function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); } + /** + * Set Angle + * + * @param {int} a Angle + */ + Asserv.prototype.setA = function(a) { + this.pos.a = convertA(a); + } + /** + * Position ? + * + * @param {Object} pos + */ + Asserv.prototype.Pos = function(pos) { + this.pos.x = pos.x; + this.pos.y = pos.y; + this.setA(pos.a); + } + /** + * Sets Position + * + * @param {Object} pos + * @param {Object} callback + */ + Asserv.prototype.setPos = function(pos, callback) { + this.Pos(pos); + this.sendPos(); + if(callback !== undefined) + callback(); + } + /** + * Gets Position + * + * @param {Object} pos + */ + Asserv.prototype.getPos = function(pos) { + this.client.send('ia', this.who+'.getpos'); + } + /** + * Sends Position + */ + Asserv.prototype.sendPos = function() { + this.client.send('ia', this.who+'.pos', this.pos); + } + + /** + * Clean + */ + Asserv.prototype.clean = function(){ + logger.debug('cleaning %d timeouts', timeouts.length); + while(timeouts.length > 0) { + clearTimeout(timeouts.shift()); + } + }; + /** + * Avancer plot + * + * @param {Object} callback + */ + Asserv.prototype.avancerPlot = function(callback) { + this.newOrder(callback, 1200); + } + + /** + * Set vitesse + * + * @param {int} v Speed + * @param {int} r rotation + * @param {Object} callback + */ + Asserv.prototype.setVitesse = function(v, r, callback) { + this.vitesse = parseInt(v); + if(callback !== undefined) + callback(); + }; + /** + * Calage X + * + * @param {int} x + * @param {int} a Angle + * @param {Object} callback + */ + Asserv.prototype.calageX = function(x, a, callback) { + this.setPos({x: x, y: this.pos.y, a: a}, callback); + } + /** + * Calage Y + * + * @param {int} y + * @param {int} a Angle + * @param {Object} callback + */ + Asserv.prototype.calageY = function(y, a, callback) { + this.setPos({x: this.pos.x, y: y, a: a}, callback); + } + + /** + * Simu Speed + * + * @param {int} vit Speed + * @param {int} x + * @param {int} y + * @param {int} a Angle + * @param {int} dt + */ + Asserv.prototype.simu_speed = function(vit, x, y, a, dt) { + return function() { + this.pos = { + x: x + Math.cos(a) * vit*dt/1000, + y: y + Math.sin(a) * vit*dt/1000, + a: a + } + this.sendPos(); + }.bind(this); + } + /** + * Speed ? + * + * @param {int} l + * @param {int} a Angle + * @param {int} ms + * @param {Object} callback + */ + Asserv.prototype.speed = function(l, a, ms,callback) { + this.newOrder(function() { + // this.simu.pwm(callback, l/3, l/3, ms); + for(var t = 0; t < ms; t += 1000/FPS) { + timeouts.push(setTimeout(this.simu_speed(l, this.pos.x, this.pos.y, this.pos.a, t), t)); + } + timeouts.push(setTimeout(this.simu_speed(l, this.pos.x, this.pos.y, this.pos.a, ms), ms)); + timeouts.push(setTimeout(callback, ms)); + }.bind(this), 0, false, ms); + }; + + /** + * Simu Pulse Width Modulation + * + * @param {int} x + * @param {int} y + * @param {int} a Angle + * @param {int} dt + */ + Asserv.prototype.simu_pwm = function(pwm, x, y, a, dt) { + return function() { + this.pos = { + x: x + Math.cos(a) * SIMU_DIST(pwm, dt/1000, this.vitesse), + y: y + Math.sin(a) * SIMU_DIST(pwm, dt/1000, this.vitesse), + a: a + } + this.sendPos(); + }.bind(this); + } + /** + * Pulse Width Modulation + * + * @param {string} left + * @param {string} right + * @param {int} ms + * @param {Object} callback + */ + Asserv.prototype.pwm = function(left, right, ms, callback) { + this.newOrder(function() { + var pwm = (left+right)/2; + for(var t = 0; t < ms; t += 1000/FPS) { + timeouts.push(setTimeout(this.simu_pwm(pwm, this.pos.x, this.pos.y, this.pos.a, t), t)); + } + timeouts.push(setTimeout(this.simu_pwm(pwm, this.pos.x, this.pos.y, this.pos.a, ms), ms)); + timeouts.push(setTimeout(callback, ms)); + }.bind(this), 0, false, ms); + }; + + /** + * Simu Go X Y + * + * @param {int} x + * @param {int} y + */ + Asserv.prototype.simu_goxy = function(x, y) { + return function() { + this.pos.x = x; + this.pos.y = y; + this.sendPos(); + }.bind(this); + } + /** + * Go X Y + * + * @param {int} x + * @param {int} y + * @param {string} sens + * @param {Object} callback + * @param {boolean} no_fifo + */ + Asserv.prototype.goxy = function(x, y, sens, callback, no_fifo) { + + var dx = x-this.pos.x; + var dy = y-this.pos.y; + var dist = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)); + var tf = (dist / (this.vitesse*SIMU_FACTOR_VIT))*1000; // *1000 s->ms + + angle_avant = convertA(Math.atan2(dy,dx)-this.pos.a); + angle_arriere = convertA(angle_avant+Math.PI); + + if(sens == "avant") angle_depart = angle_avant + else if(sens == "arriere") angle_depart = angle_arriere; + else if (Math.abs(angle_avant) < Math.abs(angle_arriere)) angle_depart = angle_avant; + else angle_depart = angle_arriere; + + // logger.debug("dx: ", dx); + // logger.debug("dy: ", dy); + // logger.debug("angle: ", this.pos.a); + // logger.debug("angle avant: ", angle_avant); + // logger.debug("angle arriere: ", angle_arriere); + // logger.debug("angle depart: ", angle_depart); + + this.goa(angle_depart+this.pos.a, function() { + this.newOrder(function() { + for(var t = 0; t < tf; t += 1000/FPS) { + timeouts.push(setTimeout(this.simu_goxy(this.pos.x+dx*t/tf, this.pos.y+dy*t/tf), t)); + } + timeouts.push(setTimeout(this.simu_goxy(x, y), tf)); + timeouts.push(setTimeout(callback, tf)); + }.bind(this), 0, no_fifo, tf); + }.bind(this), no_fifo); + }; + /** + * Simu Go Angle + * + * @param {int} a Angle + */ + Asserv.prototype.simu_goa = function(a) { + return function() { + this.setA(a); + this.sendPos(); + }.bind(this); + } + /** + * Simu Go Angle + * + * @param {int} a Angle + * @param {Object} callback + * @param {boolean} no_fifo + */ + Asserv.prototype.goa = function(a, callback, no_fifo){ + a = convertA(a); + da = convertA(a-this.pos.a); + // logger.debug("depart:", this.pos.a); + // logger.debug("arrivee:", a); + // logger.debug("delta:", da); + + var tf = SIMU_ROT_TIME(da, this.vitesse)*1000; // *1000 s->ms + this.newOrder(function() { + for(var t = 0; t < tf; t += 1000/FPS) { + // logger.debug(this.pos.a+da*t/tf); + timeouts.push(setTimeout(this.simu_goa(this.pos.a+da*t/tf), t)); + } + timeouts.push(setTimeout(this.simu_goa(a), tf)); + timeouts.push(setTimeout(callback, tf)); + }.bind(this), 0, no_fifo, tf); + }; + + /** + * Set P I D + * + * @param {int} p + * @param {int} i + * @param {int} d + * @param {Object} callback + */ + Asserv.prototype.setPid = function(p, i, d, callback){ + this.newOrder(callback); + }; + + return Asserv; +})(); diff --git a/clients/old_files/shared/defineParser.js b/clients/old_files/shared/defineParser.js new file mode 100644 index 0000000..f7052d7 --- /dev/null +++ b/clients/old_files/shared/defineParser.js @@ -0,0 +1,49 @@ +/** + * Define Parser module + * + * @module clients/shared/defineParser + */ + +/* Converts : + * #define VALUEA + * #define VALUEB 'b' + * #define VALUEC 42 + * In : + * { + * VALUEA : null, + * VALUEB : "b", + * VALUEC : 42 + * } + */ + + + +module.exports = (function(){ + var logger = require('log4js').getLogger('DefineParser'); + var fs = require('fs'); + + var reg = /#define[ \t]+(\S+)[ \t]+(\S+)/g; + + + return function parse(file){ + var parsed = {}; + fs.readFile(file, 'utf8', function (err,data) { + if(err) { + logger.fatal("cant read file:\""+file+"\""); + return ; + } + var nb = 0; + while( findings = reg.exec(data) ) { + try { + parsed[findings[1]] = eval(findings[2]); + } catch(e) {} + // try to evaluate calculus... + nb++; + } + logger.info("done parsing \""+file+"\" with "+nb+" defines"); + //should be quick enough + }); + return parsed; + } + +})(); \ No newline at end of file diff --git a/clients/old_files/shared/fifo.class.js b/clients/old_files/shared/fifo.class.js new file mode 100644 index 0000000..8d359f1 --- /dev/null +++ b/clients/old_files/shared/fifo.class.js @@ -0,0 +1,67 @@ +/** + * First In First Out module + * + * @module clients/shared/fifo + * @see {@link clients/shared/fifo.Fifo} + */ + +module.exports = (function () { + var logger = require('log4js').getLogger('Fifo'); + + /** + * Fifo Constructor + * + * @exports clients/shared/fifo.Fifo + * @constructor + */ + function Fifo() { + this.clean(); + } + + /** + * Clean + */ + Fifo.prototype.clean = function(callback) { + /** fifo */ + this.fifo = []; + /** @type {boolean} */ + this.order_in_progress = false; + } + + /** + * Order finished + */ + Fifo.prototype.orderFinished = function() { + this.order_in_progress = false; + this.nextOrder(); + } + + /** + * New Order + * + * @param {Object} callback + * @param {string} [name] + */ + Fifo.prototype.newOrder = function(callback, name) { + if (name === undefined) + name = ""; + this.fifo.push({callback: callback, name: name}); + this.nextOrder(); + } + + /** + * Next Order + */ + Fifo.prototype.nextOrder = function() { + if(!this.order_in_progress && this.fifo.length > 0) { + // logger.debug(this.fifo.length); + this.order_in_progress = true; + object = this.fifo.shift(); + // logger.debug("Calling : "+object.name); + object.callback(); + } + } + + + return Fifo; +})(); diff --git a/clients/old_files/shared/genericRobotClient.class.js b/clients/old_files/shared/genericRobotClient.class.js new file mode 100644 index 0000000..47d099d --- /dev/null +++ b/clients/old_files/shared/genericRobotClient.class.js @@ -0,0 +1,81 @@ +module.exports = (function () { + "use strict"; + + function GenericRobotClient(robotName) { + // Requires + + this.logger = require('log4js').getLogger(robotName); + + // logger.info("Started NodeJS client with pid " + process.pid); + + + this.SocketClient = require('../../server/socket_client.class.js'); + this.server = require('../../config.js').server; + + this.client = new SocketClient({ + server_ip: server; + type: robotName; + }); + + sendChildren(lastStatus); + + this.acts = new (require('./actuators.class.js'))(client, sendChildren); + this.detect = null; + + this.queue = []; + this.orderInProgress = false; + + start(); + + // On message + this.client.order(function (from, name, params){ + switch (name){ + case "collision": + this.queue = []; + this.acts.clean(); + this.orderInProgress = false; + break; + case "stop": + this.acts.clean(); + this.logger.fatal("Stop Robot"); + process.exit(); + break; + + // useless // + case "start": + this.queue = []; + start(); + break; + default: + addOrder2Queue(from, name, params); + } + }); + } + + /** + * Start the Robot + */ + GenericRobotClient.prototype.start = function(){ + this.logger.info("Starting :)"); + sendChildren({ + status: "starting", + children:[] + }); + this.detect = new (require('./detect.class.js'))(devicesDetected); + } + + /** + * Stops the robot + */ + GenericRobotClient.prototype.stop = function(){ + this.acts.quit(); + + // Send struct to server + sendChildren({ + status: "waiting", + children:[] + }); + } + + return GenericRobotClient; +})(); \ No newline at end of file diff --git a/clients/old_files/shared/test.js b/clients/old_files/shared/test.js new file mode 100644 index 0000000..a74dff0 --- /dev/null +++ b/clients/old_files/shared/test.js @@ -0,0 +1,12 @@ + + + +var defineParser = require("./defineParser.js"); +console.log(defineParser); + +var commands = defineParser("./arduino/asserv/protocol.h"); + + +setTimeout(function(){ + console.log(commands); +}, 200); \ No newline at end of file From dc6d9e8c61d2d6d66e757ee155b9a3cc3e0be34b Mon Sep 17 00:00:00 2001 From: Mamal Date: Sat, 1 Apr 2017 18:44:04 +0200 Subject: [PATCH 10/74] Removing all the duplicated files --- clients/gr/actuators.class.js | 177 -------- clients/gr/detect.class.js | 59 --- clients/gr/main.js | 199 --------- clients/gr/servos.class.js | 93 ----- clients/gr/servos.simu.class.js | 41 -- clients/pr/actuators.class.js | 605 ---------------------------- clients/pr/ax12.class.js | 237 ----------- clients/pr/ax12.simu.class.js | 84 ---- clients/pr/detect.class.js | 93 ----- clients/pr/elevator.class.js | 123 ------ clients/pr/main.js | 184 --------- clients/pr/others.class.js | 313 -------------- clients/pr/others.simu.class.js | 194 --------- clients/shared/asserv.class.js | 437 -------------------- clients/shared/asserv.simu.class.js | 359 ----------------- clients/shared/defineParser.js | 49 --- clients/shared/fifo.class.js | 67 --- clients/shared/test.js | 12 - 18 files changed, 3326 deletions(-) delete mode 100644 clients/gr/actuators.class.js delete mode 100644 clients/gr/detect.class.js delete mode 100644 clients/gr/main.js delete mode 100644 clients/gr/servos.class.js delete mode 100644 clients/gr/servos.simu.class.js delete mode 100644 clients/pr/actuators.class.js delete mode 100644 clients/pr/ax12.class.js delete mode 100644 clients/pr/ax12.simu.class.js delete mode 100644 clients/pr/detect.class.js delete mode 100644 clients/pr/elevator.class.js delete mode 100644 clients/pr/main.js delete mode 100644 clients/pr/others.class.js delete mode 100644 clients/pr/others.simu.class.js delete mode 100644 clients/shared/asserv.class.js delete mode 100644 clients/shared/asserv.simu.class.js delete mode 100644 clients/shared/defineParser.js delete mode 100644 clients/shared/fifo.class.js delete mode 100644 clients/shared/test.js diff --git a/clients/gr/actuators.class.js b/clients/gr/actuators.class.js deleted file mode 100644 index 13d64e1..0000000 --- a/clients/gr/actuators.class.js +++ /dev/null @@ -1,177 +0,0 @@ -/** - * Actuators module - * - * @module clients/gr/actuators - * @requires module:clients/shared/fifo - * @requires module:clients/gr/servos - * @requires module:clients/gr/servos-simu - * @requires module:clients/shared/asserv - * @requires module:clients/shared/asserv-simu - * @see {@link clients/gr/actuators.Acts} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('gr.acts'); - /** @type {Object} */ - var SerialPort = require("serialport"); - /** @type {clients/shared/fifo.Fifo} */ - var fifo = new (require('../shared/fifo.class.js'))(); - - /** @type {clients/gr/servos.Servos} */ - var servos = null; - /** @type {clients/gr/asserv.Asserv} */ - var asserv = null; - var date = new Date(); - /** @type {int} */ - var lastSendStatus = date.getTime(); - - /** - * Acts Constructor - * - * @exports clients/gr/actuators.Acts - * @constructor - * @param {Object} client - * @param {Object} sendChildren - */ - function Acts(client, sendChildren) { - /** @type {Object} */ - this.client = client; - /** @type {Object} */ - this.sendChildren = sendChildren; - this.start(); - } - - /** - * Starts (nothing ?) - */ - Acts.prototype.start = function(){ - - }; - - /** - * Cleans fifo and asserv - */ - Acts.prototype.clean = function(){ - fifo.clean(); // A priori déjà vide - asserv.clean(); - }; - - /** - * Connect to the servos - * - * @param {Object} [struct] - */ - Acts.prototype.connectTo = function(struct){ - if (!struct.servos) { - logger.fatal("Lancement des servos gr en mode simu !"); - servos = new (require('./servos.simu.class.js'))(); - } else { - servos = new (require('./servos.class.js'))(struct.servos, this.sendStatus); - } - if (!struct.asserv) { - logger.fatal("Lancement de l'asserv gr en mode simu !"); - asserv = new (require('../shared/asserv.simu.class.js'))(this.client, 'gr', fifo); - } else { - asserv = new (require('../shared/asserv.class.js'))( - new SerialPort(struct.asserv, { - baudrate: 57600, - parser:SerialPort.parsers.readline('\n') - }), this.client, 'gr', this.sendStatus, fifo - ); - } - }; - - /** - * Sends Status - */ - Acts.prototype.sendStatus = function() { - if(lastSendStatus < date.getTime()-1000){ - this.sendChildren(this.getStatus); - lastSendStatus = date.getTime(); - } - }; - - /** - * Gets the status - */ - Acts.prototype.getStatus = function(){ - var data = { - "status": "", - "children": [] - }; - - data.status = "everythingIsAwesome"; - - if(servos && servos.ready){ - data.children.push("Arduino servos"); - }else - data.status = "ok"; - - if(asserv && asserv.ready){ - data.children.push("Arduino asserv"); - }else - data.status = "error"; - - return data; - }; - - /** - * Tries to quit - */ - Acts.prototype.quit = function(){ - if (!!servos && servos.ready) - servos.disconnect(); - if (!!asserv && asserv.ready) - asserv.disconnect(); - }; - - /** - * Order switch - * - * @param {string} from - * @param {string} name - * @param {Object} params - * @param {Object} callback - */ - Acts.prototype.orderHandler = function (from, name, params, callback) { - // logger.info("Just received an order `" + name + "` from " + from + " with params :"); - logger.info(name, params); - - switch (name){ - // Others - case "acheter": - servos.acheter(callback); - break; - case "vendre": - servos.vendre(callback); - break; - // Asserv - case "pwm": - asserv.pwm(params.left, params.right, params.ms,callback); - break; - case "setvit": - asserv.setVitesse(params.v, params.r, callback); - break; - case "clean": - asserv.clean(callback); - break; - case "goa": - asserv.goa(params.a,callback); - break; - case "goxy": - asserv.goxy(params.x, params.y, "avant",callback); - break; - case "setpos": - asserv.setPos(params,callback); - break; - case "setpid": - asserv.setPid(params.p, params.i, params.d,callback); - break; - default: - logger.warn("Order name " + name + " " + from + " not understood"); - callback(); - } - }; - - return Acts; -})(); diff --git a/clients/gr/detect.class.js b/clients/gr/detect.class.js deleted file mode 100644 index c31e617..0000000 --- a/clients/gr/detect.class.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Detect module - * - * @module clients/gr/detect - * @see {@link clients/gr/detect.Detect} - */ - -module.exports = (function () { - var log4js = require('log4js'); - var logger = log4js.getLogger('pr.detect'); - var serialPort = require("serialport"); - - var sp = []; - - /** - * Detect constructor - * - * @exports clients/gr/detect.Detect - * @constructor - * @param {Object} callback - */ - function Detect(callback) { - /** @type {Object} */ - this.devicesFound = { - asserv: null, - servos: null - }; - /** @type {Object} */ - this.callback = callback; - this.searchArduinos(); - } - - /** - * Send SP - */ - Detect.prototype.sendSP = function (){ - // Sent to acts - this.callback(this.devicesFound); - }; - - /** - * Searches Arduino - */ - Detect.prototype.searchArduinos = function() { - // On check tous les ports disponibles - serialPort.list(function (err, ports) { - for(var i in ports) { - if(ports[i].comName.indexOf('ttyUSB') >= 0) { - this.devicesFound.servos = ports[i].comName; - } else if(ports[i].comName.indexOf('ttyACM') >= 0) { - this.devicesFound.asserv = ports[i].comName; - } - } - this.sendSP(); - }.bind(this)); - }; - - return Detect; -})(); \ No newline at end of file diff --git a/clients/gr/main.js b/clients/gr/main.js deleted file mode 100644 index fb42e1c..0000000 --- a/clients/gr/main.js +++ /dev/null @@ -1,199 +0,0 @@ -/** - * Main module - * - * @module clients/gr/main - * @requires server/socket_client - * @requires config - * @requires clients/gr/actuators - * @requires clients/gr/detect - */ - -(function () { - "use strict"; - // Requires - var log4js = require('log4js'); - var logger = log4js.getLogger('gr'); - - // logger.info("Started NodeJS client with pid " + process.pid); - - var SocketClient = require('../../server/socket_client.class.js'); - var server = require('../../config.js').server; - /** @type {server/socket_client.SocketClient} */ - var client = new SocketClient({ - server_ip: server, - type: "gr" - }); - - /** @type {Object} */ - var lastStatus = { - "status": "waiting" - }; - sendChildren(lastStatus); - - /** @type {clients/gr/actuators.Acts} */ - var acts = new (require('./actuators.class.js'))(client, sendChildren); - /** @type {clients/gr/detect.Detect} */ - var detect = null; // new (require('./detect.class.js'))(devicesDetected); - - var queue = []; - var orderInProgress = null; - - start(); - - // On message - client.order(function (from, name, params){ - // logger.info("Recieved an order "+name); - switch (name){ - case "collision": - queue = []; - acts.clean(); - orderInProgress = false; - break; - case "stop": - acts.clean(); - logger.fatal("Stop GR"); - process.exit(); - break; - - // useless // - case "start": - queue = []; - start(); - break; - default: - addOrder2Queue(from, name, params); - } - }); - - /** - * Starts the GR - */ - function start(){ - logger.info("Starting :)"); - sendChildren({ - status: "starting", - children:[] - }); - detect = new (require('./detect.class.js'))(devicesDetected); - } - - /** - * Stops the robot - */ - function stop(){ - acts.quit(); - - // Send struct to server - sendChildren({ - status: "waiting", - children:[] - }); - } - - /** - * Devices detected - * - * @param {Object} struct - */ - function devicesDetected(struct){ - // Verify content - if (!struct.servos) - logger.warn("Missing servos Nano"); - if (!struct.asserv) - logger.warn("Missing asserv Nano"); - - // Connect to what's detected - acts.connectTo(struct); - - // Send struct to server - sendChildren(acts.getStatus()); - } - - /** - * Sends status to server - * - * @param {Object} status - */ - function sendChildren(status){ - lastStatus = status; - - client.send("server", "server.childrenUpdate", lastStatus); - } - - /** - * Looks if everything is Ok - */ - function isOk(){ - if(lastStatus.status != "waiting") - lastStatus = acts.getStatus(); - - client.send("ia", "isOkAnswer", lastStatus); - client.send("server", "server.childrenUpdate", lastStatus); - } - - /** - * Push the order (enfiler) - * - * @param {string} f from - * @param {string} n name - * @param {Object} p parameters - */ - function addOrder2Queue(f, n, p){ - if(queue.length < 50) { - // Adds the order to the queue - queue.push({ - from: f, - name: n, - params: p - }); - // logger.info("Order added to queue ! : "); - // logger.info(queue); - executeNextOrder(); - } - } - - /** - * Execute order - */ - function executeNextOrder(){ - if ((queue.length > 0) && (!orderInProgress)){ - var order = queue.shift(); - orderInProgress = order.name; - - logger.info("Going to do '" + orderInProgress + "' "+order.params.toString()); - acts.orderHandler(order.from, order.name, order.params, actionFinished); - - executeNextOrder(); - } - } - - /** - * Launch the next order - */ - function actionFinished(){ - logger.info(orderInProgress + " just finished !"); - - orderInProgress = false; - executeNextOrder(); - } - - /** - * Tries to exit - * - * @todo do something when app is closing - */ - function quit () { - logger.info("Please wait while exiting..."); - // acts.quit(); - process.exit(0); - } - - - // Exiting : - //do something when app is closing - //process.on('exit', quit); - // catches ctrl+c event - //process.on('SIGINT', quit); - // //catches uncaught exceptions - // process.on('uncaughtException', quit); -})(); diff --git a/clients/gr/servos.class.js b/clients/gr/servos.class.js deleted file mode 100644 index 4d3f98e..0000000 --- a/clients/gr/servos.class.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Servos module - * - * @module clients/gr/servos - * @see {@link clients/gr/servos.Servos} - * @see module:clients/gr/servos-simu - */ - -module.exports = (function () { - var log4js = require('log4js'); - var logger = log4js.getLogger('gr.servos'); - var five = require("johnny-five"); - /** @type {Object} */ - var board = null; - /** @type {Object} */ - var servo_gauche, servo_droit; - - /** - * Servos Constructors - * - * @exports clients/gr/servos.Servos - * @constructor - * @param {string} sp Server port - * @param {Object} sendStatus - */ - function Servos(sp, sendStatus) { - /** @type {boolean} */ - this.ready = false; - /** @type {Object} */ - this.sendStatus = sendStatus; - this.connect(sp); - } - - /** - * Connect - * - * @param {string} sp Server port - */ - Servos.prototype.connect = function(sp) { - board = new five.Board({ - port: sp, - repl: false - }); - - board.on("ready", function() { - logger.info("Board servos Ready"); - servo_gauche = new five.Servo(2); - servo_droit = new five.Servo(3); - this.ready = true; - this.sendStatus(); - this.acheter(); - }.bind(this)); - }; - - /** - * Acheter - * - * @param {Object} callback - */ - Servos.prototype.acheter = function(callback) { - servo_gauche.to(170); - servo_droit.to(0); - setTimeout(callback, 500); - }; - /** - * Vendre - * - * @param {Object} callback - */ - Servos.prototype.vendre = function(callback) { - servo_gauche.to(50); - servo_droit.to(120); - setTimeout(function(){ // remontée lente - servo_gauche.to(100, 1000); - servo_droit.to(70, 1000); - }, 500); - setTimeout(function(){ - servo_gauche.to(50); - servo_droit.to(120); - }, 2000); - setTimeout(function(){ // remontée lente - servo_gauche.to(100, 1000); - servo_droit.to(70, 1000); - }, 2500); - setTimeout(function(){ - servo_gauche.to(50); - servo_droit.to(120); - }, 4000); - setTimeout(callback, 6000); - }; - - return Servos; -})(); \ No newline at end of file diff --git a/clients/gr/servos.simu.class.js b/clients/gr/servos.simu.class.js deleted file mode 100644 index 6afd4f6..0000000 --- a/clients/gr/servos.simu.class.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Servos Simulator module - * - * @module clients/gr/servos-simu - * @see clients/gr/servos-simu.Servos - */ - -module.exports = (function () { - var log4js = require('log4js'); - var logger = log4js.getLogger('gr.servos'); - - /** - * Servos constructor - * - * @exports clients/gr/servos-simu.Servos - * @constructor - * @param {Object} sp - */ - function Servos(sp) { - - } - - /** - * Acheter - * - * @param {Object} callback - */ - Servos.prototype.acheter = function(callback) { - setTimeout(callback, 500); - }; - /** - * Vendre - * - * @param {Object} callback - */ - Servos.prototype.vendre = function(callback) { - setTimeout(callback, 500); - }; - - return Servos; -})(); \ No newline at end of file diff --git a/clients/pr/actuators.class.js b/clients/pr/actuators.class.js deleted file mode 100644 index 1a45ee8..0000000 --- a/clients/pr/actuators.class.js +++ /dev/null @@ -1,605 +0,0 @@ -/** - * Actuators module - * - * @module clients/pr/actuators - * @requires clients/shared/fifo - * @see {@link clients/pr/actuators.Acts} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('pr.acts'); - var SerialPort = require("serialport"); - var spawn = require('child_process').spawn; - /** @type {clients/shared/fifo.Fifo} */ - var fifo = new (require('../shared/fifo.class.js'))(); - - var others = null; - var asserv = null; - var ax12 = null; - var date = new Date(); - /** @type {int} */ - var lastSendStatus = date.getTime(); - - /** - * Acts Constructor - * - * @exports clients/pr/actuators.Acts - * @constructor - * @param {Object} client - * @param {Object} sendChildren - */ - function Acts(client, sendChildren) { - /** @type {Object} */ - this.client = client; - /** @type {Object} */ - this.sendChildren = sendChildren; - this.start(); - /** @type {int} */ - this.nb_plots = 0; - /** @type {boolean} */ - this.new_has_ball = false; - /** @type {boolean} */ - this.has_gobelet = false; - } - - /** - * Starts (nothing ?) - */ - Acts.prototype.start = function(){ - - }; - - /** - * Cleans all - */ - Acts.prototype.clean = function(){ - fifo.clean(); // A priori déjà vide - asserv.clean(); - ax12.ouvrir(); - others.ouvrirStabilisateurGrand(); - others.ouvrirBloqueurGrand(); - }; - - /** - * Connect to - * - * @param {Object} struct - */ - Acts.prototype.connectTo = function(struct){ - if (!struct.others) { - logger.fatal("Lancement de others pr en mode simu !"); - others = new (require('./others.simu.class.js'))(fifo); - } else { - others = new (require('./others.class.js'))( - new SerialPort(struct.others, { baudrate: 57600 }), - this.sendStatus, - fifo - ); - } - - if (!struct.asserv) { - logger.fatal("Lancement de l'asserv pr en mode simu !"); - asserv = new (require('../shared/asserv.simu.class.js'))(this.client, 'pr', fifo); - } else { - asserv = new (require('../shared/asserv.class.js'))( - new SerialPort(struct.asserv, { - baudrate: 57600, - parser:SerialPort.parsers.readline('\n') - }), this.client, 'pr', this.sendStatus, fifo - ); - } - - if (!struct.ax12) { - logger.fatal("Lancement de l'usb2ax pr en mode simu !"); - ax12 = new (require('./ax12.simu.class.js'))(fifo); - } else { - ax12 = new (require('./ax12.class.js'))(struct.ax12, this.sendStatus, fifo); - } - - // Initialisation - setTimeout(function() { - others.ouvrirStabilisateurGrand(); - others.lacherGobelet(); - others.ouvrirBloqueurGrand(); - others.descendreAscenseur(); - ax12.ouvrir(function() { - logger.fatal('BAZOOKA'); - }); - }, 1000); - }; - - /** - * Send status - */ - Acts.prototype.sendStatus = function() { - if(lastSendStatus < date.getTime()-1000){ - this.sendChildren(this.getStatus); - lastSendStatus = date.getTime(); - } - }; - - /** - * Get Status - */ - Acts.prototype.getStatus = function(){ - var data = { - "status": "", - "children": [] - }; - - data.status = "everythingIsAwesome"; - - if(others && !!others.ready) - data.children.push("Arduino others"); - else - data.status = "ok"; - - if(ax12 && !!ax12.ready) - data.children.push("USB2AX"); - else - data.status = "ok"; - - if(asserv && !!asserv.ready) - data.children.push("Arduino asserv"); - else - data.status = "error"; - - return data; - }; - - /** - * Quit - */ - Acts.prototype.quit = function(){ - if (ax12 && ax12.ready) - ax12.disconnect(); - }; - - /** - * fake - */ - function fake() {} - Acts.prototype.delay = function(ms, callback){ - fifo.newOrder(function() { - setTimeout(function() { - if(callback !== undefined) - callback(); - fifo.orderFinished(); - }, ms); - }, 'delay'); - } - - /** - * Prendre plot - * - * @param {Object} [callback] - * @param {int} [monter] - */ - Acts.prototype.prendre_plot = function(callback, monter){ - if(callback === undefined) { - callback = function() {}; - } - if (monter === undefined) { - monter = 1; - } - var that = this; - if (that.new_has_ball) { - that.new_has_ball = false; - others.descendreUnPeuAscenseur(); - ax12.ouvrir(); - others.descendreAscenseur(); - that.prendre_plot(callback); - } - else if (that.nb_plots>=3 || !monter){ - ax12.ouvrir(); - others.fermerStabilisateur(); - ax12.fermer(); - others.monterUnPeuAscenseur(function() { - that.client.send('ia', 'pr.plot++'); - callback(); - }); - others.ouvrirBloqueurMoyen(); - others.fermerBloqueur(); - } - else if (that.nb_plots==0) { - ax12.ouvrir(); - others.ouvrirBloqueurMoyen(); - ax12.fermer(); - others.monterAscenseur(function() { - that.client.send('ia', 'pr.plot++'); - setTimeout(callback, 200); - }); - others.fermerBloqueur(); - ax12.ouvrir(); - others.ouvrirStabilisateurMoyen(function() {}, 0); - others.descendreAscenseur(); - } - else if(that.nb_plots==1){ - ax12.ouvrir(); - others.ouvrirStabilisateurMoyen(); - ax12.fermer(); - others.ouvrirBloqueurMoyen(); - others.monterAscenseur(function() { - that.client.send('ia', 'pr.plot++'); - setTimeout(callback, 200); - }); - others.fermerBloqueur(); - ax12.ouvrir(function() {}); - others.descendreAscenseur(); - } - else { - ax12.ouvrir(); - others.ouvrirStabilisateurMoyen(); - ax12.fermer(); - others.ouvrirBloqueurMoyen(); - others.monterAscenseur(function() { - that.client.send('ia', 'pr.plot++'); - setTimeout(callback, 200); - }); - others.fermerStabilisateur(fake,0); - others.fermerBloqueur(); - ax12.ouvrir(function() {}); - others.descendreAscenseur(); - } - that.nb_plots++; - } - - /** - * Pousser plot - * - * @param {Object} [callback] - */ - Acts.prototype.pousser_plot = function(callback){ - if(callback === undefined) { - callback = function() {}; - } - ax12.ouvrir(); - asserv.goxy(1150, 200, "avant"); - asserv.goxy(1100, 250, "arriere", callback); - } - - /** - * Prendre plot - * - * @param {Object} [callback] - */ - Acts.prototype.prendre_plot2 = function(callback){ - if(callback === undefined) { - callback = function() {}; - } - var that = this; - asserv.speed(300, 0, 750); - if (that.new_has_ball) { - that.new_has_ball = false; - others.descendreUnPeuAscenseur(); - ax12.ouvrir(); - others.descendreAscenseur(); - that.prendre_plot(callback); - } - else { - - ax12.ouvrir(); - ax12.fermer(); - others.monterUnPeuAscenseur(function() { - that.client.send('ia', 'pr.plot++'); - callback(); - }); - } - - that.nb_plots++; - } - - /** - * Monter plot 2 - * - * @param {Object} [callback] - */ - Acts.prototype.monter_plot2 = function(callback){ - if(callback === undefined) { - callback = function() {}; - } - var that = this; - - callback(); - if (that.nb_plots == 1) { - others.ouvrirBloqueurMoyen(); - others.monterAscenseur(); - others.fermerBloqueur(); - others.fermerStabilisateur(); - ax12.ouvrir(); - others.descendreAscenseur(); - } else { - others.ouvrirStabilisateurMoyen(); - others.ouvrirBloqueurMoyen(); - others.monterAscenseur(); - others.fermerBloqueur(); - others.fermerStabilisateur(); - ax12.ouvrir(); - others.descendreAscenseur(); - } - } - - /** - * Order switch - * - * @param {string} from - * @param {string} name - * @param {Object} params - * @param {Object} callback - */ - Acts.prototype.orderHandler = function (from, name, params, callback) { - // logger.info("Just received an order `" + name + "` from " + from + " with params :"); - // logger.info(params); - var that = this; - /** @todo : add a callback parameter to all functions (and call it) */ - switch (name){ - // others - case "placer": - asserv.setPid(0.25, 130, 13); - asserv.goxy(500, 940); - asserv.goa(-0.62); - this.orderHandler('ia','fermer_tout', {}, callback); - break; - case "prendre_plot": - this.prendre_plot(callback); - break; - case "pousser_plot": - this.pousser_plot(callback); - break; - case "prendre_plot2": - this.prendre_plot2(callback); - break; - case "monter_plot2": - this.monter_plot2(callback); - break; - case "reset_nb_plots": - this.nb_plots = 0; - callback(); - break; - case "prendre_plot_rear_left": - asserv.goxy(160, 1800, "avant"); - that.prendre_plot(undefined, 0); - asserv.goxy(270, 1800, "arriere", callback); - break; - case "prendre_plot_rear_left_calage": - asserv.goxy(250, 1450, "arriere"); - asserv.goa(1.5708); - asserv.pwm(-70, -70, 1500); - asserv.calageY(1288, 1.5708); - asserv.goxy(250, 1450, 500); - asserv.goa(0); - asserv.pwm(-70, -70, 1500); - asserv.calageX(65, 0); - asserv.goxy(120, 1450, "avant"); - asserv.goxy(120, 1790, "avant"); - that.prendre_plot(); - asserv.goa(-1); - asserv.speed(500, 0, 750, callback); - break; - case "prendre_gobelet_et_2_plots_front": - others.lacherGobelet(fake,0); - asserv.goxy(275, 260, "arriere"); - others.prendreGobelet(function() { - that.has_gobelet = true; - that.client.send('ia', 'pr.gobelet1'); - }); - asserv.speed(500, 0, 500); - asserv.goxy(165, 270, "avant"); //100 au lieu de 90 pos plot - that.prendre_plot(undefined, 1); - //asserv.speed(-300, -300, 600); - asserv.goxy(285, 310, "arriere"); - asserv.goxy(155, 180, "avant"); - that.prendre_plot(callback); - break; - - case "deposer_pile_left_2": - asserv.goxy(650, 1000, "avant"); - others.descendreAscenseur(); - ax12.ouvrir(); - others.ouvrirBloqueurMoyen(fake,0); - others.ouvrirStabilisateurMoyen(); - that.delay(500); - others.ouvrirBloqueurGrand(fake,0); - others.ouvrirStabilisateurGrand(function() { - that.nb_plots = 0; - that.client.send('ia', 'pr.plot0'); - }); - asserv.speed(-300, 0, 1000); - break; - - case "recalage_stairs": - asserv.goxy(250, 1450, "arriere"); - asserv.goa(1.5708); - asserv.pwm(-80, -80, 1500); - asserv.calageY(1288, 1.5708); - asserv.goxy(250, 1450, 500); - asserv.goa(0); - asserv.pwm(-80, -80, 1500); - asserv.calageY(65, 0); - asserv.goxy(120, 1450, "avant"); - break; - - case "prendre_2_plots_stairs": - asserv.goxy(800, 1740, "avant"); - that.prendre_plot(undefined, 1); - that.delay(1000); - asserv.goxy(830, 1850, "avant"); - that.prendre_plot(undefined, 0); - asserv.speed(-300, 0, 1000, callback); - break; - - case "prendre_gobelet": - others.lacherGobelet(fake,0); - asserv.speed(-300, 0, 500); - others.prendreGobelet(function() { - that.client.send('ia', 'pr.gobelet1'); - that.has_gobelet = true; - callback(); - }); - break; - - case "deposer_pile_et_gobelet": - asserv.goxy(250, 1000, "avant"); - others.descendreUnPeuAscenseur(); - ax12.ouvrir(); - others.ouvrirBloqueurMoyen(fake,0); - others.ouvrirStabilisateurMoyen(); - that.delay(500); - others.ouvrirBloqueurGrand(fake,0); - others.ouvrirStabilisateurGrand(function() { - that.nb_plots = 0; - that.client.send('ia', 'pr.plot0'); - }); - asserv.speed(-300, 0, 1000); - asserv.goa(0); - others.lacherGobelet(function() { - that.client.send('ia', 'pr.gobelet0'); - }); - that.delay(300); - asserv.speed(300, 0, 750, callback); - others.ouvrirStabilisateurMoyen(fake,0); - others.ouvrirBloqueurMoyen(fake,0); - others.descendreAscenseur(); - break; - - case "deposer_pile_gobelet_prendre_balle_gauche": - asserv.goxy(300, 1000, "avant"); - //asserv.goa(-2.3562); - others.descendreUnPeuAscenseur(); - ax12.ouvrir(); - others.ouvrirBloqueurGrand(fake,0); - others.ouvrirStabilisateurMoyen(); - that.delay(500); - others.ouvrirStabilisateurGrand(); - asserv.speed(-300, 0, 1000); - asserv.goa(0); - others.lacherGobelet(); - that.delay(300); - asserv.speed(300, 0, 750); - /*asserv.goxy(700, 1300, "arriere", function() { - that.client.send('ia', 'data.add_dynamic', {pos:{x:450, y:880}, d:8}); - }); - others.ouvrirBloqueurMoyen(fake,0); - others.ouvrirStabilisateurMoyen(fake,0); - others.monterMoyenAscenseur(); - - asserv.goxy(260, 1050, "osef"); - asserv.goa(3.1416/2); - asserv.pwm(50, 50, 1500); - asserv.calageY(1126, 3.1416/2); - asserv.goxy(260, 1000, "arriere"); - asserv.goa(3.1416); - - asserv.goxy(200, 1000, "avant"); - asserv.goa(3.1416); - asserv.pwm(50, 50, 1500); - asserv.calageX(145, 3.1416); - ax12.fermerBalle(); - asserv.goxy(260, 1000, "arriere"); - others.descendreMoyenAscenseur(); - ax12.fermerBalle2(); - asserv.goxy(260, 1000, "arriere"); - others.monterAscenseur(); - asserv.goxy(330, 1000, "avant"); - asserv.goa(0.1863); - others.lacherGobelet(); - that.delay(100); - that.new_has_ball = true; - that.client.send('ia', 'pr.plot0'); - that.client.send('ia', 'pr.gobelet0'); - that.nb_plots = 0; - that.has_gobelet = false; - asserv.goxy(600, 1050, "avant", callback);*/ - break; - - case "deposer_gobelet": - asserv.goa(3.1416); - that.delay(100); - others.lacherGobelet(); - that.client.send('ia', 'pr.gobelet0'); - asserv.speed(500, 0, 800, callback); - break; - - case "fermer_tout": - others.lacherGobelet(); - others.fermerBloqueur(); - others.descendreAscenseur(); - others.rangerClap(); - others.fermerStabilisateur(); - ax12.fermer(callback); - break; - case "ouvrir_ax12": - ax12.ouvrir(callback); - break; - case "monter_ascenseur": - others.monterAscenseur(callback); - break; - case "clap_1": - others.sortirClap(); - asserv.goxy(330, 140, "osef", function() { - callback(); - others.rangerClap(); - }); - break; - case "clap_3": - others.sortirClap(); - asserv.goxy(1000, 140, "osef", function() { - callback(); - others.rangerClap(); - }); - break; - case "clap_5": - others.sortirClap(); - asserv.goxy(2300, 140, "osef", function() { - callback(); - others.rangerClap(); - }); - break; - - // Asserv - case "pwm": - asserv.pwm(params.left, params.right, params.ms, callback); - break; - case "setvit": - asserv.setVitesse(params.v, params.r, callback); - break; - case "clean": - asserv.clean(callback); - break; - case "goa": - asserv.goa(params.a, callback, true); - break; - case "goxy": - asserv.goxy(params.x, params.y, params.sens, callback, true); - break; - case "setpos": - asserv.setPos(params, callback); - break; - case "setacc": - asserv.setAcc(params.acc, callback); - break; - case "setpid": - asserv.setPid(params.p, params.i, params.d, callback); - break; - case "sync_git": - spawn('/root/sync_git.sh', [], { - detached: true - }); - break; - - - // Debug - case "AX12_close": - ax12.fermer(callback); - break; - case "AX12_open": - ax12.ouvrir(callback); - break; - default: - logger.warn("Order name " + name + " " + from + " not understood"); - callback(); - } - }; - - return Acts; -})(); diff --git a/clients/pr/ax12.class.js b/clients/pr/ax12.class.js deleted file mode 100644 index e65a963..0000000 --- a/clients/pr/ax12.class.js +++ /dev/null @@ -1,237 +0,0 @@ -/** - * AX12 module - * - * @module clients/pr/ax12 - * @see clients/pr/ax12.Ax12 - */ - -module.exports = (function () { - var log4js = require('log4js'); - var logger = log4js.getLogger('pr.ax12'); - var ffi = require('ffi'); - var libusb2ax = ffi.Library('./libs/dynamixel/lib/libusb2ax', { - 'dxl_initialize': ['int', ['int', 'int']], - 'dxl_write_word': ['void', ['int', 'int', 'int']], - 'dxl_read_word': ['int', ['int', 'int']], - 'dxl_terminate': ['void', ['void']], - 'dxl_get_result': ['int', ['void']] - }); - - // Constants - var AX12_COUPLE = 800; - var P_GOAL_POSITION_L = 30; - var P_POSITION = 36; - var P_SPEED = 0x26; - var P_COUPLE = 34; - var MARGE_POS = 80; - var MARGE_POS_MVT = 5; - var ax12s = { - '2':{ - id: 2, - obj: 0, pos: 0, arrived: false - }, - '3':{ - id: 3, - obj: 0, pos: 0, arrived: false - } - }; - - /** - * Ax12 Constructor - * - * @exports clients/pr/ax12.Ax12 - * @constructor - * @param {string} sp Serial Port NAME - * @param {Object} sendStatus - * @param {clients/shared/fifo.Fifo} fifo - */ - function Ax12(sp, sendStatus, fifo) { - /** @type {boolean} */ - this.ready = false; - /** @type {Object} */ - this.sendStatus = sendStatus; - /** @type {Object} */ - this.orders_sent = []; - /** @type {clients/shared/fifo.Fifo} */ - this.fifo = fifo; - - this.connect(sp); - } - - - // ====== General actions ====== - - POS_OPENED = 40; - POS_CLOSED = 10; - POS_BALL_1 = 0; - POS_BALL_2 = 0; - - - /** - * Connect - * - * @param {string} sp Serial Port NAME - */ - Ax12.prototype.connect = function(sp) { - if(libusb2ax.dxl_initialize(sp.substring("/dev/ttyACM".length), 1) <= 0) { - logger.error("Impossible de se connecter à l'USB2AX"); - } else { - logger.info("Connecté à l'USB2AX !"); - } - this.ready = true; - this.sendStatus(); - /** @type {array} */ - this.ax12s = {}; - /** @type {Object} */ - this.type_callback = null; - - libusb2ax.dxl_write_word(2, P_COUPLE, 400); - libusb2ax.dxl_write_word(3, P_COUPLE, 400); - - this.ouvrir(); - this.loopAX12(); - }; - - /** - * Disconnect - * - * @param {} x - */ - Ax12.prototype.disconnect = function(x) { - this.ready = false; - this.sendStatus(); - }; - - /** - * Loop AX12 - */ - Ax12.prototype.loopAX12 = function() { - var speed; - for(var i in ax12s) { - // S'il n'est pas à la bonne position - ax12s[i].pos = libusb2ax.dxl_read_word(ax12s[i].id, P_POSITION); - speed = libusb2ax.dxl_read_word(ax12s[i].id, P_SPEED); - - if (!ax12s[i].started) { - libusb2ax.dxl_write_word(ax12s[i].id, P_COUPLE, AX12_COUPLE); - libusb2ax.dxl_write_word(ax12s[i].id, P_GOAL_POSITION_L, ax12s[i].obj); - if (Math.abs(speed) > MARGE_POS_MVT) { - ax12s[i].started = true; - } - } else { - speed = libusb2ax.dxl_read_word(ax12s[i].id, P_SPEED); - if (Math.abs(speed) < MARGE_POS_MVT) { - ax12s[i].arrived = true; - } - } - if(Math.abs(ax12s[i].pos - ax12s[i].obj) < MARGE_POS) { - ax12s[i].arrived = true; - } - } - // logger.debug(ax12s['2'].pos + ' ; ' + ax12s['3'].pos); - if(ax12s['2'].started && ax12s['3'].started && this.type_callback == "ouvrir" || - ax12s['2'].arrived && ax12s['3'].arrived && this.type_callback) { - this.type_callback = null; - this.callback(); - this.fifo.orderFinished(); - } - - setTimeout(function() { this.loopAX12(); }.bind(this), 50); - }; - - /** - * Deg to AX12 - * - * @param {int} deg - */ - Ax12.prototype.degToAx12 = function(deg) { - return parseInt((deg+150)*1024/300); - }; - - /** - * Ouvrir - * - * @param {Object} [callback] - */ - Ax12.prototype.ouvrir = function(callback) { - if(callback === undefined) { - callback = function(){}; - } - this.fifo.newOrder(function() { - ax12s['2'].obj = this.degToAx12(0); - ax12s['3'].obj = this.degToAx12(0); - ax12s['2'].arrived = false; - ax12s['2'].started = false; - ax12s['3'].arrived = false; - ax12s['3'].started = false; - this.callback = callback; - this.type_callback = 'ouvrir'; - }.bind(this), 'AX12-Ouvrir'); - }; - - /** - * Fermer - * - * @param {Object} [callback] - */ - Ax12.prototype.fermer = function(callback) { - if(callback === undefined) { - callback = function(){}; - } - this.fifo.newOrder(function() { - ax12s['2'].obj = this.degToAx12(-85); - ax12s['3'].obj = this.degToAx12(85); - // logger.debug(ax12s['2'].obj); - ax12s['2'].arrived = false; - ax12s['2'].started = false; - ax12s['3'].arrived = false; - ax12s['3'].started = false; - this.callback = callback; - this.type_callback = 'fermer'; - }.bind(this), 'AX12-Fermer'); - }; - /** - * Fermer balle - * - * @param {Object} [callback] - */ - Ax12.prototype.fermerBalle = function(callback) { - if(callback === undefined) { - callback = function(){}; - } - this.fifo.newOrder(function() { - ax12s['2'].obj = this.degToAx12(-50); - ax12s['3'].obj = this.degToAx12(50); - // logger.debug(ax12s['2'].obj); - ax12s['2'].arrived = false; - ax12s['2'].started = false; - ax12s['3'].arrived = false; - ax12s['3'].started = false; - this.callback = callback; - this.type_callback = 'fermer'; - }.bind(this), 'AX12-Fermer balle'); - }; - /** - * Fermer balle 2 - * - * @param {Object} [callback] - */ - Ax12.prototype.fermerBalle2 = function(callback) { - if(callback === undefined) { - callback = function(){}; - } - this.fifo.newOrder(function() { - ax12s['2'].obj = this.degToAx12(-75); - ax12s['3'].obj = this.degToAx12(75); - // logger.debug(ax12s['2'].obj); - ax12s['2'].arrived = false; - ax12s['2'].started = false; - ax12s['3'].arrived = false; - ax12s['3'].started = false; - this.callback = callback; - this.type_callback = 'fermer'; - }.bind(this), 'AX12-Fermer balle 2'); - }; - - return Ax12; -})(); diff --git a/clients/pr/ax12.simu.class.js b/clients/pr/ax12.simu.class.js deleted file mode 100644 index 70136d2..0000000 --- a/clients/pr/ax12.simu.class.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * AX12 Simulator module - * - * @module clients/pr/ax12-simu - * @see {@link clients/pr/ax12-simu.Ax12} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('pr.ax12'); - - /** - * Ax12 constructor - * - * @exports clients/pr/ax12-simu.Ax12 - * @constructor - * @param {clients/shared/fifo.Fifo} fifo - */ - function Ax12(fifo) { - this.fifo = fifo; - } - - /** - * Disconnects (nothing ?) - * - * @param {} x - */ - Ax12.prototype.disconnect = function(x) { - - }; - - /** - * Calls callback - * - * @param {Object} [callback] - * @param {int} ms - */ - Ax12.prototype.callCallback = function(callback, ms) { - if(callback === undefined) { - callback = function(){}; - } - this.fifo.newOrder(function() { - setTimeout(function() { - callback(); - this.fifo.orderFinished(); - }.bind(this), parseInt(ms/5)); - }.bind(this)); - } - - /** - * Ouvrir - * - * @param {Object} callback - */ - Ax12.prototype.ouvrir = function(callback) { - this.callCallback(callback, 1000); - }; - - /** - * Fermer - * - * @param {Object} callback - */ - Ax12.prototype.fermer = function(callback) { - this.callCallback(callback, 1000); - }; - /** - * Fermer Balle - * - * @param {Object} callback - */ - Ax12.prototype.fermerBalle = function(callback) { - this.callCallback(callback, 800); - }; - /** - * Fermer Balle 2 - * - * @param {Object} callback - */ - Ax12.prototype.fermerBalle2 = function(callback) { - this.callCallback(callback, 900); - }; - - return Ax12; -})(); diff --git a/clients/pr/detect.class.js b/clients/pr/detect.class.js deleted file mode 100644 index 5f5e7c9..0000000 --- a/clients/pr/detect.class.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Detect module - * - * @module clients/pr/detect - * @see {@link clients/pr/detect.Detect} - */ - -module.exports = (function () { - var log4js = require('log4js'); - var logger = log4js.getLogger('pr.detect'); - var serialPort = require("serialport"); - - - var sp = []; - - /** - * Detect constructor - * - * @exports clients/pr/detect.Detect - * @constructor - * @param {Object} callback - */ - function Detect(callback) { - /** @type {Object} */ - this.devicesFound = { - asserv: null, - others: null, - ax12: null - }; - /** @type {Object} */ - this.callback = callback; - this.searchArduinos(); - } - - /** - * Sends Server port - */ - Detect.prototype.sendSP = function (){ - // Close opened ports & detect other devices - serialPort.list(function (err, ports) { - for(var i in ports) { - if(ports[i].comName.indexOf('ttyUSB') >= 0) { - this.devicesFound.asserv = ports[i].comName; - } else if((ports[i].comName.indexOf('ttyACM') >= 0) && ports[i].comName != this.devicesFound.others) { - // logger.debug(ports[i].comName); - this.devicesFound.ax12 = ports[i].comName; - } - if(sp[i].readable){ - logger.info("Closing "+ports[i].comName); - // this.devicesFound.ax12 = ports[i].comName; - sp[i].close(); - } - } - - // Sent to acts - this.callback(this.devicesFound); - }.bind(this)); - }; - - /** - * Searches Arduino - */ - Detect.prototype.searchArduinos = function() { - // On check tous les ports disponibles - serialPort.list(function (err, ports) { - var nb_found = 0; - for(var i in ports) { - sp[i] = new SerialPort(ports[i].comName, { baudrate: 57600 }); - sp[i].on('open', function (i) { - sp[i].write('O\n'); - }.bind(this, i)); - - sp[i].on("data", function (i, data) { - data = data.toString(); - console.log(ports[i].comName, data); - if (data == 'O' && !this.devicesFound.others){ // Stepper - this.devicesFound.others = ports[i].comName; - clearTimeout(timeout); - this.sendSP(); - } - sp[i].close(); - }.bind(this, i)); - - sp[i].on("error", function() {}); // Node JS Error if it doesn't exist (and if an "error" event is sent) - } - }.bind(this)); - - // On check tous les ports qui ne sont pas enregistrés - timeout = setTimeout(function(){this.sendSP(); }.bind(this), 3000); - }; - - return Detect; -})(); \ No newline at end of file diff --git a/clients/pr/elevator.class.js b/clients/pr/elevator.class.js deleted file mode 100644 index d032f6a..0000000 --- a/clients/pr/elevator.class.js +++ /dev/null @@ -1,123 +0,0 @@ -/** - * Elevator module - * - * @module clients/pr/elevator - * @see {@link clients/pr/elevator.Elevator} - */ - -module.exports = (function () { - var log4js = require('log4js'); - var logger = log4js.getLogger('pr.elevator'); - - var ORDER_ACHIEVED = 'K'; // Like Ok - var ORDER_UNKNOWN = 'U'; // Like Unknown - - var ELEV_MOVE_UP = 'u'; - var ELEV_MOVE_DOWN = 'd'; - var ELEV_RELEASE = 'r'; - var ELEV_CHOUILLA = 'c'; - - /** - * Elevator constructor - * - * @exports clients/pr/elevator.Elevator - * @constructor - * @param {Object} sp Serial Port OBJECT - */ - function Elevator(sp, sendStatus) { - /** @type {Object} */ - this.sp = sp; - /** @type {boolean} */ - this.ready = false; - /** @type {Object} */ - this.sendStatus = sendStatus; - /** @type {string} */ - this.pos = 'down'; - /** @type {array} */ - this.orders_sent = []; - - this.sp.on("data", function(data) { - this.ready = true; - this.sendStatus(); - this.parseOrder(data.toString()); - }.bind(this)); - } - - /** - * Fonctions for sending orders to the Arduino - * - * @param {string} order - */ - Elevator.prototype.sendOrder = function(order) { - this.sp.write(order); - this.orders_sent.push(order); - }; - - /** - * Disconnects - */ - Elevator.prototype.disconnect = function() { - this.sp.close(); - this.ready = false; - this.sendStatus(); - }; - - - // ====== General actions ====== - - /** - * Monter - */ - Elevator.prototype.monter = function() { - this.sendOrder(ELEV_MOVE_UP); - }; - - /** - * Monter choilla - */ - Elevator.prototype.monterChouilla = function() { - this.sendOrder(ELEV_CHOUILLA); - }; - - /** - * Descendre - */ - Elevator.prototype.descendre = function() { - this.sendOrder(ELEV_MOVE_DOWN); - this.lacher(); - }; - - /** - * Release - */ - Elevator.prototype.release = function() { - this.sendOrder(ELEV_RELEASE); - }; - - /** - * Parse Order - * - * @param {string} order - */ - Elevator.prototype.parseOrder = function(order) { - if(order == ORDER_ACHIEVED) { - switch(this.orders_sent.shift()) { - case ELEV_MOVE_UP: - this.pos = 'up'; - logger.info("Elevator is up"); - break; - case ELEV_MOVE_DOWN: - this.pos1 = 'down'; - logger.info("Elevator is down"); - break; - } - } else if (order == ORDER_UNKNOWN) { - oldest_order = this.orders_sent.shift(); - logger.warn("Order sent unknown: "+this.orders_sent.shift()); - } else { - logger.warn("Order received unknown: "+order); - } - }; - - return Elevator; -})(); \ No newline at end of file diff --git a/clients/pr/main.js b/clients/pr/main.js deleted file mode 100644 index 5d94b87..0000000 --- a/clients/pr/main.js +++ /dev/null @@ -1,184 +0,0 @@ -/** - * Main module - * - * @module clients/pr/main - * @requires server/socket_client - * @requires config - * @requires clients/pr/actuators - * @requires clients/pr/detect - */ - -(function () { - "use strict"; - - // Requires - var logger = require('log4js').getLogger('pr'); - - // logger.info("Started NodeJS client with pid " + process.pid); - - var SocketClient = require('../../server/socket_client.class.js'); - var server = require('../../config.js').server - var client = new SocketClient({ - server_ip: server, - type: "pr" - }); - - var lastStatus = { - "status": "waiting" - }; - sendChildren(lastStatus); - - var acts = new (require('./actuators.class.js'))(client, sendChildren); - var detect = null; - - var queue = []; - var orderInProgress = false; - - start(); - - // On message - client.order(function (from, name, params){ - // logger.info("Recieved an order "+name); - switch (name){ - case "collision": - queue = []; - acts.clean(); - orderInProgress = false; - break; - case "stop": - acts.clean(); - setTimeout(function() { - logger.fatal("Stop PR"); - process.exit(); - }, 800); - break; - - // useless // - case "start": - queue = []; - start(); - break; - default: - addOrder2Queue(from, name, params); - } - }); - - function start(){ - logger.info("Starting :)"); - sendChildren({ - status: "starting", - children:[] - }); - detect = new (require('./detect.class.js'))(devicesDetected); - } - - // function stop(){ - // acts.quit(); - - // // Send struct to server - // sendChildren({ - // status: "waiting", - // children:[] - // }); - // } - - function devicesDetected(struct){ - // Verify content - if (!struct.others) - logger.warn("Missing others Mega"); - - // if (!struct.servos) - // logger.warn("Missing servos Nano"); - - if (!struct.asserv) - logger.warn("Missing asserv Nano"); - - if (!struct.ax12) - logger.warn("Missing USB2AX"); - - // Connect to what's detected - acts.connectTo(struct); - - // Send struct to server - sendChildren(acts.getStatus()); - } - - // Sends status to server - function sendChildren(status){ - lastStatus = status; - - client.send("server", "server.childrenUpdate", lastStatus); - } - - function isOk(){ - if(lastStatus.status != "waiting") - lastStatus = acts.getStatus(); - - client.send("ia", "isOkAnswer", lastStatus); - client.send("server", "server.childrenUpdate", lastStatus); - } - - - // Push the order (enfiler) - function addOrder2Queue(f, n, p){ - // if(n == 'clean') { - // logger.info(n+" : Begin"); - // acts.orderHandler(f, n, p, actionFinished); - // } else - if(queue.length < 100){ - // Adds the order to the queue - queue.push({ - from: f, - name: n, - params: p - }); - // logger.info("Order added to queue ! : "); - // logger.info(queue); - - executeNextOrder(); - } - } - - // Execute order - function executeNextOrder(){ - if ((queue.length > 0) && (!orderInProgress)) { - var order = queue.shift(); - if(order.name == "send_message") { - // logger.debug("Send message %s", order.params.name); - client.send('ia', order.params.name, order.params || {}); - executeNextOrder(); - } else { - orderInProgress = order.name; - - logger.info(orderInProgress+" : Begin"); - // logger.debug(order.params); - acts.orderHandler(order.from, order.name, order.params, actionFinished); - - // executeNextOrder(); - } - } - } - - function actionFinished(){ - if(orderInProgress !== false) { - logger.info(orderInProgress + " : End"); - - orderInProgress = false; - executeNextOrder(); - } - } - function quit () { - logger.info("Please wait while exiting..."); - acts.quit(); - process.exit(); - } - - - // Exiting : - //do something when app is closing - // process.on('exit', quit); - // catches ctrl+c event - // process.on('SIGINT', quit); - // //catches uncaught exceptions - // process.on('uncaughtException', quit); -})(); diff --git a/clients/pr/others.class.js b/clients/pr/others.class.js deleted file mode 100644 index 577d677..0000000 --- a/clients/pr/others.class.js +++ /dev/null @@ -1,313 +0,0 @@ -/** - * Others module - * - * @module clients/pr/others - * @see {@link clients/pr/others.Others} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('Others'); - - /** - * Others Constructor - * - * @exports clients/pr/others.Others - * @constructor - * @param {Object} sp Server port - * @param {Object} sendStatus - * @param {clients/shared/fifo.Fifo} - */ - function Others(sp, sendStatus, fifo) { - /** @type {Object} */ - this.sp = sp; - // this.client = client; - /** @type {boolean} */ - this.ready = true; - logger.debug(sendStatus); - /** @type {Object} */ - this.sendStatus = sendStatus; - /** @type {clients/shared/fifo.Fifo} */ - this.fifo = fifo; - - this.sp.on("data", function(data){ - if(this.ready === false){ - this.ready = true; - this.sendStatus(); - } - this.parseCommand(data.toString()); - }.bind(this)); - this.sp.on("error", function(data){ - logger.debug(data.toString()); - }); - this.sp.on("close", function(){ - this.ready = false; - this.sendStatus(); - logger.error("Serial port close"); - }.bind(this)); - } - - /** - * Parse command - * - * @param {string} data - */ - Others.prototype.parseCommand = function(data) { - if(this.order_sent == data) { - this.order_sent = ''; - setTimeout(function() { - this.callback(); - this.fifo.orderFinished(); - }.bind(this), this.callback_delay); - } else { - logger.warn("Arduino others unknown: "+data+" (order_sent : "+this.order_sent+")"); - } - }; - - /** - * Send command - * - * @param {Object} [callback] - * @param {string} cmd - * @param {string} args - * @param {int} callback_delay - */ - Others.prototype.sendCommand = function(callback, cmd, args, callback_delay){ - if(callback === undefined) { - callback = function(){}; - } - - this.fifo.newOrder(function() { - this.callback = callback; - this.callback_delay = callback_delay; - this.order_sent = cmd; - - //logger.debug([cmd].concat(args).join(";")); - this.sp.write([cmd].concat(args).join(";")+"\n"); - }.bind(this), 'sendCommandOther('+cmd+':'+args+')'); - }; - - /** - * Fermer stabilisateur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.fermerStabilisateur = function(callback, time) { - if (time === undefined) { - time = 100; - } - this.sendCommand(callback, 'H', [100, 23], time); - }; - - /** - * Ouvrir stabilisateur moyen - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.ouvrirStabilisateurMoyen = function(callback, time) { - if (time === undefined) { - time = 100; - } - this.sendCommand(callback, 'H', [90, 30], time); - }; - - /** - * Ouvrir stabilisateur grand - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.ouvrirStabilisateurGrand = function(callback, time) { - if (time === undefined) { - time = 400; - } - this.sendCommand(callback, 'H', [40, 80], time); - }; - - /** - * Fermer bloqueur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.fermerBloqueur = function(callback, time) { - if (time === undefined) { - time = 200; - } - this.sendCommand(callback, 'M', [32, 68], time); - }; - - /** - * Ouvrir bloqueur moyen - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.ouvrirBloqueurMoyen = function(callback, time) { - if (time === undefined) { - time = 200; - } - this.sendCommand(callback, 'M', [66, 29], time); - }; - - /** - * Ouvrir stabilisateur grand - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.ouvrirBloqueurGrand = function(callback, time) { - if (time === undefined) { - time = 400; - } - this.sendCommand(callback, 'M', [106, 1], time); - }; - - /** - * Prendre gobelet - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.prendreGobelet = function(callback, time) { - if (time === undefined) { - time = 200; - } - this.sendCommand(callback, 'G', [115], time); - }; - - /** - * Lacher gobelet - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.lacherGobelet = function(callback, time) { - if (time === undefined) { - time = 200; - } - this.sendCommand(callback, 'G', [50], time); - }; - - /** - * Sortir Clap - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.sortirClap = function(callback, time) { - if (time === undefined) { - time = 200; - } - this.sendCommand(callback, 'C', [130], time); - }; - - /** - * Ranger Clap - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.rangerClap = function(callback, time) { - if (time === undefined) { - time = 100; - } - this.sendCommand(callback, 'C', [40], time); - }; - - /** - * Monter ascenseur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.monterAscenseur = function(callback, time) { - if (time === undefined) { - time = 0; - } - this.sendCommand(callback, 'S', [-250], time); - }; - - /** - * Monter un peu ascenseur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.monterUnPeuAscenseur = function(callback, time) { - if (time === undefined) { - time = 0; - } - this.sendCommand(callback, 'S', [-30], time); - }; - - /** - * Descendre un peu ascenseur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.descendreUnPeuAscenseur = function(callback, time) { - if (time === undefined) { - time = 0; - } - this.sendCommand(callback, 'S', [30], time); - }; - - /** - * Monter moyen ascenseur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.monterMoyenAscenseur = function(callback, time) { - if (time === undefined) { - time = 0; - } - this.sendCommand(callback, 'S', [-60], time); - }; - - /** - * Descendre un peu ascenseur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.descendreMoyenAscenseur = function(callback, time) { - if (time === undefined) { - time = 0; - } - this.sendCommand(callback, 'S', [60], time); - }; - - /** - * Relacher ascenseur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.relacherAscenseur = function(callback, time) { - if (time === undefined) { - time = 0; - } - this.sendCommand(callback, 'S', [0], time); - }; - - /** - * Descendre ascenseur - * - * @param {Object} callback - * @param {int} [time] - */ - Others.prototype.descendreAscenseur = function(callback, time) { - if (time === undefined) { - time = 0; - } - this.sendCommand(function() { - this.relacherAscenseur(callback); - }.bind(this), 'S', [250], time); - }; - - return Others; -})(); diff --git a/clients/pr/others.simu.class.js b/clients/pr/others.simu.class.js deleted file mode 100644 index 67e5922..0000000 --- a/clients/pr/others.simu.class.js +++ /dev/null @@ -1,194 +0,0 @@ -/** - * Others Simulator module - * - * @module clients/pr/others-simu - * @see {@link clients/pr/others-simu.Others} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('pr.others'); - - /** - * Others constructor - * - * @exports clients/pr/others-simu.Others - * @constructor - * @param {clients/shared/fifo.Fifo} fifo - */ - function Others(fifo) { - /** @type {clients/shared/fifo.Fifo} */ - this.fifo = fifo; - } - - /** - * Disconnects (nothing ?) - */ - Others.prototype.disconnect = function(x) { - - }; - - /** - * Call callback - * - * @param {Object} [callback] - * @param {int} ms - */ - Others.prototype.callCallback = function(callback, ms) { - if(callback === undefined) { - callback = function(){}; - } - this.fifo.newOrder(function() { - setTimeout(function() { - callback(); - this.fifo.orderFinished(); - }.bind(this), parseInt(ms/5)); - }.bind(this)); - }; - - /** - * Fermer stabilisateur - * - * @param {Object} callback - */ - Others.prototype.fermerStabilisateur = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Ouvrir stabilisateur moyen - * - * @param {Object} callback - */ - Others.prototype.ouvrirStabilisateurMoyen = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Ouvrir stabilisateur grand - * - * @param {Object} callback - */ - Others.prototype.ouvrirStabilisateurGrand = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Fermer bloqueur - * - * @param {Object} callback - */ - Others.prototype.fermerBloqueur = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Ouvrir bloqueur moyen - * - * @param {Object} callback - */ - Others.prototype.ouvrirBloqueurMoyen = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Ouvrir bloqueur grand - * - * @param {Object} callback - */ - Others.prototype.ouvrirBloqueurGrand = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Sortir clap - * - * @param {Object} callback - */ - Others.prototype.sortirClap = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Ranger clap - * - * @param {Object} callback - */ - Others.prototype.rangerClap = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Prendre Gobelet - * - * @param {Object} callback - */ - Others.prototype.prendreGobelet = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Lacher Gobelet - * - * @param {Object} callback - */ - Others.prototype.lacherGobelet = function(callback) { - this.callCallback(callback, 200); - }; - - /** - * Monter ascenseur - * - * @param {Object} callback - */ - Others.prototype.monterAscenseur = function(callback) { - this.callCallback(callback, 1000); - }; - - /** - * Monter un peu ascenseur - * - * @param {Object} callback - */ - Others.prototype.monterUnPeuAscenseur = function(callback) { - this.callCallback(callback, 300); - }; - - /** - * Descendre un peu ascenseur - * - * @param {Object} callback - */ - Others.prototype.descendreUnPeuAscenseur = function(callback) { - this.callCallback(callback, 300); - }; - - /** - * Monter moyen ascenseur - * - * @param {Object} callback - */ - Others.prototype.monterMoyenAscenseur = function(callback) { - this.callCallback(callback, 500); - }; - - /** - * Descendre moyen ascenseur - * - * @param {Object} callback - */ - Others.prototype.descendreMoyenAscenseur = function(callback) { - this.callCallback(callback, 500); - }; - - /** - * Descendre ascenseur - * - * @param {Object} callback - */ - Others.prototype.descendreAscenseur = function(callback) { - this.callCallback(callback, 1000); - }; - - - return Others; -})(); diff --git a/clients/shared/asserv.class.js b/clients/shared/asserv.class.js deleted file mode 100644 index 976b3de..0000000 --- a/clients/shared/asserv.class.js +++ /dev/null @@ -1,437 +0,0 @@ -/** - * Asserv module - * - * @module clients/shared/asserv - * @requires module:clients/shared/defineParser - * @see {@link clients/shared/asserv.Asserv} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('asserv'); - var COMMANDS = require('./defineParser.js')('./arduino/asserv/protocol.h'); - var DETECT_SERIAL_TIMEOUT = 100; //ms, -1 to disable - - // function Asserv(sp, client) { - // this.client = client; - // this.getPos(); - // this.sp = sp; - // this.pos = {}; - // this.sentCommands = {}; - // this.currentId = 0; - // } - - /** - * Asserv Constructor - * - * @exports clients/shared/asserv.Asserv - * @constructor - * @param {Object} sp - * @param {Object} client - * @param {Object} who - * @param {Object} sendStatus - * @param {clients/shared/asserv.Asserv} fifo - */ - function Asserv(sp, client, who, sendStatus, fifo) { - /** @type {boolean} */ - this.ready = true; - /** @type {Object} */ - this.sendStatus = sendStatus; - /** @type {Object} */ - this.sp = sp; - /** @type {Object} */ - this.client = client; - /** @type {Object} */ - this.pos = {}; - /** @type {Object} */ - this.who = who; - /** @type {int} */ - this.currentId = 0; - /** @type {string} */ - this.color = "yellow"; - /** @type {clients/shared/asserv.Asserv} */ - this.fifo = fifo; - - this.sp.on("data", function(data){ - if(this.ready === false){ - this.ready = true; - this.sendStatus(); - } - this.parseCommand(data.toString()); - }.bind(this)); - this.sp.on("error", function(data){ - this.ready = false; - this.sendStatus(); - logger.debug("error", data.toString()); - }.bind(this)); - this.sp.on("close", function(data){ - this.ready = false; - this.sendStatus(); - logger.error("Serial port close"); - }.bind(this)); - - setTimeout(function() { - this.getPos(); - }.bind(this), 2000); - } - /** - * Convert color x - * - * @param {int} x - */ - Asserv.prototype.convertColorX = function(x) { - if(this.color == "yellow") { - return x; - } else { - return 3000-x; - } - } - /** - * Convert color y - * - * @param {int} y - */ - Asserv.prototype.convertColorY = function(y) { - if(this.color == "yellow") { - return y; - } else { - return y; - } - } - /** - * Convert color Angle - * - * @param {int} a - */ - Asserv.prototype.convertColorA = function(a) { - if(this.color == "yellow") { - return convertA(a); - } else { - return convertA(Math.PI - a); - } - } - - /** - * Convert Angle - * - * @param {int} a - */ - function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); } - /** - * Set Angle - * - * @param {int} a - */ - Asserv.prototype.setA = function(a) { - // logger.debug(a, convertA(a)); - this.pos.a = convertA(a); - } - /** - * Position ? - * - * @param {Object} pos - */ - Asserv.prototype.Pos = function(pos) { - this.pos.x = pos.x; - this.pos.y = pos.y; - this.setA(pos.a); - } - /** - * Sets Position - * - * @param {Object} pos - * @param {Object} callback - */ - Asserv.prototype.setPos = function(pos, callback) { - logger.debug(pos); - if(pos.color !== undefined) - this.color = pos.color; - this.sendCommand(COMMANDS.SET_POS, [ - parseInt(this.convertColorX(pos.x)), - parseInt(this.convertColorY(pos.y)), - myWriteFloat(this.convertColorA(pos.a)) - ], false, callback); - } - /** - * Gets Potition - * - * @param {Object} pos - */ - Asserv.prototype.getPos = function(pos) { - this.client.send('ia', this.who+'.getpos'); - } - /** - * Sends Position - */ - Asserv.prototype.sendPos = function() { - this.client.send('ia', this.who+'.pos', this.pos); - } - - /** - * Set position calage - * - * @param {Object} pos - * @param {Object} callback - */ - Asserv.prototype.setPosCalage = function(pos, callback) { - this.sendCommand(COMMANDS.SET_POS, [ - parseInt(this.convertColorX(pos.x)), - parseInt(this.convertColorY(pos.y)), - myWriteFloat(this.convertColorA(pos.a)) - ], false, function() { - callback(); - this.fifo.orderFinished(); - }.bind(this), true); - } - - /** - * Calage X - * - * @param {int} x - * @param {int} a Angle - * @param {Object} callback - */ - Asserv.prototype.calageX = function(x, a, callback) { - if(callback === undefined) - callback = function(){}; - this.fifo.newOrder(function() { - this.setPosCalage({x: x, y: this.pos.y, a: a}, callback); - }.bind(this), 'calageX'); - - } - /** - * Calage Y - * - * @param {int} y - * @param {int} a Angle - * @param {Object} callback - */ - Asserv.prototype.calageY = function(y, a, callback) { - if(callback === undefined) - callback = function(){}; - this.fifo.newOrder(function() { - this.setPosCalage({x: this.pos.x, y: y, a: a}, callback, true); - }.bind(this), 'calageY'); - } - - // For float - /** - * My write float - * - * @param {float} f - */ - function myWriteFloat(f){ return Math.round(f*COMMANDS.FLOAT_PRECISION); } - /** - * My Parse float - * - * @param {float} f - */ - function myParseFloat(f){ return parseInt(f)/COMMANDS.FLOAT_PRECISION; } - - - /** - * Parse Command - * - * @param {string} data - */ - Asserv.prototype.parseCommand = function(data){ - // logger.debug(data); - var datas = data.split(';'); - var cmd = datas.shift();//, id = datas.shift(); - if(cmd == COMMANDS.AUTO_SEND && datas.length >= 4) { // periodic position update - var lastFinishedId = parseInt(datas.shift()); // TODO - this.Pos({ - x: this.convertColorX(parseInt(datas.shift())), - y: this.convertColorY(parseInt(datas.shift())), - a: this.convertColorA(myParseFloat(datas.shift())) - }); - - - this.sendPos(); - - // logger.debug(lastFinishedId); - if(this.currentId != lastFinishedId) { - // logger.fatal('finish id', lastFinishedId); - this.currentId = lastFinishedId; - var use_fifo = this.use_fifo; - this.use_fifo = true; - this.callback(); - if(use_fifo) - this.fifo.orderFinished(); - } - } else if(cmd == this.order_sent) { - this.order_sent = ''; - // logger.debug('finish', datas.shift()); - if(!this.wait_for_id) { - var use_fifo = this.use_fifo; - this.use_fifo = true; - this.callback(); - if(use_fifo) - this.fifo.orderFinished(); - } - } else if (cmd == COMMANDS.JACK) { - logger.info("JACK !"); - this.client.send("ia", "ia.jack"); - } else { - // logger.warn(datas); - logger.warn("Command return from Arduino to unknown cmd="+cmd); - } - } - /** - * Sends Command - * - * @param {string} cmd - * @param {string} args - * @param {int} wait_for_id - * @param {Object} [callback] - * @param {boolean} no_fifo - */ - Asserv.prototype.sendCommand = function(cmd, args, wait_for_id, callback, no_fifo){ - function nextOrder() { - if(callback === undefined) - callback = function(){}; - this.callback = callback; - args = args || []; - this.order_sent = cmd; - this.wait_for_id = wait_for_id; - logger.debug([cmd,this.currentId+1].concat(args).join(";")+"\n"); - this.sp.write([cmd,this.currentId+1].concat(args).join(";")+"\n"); - } - - this.use_fifo = !no_fifo; - - if(this.use_fifo) { - this.fifo.newOrder(nextOrder.bind(this), 'sendCommandAsserv('+cmd+':'+args+')'); - } else { - nextOrder.call(this); - } - } - - /** - * Set Vitesse - * - * @param {int} v Speed - * @param {float} r Rotation - * @param {Object} callback - */ - Asserv.prototype.setVitesse = function(v, r, callback) { - // logger.debug(myWriteFloat(r)); - this.sendCommand(COMMANDS.SPDMAX, [ - parseInt(v), - myWriteFloat(r) - ], false, callback); - }; - - /** - * Speed ? - * - * @param {int} l - * @param {int} a Angle - * @param {int} ms - * @param {Object} callback - */ - Asserv.prototype.speed = function(l, a, ms, callback) { - // logger.debug(myWriteFloat(r)); - this.sendCommand(COMMANDS.SPD, [ - parseInt(l), - parseInt(a), - parseInt(ms) - ], true, callback); - }; - - /** - * Set Acceleration - * - * @param {int} acc - * @param {Object} callback - */ - Asserv.prototype.setAcc = function(acc,callback) { - // logger.debug(myWriteFloat(r)); - this.sendCommand(COMMANDS.ACCMAX, [ - parseInt(acc) - ], false, callback); - }; - - /** - * Clean - * - * @param {Object} callback - */ - Asserv.prototype.clean = function(callback){ - this.sendCommand(COMMANDS.CLEANG, false, callback); - }; - - /** - * Pulse Width Modulation - * - * @param {int} left - * @param {int} right - * @param {int} ms - * @param {Object} callback - */ - Asserv.prototype.pwm = function(left, right, ms, callback) { - this.sendCommand(COMMANDS.PWM, [ - parseInt(left), - parseInt(right), - parseInt(ms) - ], true, callback); - - }; - - /** - * Go X Y - * - * @param {int} x - * @param {int} y - * @param {string} sens - * @param {Object} callback - * @param {boolean} no_fifo - */ - Asserv.prototype.goxy = function(x, y, sens, callback, no_fifo){ - if(sens == "avant") sens = 1; - else if(sens == "arriere") sens = -1; - else sens = 0; - - this.sendCommand(COMMANDS.GOTO, [ - parseInt(this.convertColorX(x)), - parseInt(this.convertColorY(y)), - sens - ], true, callback, no_fifo); - }; - /** - * Go Angle - * - * @param {int} a - * @param {Object} callback - * @param {boolean} no_fifo - */ - Asserv.prototype.goa = function(a, callback, no_fifo){ - // this.clean(); - this.sendCommand(COMMANDS.ROT, [ - myWriteFloat(this.convertColorA(a)) - ], true, callback, no_fifo); - }; - - /** - * Set P I D - * @param {float} p - * @param {float} i - * @param {float} d - * @param {Object} callback - */ - Asserv.prototype.setPid = function(p, i, d, callback){ - // this.clean(); - this.sendCommand(COMMANDS.PIDALL, [ - myWriteFloat(p), - myWriteFloat(i), - myWriteFloat(d) - ],false, callback); - }; - - // Asserv.prototype.gotoPath = function(callback, path){ - // this.clean(); - // if(instanceof path !=== "Array") path = path.path; // not sure about Path class right now - // path.forEach(function(item)); - // }; - - return Asserv; -})(); diff --git a/clients/shared/asserv.simu.class.js b/clients/shared/asserv.simu.class.js deleted file mode 100644 index 21e3a9d..0000000 --- a/clients/shared/asserv.simu.class.js +++ /dev/null @@ -1,359 +0,0 @@ -/** - * Asserv Simulator module - * - * @module clients/shared/asserv-simu - * @see {@link clients/shared/asserv-simu.Asserv} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('asserv'); - - // For simu - var SIMU_FACTOR_VIT = 1; - var SIMU_FACTOR_A = 0.3; // Facteur - // var SIMU_PWM_REF = 255; // à une PWM de 80 - function SIMU_DIST(pwm, dt, vitesse) { return (vitesse*SIMU_FACTOR_VIT)*dt; } - function SIMU_DIST_ROT(a) { return Math.abs(a)*100; } // Rayon aproximatif de 10cm - function SIMU_ROT_TIME(a, vitesse) { return SIMU_DIST_ROT(a)/(vitesse*SIMU_FACTOR_VIT*SIMU_FACTOR_A); } - var FPS = 30; - - var timeouts = []; - - /** - * Asserv Constructor - * - * @exports clients/shared/asserv-simu.Asserv - * @constructor - * @param {Object} client - * @param {Object} who - * @param {clients/shared/asserv.Asserv} fifo - */ - function Asserv(client, who, fifo) { - /** @type {Object} */ - this.client = client; - /** @type {Object} */ - this.who = who; - /** @type {Object} */ - this.pos = { - x:0,y:0,a:0 - }; - /** @type {clients/shared/asserv.Asserv} */ - this.fifo = fifo; - /** @type {int} */ - this.vitesse = 800; - this.getPos(); - } - - /** - * New Order - * - * @param {Object} callback - * @param {int} ms - * @param {boolean} no_fifo - */ - Asserv.prototype.newOrder = function(callback, ms, no_fifo, delay_order_finished){ - if(callback === undefined) - callback = function(){}; - var use_fifo = !no_fifo; - if(ms === undefined) ms = 0; - if(delay_order_finished === undefined) delay_order_finished = 0; - - function nextOrder() { - timeouts.push(setTimeout(function() { - callback(); - timeouts.push(setTimeout(function() { - this.fifo.orderFinished(); - }.bind(this), delay_order_finished)); - }.bind(this), ms)); - } - - if(use_fifo) { - // logger.debug('use_fifo'); - this.fifo.newOrder(nextOrder.bind(this)); - } else { - // logger.debug('no_fifo'); - timeouts.push(setTimeout(callback, ms));//.call(this)); - } - } - - /** - * Convert Angle - * - * @param {int} a Angle - */ - function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); } - /** - * Set Angle - * - * @param {int} a Angle - */ - Asserv.prototype.setA = function(a) { - this.pos.a = convertA(a); - } - /** - * Position ? - * - * @param {Object} pos - */ - Asserv.prototype.Pos = function(pos) { - this.pos.x = pos.x; - this.pos.y = pos.y; - this.setA(pos.a); - } - /** - * Sets Position - * - * @param {Object} pos - * @param {Object} callback - */ - Asserv.prototype.setPos = function(pos, callback) { - this.Pos(pos); - this.sendPos(); - if(callback !== undefined) - callback(); - } - /** - * Gets Position - * - * @param {Object} pos - */ - Asserv.prototype.getPos = function(pos) { - this.client.send('ia', this.who+'.getpos'); - } - /** - * Sends Position - */ - Asserv.prototype.sendPos = function() { - this.client.send('ia', this.who+'.pos', this.pos); - } - - /** - * Clean - */ - Asserv.prototype.clean = function(){ - logger.debug('cleaning %d timeouts', timeouts.length); - while(timeouts.length > 0) { - clearTimeout(timeouts.shift()); - } - }; - /** - * Avancer plot - * - * @param {Object} callback - */ - Asserv.prototype.avancerPlot = function(callback) { - this.newOrder(callback, 1200); - } - - /** - * Set vitesse - * - * @param {int} v Speed - * @param {int} r rotation - * @param {Object} callback - */ - Asserv.prototype.setVitesse = function(v, r, callback) { - this.vitesse = parseInt(v); - if(callback !== undefined) - callback(); - }; - /** - * Calage X - * - * @param {int} x - * @param {int} a Angle - * @param {Object} callback - */ - Asserv.prototype.calageX = function(x, a, callback) { - this.setPos({x: x, y: this.pos.y, a: a}, callback); - } - /** - * Calage Y - * - * @param {int} y - * @param {int} a Angle - * @param {Object} callback - */ - Asserv.prototype.calageY = function(y, a, callback) { - this.setPos({x: this.pos.x, y: y, a: a}, callback); - } - - /** - * Simu Speed - * - * @param {int} vit Speed - * @param {int} x - * @param {int} y - * @param {int} a Angle - * @param {int} dt - */ - Asserv.prototype.simu_speed = function(vit, x, y, a, dt) { - return function() { - this.pos = { - x: x + Math.cos(a) * vit*dt/1000, - y: y + Math.sin(a) * vit*dt/1000, - a: a - } - this.sendPos(); - }.bind(this); - } - /** - * Speed ? - * - * @param {int} l - * @param {int} a Angle - * @param {int} ms - * @param {Object} callback - */ - Asserv.prototype.speed = function(l, a, ms,callback) { - this.newOrder(function() { - // this.simu.pwm(callback, l/3, l/3, ms); - for(var t = 0; t < ms; t += 1000/FPS) { - timeouts.push(setTimeout(this.simu_speed(l, this.pos.x, this.pos.y, this.pos.a, t), t)); - } - timeouts.push(setTimeout(this.simu_speed(l, this.pos.x, this.pos.y, this.pos.a, ms), ms)); - timeouts.push(setTimeout(callback, ms)); - }.bind(this), 0, false, ms); - }; - - /** - * Simu Pulse Width Modulation - * - * @param {int} x - * @param {int} y - * @param {int} a Angle - * @param {int} dt - */ - Asserv.prototype.simu_pwm = function(pwm, x, y, a, dt) { - return function() { - this.pos = { - x: x + Math.cos(a) * SIMU_DIST(pwm, dt/1000, this.vitesse), - y: y + Math.sin(a) * SIMU_DIST(pwm, dt/1000, this.vitesse), - a: a - } - this.sendPos(); - }.bind(this); - } - /** - * Pulse Width Modulation - * - * @param {string} left - * @param {string} right - * @param {int} ms - * @param {Object} callback - */ - Asserv.prototype.pwm = function(left, right, ms, callback) { - this.newOrder(function() { - var pwm = (left+right)/2; - for(var t = 0; t < ms; t += 1000/FPS) { - timeouts.push(setTimeout(this.simu_pwm(pwm, this.pos.x, this.pos.y, this.pos.a, t), t)); - } - timeouts.push(setTimeout(this.simu_pwm(pwm, this.pos.x, this.pos.y, this.pos.a, ms), ms)); - timeouts.push(setTimeout(callback, ms)); - }.bind(this), 0, false, ms); - }; - - /** - * Simu Go X Y - * - * @param {int} x - * @param {int} y - */ - Asserv.prototype.simu_goxy = function(x, y) { - return function() { - this.pos.x = x; - this.pos.y = y; - this.sendPos(); - }.bind(this); - } - /** - * Go X Y - * - * @param {int} x - * @param {int} y - * @param {string} sens - * @param {Object} callback - * @param {boolean} no_fifo - */ - Asserv.prototype.goxy = function(x, y, sens, callback, no_fifo) { - - var dx = x-this.pos.x; - var dy = y-this.pos.y; - var dist = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)); - var tf = (dist / (this.vitesse*SIMU_FACTOR_VIT))*1000; // *1000 s->ms - - angle_avant = convertA(Math.atan2(dy,dx)-this.pos.a); - angle_arriere = convertA(angle_avant+Math.PI); - - if(sens == "avant") angle_depart = angle_avant - else if(sens == "arriere") angle_depart = angle_arriere; - else if (Math.abs(angle_avant) < Math.abs(angle_arriere)) angle_depart = angle_avant; - else angle_depart = angle_arriere; - - // logger.debug("dx: ", dx); - // logger.debug("dy: ", dy); - // logger.debug("angle: ", this.pos.a); - // logger.debug("angle avant: ", angle_avant); - // logger.debug("angle arriere: ", angle_arriere); - // logger.debug("angle depart: ", angle_depart); - - this.goa(angle_depart+this.pos.a, function() { - this.newOrder(function() { - for(var t = 0; t < tf; t += 1000/FPS) { - timeouts.push(setTimeout(this.simu_goxy(this.pos.x+dx*t/tf, this.pos.y+dy*t/tf), t)); - } - timeouts.push(setTimeout(this.simu_goxy(x, y), tf)); - timeouts.push(setTimeout(callback, tf)); - }.bind(this), 0, no_fifo, tf); - }.bind(this), no_fifo); - }; - /** - * Simu Go Angle - * - * @param {int} a Angle - */ - Asserv.prototype.simu_goa = function(a) { - return function() { - this.setA(a); - this.sendPos(); - }.bind(this); - } - /** - * Simu Go Angle - * - * @param {int} a Angle - * @param {Object} callback - * @param {boolean} no_fifo - */ - Asserv.prototype.goa = function(a, callback, no_fifo){ - a = convertA(a); - da = convertA(a-this.pos.a); - // logger.debug("depart:", this.pos.a); - // logger.debug("arrivee:", a); - // logger.debug("delta:", da); - - var tf = SIMU_ROT_TIME(da, this.vitesse)*1000; // *1000 s->ms - this.newOrder(function() { - for(var t = 0; t < tf; t += 1000/FPS) { - // logger.debug(this.pos.a+da*t/tf); - timeouts.push(setTimeout(this.simu_goa(this.pos.a+da*t/tf), t)); - } - timeouts.push(setTimeout(this.simu_goa(a), tf)); - timeouts.push(setTimeout(callback, tf)); - }.bind(this), 0, no_fifo, tf); - }; - - /** - * Set P I D - * - * @param {int} p - * @param {int} i - * @param {int} d - * @param {Object} callback - */ - Asserv.prototype.setPid = function(p, i, d, callback){ - this.newOrder(callback); - }; - - return Asserv; -})(); diff --git a/clients/shared/defineParser.js b/clients/shared/defineParser.js deleted file mode 100644 index f7052d7..0000000 --- a/clients/shared/defineParser.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Define Parser module - * - * @module clients/shared/defineParser - */ - -/* Converts : - * #define VALUEA - * #define VALUEB 'b' - * #define VALUEC 42 - * In : - * { - * VALUEA : null, - * VALUEB : "b", - * VALUEC : 42 - * } - */ - - - -module.exports = (function(){ - var logger = require('log4js').getLogger('DefineParser'); - var fs = require('fs'); - - var reg = /#define[ \t]+(\S+)[ \t]+(\S+)/g; - - - return function parse(file){ - var parsed = {}; - fs.readFile(file, 'utf8', function (err,data) { - if(err) { - logger.fatal("cant read file:\""+file+"\""); - return ; - } - var nb = 0; - while( findings = reg.exec(data) ) { - try { - parsed[findings[1]] = eval(findings[2]); - } catch(e) {} - // try to evaluate calculus... - nb++; - } - logger.info("done parsing \""+file+"\" with "+nb+" defines"); - //should be quick enough - }); - return parsed; - } - -})(); \ No newline at end of file diff --git a/clients/shared/fifo.class.js b/clients/shared/fifo.class.js deleted file mode 100644 index 8d359f1..0000000 --- a/clients/shared/fifo.class.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * First In First Out module - * - * @module clients/shared/fifo - * @see {@link clients/shared/fifo.Fifo} - */ - -module.exports = (function () { - var logger = require('log4js').getLogger('Fifo'); - - /** - * Fifo Constructor - * - * @exports clients/shared/fifo.Fifo - * @constructor - */ - function Fifo() { - this.clean(); - } - - /** - * Clean - */ - Fifo.prototype.clean = function(callback) { - /** fifo */ - this.fifo = []; - /** @type {boolean} */ - this.order_in_progress = false; - } - - /** - * Order finished - */ - Fifo.prototype.orderFinished = function() { - this.order_in_progress = false; - this.nextOrder(); - } - - /** - * New Order - * - * @param {Object} callback - * @param {string} [name] - */ - Fifo.prototype.newOrder = function(callback, name) { - if (name === undefined) - name = ""; - this.fifo.push({callback: callback, name: name}); - this.nextOrder(); - } - - /** - * Next Order - */ - Fifo.prototype.nextOrder = function() { - if(!this.order_in_progress && this.fifo.length > 0) { - // logger.debug(this.fifo.length); - this.order_in_progress = true; - object = this.fifo.shift(); - // logger.debug("Calling : "+object.name); - object.callback(); - } - } - - - return Fifo; -})(); diff --git a/clients/shared/test.js b/clients/shared/test.js deleted file mode 100644 index a74dff0..0000000 --- a/clients/shared/test.js +++ /dev/null @@ -1,12 +0,0 @@ - - - -var defineParser = require("./defineParser.js"); -console.log(defineParser); - -var commands = defineParser("./arduino/asserv/protocol.h"); - - -setTimeout(function(){ - console.log(commands); -}, 200); \ No newline at end of file From 35f1a526b711537603bc21eb4318641535d3e79f Mon Sep 17 00:00:00 2001 From: Mindstan Date: Sat, 1 Apr 2017 19:44:36 +0200 Subject: [PATCH 11/74] Add some doc --- clients/Asserv/Asserv.class.js | 12 +++++++++++- conf_jsdoc.json | 31 ++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/clients/Asserv/Asserv.class.js b/clients/Asserv/Asserv.class.js index ae66e22..b8dc3ee 100644 --- a/clients/Asserv/Asserv.class.js +++ b/clients/Asserv/Asserv.class.js @@ -1,7 +1,17 @@ - +/** + * Module exportant la classe abstraite Asserve + * + * @module clients/Asserv/asserv + */ module.exports = class Asserv{ + /** + * Creates an instance of Asserv. + * @param {any} client + * @param {any} who + * @param {any} fifo + */ constructor(client, who, fifo){ /** @type {Log4js} */ this.logger = require('log4js').getLogger('asserv'); diff --git a/conf_jsdoc.json b/conf_jsdoc.json index 81a5388..4378b33 100644 --- a/conf_jsdoc.json +++ b/conf_jsdoc.json @@ -4,17 +4,42 @@ "dictionaries": ["jsdoc","closure"] }, "source": { - "include": ["utcoupe", "server", "config.js", "ia", "clients/gr", "clients/pr", "clients/shared"], + "include": [ + "package.json", + "README.md", + "utcoupe", + "server", + "config.js", + "ia", + "clients", + "clients/Asserv", + "clients/Robot", + "simulateur/afficheur", + "simulateur", + "webclient/pages/simulateur/simulateur.js"], "includePattern": ".+\\.js(doc|x)?$", "excludePattern": "(^|\\/|\\\\)_" }, "plugins": [], "templates": { "cleverLinks": false, - "monospaceLinks": false + "monospaceLinks": false, + "dateFormat": "ddd MMM Do YYYY", + "outputSourceFiles": true, + "outputSourcePath": true, + "systemName": "UTCoupe 17", + "footer": "", + "copyright": "DocStrap Copyright © 2012-2015 The contributors to the JSDoc3 and DocStrap projects.", + "navType": "vertical", + "theme": "cyborg", + "linenums": true, + "collapseSymbols": false, + "inverseNav": true, + "protocol": "html://", + "methodHeadingReturns": false }, "opts": { "destination": "./doc/", - "template": "node_modules/docdash" + "template": "node_modules/ink-docstrap/template" } } \ No newline at end of file From caf0e09d424a218f8c3a71723e1f76c174a77189 Mon Sep 17 00:00:00 2001 From: Mindstan Date: Sat, 1 Apr 2017 19:45:02 +0200 Subject: [PATCH 12/74] Removing doc folder from git --- .gitignore | 4 +- doc/client_gr_actuators.Acts.html | 1158 ----- doc/client_gr_detect.Detect.html | 536 -- doc/client_gr_servos.Servos.html | 790 --- doc/clients_gr_actuators.Acts.html | 1158 ----- doc/clients_gr_actuators.class.js.html | 236 - doc/clients_gr_detect.Detect.html | 536 -- doc/clients_gr_detect.class.js.html | 117 - doc/clients_gr_main.js.html | 257 - doc/clients_gr_servos-simu.Servos.html | 492 -- doc/clients_gr_servos-simu.module_Servos.html | 405 -- doc/clients_gr_servos.Servos.html | 790 --- doc/clients_gr_servos.class.js.html | 150 - doc/clients_gr_servos.simu.class.js.html | 98 - doc/clients_pr_actuators.Acts.html | 1966 -------- doc/clients_pr_actuators.class.js.html | 664 --- doc/clients_pr_ax12-simu.Ax12.html | 1062 ---- doc/clients_pr_ax12.Ax12.html | 1748 ------- doc/clients_pr_ax12.class.js.html | 295 -- doc/clients_pr_ax12.simu.class.js.html | 142 - doc/clients_pr_detect.Detect.html | 536 -- doc/clients_pr_detect.class.js.html | 150 - doc/clients_pr_elevator.Elevator.html | 1261 ----- doc/clients_pr_elevator.class.js.html | 182 - doc/clients_pr_main.js.html | 242 - doc/clients_pr_others-simu.Others.html | 2687 ---------- doc/clients_pr_others.Others.html | 3915 --------------- doc/clients_pr_others.class.js.html | 371 -- doc/clients_pr_others.simu.class.js.html | 252 - doc/clients_shared_asserv-simu.Asserv.html | 3919 --------------- doc/clients_shared_asserv.Asserv.html | 4375 ----------------- doc/clients_shared_asserv.class.js.html | 771 --- doc/clients_shared_asserv.simu.class.js.html | 417 -- doc/clients_shared_defineParser.js.html | 106 - doc/clients_shared_fifo.Fifo.html | 741 --- doc/clients_shared_fifo.class.js.html | 125 - doc/config.js.html | 70 - doc/ia_actions.Actions.html | 2838 ----------- doc/ia_actions.class.js.html | 463 -- doc/ia_data.Data.html | 1990 -------- doc/ia_data.class.js.html | 247 - doc/ia_export_simulator.ExportSimulator.html | 540 -- doc/ia_export_simulator.class.js.html | 173 - doc/ia_gr.Gr.html | 1167 ----- doc/ia_gr.class.js.html | 162 - doc/ia_hokuyo.Hokuyo.html | 2651 ---------- doc/ia_hokuyo.class.js.html | 645 --- doc/ia_ia.Ia.html | 1111 ----- doc/ia_ia.class.js.html | 227 - doc/ia_main.js.html | 82 - doc/ia_pathfinding.Pathfinding.html | 1127 ----- doc/ia_pathfinding.class.js.html | 278 -- doc/ia_pr.class.js.html | 364 -- doc/ia_timer.Timer.html | 671 --- doc/ia_timer.class.js.html | 120 - doc/index.html | 64 - doc/module-client_gr_actuators.html | 189 - doc/module-client_gr_detect.html | 175 - doc/module-client_gr_servos.html | 177 - doc/module-clients_gr_actuators.html | 189 - doc/module-clients_gr_detect.html | 175 - doc/module-clients_gr_main.html | 180 - doc/module-clients_gr_servos-simu.html | 175 - doc/module-clients_gr_servos.html | 177 - doc/module-clients_pr_actuators.html | 181 - doc/module-clients_pr_ax12-simu.html | 175 - doc/module-clients_pr_ax12.html | 175 - doc/module-clients_pr_detect.html | 175 - doc/module-clients_pr_elevator.html | 175 - doc/module-clients_pr_main.html | 180 - doc/module-clients_pr_others-simu.html | 175 - doc/module-clients_pr_others.html | 175 - doc/module-clients_shared_asserv-simu.html | 175 - doc/module-clients_shared_asserv.html | 181 - doc/module-clients_shared_defineParser.html | 168 - doc/module-clients_shared_fifo.html | 175 - doc/module-config.html | 168 - doc/module-ia_actions.html | 175 - doc/module-ia_data.html | 175 - doc/module-ia_export_simulator.html | 175 - doc/module-ia_gr.html | 175 - doc/module-ia_hokuyo.html | 175 - doc/module-ia_ia.html | 197 - doc/module-ia_main.html | 174 - doc/module-ia_pathfinding.html | 175 - doc/module-ia_pr.html | 175 - doc/module-ia_timer.html | 175 - doc/module-server_server.html | 181 - doc/module-server_socket_client.html | 175 - doc/module-utcoupe_utcoupe.html | 174 - doc/scripts/linenumber.js | 25 - doc/scripts/prettify/Apache-License-2.0.txt | 202 - doc/scripts/prettify/lang-css.js | 2 - doc/scripts/prettify/prettify.js | 28 - doc/server_server.Server.html | 1175 ----- doc/server_server.SocketClient.html | 1332 ----- doc/server_server.class.js.html | 354 -- doc/server_socket_client.SocketClient.html | 1332 ----- doc/server_socket_client.class.js.html | 193 - doc/styles/jsdoc.css | 645 --- doc/styles/prettify.css | 79 - doc/utcoupe_utcoupe.js.html | 79 - 102 files changed, 2 insertions(+), 59104 deletions(-) delete mode 100644 doc/client_gr_actuators.Acts.html delete mode 100644 doc/client_gr_detect.Detect.html delete mode 100644 doc/client_gr_servos.Servos.html delete mode 100644 doc/clients_gr_actuators.Acts.html delete mode 100644 doc/clients_gr_actuators.class.js.html delete mode 100644 doc/clients_gr_detect.Detect.html delete mode 100644 doc/clients_gr_detect.class.js.html delete mode 100644 doc/clients_gr_main.js.html delete mode 100644 doc/clients_gr_servos-simu.Servos.html delete mode 100644 doc/clients_gr_servos-simu.module_Servos.html delete mode 100644 doc/clients_gr_servos.Servos.html delete mode 100644 doc/clients_gr_servos.class.js.html delete mode 100644 doc/clients_gr_servos.simu.class.js.html delete mode 100644 doc/clients_pr_actuators.Acts.html delete mode 100644 doc/clients_pr_actuators.class.js.html delete mode 100644 doc/clients_pr_ax12-simu.Ax12.html delete mode 100644 doc/clients_pr_ax12.Ax12.html delete mode 100644 doc/clients_pr_ax12.class.js.html delete mode 100644 doc/clients_pr_ax12.simu.class.js.html delete mode 100644 doc/clients_pr_detect.Detect.html delete mode 100644 doc/clients_pr_detect.class.js.html delete mode 100644 doc/clients_pr_elevator.Elevator.html delete mode 100644 doc/clients_pr_elevator.class.js.html delete mode 100644 doc/clients_pr_main.js.html delete mode 100644 doc/clients_pr_others-simu.Others.html delete mode 100644 doc/clients_pr_others.Others.html delete mode 100644 doc/clients_pr_others.class.js.html delete mode 100644 doc/clients_pr_others.simu.class.js.html delete mode 100644 doc/clients_shared_asserv-simu.Asserv.html delete mode 100644 doc/clients_shared_asserv.Asserv.html delete mode 100644 doc/clients_shared_asserv.class.js.html delete mode 100644 doc/clients_shared_asserv.simu.class.js.html delete mode 100644 doc/clients_shared_defineParser.js.html delete mode 100644 doc/clients_shared_fifo.Fifo.html delete mode 100644 doc/clients_shared_fifo.class.js.html delete mode 100644 doc/config.js.html delete mode 100644 doc/ia_actions.Actions.html delete mode 100644 doc/ia_actions.class.js.html delete mode 100644 doc/ia_data.Data.html delete mode 100644 doc/ia_data.class.js.html delete mode 100644 doc/ia_export_simulator.ExportSimulator.html delete mode 100644 doc/ia_export_simulator.class.js.html delete mode 100644 doc/ia_gr.Gr.html delete mode 100644 doc/ia_gr.class.js.html delete mode 100644 doc/ia_hokuyo.Hokuyo.html delete mode 100644 doc/ia_hokuyo.class.js.html delete mode 100644 doc/ia_ia.Ia.html delete mode 100644 doc/ia_ia.class.js.html delete mode 100644 doc/ia_main.js.html delete mode 100644 doc/ia_pathfinding.Pathfinding.html delete mode 100644 doc/ia_pathfinding.class.js.html delete mode 100644 doc/ia_pr.class.js.html delete mode 100644 doc/ia_timer.Timer.html delete mode 100644 doc/ia_timer.class.js.html delete mode 100644 doc/index.html delete mode 100644 doc/module-client_gr_actuators.html delete mode 100644 doc/module-client_gr_detect.html delete mode 100644 doc/module-client_gr_servos.html delete mode 100644 doc/module-clients_gr_actuators.html delete mode 100644 doc/module-clients_gr_detect.html delete mode 100644 doc/module-clients_gr_main.html delete mode 100644 doc/module-clients_gr_servos-simu.html delete mode 100644 doc/module-clients_gr_servos.html delete mode 100644 doc/module-clients_pr_actuators.html delete mode 100644 doc/module-clients_pr_ax12-simu.html delete mode 100644 doc/module-clients_pr_ax12.html delete mode 100644 doc/module-clients_pr_detect.html delete mode 100644 doc/module-clients_pr_elevator.html delete mode 100644 doc/module-clients_pr_main.html delete mode 100644 doc/module-clients_pr_others-simu.html delete mode 100644 doc/module-clients_pr_others.html delete mode 100644 doc/module-clients_shared_asserv-simu.html delete mode 100644 doc/module-clients_shared_asserv.html delete mode 100644 doc/module-clients_shared_defineParser.html delete mode 100644 doc/module-clients_shared_fifo.html delete mode 100644 doc/module-config.html delete mode 100644 doc/module-ia_actions.html delete mode 100644 doc/module-ia_data.html delete mode 100644 doc/module-ia_export_simulator.html delete mode 100644 doc/module-ia_gr.html delete mode 100644 doc/module-ia_hokuyo.html delete mode 100644 doc/module-ia_ia.html delete mode 100644 doc/module-ia_main.html delete mode 100644 doc/module-ia_pathfinding.html delete mode 100644 doc/module-ia_pr.html delete mode 100644 doc/module-ia_timer.html delete mode 100644 doc/module-server_server.html delete mode 100644 doc/module-server_socket_client.html delete mode 100644 doc/module-utcoupe_utcoupe.html delete mode 100644 doc/scripts/linenumber.js delete mode 100644 doc/scripts/prettify/Apache-License-2.0.txt delete mode 100644 doc/scripts/prettify/lang-css.js delete mode 100644 doc/scripts/prettify/prettify.js delete mode 100644 doc/server_server.Server.html delete mode 100644 doc/server_server.SocketClient.html delete mode 100644 doc/server_server.class.js.html delete mode 100644 doc/server_socket_client.SocketClient.html delete mode 100644 doc/server_socket_client.class.js.html delete mode 100644 doc/styles/jsdoc.css delete mode 100644 doc/styles/prettify.css delete mode 100644 doc/utcoupe_utcoupe.js.html diff --git a/.gitignore b/.gitignore index a177aea..af7d42c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -### Main git ignore files ++++++++++### Main git ignore files ### Beware, there are som gitignore files in subdirectories, for local and specific files # Generated executables @@ -41,4 +41,4 @@ doc/ *sync_time_stamp *liburg_c.a *.swp - +tmp.bmp diff --git a/doc/client_gr_actuators.Acts.html b/doc/client_gr_actuators.Acts.html deleted file mode 100644 index 9cef8bc..0000000 --- a/doc/client_gr_actuators.Acts.html +++ /dev/null @@ -1,1158 +0,0 @@ - - - - - Acts - Documentation - - - - - - - - - - - - - - - - -
- -

Acts

- - - - - - - -
- -
- -

- Acts -

- - -
- -
-
- - - - - -

new Acts(client, sendChildren)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Acts Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
client - - -Object - - - -
sendChildren - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

client :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

sendChildren :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

clean()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Cleans fifo and asserv -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

connectTo(structopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Connect to the servos -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
struct - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

getStatus()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Gets the status -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

orderHandler(from, name, params, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Order switch -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
from - - -string - - - -
name - - -string - - - -
params - - -Object - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

quit()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Tries to quit -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendStatus()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sends Status -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

start()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Starts (nothing ?) -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 15:31:03 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/client_gr_detect.Detect.html b/doc/client_gr_detect.Detect.html deleted file mode 100644 index 4f8abbf..0000000 --- a/doc/client_gr_detect.Detect.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - Detect - Documentation - - - - - - - - - - - - - - - - -
- -

Detect

- - - - - - - -
- -
- -

- Detect -

- - -
- -
-
- - - - - -

new Detect(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Detect constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

callback :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

devicesFound :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

searchArduinos()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Searches Arduino -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendSP()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send SP -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 15:31:03 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/client_gr_servos.Servos.html b/doc/client_gr_servos.Servos.html deleted file mode 100644 index fecd6ed..0000000 --- a/doc/client_gr_servos.Servos.html +++ /dev/null @@ -1,790 +0,0 @@ - - - - - Servos - Documentation - - - - - - - - - - - - - - - - -
- -

Servos

- - - - - - - -
- -
- -

- Servos -

- - -
- -
-
- - - - - -

new Servos(sp, sendStatus)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Servos Constructors -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -string - - - - Server port
sendStatus - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ready :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

sendStatus :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

acheter(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Acheter -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

connect(sp)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Connect -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -string - - - - Server port
- - - - - - - - - - - - - - - - - - - - - -

vendre(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Vendre -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 15:31:03 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_gr_actuators.Acts.html b/doc/clients_gr_actuators.Acts.html deleted file mode 100644 index 07fb1ab..0000000 --- a/doc/clients_gr_actuators.Acts.html +++ /dev/null @@ -1,1158 +0,0 @@ - - - - - Acts - Documentation - - - - - - - - - - - - - - - - -
- -

Acts

- - - - - - - -
- -
- -

- Acts -

- - -
- -
-
- - - - - -

new Acts(client, sendChildren)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Acts Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
client - - -Object - - - -
sendChildren - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

client :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

sendChildren :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

clean()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Cleans fifo and asserv -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

connectTo(structopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Connect to the servos -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
struct - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

getStatus()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Gets the status -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

orderHandler(from, name, params, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Order switch -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
from - - -string - - - -
name - - -string - - - -
params - - -Object - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

quit()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Tries to quit -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendStatus()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sends Status -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

start()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Starts (nothing ?) -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_gr_actuators.class.js.html b/doc/clients_gr_actuators.class.js.html deleted file mode 100644 index b59d77d..0000000 --- a/doc/clients_gr_actuators.class.js.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - clients/gr/actuators.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/actuators.class.js

- - - - - - - -
-
-
/**
- * Actuators module
- * 
- * @module clients/gr/actuators
- * @requires module:clients/shared/fifo
- * @requires module:clients/gr/servos
- * @requires module:clients/gr/servos-simu
- * @requires module:clients/shared/asserv
- * @requires module:clients/shared/asserv-simu
- * @see {@link clients/gr/actuators.Acts}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('gr.acts');
-	var serialPort = require("serialport");
-	/** @type {Object} */
-	var SerialPort = serialPort.SerialPort;
-	/** @type {clients/shared/fifo.Fifo} */
-	var fifo = new (require('../shared/fifo.class.js'))();
-
-	/** @type {clients/gr/servos.Servos} */
-	var servos = null;
-	/** @type {clients/gr/asserv.Asserv} */
-	var asserv = null;
-	var date = new Date();
-	/** @type {int} */
-	var lastSendStatus =  date.getTime();
-
-	/**
-	 * Acts Constructor
-	 * 
-	 * @exports clients/gr/actuators.Acts
-	 * @constructor
-	 * @param {Object} client
-	 * @param {Object} sendChildren
-	 */
-	function Acts(client, sendChildren) {
-		/** @type {Object} */
-		this.client = client;
-		/** @type {Object} */
-		this.sendChildren = sendChildren;
-		this.start();
-	}
-
-	/**
-	 * Starts (nothing ?)
-	 */
-	Acts.prototype.start = function(){
-
-	};
-	
-	/**
-	 * Cleans fifo and asserv
-	 */
-	Acts.prototype.clean = function(){
-		fifo.clean(); // A priori déjà vide
-		asserv.clean();
-	};
-
-	/**
-	 * Connect to the servos
-	 * 
-	 * @param {Object} [struct]
-	 */
-	Acts.prototype.connectTo = function(struct){
-		if (!struct.servos) {
-			logger.fatal("Lancement des servos gr en mode simu !");
-			servos = new (require('./servos.simu.class.js'))();
-		} else {
-			servos = new (require('./servos.class.js'))(struct.servos, this.sendStatus);
-		}
-		if (!struct.asserv) {
-			logger.fatal("Lancement de l'asserv gr en mode simu !");
-			asserv = new (require('../shared/asserv.simu.class.js'))(this.client, 'gr', fifo);
-		} else {
-			asserv = new (require('../shared/asserv.class.js'))(
-				new SerialPort(struct.asserv, {
-					baudrate: 57600,
-					parser:serialPort.parsers.readline('\n'),
-				}), this.client, 'gr', this.sendStatus, fifo
-			);
-		}
-	};
-
-	/**
-	 * Sends Status
-	 */
-	Acts.prototype.sendStatus = function() {
-		if(lastSendStatus <  date.getTime()-1000){
-			this.sendChildren(this.getStatus);
-			lastSendStatus =  date.getTime();
-		}
-	};
-
-	/**
-	 * Gets the status
-	 */
-	Acts.prototype.getStatus = function(){
-		var data = {
-			"status": "",
-			"children": []
-		};
-
-		data.status = "everythingIsAwesome";
-
-		if(servos && servos.ready){
-			data.children.push("Arduino servos");
-		}else
-			data.status = "ok";
-
-		if(asserv && asserv.ready){
-			data.children.push("Arduino asserv");
-		}else
-			data.status = "error";
-
-		return data;
-	};
-
-	/**
-	 * Tries to quit
-	 */
-	Acts.prototype.quit = function(){
-		if (!!servos && servos.ready)
-			servos.disconnect();
-		if (!!asserv && asserv.ready)
-			asserv.disconnect();
-	};
-
-	/**
-	 * Order switch
-	 * 
-	 * @param {string} from
-	 * @param {string} name
-	 * @param {Object} params
-	 * @param {Object} callback
-	 */
-	Acts.prototype.orderHandler = function (from, name, params, callback) {
-		// logger.info("Just received an order `" + name + "` from " + from + " with params :");
-		logger.info(name, params);
-
-		switch (name){
-			// Others
-			case "acheter":
-				servos.acheter(callback);
-			break;
-			case "vendre":
-				servos.vendre(callback);
-			break;
-			// Asserv
-			case "pwm":
-				asserv.pwm(params.left, params.right, params.ms,callback);
-			break;
-			case "setvit":
-				asserv.setVitesse(params.v, params.r, callback);
-			break;
-			case "clean":
-				asserv.clean(callback);
-			break;
-			case "goa":
-				asserv.goa(params.a,callback);
-			break;
-			case "goxy":
-				asserv.goxy(params.x, params.y, "avant",callback);
-			break;
-			case "setpos":
-				asserv.setPos(params,callback);
-			break;
-			case "setpid":
-				asserv.setPid(params.p, params.i, params.d,callback);
-			break;
-			default:
-				logger.warn("Order name " + name + " " + from + " not understood");
-				callback();
-		}
-	};
-
-	return Acts;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_gr_detect.Detect.html b/doc/clients_gr_detect.Detect.html deleted file mode 100644 index 03b2c9f..0000000 --- a/doc/clients_gr_detect.Detect.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - Detect - Documentation - - - - - - - - - - - - - - - - -
- -

Detect

- - - - - - - -
- -
- -

- Detect -

- - -
- -
-
- - - - - -

new Detect(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Detect constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

callback :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

devicesFound :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

searchArduinos()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Searches Arduino -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendSP()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send SP -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_gr_detect.class.js.html b/doc/clients_gr_detect.class.js.html deleted file mode 100644 index a28fad9..0000000 --- a/doc/clients_gr_detect.class.js.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - clients/gr/detect.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/detect.class.js

- - - - - - - -
-
-
/**
- * Detect module
- * 
- * @module clients/gr/detect
- * @see {@link clients/gr/detect.Detect}
- */
-
-module.exports = (function () {
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('pr.detect');
-	var serialPort = require("serialport");
-	var SerialPort = serialPort.SerialPort;
-
-	var sp = [];
-
-	/**
-	 * Detect constructor
-	 * 
-	 * @exports clients/gr/detect.Detect
-	 * @constructor
-	 * @param {Object} callback
-	 */
-	function Detect(callback) {
-		/** @type {Object} */
-		this.devicesFound = {
-			asserv: null,
-			servos: null
-		};
-		/** @type {Object} */
-		this.callback = callback;
-		this.searchArduinos();
-	}
-
-	/**
-	 * Send SP
-	 */
-	Detect.prototype.sendSP = function (){
-		// Sent to acts
-		this.callback(this.devicesFound);
-	};
-
-	/**
-	 * Searches Arduino
-	 */
-	Detect.prototype.searchArduinos = function() {
-		// On check tous les ports disponibles
-		serialPort.list(function (err, ports) {
-			for(var i in ports) {
-				if(ports[i].comName.indexOf('ttyUSB') >= 0) {
-					this.devicesFound.servos = ports[i].comName;
-				} else if(ports[i].comName.indexOf('ttyACM') >= 0) {
-					this.devicesFound.asserv = ports[i].comName;
-				}
-			}
-			this.sendSP();
-		}.bind(this));
-	};
-
-	return Detect;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_gr_main.js.html b/doc/clients_gr_main.js.html deleted file mode 100644 index 7e243ad..0000000 --- a/doc/clients_gr_main.js.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - clients/gr/main.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/main.js

- - - - - - - -
-
-
/**
- * Main module
- * 
- * @module clients/gr/main
- * @requires server/socket_client
- * @requires config
- * @requires clients/gr/actuators
- * @requires clients/gr/detect
- */
-
-(function () {
-	"use strict";
-	// Requires
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('gr');
-
-	// logger.info("Started NodeJS client with pid " + process.pid);
-
-	var SocketClient = require('../../server/socket_client.class.js');
-	var server = require('../../config.js').server;
-	/** @type {server/socket_client.SocketClient} */
-	var client = new SocketClient({
-		server_ip: server,
-		type: "gr"
-	});
-
-	/** @type {Object} */
-	var lastStatus = {
-		"status": "waiting"
-	};
-	sendChildren(lastStatus);
-
-	/** @type {clients/gr/actuators.Acts} */
-	var acts = new (require('./actuators.class.js'))(client, sendChildren);
-	/** @type {clients/gr/detect.Detect} */
-	var detect = null; // new (require('./detect.class.js'))(devicesDetected);
-
-	var queue = [];
-	var orderInProgress = null;
-
-	start();
-
-	// On message
-	client.order(function (from, name, params){
-		// logger.info("Recieved an order "+name);
-		switch (name){
-			case "collision":
-				queue = [];
-				acts.clean();
-				orderInProgress = false;
-			break;
-			case "stop":
-				acts.clean();
-				logger.fatal("Stop GR");
-				process.exit();
-			break;
-
-			// useless //
-			case "start":
-				queue = [];
-				start();
-			break;
-			default:
-				addOrder2Queue(from, name, params);
-		}
-	});
-
-	/**
-	 * Starts the GR
-	 */
-	function start(){
-		logger.info("Starting  :)");
-		sendChildren({
-			status: "starting", 
-			children:[]
-		});
-		detect = new (require('./detect.class.js'))(devicesDetected);
-	}
-
-	/**
-	 * Stops the robot
-	 */
-	function stop(){
-		acts.quit();
-
-		// Send struct to server
-		sendChildren({
-			status: "waiting", 
-			children:[]
-		});
-	}
-
-	/**
-	 * Devices detected
-	 * 
-	 * @param {Object} struct
-	 */
-	function devicesDetected(struct){
-		// Verify content
-		if (!struct.servos)
-			logger.warn("Missing servos Nano");
-		if (!struct.asserv)
-			logger.warn("Missing asserv Nano");
-
-		// Connect to what's detected
-		acts.connectTo(struct);
-
-		// Send struct to server
-		sendChildren(acts.getStatus());
-	}
-
-	/**
-	 * Sends status to server
-	 * 
-	 * @param {Object} status
-	 */
-	function sendChildren(status){
-		lastStatus = status;
-
-		client.send("server", "server.childrenUpdate", lastStatus);
-	}
-
-	/**
-	 * Looks if everything is Ok
-	 */
-	function isOk(){
-		if(lastStatus.status != "waiting")
-			lastStatus = acts.getStatus();
-		
-		client.send("ia", "isOkAnswer", lastStatus);
-		client.send("server", "server.childrenUpdate", lastStatus);
-	}
-
-	/**
-	 * Push the order (enfiler)
-	 * 
-	 * @param {string} f from
-	 * @param {string} n name
-	 * @param {Object} p parameters
-	 */
-	function addOrder2Queue(f, n, p){
-		if(queue.length < 50) {
-			// Adds the order to the queue
-			queue.push({
-				from: f,
-				name: n,
-				params: p
-			});
-			// logger.info("Order added to queue ! : ");
-			// logger.info(queue);
-			executeNextOrder();
-		}
-	}
-
-	/**
-	 * Execute order
-	 */
-	function executeNextOrder(){
-		if ((queue.length > 0) && (!orderInProgress)){
-			var order = queue.shift();
-			orderInProgress = order.name;
-			
-			logger.info("Going to do '" + orderInProgress + "' "+order.params.toString());
-			acts.orderHandler(order.from, order.name, order.params, actionFinished);
-			
-			executeNextOrder();
-		}
-	}
-
-	/**
-	 * Launch the next order
-	 */
-	function actionFinished(){
-		logger.info(orderInProgress + " just finished !");
-
-		orderInProgress = false;
-		executeNextOrder();
-	}
-
-	/**
-	 * Tries to exit
-	 * 
-	 * @todo do something when app is closing
-	 */
-	function quit () {
-		logger.info("Please wait while exiting...");
-		// acts.quit();
-		process.exit(0);
-	}
-
-
-	// Exiting :
-	//do something when app is closing
-	//process.on('exit', quit);
-	// catches ctrl+c event
-	//process.on('SIGINT', quit);
-	// //catches uncaught exceptions
-	// process.on('uncaughtException', quit);
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_gr_servos-simu.Servos.html b/doc/clients_gr_servos-simu.Servos.html deleted file mode 100644 index 9685f46..0000000 --- a/doc/clients_gr_servos-simu.Servos.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - - Servos - Documentation - - - - - - - - - - - - - - - - -
- -

Servos

- - - - - - - -
- -
- -

- Servos -

- - -
- -
-
- - - - - -

new Servos(sp)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Servos constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Methods

- - - - - - -

acheter(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Acheter -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

vendre(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Vendre -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_gr_servos-simu.module_Servos.html b/doc/clients_gr_servos-simu.module_Servos.html deleted file mode 100644 index 8945bb0..0000000 --- a/doc/clients_gr_servos-simu.module_Servos.html +++ /dev/null @@ -1,405 +0,0 @@ - - - - - Servos - Documentation - - - - - - - - - - - - - - - - -
- -

Servos

- - - - - - - -
- -
- -
- -
-
- - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Servos constructor
- - - - -
- - - - - - - - - - - - - - -

Methods

- - - - - - -

acheter(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Acheter -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

vendre(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Vendre -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 16:47:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_gr_servos.Servos.html b/doc/clients_gr_servos.Servos.html deleted file mode 100644 index e2f2f7e..0000000 --- a/doc/clients_gr_servos.Servos.html +++ /dev/null @@ -1,790 +0,0 @@ - - - - - Servos - Documentation - - - - - - - - - - - - - - - - -
- -

Servos

- - - - - - - -
- -
- -

- Servos -

- - -
- -
-
- - - - - -

new Servos(sp, sendStatus)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Servos Constructors -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -string - - - - Server port
sendStatus - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ready :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

sendStatus :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

acheter(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Acheter -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

connect(sp)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Connect -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -string - - - - Server port
- - - - - - - - - - - - - - - - - - - - - -

vendre(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Vendre -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_gr_servos.class.js.html b/doc/clients_gr_servos.class.js.html deleted file mode 100644 index cacf724..0000000 --- a/doc/clients_gr_servos.class.js.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - clients/gr/servos.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/servos.class.js

- - - - - - - -
-
-
/**
- * Servos module
- * 
- * @module clients/gr/servos
- * @see {@link clients/gr/servos.Servos}
- * @see module:clients/gr/servos-simu
- */
-
-module.exports = (function () {
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('gr.servos');
-	var five = require("johnny-five");
-	/** @type {Object} */
-	var board = null;
-	/** @type {Object} */
-	var servo_gauche, servo_droit;
-
-	/**
-	 * Servos Constructors
-	 * 
-	 * @exports clients/gr/servos.Servos
-	 * @constructor
-	 * @param {string} sp Server port
-	 * @param {Object} sendStatus
-	 */
-	function Servos(sp, sendStatus) {
-		/** @type {boolean} */
-		this.ready = false;
-		/** @type {Object} */
-		this.sendStatus = sendStatus;
-		this.connect(sp);
-	}
-
-	/**
-	 * Connect
-	 * 
-	 * @param {string} sp Server port
-	 */
-	Servos.prototype.connect = function(sp) {
-		board = new five.Board({
-			port: sp,
-			repl: false
-		});
-
-		board.on("ready", function() {
-			logger.info("Board servos Ready");
-			servo_gauche = new five.Servo(2);
-			servo_droit = new five.Servo(3);
-			this.ready = true;
-			this.sendStatus();
-			this.acheter();
-		}.bind(this));
-	};
-
-	/**
-	 * Acheter
-	 * 
-	 * @param {Object} callback
-	 */
-	Servos.prototype.acheter = function(callback) {
-		servo_gauche.to(170);
-		servo_droit.to(0);
-		setTimeout(callback, 500);
-	};
-	/**
-	 * Vendre
-	 * 
-	 * @param {Object} callback
-	 */
-	Servos.prototype.vendre = function(callback) {
-		servo_gauche.to(50);
-		servo_droit.to(120);
-		setTimeout(function(){ // remontée lente
-			servo_gauche.to(100, 1000);
-			servo_droit.to(70, 1000);
-		}, 500);
-		setTimeout(function(){
-			servo_gauche.to(50);
-			servo_droit.to(120);
-		}, 2000);
-		setTimeout(function(){ // remontée lente
-			servo_gauche.to(100, 1000);
-			servo_droit.to(70, 1000);
-		}, 2500);
-		setTimeout(function(){
-			servo_gauche.to(50);
-			servo_droit.to(120);
-		}, 4000);
-		setTimeout(callback, 6000);
-	};
-
-	return Servos;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_gr_servos.simu.class.js.html b/doc/clients_gr_servos.simu.class.js.html deleted file mode 100644 index a064f48..0000000 --- a/doc/clients_gr_servos.simu.class.js.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - clients/gr/servos.simu.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/servos.simu.class.js

- - - - - - - -
-
-
/**
- * Servos Simulator module
- * 
- * @module clients/gr/servos-simu
- * @see clients/gr/servos-simu.Servos
- */
-
-module.exports = (function () {
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('gr.servos');
-
-	/**
-	 * Servos constructor
-	 * 
-	 * @exports clients/gr/servos-simu.Servos
-	 * @constructor
-	 * @param {Object} sp
-	 */
-	function Servos(sp) {
-
-	}
-
-	/**
-	 * Acheter
-	 * 
-	 * @param {Object} callback
-	 */
-	Servos.prototype.acheter = function(callback) {
-		setTimeout(callback, 500);
-	};
-	/**
-	 * Vendre
-	 * 
-	 * @param {Object} callback
-	 */
-	Servos.prototype.vendre = function(callback) {
-		setTimeout(callback, 500);
-	};
-
-	return Servos;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_actuators.Acts.html b/doc/clients_pr_actuators.Acts.html deleted file mode 100644 index e99f476..0000000 --- a/doc/clients_pr_actuators.Acts.html +++ /dev/null @@ -1,1966 +0,0 @@ - - - - - Acts - Documentation - - - - - - - - - - - - - - - - -
- -

Acts

- - - - - - - -
- -
- -

- Acts -

- - -
- -
-
- - - - - -

new Acts(client, sendChildren)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Acts Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
client - - -Object - - - -
sendChildren - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

client :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

has_gobelet :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

nb_plots :int

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -int - - -
  • -
- - - - - - - - -

new_has_ball :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

sendChildren :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

clean()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Cleans all -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

connectTo(struct)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Connect to -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
struct - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

getStatus()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Get Status -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

monter_plot2(callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter plot 2 -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

orderHandler(from, name, params, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Order switch -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
from - - -string - - - -
name - - -string - - - -
params - - -Object - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

pousser_plot(callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Pousser plot -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

prendre_plot(callbackopt, monteropt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Prendre plot -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
monter - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

prendre_plot2(callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Prendre plot -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

quit()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Quit -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendStatus()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send status -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

start()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Starts (nothing ?) -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_pr_actuators.class.js.html b/doc/clients_pr_actuators.class.js.html deleted file mode 100644 index 72235c2..0000000 --- a/doc/clients_pr_actuators.class.js.html +++ /dev/null @@ -1,664 +0,0 @@ - - - - - clients/pr/actuators.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/actuators.class.js

- - - - - - - -
-
-
/**
- * Actuators module
- * 
- * @module clients/pr/actuators
- * @requires clients/shared/fifo
- * @see {@link clients/pr/actuators.Acts}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('pr.acts');
-	var serialPort = require("serialport");
-	var SerialPort = serialPort.SerialPort;
-	var spawn = require('child_process').spawn;
-	/** @type {clients/shared/fifo.Fifo} */
-	var fifo = new (require('../shared/fifo.class.js'))();
-
-	var others = null;
-	var asserv = null;
-	var ax12 = null;
-	var date = new Date();
-	/** @type {int} */
-	var lastSendStatus =  date.getTime();
-
-	/**
-	 * Acts Constructor
-	 * 
-	 * @exports clients/pr/actuators.Acts
-	 * @constructor
-	 * @param {Object} client
-	 * @param {Object} sendChildren
-	 */
-	function Acts(client, sendChildren) {
-		/** @type {Object} */
-		this.client = client;
-		/** @type {Object} */
-		this.sendChildren = sendChildren;
-		this.start();
-		/** @type {int} */
-		this.nb_plots = 0;
-		/** @type {boolean} */
-		this.new_has_ball = false;
-		/** @type {boolean} */
-		this.has_gobelet = false;
-	}
-
-	/**
-	 * Starts (nothing ?)
-	 */
-	Acts.prototype.start = function(){
-		
-	};
-
-	/**
-	 * Cleans all
-	 */
-	Acts.prototype.clean = function(){
-		fifo.clean();  // A priori déjà vide
-		asserv.clean();
-		ax12.ouvrir();
-		others.ouvrirStabilisateurGrand();
-		others.ouvrirBloqueurGrand();
-	};
-
-	/**
-	 * Connect to
-	 * 
-	 * @param {Object} struct
-	 */
-	Acts.prototype.connectTo = function(struct){
-		if (!struct.others) {
-			logger.fatal("Lancement de others pr en mode simu !");
-			others = new (require('./others.simu.class.js'))(fifo);
-		} else {
-			others = new (require('./others.class.js'))(
-				new SerialPort(struct.others, { baudrate: 57600 }),
-				this.sendStatus,
-				fifo
-			);
-		}
-
-		if (!struct.asserv) {
-			logger.fatal("Lancement de l'asserv pr en mode simu !");
-			asserv = new (require('../shared/asserv.simu.class.js'))(this.client, 'pr', fifo);
-		} else {
-			asserv = new (require('../shared/asserv.class.js'))(
-				new SerialPort(struct.asserv, {
-					baudrate: 57600,
-					parser:serialPort.parsers.readline('\n')
-				}), this.client, 'pr', this.sendStatus, fifo
-			);
-		}
-
-		if (!struct.ax12) {
-			logger.fatal("Lancement de l'usb2ax pr en mode simu !");
-			ax12 = new (require('./ax12.simu.class.js'))(fifo);
-		} else {
-			ax12 = new (require('./ax12.class.js'))(struct.ax12, this.sendStatus, fifo);
-		}
-
-		// Initialisation
-		setTimeout(function() {
-			others.ouvrirStabilisateurGrand();
-			others.lacherGobelet();
-			others.ouvrirBloqueurGrand();
-			others.descendreAscenseur();
-			ax12.ouvrir(function() {
-				logger.fatal('BAZOOKA');
-			});
-		}, 1000);
-	};
-
-	/**
-	 * Send status
-	 */
-	Acts.prototype.sendStatus = function() {
-		if(lastSendStatus <  date.getTime()-1000){
-			this.sendChildren(this.getStatus);
-			lastSendStatus =  date.getTime();
-		}
-	};
-
-	/**
-	 * Get Status
-	 */
-	Acts.prototype.getStatus = function(){
-		var data = {
-			"status": "",
-			"children": []
-		};
-
-		data.status = "everythingIsAwesome";
-
-		if(others && !!others.ready)
-			data.children.push("Arduino others");
-		else
-			data.status = "ok";
-
-		if(ax12 && !!ax12.ready)
-			data.children.push("USB2AX");
-		else
-			data.status = "ok";
-
-		if(asserv && !!asserv.ready)
-			data.children.push("Arduino asserv");
-		else
-			data.status = "error";
-
-		return data;
-	};
-
-	/**
-	 * Quit
-	 */
-	Acts.prototype.quit = function(){
-		if (ax12 && ax12.ready)
-			ax12.disconnect();
-	};
-
-	/**
-	 * fake
-	 */
-	function fake() {}
-	Acts.prototype.delay = function(ms, callback){
-		fifo.newOrder(function() {
-			setTimeout(function() {
-				if(callback !== undefined)
-					callback();
-				fifo.orderFinished();
-			}, ms);
-		}, 'delay');
-	}
-
-	/**
-	 * Prendre plot
-	 * 
-	 * @param {Object} [callback]
-	 * @param {int} [monter]
-	 */
-	Acts.prototype.prendre_plot = function(callback, monter){
-		if(callback === undefined) {
-			callback = function() {};
-		}
-		if (monter === undefined) {
-			monter = 1;
-		}
-		var that = this;
-		if (that.new_has_ball) {
-			that.new_has_ball = false;
-			others.descendreUnPeuAscenseur();
-			ax12.ouvrir();
-			others.descendreAscenseur();
-			that.prendre_plot(callback);
-		}
-		else if (that.nb_plots>=3 || !monter){
-			ax12.ouvrir();
-			others.fermerStabilisateur();
-			ax12.fermer();
-			others.monterUnPeuAscenseur(function() {
-				that.client.send('ia', 'pr.plot++');
-				callback();
-			});
-			others.ouvrirBloqueurMoyen();
-			others.fermerBloqueur();
-		}
-		else if (that.nb_plots==0) {
-			ax12.ouvrir();
-			others.ouvrirBloqueurMoyen();
-			ax12.fermer();
-			others.monterAscenseur(function() {
-				that.client.send('ia', 'pr.plot++');
-				setTimeout(callback, 200);
-			});
-			others.fermerBloqueur();
-			ax12.ouvrir();
-			others.ouvrirStabilisateurMoyen(function() {}, 0);
-			others.descendreAscenseur();
-		}
-		else if(that.nb_plots==1){
-			ax12.ouvrir();
-			others.ouvrirStabilisateurMoyen();
-			ax12.fermer();
-			others.ouvrirBloqueurMoyen();
-			others.monterAscenseur(function() {
-				that.client.send('ia', 'pr.plot++');
-				setTimeout(callback, 200);
-			});
-			others.fermerBloqueur();
-			ax12.ouvrir(function() {});
-			others.descendreAscenseur();
-		}
-		else {
-			ax12.ouvrir();
-			others.ouvrirStabilisateurMoyen();
-			ax12.fermer();
-			others.ouvrirBloqueurMoyen();
-			others.monterAscenseur(function() {
-				that.client.send('ia', 'pr.plot++');
-				setTimeout(callback, 200);
-			});
-			others.fermerStabilisateur(fake,0);
-			others.fermerBloqueur();
-			ax12.ouvrir(function() {});
-			others.descendreAscenseur();
-		}
-		that.nb_plots++;
-	}
-
-	/**
-	 * Pousser plot
-	 * 
-	 * @param {Object} [callback]
-	 */
-	Acts.prototype.pousser_plot = function(callback){
-		if(callback === undefined) {
-			callback = function() {};
-		}
-		ax12.ouvrir();
-		asserv.goxy(1150, 200, "avant");
-		asserv.goxy(1100, 250, "arriere", callback);
-	}
-
-	/**
-	 * Prendre plot
-	 * 
-	 * @param {Object} [callback]
-	 */
-	Acts.prototype.prendre_plot2 = function(callback){
-		if(callback === undefined) {
-			callback = function() {};
-		}
-		var that = this;
-		asserv.speed(300, 0, 750);
-		if (that.new_has_ball) {
-			that.new_has_ball = false;
-			others.descendreUnPeuAscenseur();
-			ax12.ouvrir();
-			others.descendreAscenseur();
-			that.prendre_plot(callback);
-		}
-		else {
-
-			ax12.ouvrir();
-			ax12.fermer();
-			others.monterUnPeuAscenseur(function() {
-				that.client.send('ia', 'pr.plot++');
-				callback();
-			});
-		}
-		
-		that.nb_plots++;
-	}
-
-	/**
-	 * Monter plot 2
-	 * 
-	 * @param {Object} [callback]
-	 */
-	Acts.prototype.monter_plot2 = function(callback){
-		if(callback === undefined) {
-			callback = function() {};
-		}
-		var that = this;
-
-		callback();
-		if (that.nb_plots == 1) {
-			others.ouvrirBloqueurMoyen();
-			others.monterAscenseur();
-			others.fermerBloqueur();
-			others.fermerStabilisateur();
-			ax12.ouvrir();
-			others.descendreAscenseur();
-		} else {
-			others.ouvrirStabilisateurMoyen();
-			others.ouvrirBloqueurMoyen();
-			others.monterAscenseur();
-			others.fermerBloqueur();
-			others.fermerStabilisateur();
-			ax12.ouvrir();
-			others.descendreAscenseur();
-		}
-	}
- 
-	/**
-	 * Order switch
-	 * 
-	 * @param {string} from
-	 * @param {string} name
-	 * @param {Object} params
-	 * @param {Object} callback
-	 */
-	Acts.prototype.orderHandler = function (from, name, params, callback) {
-		// logger.info("Just received an order `" + name + "` from " + from + " with params :");
-		// logger.info(params);
-		var that = this;
-		/** @todo : add a callback parameter to all functions (and call it) */
-		switch (name){
-			// others
-			case "placer":
-				asserv.setPid(0.25, 130, 13);
-				asserv.goxy(500, 940);
-				asserv.goa(-0.62);
-				this.orderHandler('ia','fermer_tout', {}, callback);
-			break;
-			case "prendre_plot":
-				this.prendre_plot(callback);
-			break;
-			case "pousser_plot":
-				this.pousser_plot(callback);
-			break;
-			case "prendre_plot2":
-				this.prendre_plot2(callback);
-			break;
-			case "monter_plot2":
-				this.monter_plot2(callback);
-			break;
-			case "reset_nb_plots":
-				this.nb_plots = 0;
-				callback();
-			break;	
-			case "prendre_plot_rear_left":
-				asserv.goxy(160, 1800, "avant");
-				that.prendre_plot(undefined, 0);
-				asserv.goxy(270, 1800, "arriere", callback);
-			break;
-			case "prendre_plot_rear_left_calage":
-				asserv.goxy(250, 1450, "arriere");
-				asserv.goa(1.5708);
-				asserv.pwm(-70, -70, 1500);
-				asserv.calageY(1288, 1.5708);
-				asserv.goxy(250, 1450, 500);
-				asserv.goa(0);
-				asserv.pwm(-70, -70, 1500);
-				asserv.calageX(65, 0);
-				asserv.goxy(120, 1450, "avant");
-				asserv.goxy(120, 1790, "avant");
-				that.prendre_plot();
-				asserv.goa(-1);
-				asserv.speed(500, 0, 750, callback);
-			break;
-			case "prendre_gobelet_et_2_plots_front":
-				others.lacherGobelet(fake,0);
-				asserv.goxy(275, 260, "arriere");
-				others.prendreGobelet(function() {
-					that.has_gobelet = true;
-					that.client.send('ia', 'pr.gobelet1');
-				});
-				asserv.speed(500, 0, 500); 
-				asserv.goxy(165, 270, "avant"); //100 au lieu de 90 pos plot
-				that.prendre_plot(undefined, 1);
-				//asserv.speed(-300, -300, 600); 
-				asserv.goxy(285, 310, "arriere");
-				asserv.goxy(155, 180, "avant");
-				that.prendre_plot(callback);
-			break;
-
-			case "deposer_pile_left_2":
-				asserv.goxy(650, 1000, "avant");
-				others.descendreAscenseur();
-				ax12.ouvrir();
-				others.ouvrirBloqueurMoyen(fake,0);
-				others.ouvrirStabilisateurMoyen();
-				that.delay(500);
-				others.ouvrirBloqueurGrand(fake,0);
-				others.ouvrirStabilisateurGrand(function() {
-					that.nb_plots = 0;
-					that.client.send('ia', 'pr.plot0');
-				});
-				asserv.speed(-300, 0, 1000);
-			break;
-
-			case "recalage_stairs":
-				asserv.goxy(250, 1450, "arriere");
-				asserv.goa(1.5708);
-				asserv.pwm(-80, -80, 1500);
-				asserv.calageY(1288, 1.5708);
-				asserv.goxy(250, 1450, 500);
-				asserv.goa(0);
-				asserv.pwm(-80, -80, 1500);
-				asserv.calageY(65, 0);
-				asserv.goxy(120, 1450, "avant");
-			break;
-
-			case "prendre_2_plots_stairs":
-				asserv.goxy(800, 1740, "avant");
-				that.prendre_plot(undefined, 1);
-				that.delay(1000);
-				asserv.goxy(830, 1850, "avant");
-				that.prendre_plot(undefined, 0);
-				asserv.speed(-300, 0, 1000, callback); 
-			break;
-
-			case "prendre_gobelet":
-				others.lacherGobelet(fake,0);
-				asserv.speed(-300, 0, 500);
-				others.prendreGobelet(function() {
-					that.client.send('ia', 'pr.gobelet1');
-					that.has_gobelet = true;
-					callback();
-				});
-			break;
-
-			case "deposer_pile_et_gobelet":
-				asserv.goxy(250, 1000, "avant");
-				others.descendreUnPeuAscenseur();
-				ax12.ouvrir();
-				others.ouvrirBloqueurMoyen(fake,0);
-				others.ouvrirStabilisateurMoyen();
-				that.delay(500);
-				others.ouvrirBloqueurGrand(fake,0);
-				others.ouvrirStabilisateurGrand(function() {
-					that.nb_plots = 0;
-					that.client.send('ia', 'pr.plot0');
-				});
-				asserv.speed(-300, 0, 1000);
-				asserv.goa(0);
-				others.lacherGobelet(function() {
-					that.client.send('ia', 'pr.gobelet0');
-				});
-				that.delay(300);
-				asserv.speed(300, 0, 750, callback);
-				others.ouvrirStabilisateurMoyen(fake,0);
-				others.ouvrirBloqueurMoyen(fake,0);
-				others.descendreAscenseur();
-				break;
-
-			case "deposer_pile_gobelet_prendre_balle_gauche":
-				asserv.goxy(300, 1000, "avant");
-				//asserv.goa(-2.3562);
-				others.descendreUnPeuAscenseur();
-				ax12.ouvrir();
-				others.ouvrirBloqueurGrand(fake,0);
-				others.ouvrirStabilisateurMoyen();
-				that.delay(500);
-				others.ouvrirStabilisateurGrand();
-				asserv.speed(-300, 0, 1000);
-				asserv.goa(0);
-				others.lacherGobelet();
-				that.delay(300);
-				asserv.speed(300, 0, 750);
-				/*asserv.goxy(700, 1300, "arriere", function() {
-					that.client.send('ia', 'data.add_dynamic', {pos:{x:450, y:880}, d:8});
-				});
-				others.ouvrirBloqueurMoyen(fake,0);
-				others.ouvrirStabilisateurMoyen(fake,0);
-				others.monterMoyenAscenseur();
-
-				asserv.goxy(260, 1050, "osef");
-				asserv.goa(3.1416/2);
-				asserv.pwm(50, 50, 1500);
-				asserv.calageY(1126, 3.1416/2);
-				asserv.goxy(260, 1000, "arriere");
-				asserv.goa(3.1416);
-
-				asserv.goxy(200, 1000, "avant");
-				asserv.goa(3.1416);
-				asserv.pwm(50, 50, 1500);
-				asserv.calageX(145, 3.1416);
-				ax12.fermerBalle();
-				asserv.goxy(260, 1000, "arriere");
-				others.descendreMoyenAscenseur();
-				ax12.fermerBalle2();
-				asserv.goxy(260, 1000, "arriere");
-				others.monterAscenseur();
-				asserv.goxy(330, 1000, "avant");
-				asserv.goa(0.1863);
-				others.lacherGobelet();
-				that.delay(100);
-				that.new_has_ball = true;
-				that.client.send('ia', 'pr.plot0');
-				that.client.send('ia', 'pr.gobelet0');
-				that.nb_plots = 0;
-				that.has_gobelet = false;
-				asserv.goxy(600, 1050, "avant", callback);*/
-			break;
-
-			case "deposer_gobelet":
-				asserv.goa(3.1416);
-				that.delay(100);
-				others.lacherGobelet();
-				that.client.send('ia', 'pr.gobelet0');
-				asserv.speed(500, 0, 800, callback);
-			break;
-
-			case "fermer_tout":
-				others.lacherGobelet();
-				others.fermerBloqueur();
-				others.descendreAscenseur();
-				others.rangerClap();
-				others.fermerStabilisateur();
-				ax12.fermer(callback);
-			break;
-			case "ouvrir_ax12":
-				ax12.ouvrir(callback);
-			break;
-			case "monter_ascenseur":
-				others.monterAscenseur(callback);
-			break;
-			case "clap_1":
-				others.sortirClap();
-				asserv.goxy(330, 140, "osef", function() {
-					callback();
-					others.rangerClap();
-				});
-			break;
-			case "clap_3":
-				others.sortirClap();
-				asserv.goxy(1000, 140, "osef", function() {
-					callback();
-					others.rangerClap();
-				});
-			break;
-			case "clap_5":
-				others.sortirClap();
-				asserv.goxy(2300, 140, "osef", function() {
-					callback();
-					others.rangerClap();
-				});
-			break;
-
-			// Asserv
-			case "pwm":
-				asserv.pwm(params.left, params.right, params.ms, callback);
-			break;
-			case "setvit":
-				asserv.setVitesse(params.v, params.r, callback);
-			break;
-			case "clean":
-				asserv.clean(callback);
-			break;
-			case "goa":
-				asserv.goa(params.a, callback, true);
-			break;
-			case "goxy":
-				asserv.goxy(params.x, params.y, params.sens, callback, true);
-			break;
-			case "setpos":
-				asserv.setPos(params, callback);
-			break;
-			case "setacc":
-				asserv.setAcc(params.acc, callback);
-			break;
-			case "setpid":
-				asserv.setPid(params.p, params.i, params.d, callback);
-			break;
-			case "sync_git":
-				spawn('/root/sync_git.sh', [], {
-					detached: true
-				});
-			break;
-
-
-			// Debug
-			case "AX12_close":
-				ax12.fermer(callback);
-			break;
-			case "AX12_open":
-				ax12.ouvrir(callback);
-			break;
-			default:
-				logger.warn("Order name " + name + " " + from + " not understood");
-				callback();
-		}
-	};
-
-	return Acts;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_ax12-simu.Ax12.html b/doc/clients_pr_ax12-simu.Ax12.html deleted file mode 100644 index b05b9ef..0000000 --- a/doc/clients_pr_ax12-simu.Ax12.html +++ /dev/null @@ -1,1062 +0,0 @@ - - - - - Ax12 - Documentation - - - - - - - - - - - - - - - - -
- -

Ax12

- - - - - - - -
- -
- -

- Ax12 -

- - -
- -
-
- - - - - -

new Ax12(fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ax12 constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
fifo - - -clients/shared/fifo.Fifo - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Methods

- - - - - - -

callCallback(callbackopt, ms)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Calls callback -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
ms - - -int - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -

disconnect(x)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Disconnects (nothing ?) -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - -
- - - - - - - - - - - - - - - - - - - - - -

fermer(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

fermerBalle(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer Balle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

fermerBalle2(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer Balle 2 -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrir(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_pr_ax12.Ax12.html b/doc/clients_pr_ax12.Ax12.html deleted file mode 100644 index 82f5480..0000000 --- a/doc/clients_pr_ax12.Ax12.html +++ /dev/null @@ -1,1748 +0,0 @@ - - - - - Ax12 - Documentation - - - - - - - - - - - - - - - - -
- -

Ax12

- - - - - - - -
- -
- -

- Ax12 -

- - -
- -
-
- - - - - -

new Ax12(sp, sendStatus, fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ax12 Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -string - - - - Serial Port NAME
sendStatus - - -Object - - - -
fifo - - -clients/shared/fifo.Fifo - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ax12s :array.<Object>

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -array.<Object> - - -
  • -
- - - - - - - - -

fifo :clients/shared/fifo.Fifo

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
- - - - - - - - - -

orders_sent :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

ready :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

sendStatus :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

type_callback :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

connect(sp)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Connect -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -string - - - - Serial Port NAME
- - - - - - - - - - - - - - - - - - - - - -

degToAx12(deg)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Deg to AX12 -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
deg - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

disconnect(x)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Disconnect -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - -
- - - - - - - - - - - - - - - - - - - - - -

fermer(callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

fermerBalle(callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer balle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

fermerBalle2(callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer balle 2 -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

loopAX12()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Loop AX12 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ouvrir(callbackopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_pr_ax12.class.js.html b/doc/clients_pr_ax12.class.js.html deleted file mode 100644 index a8aaea8..0000000 --- a/doc/clients_pr_ax12.class.js.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - clients/pr/ax12.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/ax12.class.js

- - - - - - - -
-
-
/**
- * AX12 module
- * 
- * @module clients/pr/ax12
- * @see clients/pr/ax12.Ax12
- */
-
-module.exports = (function () {
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('pr.ax12');
-	var ffi = require('ffi');
-	var libusb2ax = ffi.Library('./libs/dynamixel/lib/libusb2ax', {
-		'dxl_initialize': ['int', ['int', 'int']],
-		'dxl_write_word': ['void', ['int', 'int', 'int']],
-		'dxl_read_word': ['int', ['int', 'int']],
-		'dxl_terminate': ['void', ['void']],
-		'dxl_get_result': ['int', ['void']]
-	});
-
-	// Constants
-	var AX12_COUPLE = 800;
-	var P_GOAL_POSITION_L = 30;
-	var P_POSITION = 36;
-	var P_SPEED	= 0x26;
-	var P_COUPLE = 34;
-	var MARGE_POS = 80;
-	var MARGE_POS_MVT = 5;
-	var ax12s = {
-		'2':{
-			id: 2,
-			obj: 0, pos: 0, arrived: false
-		},
-		'3':{
-			id: 3,
-			obj: 0, pos: 0, arrived: false
-		}
-	};
-
-	/**
-	 * Ax12 Constructor
-	 * 
-	 * @exports clients/pr/ax12.Ax12
-	 * @constructor
-	 * @param {string} sp Serial Port NAME
-	 * @param {Object} sendStatus
-	 * @param {clients/shared/fifo.Fifo} fifo
-	 */
-	function Ax12(sp, sendStatus, fifo) {
-		/** @type {boolean} */
-		this.ready = false;
-		/** @type {Object} */
-		this.sendStatus = sendStatus;
-		/** @type {Object} */
-		this.orders_sent = [];
-		/** @type {clients/shared/fifo.Fifo} */
-		this.fifo = fifo;
-
-		this.connect(sp);
-	}
-
-
-	// ====== General actions ======
-
-	POS_OPENED = 40;
-	POS_CLOSED = 10;
-	POS_BALL_1 = 0;
-	POS_BALL_2 = 0;
-
-
-	/**
-	 * Connect
-	 * 
-	 * @param {string} sp Serial Port NAME
-	 */
-	Ax12.prototype.connect = function(sp) {
-		if(libusb2ax.dxl_initialize(sp.substring("/dev/ttyACM".length), 1) <= 0) {
-			logger.error("Impossible de se connecter à l'USB2AX");
-		} else {
-			logger.info("Connecté à l'USB2AX !");
-		}
-		this.ready = true;
-		this.sendStatus();
-		/** @type {array<Object>} */
-		this.ax12s = {};
-		/** @type {Object} */
-		this.type_callback = null;
-
-		libusb2ax.dxl_write_word(2, P_COUPLE, 400);
-		libusb2ax.dxl_write_word(3, P_COUPLE, 400);
-
-		this.ouvrir();
-		this.loopAX12();
-	};
-
-	/**
-	 * Disconnect
-	 * 
-	 * @param {} x
-	 */
-	Ax12.prototype.disconnect = function(x) {
-		this.ready = false;
-		this.sendStatus();
-	};
-
-	/**
-	 * Loop AX12
-	 */
-	Ax12.prototype.loopAX12 = function() {
-		var speed;
-		for(var i in ax12s) {
-			// S'il n'est pas à la bonne position
-			ax12s[i].pos = libusb2ax.dxl_read_word(ax12s[i].id, P_POSITION);
-			speed = libusb2ax.dxl_read_word(ax12s[i].id, P_SPEED);
-
-			if (!ax12s[i].started) {
-				libusb2ax.dxl_write_word(ax12s[i].id, P_COUPLE, AX12_COUPLE);
-				libusb2ax.dxl_write_word(ax12s[i].id, P_GOAL_POSITION_L, ax12s[i].obj);
-				if (Math.abs(speed) > MARGE_POS_MVT) {
-					ax12s[i].started = true;
-				}
-			} else {
-				speed = libusb2ax.dxl_read_word(ax12s[i].id, P_SPEED);
-				if (Math.abs(speed) < MARGE_POS_MVT) {
-					ax12s[i].arrived = true;
-				}
-			}
-			if(Math.abs(ax12s[i].pos - ax12s[i].obj) < MARGE_POS) {
-				ax12s[i].arrived = true;
-			}
-		}
-		// logger.debug(ax12s['2'].pos + ' ; ' + ax12s['3'].pos);
-		if(ax12s['2'].started && ax12s['3'].started && this.type_callback == "ouvrir" ||
-		   ax12s['2'].arrived && ax12s['3'].arrived && this.type_callback) {
-			this.type_callback = null;
-			this.callback();
-			this.fifo.orderFinished();
-		}
-
-		setTimeout(function() { this.loopAX12(); }.bind(this), 50);
-	};
-
-	/**
-	 * Deg to AX12
-	 * 
-	 * @param {int} deg
-	 */
-	Ax12.prototype.degToAx12 = function(deg) {
-		return parseInt((deg+150)*1024/300);
-	};
-
-	/**
-	 * Ouvrir
-	 * 
-	 * @param {Object} [callback]
-	 */
-	Ax12.prototype.ouvrir = function(callback) {
-		if(callback === undefined) {
-			callback = function(){};
-		}
-		this.fifo.newOrder(function() {
-			ax12s['2'].obj = this.degToAx12(0);
-			ax12s['3'].obj = this.degToAx12(0);
-			ax12s['2'].arrived = false;
-			ax12s['2'].started = false;
-			ax12s['3'].arrived = false;
-			ax12s['3'].started = false;
-			this.callback = callback;
-			this.type_callback = 'ouvrir';
-		}.bind(this), 'AX12-Ouvrir');
-	};
-
-	/**
-	 * Fermer
-	 * 
-	 * @param {Object} [callback]
-	 */
-	Ax12.prototype.fermer = function(callback) {
-		if(callback === undefined) {
-			callback = function(){};
-		}
-		this.fifo.newOrder(function() {
-			ax12s['2'].obj = this.degToAx12(-85);
-			ax12s['3'].obj = this.degToAx12(85);
-			// logger.debug(ax12s['2'].obj);
-			ax12s['2'].arrived = false;
-			ax12s['2'].started = false;
-			ax12s['3'].arrived = false;
-			ax12s['3'].started = false;
-			this.callback = callback;
-			this.type_callback = 'fermer';
-		}.bind(this), 'AX12-Fermer');
-	};
-	/**
-	 * Fermer balle
-	 * 
-	 * @param {Object} [callback]
-	 */
-	Ax12.prototype.fermerBalle = function(callback) {
-		if(callback === undefined) {
-			callback = function(){};
-		}
-		this.fifo.newOrder(function() {
-			ax12s['2'].obj = this.degToAx12(-50);
-			ax12s['3'].obj = this.degToAx12(50);
-			// logger.debug(ax12s['2'].obj);
-			ax12s['2'].arrived = false;
-			ax12s['2'].started = false;
-			ax12s['3'].arrived = false;
-			ax12s['3'].started = false;
-			this.callback = callback;
-			this.type_callback = 'fermer';
-		}.bind(this), 'AX12-Fermer balle');
-	};
-	/**
-	 * Fermer balle 2
-	 * 
-	 * @param {Object} [callback]
-	 */
-	Ax12.prototype.fermerBalle2 = function(callback) {
-		if(callback === undefined) {
-			callback = function(){};
-		}
-		this.fifo.newOrder(function() {
-			ax12s['2'].obj = this.degToAx12(-75);
-			ax12s['3'].obj = this.degToAx12(75);
-			// logger.debug(ax12s['2'].obj);
-			ax12s['2'].arrived = false;
-			ax12s['2'].started = false;
-			ax12s['3'].arrived = false;
-			ax12s['3'].started = false;
-			this.callback = callback;
-			this.type_callback = 'fermer';
-		}.bind(this), 'AX12-Fermer balle 2');
-	};
-
-	return Ax12;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_ax12.simu.class.js.html b/doc/clients_pr_ax12.simu.class.js.html deleted file mode 100644 index 19b1a16..0000000 --- a/doc/clients_pr_ax12.simu.class.js.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - clients/pr/ax12.simu.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/ax12.simu.class.js

- - - - - - - -
-
-
/**
- * AX12 Simulator module
- * 
- * @module clients/pr/ax12-simu
- * @see {@link clients/pr/ax12-simu.Ax12}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('pr.ax12');
-
-	/**
-	 * Ax12 constructor
-	 * 
-	 * @exports clients/pr/ax12-simu.Ax12
-	 * @constructor
-	 * @param {clients/shared/fifo.Fifo} fifo
-	 */
-	function Ax12(fifo) {
-		this.fifo = fifo;
-	}
-
-	/**
-	 * Disconnects (nothing ?)
-	 * 
-	 * @param {} x
-	 */
-	Ax12.prototype.disconnect = function(x) {
-
-	};
-
-	/**
-	 * Calls callback
-	 * 
-	 * @param {Object} [callback]
-	 * @param {int} ms
-	 */
-	Ax12.prototype.callCallback = function(callback, ms) {
-		if(callback === undefined) {
-			callback = function(){};
-		}
-		this.fifo.newOrder(function() {
-			setTimeout(function() {
-				callback();
-				this.fifo.orderFinished();
-			}.bind(this), parseInt(ms/5));
-		}.bind(this));
-	}
-
-	/**
-	 * Ouvrir
-	 * 
-	 * @param {Object} callback
-	 */
-	Ax12.prototype.ouvrir = function(callback) {
-		this.callCallback(callback, 1000);
-	};
-
-	/**
-	 * Fermer
-	 * 
-	 * @param {Object} callback
-	 */
-	Ax12.prototype.fermer = function(callback) {
-		this.callCallback(callback, 1000);
-	};
-	/**
-	 * Fermer Balle
-	 * 
-	 * @param {Object} callback
-	 */
-	Ax12.prototype.fermerBalle = function(callback) {
-		this.callCallback(callback, 800);
-	};
-	/**
-	 * Fermer Balle 2
-	 * 
-	 * @param {Object} callback
-	 */
-	Ax12.prototype.fermerBalle2 = function(callback) {
-		this.callCallback(callback, 900);
-	};
-
-	return Ax12;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_detect.Detect.html b/doc/clients_pr_detect.Detect.html deleted file mode 100644 index 11b4d5a..0000000 --- a/doc/clients_pr_detect.Detect.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - Detect - Documentation - - - - - - - - - - - - - - - - -
- -

Detect

- - - - - - - -
- -
- -

- Detect -

- - -
- -
-
- - - - - -

new Detect(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Detect constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

callback :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

devicesFound :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

searchArduinos()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Searches Arduino -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendSP()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sends Server port -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_pr_detect.class.js.html b/doc/clients_pr_detect.class.js.html deleted file mode 100644 index 7d4a606..0000000 --- a/doc/clients_pr_detect.class.js.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - clients/pr/detect.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/detect.class.js

- - - - - - - -
-
-
/**
- * Detect module
- * 
- * @module clients/pr/detect
- * @see {@link clients/pr/detect.Detect}
- */
-
-module.exports = (function () {
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('pr.detect');
-	var serialPort = require("serialport");
-	var SerialPort = serialPort.SerialPort;
-
-	var sp = [];
-
-	/**
-	 * Detect constructor
-	 * 
-	 * @exports clients/pr/detect.Detect
-	 * @constructor
-	 * @param {Object} callback
-	 */
-	function Detect(callback) {
-		/** @type {Object} */
-		this.devicesFound = {
-			asserv: null,
-			others: null,
-			ax12: null
-		};
-		/** @type {Object} */
-		this.callback = callback;
-		this.searchArduinos();
-	}
-
-	/**
-	 * Sends Server port
-	 */
-	Detect.prototype.sendSP = function (){
-		// Close opened ports & detect other devices
-		serialPort.list(function (err, ports) {
-			for(var i in ports) {
-				if(ports[i].comName.indexOf('ttyUSB') >= 0) {
-					this.devicesFound.asserv = ports[i].comName;
-				} else if((ports[i].comName.indexOf('ttyACM') >= 0) && ports[i].comName != this.devicesFound.others) {
-					// logger.debug(ports[i].comName);
-					this.devicesFound.ax12 = ports[i].comName;
-				}
-				if(sp[i].readable){
-					logger.info("Closing  "+ports[i].comName);
-					// this.devicesFound.ax12 = ports[i].comName;
-					sp[i].close();
-				}
-			}
-
-			// Sent to acts
-			this.callback(this.devicesFound);
-		}.bind(this));
-	};
-
-	/**
-	 * Searches Arduino
-	 */
-	Detect.prototype.searchArduinos = function() {
-		// On check tous les ports disponibles
-		serialPort.list(function (err, ports) {
-			var nb_found = 0;
-			for(var i in ports) {
-				sp[i] = new SerialPort(ports[i].comName, { baudrate: 57600 });
-				sp[i].on('open', function (i) {
-					sp[i].write('O\n');
-				}.bind(this, i));
-
-				sp[i].on("data", function (i, data) {
-					data = data.toString();
-					console.log(ports[i].comName, data);
-					if (data == 'O' && !this.devicesFound.others){ // Stepper
-						this.devicesFound.others = ports[i].comName;
-						clearTimeout(timeout);
-						this.sendSP();
-					}
-					sp[i].close();
-				}.bind(this, i));
-
-				sp[i].on("error", function() {}); // Node JS Error if it doesn't exist (and if an "error" event is sent)
-			}
-		}.bind(this));
-
-		// On check tous les ports qui ne sont pas enregistrés
-		timeout = setTimeout(function(){this.sendSP(); }.bind(this), 3000);
-	};
-
-	return Detect;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_elevator.Elevator.html b/doc/clients_pr_elevator.Elevator.html deleted file mode 100644 index 61b0c8d..0000000 --- a/doc/clients_pr_elevator.Elevator.html +++ /dev/null @@ -1,1261 +0,0 @@ - - - - - Elevator - Documentation - - - - - - - - - - - - - - - - -
- -

Elevator

- - - - - - - -
- -
- -

- Elevator -

- - -
- -
-
- - - - - -

new Elevator(sp)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Elevator constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -Object - - - - Serial Port OBJECT
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

orders_sent :array.<Object>

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -array.<Object> - - -
  • -
- - - - - - - - -

pos :string

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -string - - -
  • -
- - - - - - - - -

ready :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

sendStatus :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

sp :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

descendre()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Descendre -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

disconnect()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Disconnects -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

monter()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

monterChouilla()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter choilla -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

parseOrder(order)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse Order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
order - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

release()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Release -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendOrder(order)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fonctions for sending orders to the Arduino -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
order - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_pr_elevator.class.js.html b/doc/clients_pr_elevator.class.js.html deleted file mode 100644 index 2a00825..0000000 --- a/doc/clients_pr_elevator.class.js.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - clients/pr/elevator.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/elevator.class.js

- - - - - - - -
-
-
/**
- * Elevator module
- * 
- * @module clients/pr/elevator
- * @see {@link clients/pr/elevator.Elevator}
- */
-
-module.exports = (function () {
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('pr.elevator');
-	var serialPort = require("serialport");
-	var SerialPort = serialPort.SerialPort;
-
-	var ORDER_ACHIEVED =		'K'; // Like Ok
-	var ORDER_UNKNOWN =			'U'; // Like Unknown
-
-	var ELEV_MOVE_UP =			'u';
-	var ELEV_MOVE_DOWN =		'd';
-	var ELEV_RELEASE =			'r';
-	var ELEV_CHOUILLA =			'c';
-
-	/**
-	 * Elevator constructor
-	 * 
-	 * @exports clients/pr/elevator.Elevator
-	 * @constructor
-	 * @param {Object} sp Serial Port OBJECT
-	 */
-	function Elevator(sp, sendStatus) {
-		/** @type {Object} */
-		this.sp = sp;
-		/** @type {boolean} */
-		this.ready = false;
-		/** @type {Object} */
-		this.sendStatus = sendStatus;
-		/** @type {string} */
-		this.pos = 'down';
-		/** @type {array<Object>} */
-		this.orders_sent = [];
-
-		this.sp.on("data", function(data) {
-			this.ready = true;
-			this.sendStatus();
-			this.parseOrder(data.toString());
-		}.bind(this));
-	}
-
-	/**
-	 * Fonctions for sending orders to the Arduino
-	 * 
-	 * @param {string} order
-	 */
-	Elevator.prototype.sendOrder = function(order) {
-		this.sp.write(order);
-		this.orders_sent.push(order);
-	};
-
-	/**
-	 * Disconnects
-	 */
-	Elevator.prototype.disconnect = function() {
-		this.sp.close();
-		this.ready = false;
-		this.sendStatus();
-	};
-
-
-	// ====== General actions ======
-
-	/**
-	 * Monter
-	 */
-	Elevator.prototype.monter = function() {
-		this.sendOrder(ELEV_MOVE_UP);
-	};
-
-	/**
-	 * Monter choilla
-	 */
-	Elevator.prototype.monterChouilla = function() {
-		this.sendOrder(ELEV_CHOUILLA);
-	};
-
-	/**
-	 * Descendre
-	 */
-	Elevator.prototype.descendre = function() {
-		this.sendOrder(ELEV_MOVE_DOWN);
-		this.lacher();
-	};
-
-	/**
-	 * Release
-	 */
-	Elevator.prototype.release = function() {
-		this.sendOrder(ELEV_RELEASE);
-	};
-
-	/**
-	 * Parse Order
-	 * 
-	 * @param {string} order
-	 */
-	Elevator.prototype.parseOrder = function(order) {
-		if(order == ORDER_ACHIEVED) {
-			switch(this.orders_sent.shift()) {
-				case ELEV_MOVE_UP:
-					this.pos = 'up';
-					logger.info("Elevator is up");
-				break;
-				case ELEV_MOVE_DOWN:
-					this.pos1 = 'down';
-					logger.info("Elevator is down");
-				break;
-			}
-		} else if (order == ORDER_UNKNOWN) {
-			oldest_order = this.orders_sent.shift();
-			logger.warn("Order sent unknown: "+this.orders_sent.shift());
-		} else {
-			logger.warn("Order received unknown: "+order);
-		}
-	};
-
-	return Elevator;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_main.js.html b/doc/clients_pr_main.js.html deleted file mode 100644 index 725b34d..0000000 --- a/doc/clients_pr_main.js.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - clients/pr/main.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/main.js

- - - - - - - -
-
-
/**
- * Main module
- * 
- * @module clients/pr/main
- * @requires server/socket_client
- * @requires config
- * @requires clients/pr/actuators
- * @requires clients/pr/detect
- */
-
-(function () {
-	"use strict";
-
-	// Requires
-	var logger = require('log4js').getLogger('pr');
-
-	// logger.info("Started NodeJS client with pid " + process.pid);
-
-	var SocketClient = require('../../server/socket_client.class.js');
-	var server = require('../../config.js').server
-	var client = new SocketClient({
-		server_ip: server,
-		type: "pr"
-	});
-
-	var lastStatus = {
-		"status": "waiting"
-	};
-	sendChildren(lastStatus);
-
-	var acts = new (require('./actuators.class.js'))(client, sendChildren);
-	var detect = null;
-
-	var queue = [];
-	var orderInProgress = false;
-
-	start();
-
-	// On message
-	client.order(function (from, name, params){
-		// logger.info("Recieved an order "+name);
-		switch (name){
-			case "collision":
-				queue = [];
-				acts.clean();
-				orderInProgress = false;
-			break;
-			case "stop":
-				acts.clean();
-				setTimeout(function() {
-					logger.fatal("Stop PR");
-					process.exit();
-				}, 800);
-			break;
-
-			// useless //
-			case "start":
-				queue = [];
-				start();
-			break;
-			default:
-				addOrder2Queue(from, name, params);
-		}
-	});
-
-	function start(){
-		logger.info("Starting  :)");
-		sendChildren({
-			status: "starting", 
-			children:[]
-		});
-		detect = new (require('./detect.class.js'))(devicesDetected);
-	}
-
-	// function stop(){
-	// 	acts.quit();
-
-	// 	// Send struct to server
-	// 	sendChildren({
-	// 		status: "waiting", 
-	// 		children:[]
-	// 	});
-	// }
-
-	function devicesDetected(struct){
-		// Verify content
-		if (!struct.others)
-			logger.warn("Missing others Mega");
-
-		// if (!struct.servos)
-		// 	logger.warn("Missing servos Nano");
-
-		if (!struct.asserv)
-			logger.warn("Missing asserv Nano");
-
-		if (!struct.ax12)
-			logger.warn("Missing USB2AX");
-
-		// Connect to what's detected
-		acts.connectTo(struct);
-
-		// Send struct to server
-		sendChildren(acts.getStatus());
-	}
-
-	// Sends status to server
-	function sendChildren(status){
-		lastStatus = status;
-
-		client.send("server", "server.childrenUpdate", lastStatus);
-	}
-
-	function isOk(){
-		if(lastStatus.status != "waiting")
-			lastStatus = acts.getStatus();
-		
-		client.send("ia", "isOkAnswer", lastStatus);
-		client.send("server", "server.childrenUpdate", lastStatus);
-	}
-
-
-	// Push the order (enfiler)
-	function addOrder2Queue(f, n, p){
-		// if(n == 'clean') {
-		// 	logger.info(n+" : Begin");
-		// 	acts.orderHandler(f, n, p, actionFinished);
-		// } else
-		if(queue.length < 100){
-			// Adds the order to the queue
-			queue.push({
-				from: f,
-				name: n,
-				params: p
-			});
-			// logger.info("Order added to queue ! : ");
-			// logger.info(queue);
-
-			executeNextOrder();
-		}
-	}
-
-	// Execute order
-	function executeNextOrder(){
-		if ((queue.length > 0) && (!orderInProgress)) {
-			var order = queue.shift();
-			if(order.name == "send_message") {
-				// logger.debug("Send message %s", order.params.name);
-				client.send('ia', order.params.name, order.params || {});
-				executeNextOrder();
-			} else {
-				orderInProgress = order.name;
-				
-				logger.info(orderInProgress+" : Begin");
-				// logger.debug(order.params);
-				acts.orderHandler(order.from, order.name, order.params, actionFinished);
-				
-				// executeNextOrder();
-			}
-		}
-	}
-
-	function actionFinished(){
-		if(orderInProgress !== false) {
-			logger.info(orderInProgress + " : End");
-
-			orderInProgress = false;
-			executeNextOrder();
-		}
-	}
-	function quit () {
-		logger.info("Please wait while exiting...");
-		acts.quit();
-		process.exit();
-	}
-
-
-	// Exiting :
-	//do something when app is closing
-	// process.on('exit', quit);
-	// catches ctrl+c event
-	// process.on('SIGINT', quit);
-	// //catches uncaught exceptions
-	// process.on('uncaughtException', quit);
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_others-simu.Others.html b/doc/clients_pr_others-simu.Others.html deleted file mode 100644 index 4c03031..0000000 --- a/doc/clients_pr_others-simu.Others.html +++ /dev/null @@ -1,2687 +0,0 @@ - - - - - Others - Documentation - - - - - - - - - - - - - - - - -
- -

Others

- - - - - - - -
- -
- -

- Others -

- - -
- -
-
- - - - - -

new Others(fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Others constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
fifo - - -clients/shared/fifo.Fifo - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

fifo :clients/shared/fifo.Fifo

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
- - - - - - - - - - - -

Methods

- - - - - - -

callCallback(callbackopt, ms)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Call callback -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
ms - - -int - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -

descendreAscenseur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Descendre ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

descendreMoyenAscenseur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Descendre moyen ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

descendreUnPeuAscenseur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Descendre un peu ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

disconnect()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Disconnects (nothing ?) -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

fermerBloqueur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer bloqueur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

fermerStabilisateur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer stabilisateur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

lacherGobelet(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Lacher Gobelet -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

monterAscenseur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

monterMoyenAscenseur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter moyen ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

monterUnPeuAscenseur(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter un peu ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirBloqueurGrand(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir bloqueur grand -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirBloqueurMoyen(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir bloqueur moyen -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirStabilisateurGrand(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir stabilisateur grand -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirStabilisateurMoyen(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir stabilisateur moyen -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

prendreGobelet(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Prendre Gobelet -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

rangerClap(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ranger clap -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

sortirClap(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sortir clap -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_pr_others.Others.html b/doc/clients_pr_others.Others.html deleted file mode 100644 index 3299519..0000000 --- a/doc/clients_pr_others.Others.html +++ /dev/null @@ -1,3915 +0,0 @@ - - - - - Others - Documentation - - - - - - - - - - - - - - - - -
- -

Others

- - - - - - - -
- -
- -

- Others -

- - -
- -
-
- - - - - -

new Others(sp, sendStatus, fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Others Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -Object - - - - Server port
sendStatus - - -Object - - - -
fifo - - -clients/shared/fifo.Fifo - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

fifo :clients/shared/fifo.Fifo

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
- - - - - - - - - -

ready :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

sendStatus :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

sp :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

descendreAscenseur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Descendre ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

descendreMoyenAscenseur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Descendre un peu ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

descendreUnPeuAscenseur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Descendre un peu ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

fermerBloqueur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer bloqueur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

fermerStabilisateur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fermer stabilisateur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

lacherGobelet(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Lacher gobelet -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

monterAscenseur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

monterMoyenAscenseur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter moyen ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

monterUnPeuAscenseur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Monter un peu ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirBloqueurGrand(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir stabilisateur grand -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirBloqueurMoyen(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir bloqueur moyen -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirStabilisateurGrand(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir stabilisateur grand -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

ouvrirStabilisateurMoyen(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ouvrir stabilisateur moyen -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

parseCommand(data)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse command -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
data - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

prendreGobelet(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Prendre gobelet -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

rangerClap(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ranger Clap -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

relacherAscenseur(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Relacher ascenseur -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

sendCommand(callbackopt, cmd, args, callback_delay)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send command -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - <optional>
- - - - - -
cmd - - -string - - - - - - - - - -
args - - -string - - - - - - - - - -
callback_delay - - -int - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -

sortirClap(callback, timeopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sortir Clap -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
time - - -int - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_pr_others.class.js.html b/doc/clients_pr_others.class.js.html deleted file mode 100644 index 88f067e..0000000 --- a/doc/clients_pr_others.class.js.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - - clients/pr/others.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/others.class.js

- - - - - - - -
-
-
/**
- * Others module
- * 
- * @module clients/pr/others
- * @see {@link clients/pr/others.Others}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('Others');
-
-	/**
-	 * Others Constructor
-	 * 
-	 * @exports clients/pr/others.Others
-	 * @constructor
-	 * @param {Object} sp Server port
-	 * @param {Object} sendStatus
-	 * @param {clients/shared/fifo.Fifo}
-	 */
-	function Others(sp, sendStatus, fifo) {
-		/** @type {Object} */
-		this.sp = sp;
-		// this.client = client;
-		/** @type {boolean} */
-		this.ready = true;
-			logger.debug(sendStatus);
-		/** @type {Object} */
-		this.sendStatus = sendStatus;
-		/** @type {clients/shared/fifo.Fifo} */
-		this.fifo = fifo;
-
-		this.sp.on("data", function(data){
-			if(this.ready === false){
-				this.ready = true;
-				this.sendStatus();
-			}
-			this.parseCommand(data.toString());
-		}.bind(this));
-		this.sp.on("error", function(data){
-			logger.debug(data.toString());
-		});
-		this.sp.on("close", function(){
-			this.ready = false;
-			this.sendStatus();
-			logger.error("Serial port close");
-		}.bind(this));
-	}
-
-	/**
-	 * Parse command
-	 * 
-	 * @param {string} data
-	 */
-	Others.prototype.parseCommand = function(data) {
-		if(this.order_sent == data) {
-			this.order_sent = '';
-			setTimeout(function() {
-				this.callback();
-				this.fifo.orderFinished();
-			}.bind(this), this.callback_delay);
-		} else {
-			logger.warn("Arduino others unknown: "+data+" (order_sent : "+this.order_sent+")");
-		}
-	};
-
-	/**
-	 * Send command
-	 * 
-	 * @param {Object} [callback]
-	 * @param {string} cmd
-	 * @param {string} args
-	 * @param {int} callback_delay
-	 */
-	Others.prototype.sendCommand = function(callback, cmd, args, callback_delay){
-		if(callback === undefined) {
-			callback = function(){};
-		}
-
-		this.fifo.newOrder(function() {
-			this.callback = callback;
-			this.callback_delay = callback_delay;
-			this.order_sent = cmd;
-
-			//logger.debug([cmd].concat(args).join(";"));
-			this.sp.write([cmd].concat(args).join(";")+"\n");
-		}.bind(this), 'sendCommandOther('+cmd+':'+args+')');
-	};
-
-	/**
-	 * Fermer stabilisateur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.fermerStabilisateur = function(callback, time) {
-		if (time === undefined) {
-			time = 100;
-		}
-		this.sendCommand(callback, 'H', [100, 23], time);
-	};
-
-	/**
-	 * Ouvrir stabilisateur moyen
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.ouvrirStabilisateurMoyen = function(callback, time) {
-		if (time === undefined) {
-			time = 100;
-		}
-		this.sendCommand(callback, 'H', [90, 30], time);
-	};
-
-	/**
-	 * Ouvrir stabilisateur grand
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.ouvrirStabilisateurGrand = function(callback, time) {
-		if (time === undefined) {
-			time = 400;
-		}
-		this.sendCommand(callback, 'H', [40, 80], time);
-	};
-
-	/**
-	 * Fermer bloqueur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.fermerBloqueur = function(callback, time) {
-		if (time === undefined) {
-			time = 200;
-		}
-		this.sendCommand(callback, 'M', [32, 68], time);
-	};
-
-	/**
-	 * Ouvrir bloqueur moyen
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.ouvrirBloqueurMoyen = function(callback, time) {
-		if (time === undefined) {
-			time = 200;
-		}
-		this.sendCommand(callback, 'M', [66, 29], time);
-	};
-
-	/**
-	 * Ouvrir stabilisateur grand
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.ouvrirBloqueurGrand = function(callback, time) {
-		if (time === undefined) {
-			time = 400;
-		}
-		this.sendCommand(callback, 'M', [106, 1], time);
-	};
-
-	/**
-	 * Prendre gobelet
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.prendreGobelet = function(callback, time) {
-		if (time === undefined) {
-			time = 200;
-		}
-		this.sendCommand(callback, 'G', [115], time);
-	};
-
-	/**
-	 * Lacher gobelet
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.lacherGobelet = function(callback, time) {
-		if (time === undefined) {
-			time = 200;
-		}
-		this.sendCommand(callback, 'G', [50], time);
-	};
-
-	/**
-	 * Sortir Clap
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.sortirClap = function(callback, time) {
-		if (time === undefined) {
-			time = 200;
-		}
-		this.sendCommand(callback, 'C', [130], time);
-	};
-
-	/**
-	 * Ranger Clap
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.rangerClap = function(callback, time) {
-		if (time === undefined) {
-			time = 100;
-		}
-		this.sendCommand(callback, 'C', [40], time);
-	};
-
-	/**
-	 * Monter ascenseur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.monterAscenseur = function(callback, time) {
-		if (time === undefined) {
-			time = 0;
-		}
-		this.sendCommand(callback, 'S', [-250], time);
-	};
-
-	/**
-	 * Monter un peu ascenseur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.monterUnPeuAscenseur = function(callback, time) {
-		if (time === undefined) {
-			time = 0;
-		}
-		this.sendCommand(callback, 'S', [-30], time);
-	};
-
-	/**
-	 * Descendre un peu ascenseur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.descendreUnPeuAscenseur = function(callback, time) {
-		if (time === undefined) {
-			time = 0;
-		}
-		this.sendCommand(callback, 'S', [30], time);
-	};
-
-	/**
-	 * Monter moyen ascenseur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.monterMoyenAscenseur = function(callback, time) {
-		if (time === undefined) {
-			time = 0;
-		}
-		this.sendCommand(callback, 'S', [-60], time);
-	};
-
-	/**
-	 * Descendre un peu ascenseur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.descendreMoyenAscenseur = function(callback, time) {
-		if (time === undefined) {
-			time = 0;
-		}
-		this.sendCommand(callback, 'S', [60], time);
-	};
-
-	/**
-	 * Relacher ascenseur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.relacherAscenseur = function(callback, time) {
-		if (time === undefined) {
-			time = 0;
-		}
-		this.sendCommand(callback, 'S', [0], time);
-	};
-
-	/**
-	 * Descendre ascenseur
-	 * 
-	 * @param {Object} callback
-	 * @param {int} [time]
-	 */
-	Others.prototype.descendreAscenseur = function(callback, time) {
-		if (time === undefined) {
-			time = 0;
-		}
-		this.sendCommand(function() {
-		this.relacherAscenseur(callback);
-		}.bind(this), 'S', [250], time);
-	};
-
-	return Others;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_pr_others.simu.class.js.html b/doc/clients_pr_others.simu.class.js.html deleted file mode 100644 index a779337..0000000 --- a/doc/clients_pr_others.simu.class.js.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - clients/pr/others.simu.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/others.simu.class.js

- - - - - - - -
-
-
/**
- * Others Simulator module
- * 
- * @module clients/pr/others-simu
- * @see {@link clients/pr/others-simu.Others}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('pr.others');
-
-	/**
-	 * Others constructor
-	 * 
-	 * @exports clients/pr/others-simu.Others
-	 * @constructor
-	 * @param {clients/shared/fifo.Fifo} fifo
-	 */
-	function Others(fifo) {
-		/** @type {clients/shared/fifo.Fifo} */
-		this.fifo = fifo;
-	}
-
-	/**
-	 * Disconnects (nothing ?)
-	 */
-	Others.prototype.disconnect = function(x) {
-
-	};
-
-	/**
-	 * Call callback
-	 * 
-	 * @param {Object} [callback]
-	 * @param {int} ms
-	 */
-	Others.prototype.callCallback = function(callback, ms) {
-		if(callback === undefined) {
-			callback = function(){};
-		}
-		this.fifo.newOrder(function() {
-			setTimeout(function() {
-				callback();
-				this.fifo.orderFinished();
-			}.bind(this), parseInt(ms/5));
-		}.bind(this));
-	};
-
-	/**
-	 * Fermer stabilisateur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.fermerStabilisateur = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Ouvrir stabilisateur moyen
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.ouvrirStabilisateurMoyen = function(callback) {
-		this.callCallback(callback, 200);
-	};
-	
-	/**
-	 * Ouvrir stabilisateur grand
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.ouvrirStabilisateurGrand = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Fermer bloqueur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.fermerBloqueur = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Ouvrir bloqueur moyen
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.ouvrirBloqueurMoyen = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Ouvrir bloqueur grand
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.ouvrirBloqueurGrand = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Sortir clap
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.sortirClap = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Ranger clap
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.rangerClap = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Prendre Gobelet
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.prendreGobelet = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Lacher Gobelet
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.lacherGobelet = function(callback) {
-		this.callCallback(callback, 200);
-	};
-
-	/**
-	 * Monter ascenseur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.monterAscenseur = function(callback) {
-		this.callCallback(callback, 1000);
-	};
-
-	/**
-	 * Monter un peu ascenseur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.monterUnPeuAscenseur = function(callback) {
-		this.callCallback(callback, 300);
-	};
-
-	/**
-	 * Descendre un peu ascenseur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.descendreUnPeuAscenseur = function(callback) {
-		this.callCallback(callback, 300);
-	};
-
-	/**
-	 * Monter moyen ascenseur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.monterMoyenAscenseur = function(callback) {
-		this.callCallback(callback, 500);
-	};
-
-	/**
-	 * Descendre moyen ascenseur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.descendreMoyenAscenseur = function(callback) {
-		this.callCallback(callback, 500);
-	};
-
-	/**
-	 * Descendre ascenseur
-	 * 
-	 * @param {Object} callback
-	 */
-	Others.prototype.descendreAscenseur = function(callback) {
-		this.callCallback(callback, 1000);
-	};
-
-	
-	return Others;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_shared_asserv-simu.Asserv.html b/doc/clients_shared_asserv-simu.Asserv.html deleted file mode 100644 index aeee682..0000000 --- a/doc/clients_shared_asserv-simu.Asserv.html +++ /dev/null @@ -1,3919 +0,0 @@ - - - - - Asserv - Documentation - - - - - - - - - - - - - - - - -
- -

Asserv

- - - - - - - -
- -
- -

- Asserv -

- - -
- -
-
- - - - - -

new Asserv(client, who, fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Asserv Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
client - - -Object - - - -
who - - -Object - - - -
fifo - - -clients/shared/asserv.Asserv - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

client :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

fifo :clients/shared/asserv.Asserv

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
- - - - - - - - - -

pos :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

vitesse :int

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -int - - -
  • -
- - - - - - - - -

who :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

avancerPlot(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Avancer plot -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

calageX(x, a, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Calage X -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
a - - -int - - - - Angle
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

calageY(y, a, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Calage Y -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
y - - -int - - - -
a - - -int - - - - Angle
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

clean()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Clean -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

getPos(pos)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Gets Position -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

goa(a, callback, no_fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Simu Go Angle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
a - - -int - - - - Angle
callback - - -Object - - - -
no_fifo - - -boolean - - - -
- - - - - - - - - - - - - - - - - - - - - -

goxy(x, y, sens, callback, no_fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Go X Y -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
sens - - -string - - - -
callback - - -Object - - - -
no_fifo - - -boolean - - - -
- - - - - - - - - - - - - - - - - - - - - -

newOrder(callback, ms, no_fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- New Order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
ms - - -int - - - -
no_fifo - - -boolean - - - -
- - - - - - - - - - - - - - - - - - - - - -

Pos(pos)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Position ? -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

pwm(left, right, ms, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Pulse Width Modulation -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
left - - -string - - - -
right - - -string - - - -
ms - - -int - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

sendPos()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sends Position -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

setA(a)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set Angle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
a - - -int - - - - Angle
- - - - - - - - - - - - - - - - - - - - - -

setPid(p, i, d, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set P I D -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
p - - -int - - - -
i - - -int - - - -
d - - -int - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

setPos(pos, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sets Position -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

setVitesse(v, r, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set vitesse -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
v - - -int - - - - Speed
r - - -int - - - - rotation
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

simu_goa(a)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Simu Go Angle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
a - - -int - - - - Angle
- - - - - - - - - - - - - - - - - - - - - -

simu_goxy(x, y)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Simu Go X Y -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

simu_pwm(x, y, a, dt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Simu Pulse Width Modulation -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
a - - -int - - - - Angle
dt - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

simu_speed(vit, x, y, a, dt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Simu Speed -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
vit - - -int - - - - Speed
x - - -int - - - -
y - - -int - - - -
a - - -int - - - - Angle
dt - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

speed(l, a, ms, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Speed ? -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
l - - -int - - - -
a - - -int - - - - Angle
ms - - -int - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_shared_asserv.Asserv.html b/doc/clients_shared_asserv.Asserv.html deleted file mode 100644 index 0dc441c..0000000 --- a/doc/clients_shared_asserv.Asserv.html +++ /dev/null @@ -1,4375 +0,0 @@ - - - - - Asserv - Documentation - - - - - - - - - - - - - - - - -
- -

Asserv

- - - - - - - -
- -
- -

- Asserv -

- - -
- -
-
- - - - - -

new Asserv(sp, client, who, sendStatus, fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Asserv Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
sp - - -Object - - - -
client - - -Object - - - -
who - - -Object - - - -
sendStatus - - -Object - - - -
fifo - - -clients/shared/asserv.Asserv - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

client :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

color :string

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -string - - -
  • -
- - - - - - - - -

currentId :int

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -int - - -
  • -
- - - - - - - - -

fifo :clients/shared/asserv.Asserv

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
- - - - - - - - - -

pos :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

ready :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - -

sendStatus :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

sp :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

who :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

calageX(x, a, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Calage X -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
a - - -int - - - - Angle
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

calageY(y, a, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Calage Y -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
y - - -int - - - -
a - - -int - - - - Angle
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

clean(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Clean -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

convertColorA(a)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Convert color Angle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
a - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

convertColorX(x)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Convert color x -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

convertColorY(y)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Convert color y -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
y - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

getPos(pos)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Gets Potition -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

goa(a, callback, no_fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Go Angle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
a - - -int - - - -
callback - - -Object - - - -
no_fifo - - -boolean - - - -
- - - - - - - - - - - - - - - - - - - - - -

goxy(x, y, sens, callback, no_fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Go X Y -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
sens - - -string - - - -
callback - - -Object - - - -
no_fifo - - -boolean - - - -
- - - - - - - - - - - - - - - - - - - - - -

parseCommand(data)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse Command -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
data - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

Pos(pos)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Position ? -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

pwm(left, right, ms, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Pulse Width Modulation -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
left - - -int - - - -
right - - -int - - - -
ms - - -int - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

sendCommand(cmd, args, wait_for_id, callbackopt, no_fifo)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sends Command -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
cmd - - -string - - - - - - - - - -
args - - -string - - - - - - - - - -
wait_for_id - - -int - - - - - - - - - -
callback - - -Object - - - - - - <optional>
- - - - - -
no_fifo - - -boolean - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -

sendPos()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sends Position -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

setA(a)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set Angle -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
a - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

setAcc(acc, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set Acceleration -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
acc - - -int - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

setPid(p, i, d, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set P I D -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
p - - -float - - - -
i - - -float - - - -
d - - -float - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

setPos(pos, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Sets Position -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

setPosCalage(pos, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set position calage -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

setVitesse(v, r, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Set Vitesse -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
v - - -int - - - - Speed
r - - -float - - - - Rotation
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

speed(l, a, ms, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Speed ? -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
l - - -int - - - -
a - - -int - - - - Angle
ms - - -int - - - -
callback - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_shared_asserv.class.js.html b/doc/clients_shared_asserv.class.js.html deleted file mode 100644 index d898a9e..0000000 --- a/doc/clients_shared_asserv.class.js.html +++ /dev/null @@ -1,771 +0,0 @@ - - - - - clients/shared/asserv.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/asserv.class.js

- - - - - - - -
-
-
/**
- * Asserv module
- * 
- * @module clients/shared/asserv
- * @requires module:clients/shared/defineParser
- * @see {@link clients/shared/asserv.Asserv}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('asserv');
-	var COMMANDS = require('./defineParser.js')('./arduino/asserv/protocol.h');
-	var DETECT_SERIAL_TIMEOUT = 100; //ms, -1 to disable
-
-	// function Asserv(sp, client) {
-	// 	this.client = client;
-	// 	this.getPos();
-	// 	this.sp = sp;
-	// 	this.pos = {};
-	// 	this.sentCommands = {};
-	// 	this.currentId = 0;
-	// }
-
-	/**
-	 * Asserv Constructor
-	 * 
-	 * @exports clients/shared/asserv.Asserv
-	 * @constructor
-	 * @param {Object} sp
-	 * @param {Object} client
-	 * @param {Object} who
-	 * @param {Object} sendStatus
-	 * @param {clients/shared/asserv.Asserv} fifo
-	 */
-	function Asserv(sp, client, who, sendStatus, fifo) {
-		/** @type {boolean} */
-		this.ready = true;
-		/** @type {Object} */
-		this.sendStatus = sendStatus;
-		/** @type {Object} */
-		this.sp = sp;
-		/** @type {Object} */
-		this.client = client;
-		/** @type {Object} */
-		this.pos = {};
-		/** @type {Object} */
-		this.who = who;
-		/** @type {int} */
-		this.currentId = 0;
-		/** @type {string} */
-		this.color = "yellow";
-		/** @type {clients/shared/asserv.Asserv} */
-		this.fifo = fifo;
-
-		this.sp.on("data", function(data){
-			if(this.ready === false){
-				this.ready = true;
-				this.sendStatus();
-			}
-			this.parseCommand(data.toString());
-		}.bind(this));
-		this.sp.on("error", function(data){
-			this.ready = false;
-			this.sendStatus();
-			logger.debug("error", data.toString());
-		}.bind(this));
-		this.sp.on("close", function(data){
-			this.ready = false;
-			this.sendStatus();
-			logger.error("Serial port close");
-		}.bind(this));
-
-		setTimeout(function() {
-			this.getPos();
-		}.bind(this), 2000);
-	}
-	/**
-	 * Convert color x
-	 * 
-	 * @param {int} x
-	 */
-	Asserv.prototype.convertColorX = function(x) {
-		if(this.color == "yellow") {
-			return x;
-		} else {
-			return 3000-x;
-		}
-	}
-	/**
-	 * Convert color y
-	 * 
-	 * @param {int} y
-	 */
-	Asserv.prototype.convertColorY = function(y) {
-		if(this.color == "yellow") {
-			return y;
-		} else {
-			return y;
-		}
-	}
-	/**
-	 * Convert color Angle
-	 * 
-	 * @param {int} a
-	 */
-	Asserv.prototype.convertColorA = function(a) {
-		if(this.color == "yellow") {
-			return convertA(a);
-		} else {
-			return convertA(Math.PI - a);
-		}
-	}
-
-	/**
-	 * Convert Angle
-	 * 
-	 * @param {int} a
-	 */
-	function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); }
-	/**
-	 * Set Angle
-	 * 
-	 * @param {int} a
-	 */
-	Asserv.prototype.setA = function(a) {
-		// logger.debug(a, convertA(a));
-		this.pos.a = convertA(a);
-	}
-	/**
-	 * Position ?
-	 * 
-	 * @param {Object} pos
-	 */
-	Asserv.prototype.Pos = function(pos) {
-		this.pos.x = pos.x;
-		this.pos.y = pos.y;
-		this.setA(pos.a);
-	}
-	/**
-	 * Sets Position
-	 * 
-	 * @param {Object} pos
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setPos = function(pos, callback) {
-		logger.debug(pos);
-		if(pos.color !== undefined)
-			this.color = pos.color;
-		this.sendCommand(COMMANDS.SET_POS, [
-			parseInt(this.convertColorX(pos.x)),
-			parseInt(this.convertColorY(pos.y)),
-			myWriteFloat(this.convertColorA(pos.a))
-		], false, callback);
-	}
-	/**
-	 * Gets Potition
-	 * 
-	 * @param {Object} pos
-	 */
-	Asserv.prototype.getPos = function(pos) {
-		this.client.send('ia', this.who+'.getpos');
-	}
-	/**
-	 * Sends Position
-	 */
-	Asserv.prototype.sendPos = function() {
-		this.client.send('ia', this.who+'.pos', this.pos);
-	}
-
-	/**
-	 * Set position calage
-	 * 
-	 * @param {Object} pos
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setPosCalage = function(pos, callback) {
-		this.sendCommand(COMMANDS.SET_POS, [
-			parseInt(this.convertColorX(pos.x)),
-			parseInt(this.convertColorY(pos.y)),
-			myWriteFloat(this.convertColorA(pos.a))
-		], false, function() {
-			callback();
-			this.fifo.orderFinished();
-		}.bind(this), true);
-	}
-
-	/**
-	 * Calage X
-	 * 
-	 * @param {int} x
-	 * @param {int} a Angle
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.calageX = function(x, a, callback) {
-		if(callback === undefined)
-			callback = function(){};
-		this.fifo.newOrder(function() {
-			this.setPosCalage({x: x, y: this.pos.y, a: a}, callback);
-		}.bind(this), 'calageX');
-
-	}
-	/**
-	 * Calage Y
-	 * 
-	 * @param {int} y
-	 * @param {int} a Angle
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.calageY = function(y, a, callback) {
-		if(callback === undefined)
-			callback = function(){};
-		this.fifo.newOrder(function() {
-			this.setPosCalage({x: this.pos.x, y: y, a: a}, callback, true);
-		}.bind(this), 'calageY');
-	}
-
-	// For float
-	/**
-	 * My write float
-	 * 
-	 * @param {float} f
-	 */
-	function myWriteFloat(f){ return Math.round(f*COMMANDS.FLOAT_PRECISION); }
-	/**
-	 * My Parse float
-	 * 
-	 * @param {float} f
-	 */
-	function myParseFloat(f){ return parseInt(f)/COMMANDS.FLOAT_PRECISION;  }
-
-
-	/**
-	 * Parse Command
-	 * 
-	 * @param {string} data
-	 */
-	Asserv.prototype.parseCommand = function(data){
-		// logger.debug(data);
-		var datas = data.split(';');
-		var cmd = datas.shift();//, id = datas.shift();
-		if(cmd == COMMANDS.AUTO_SEND && datas.length >= 4) { // periodic position update
-			var lastFinishedId = parseInt(datas.shift()); // TODO
-			this.Pos({
-				x: this.convertColorX(parseInt(datas.shift())),
-				y: this.convertColorY(parseInt(datas.shift())),
-				a: this.convertColorA(myParseFloat(datas.shift()))
-			});
-
-			
-			this.sendPos();
-
-			// logger.debug(lastFinishedId);
-			if(this.currentId != lastFinishedId) {
-				// logger.fatal('finish id', lastFinishedId);
-				this.currentId = lastFinishedId;
-				var use_fifo = this.use_fifo;
-				this.use_fifo = true;
-				this.callback();
-				if(use_fifo)
-					this.fifo.orderFinished();
-			}
-		} else if(cmd == this.order_sent) {
-			this.order_sent = '';
-			// logger.debug('finish', datas.shift());
-			if(!this.wait_for_id) {
-				var use_fifo = this.use_fifo;
-				this.use_fifo = true;
-				this.callback();
-				if(use_fifo)
-					this.fifo.orderFinished();
-			}
-		} else if (cmd == COMMANDS.JACK) {
-			logger.info("JACK !");
-			this.client.send("ia", "ia.jack");
-		} else {
-			// logger.warn(datas);
-			logger.warn("Command return from Arduino to unknown cmd="+cmd);
-		}
-	}
-	/**
-	 * Sends Command
-	 * 
-	 * @param {string} cmd
-	 * @param {string} args
-	 * @param {int} wait_for_id
-	 * @param {Object} [callback]
-	 * @param {boolean} no_fifo
-	 */
-	Asserv.prototype.sendCommand = function(cmd, args, wait_for_id, callback, no_fifo){
-		function nextOrder() {
-			if(callback === undefined)
-				callback = function(){};
-			this.callback = callback;
-			args = args || [];
-			this.order_sent = cmd;
-			this.wait_for_id = wait_for_id;
-			logger.debug([cmd,this.currentId+1].concat(args).join(";")+"\n");
-			this.sp.write([cmd,this.currentId+1].concat(args).join(";")+"\n");
-		}
-
-		this.use_fifo = !no_fifo;
-
-		if(this.use_fifo) {
-			this.fifo.newOrder(nextOrder.bind(this), 'sendCommandAsserv('+cmd+':'+args+')');
-		} else {
-			nextOrder.call(this);
-		}
-	}
-
-	/**
-	 * Set Vitesse
-	 * 
-	 * @param {int} v Speed
-	 * @param {float} r Rotation
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setVitesse = function(v, r, callback) {
-		// logger.debug(myWriteFloat(r));
-		this.sendCommand(COMMANDS.SPDMAX, [
-			parseInt(v),
-			myWriteFloat(r)
-		], false, callback);
-	};
-
-	/**
-	 * Speed ?
-	 * 
-	 * @param {int} l
-	 * @param {int} a Angle
-	 * @param {int} ms
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.speed = function(l, a, ms, callback) {
-		// logger.debug(myWriteFloat(r));
-		this.sendCommand(COMMANDS.SPD, [
-			parseInt(l),
-			parseInt(a),
-			parseInt(ms)
-		], true, callback);
-	};
-
-	/**
-	 * Set Acceleration
-	 * 
-	 * @param {int} acc
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setAcc = function(acc,callback) {
-		// logger.debug(myWriteFloat(r));
-		this.sendCommand(COMMANDS.ACCMAX, [
-			parseInt(acc)
-		], false, callback);
-	};
-
-	/**
-	 * Clean
-	 * 
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.clean = function(callback){
-		this.sendCommand(COMMANDS.CLEANG, false, callback);
-	};
-
-	/**
-	 * Pulse Width Modulation
-	 * 
-	 * @param {int} left
-	 * @param {int} right
-	 * @param {int} ms
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.pwm = function(left, right, ms, callback) {
-		this.sendCommand(COMMANDS.PWM, [
-			parseInt(left),
-			parseInt(right),
-			parseInt(ms)
-		], true, callback);
-		
-	};
-
-	/**
-	 * Go X Y
-	 * 
-	 * @param {int} x
-	 * @param {int} y
-	 * @param {string} sens
-	 * @param {Object} callback
-	 * @param {boolean} no_fifo
-	 */
-	Asserv.prototype.goxy = function(x, y, sens, callback, no_fifo){
-		if(sens == "avant") sens = 1;
-		else if(sens == "arriere") sens = -1;
-		else sens = 0;
-		
-		this.sendCommand(COMMANDS.GOTO, [
-			parseInt(this.convertColorX(x)),
-			parseInt(this.convertColorY(y)),
-			sens
-		], true, callback, no_fifo);
-	};
-	/**
-	 * Go Angle
-	 * 
-	 * @param {int} a
-	 * @param {Object} callback
-	 * @param {boolean} no_fifo
-	 */
-	Asserv.prototype.goa = function(a, callback, no_fifo){
-		// this.clean();
-		this.sendCommand(COMMANDS.ROT, [
-			myWriteFloat(this.convertColorA(a))
-		], true, callback, no_fifo);
-	};
-
-	/**
-	 * Set P I D
-	 * @param {float} p
-	 * @param {float} i
-	 * @param {float} d
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setPid = function(p, i, d, callback){
-		// this.clean();
-		this.sendCommand(COMMANDS.PIDALL, [
-			myWriteFloat(p),
-			myWriteFloat(i),
-			myWriteFloat(d)
-		],false, callback);
-	};
-
-	// Asserv.prototype.gotoPath = function(callback, path){
-	// 	this.clean();
-	// 	if(instanceof path !=== "Array") path = path.path; // not sure about Path class right now
-	// 	path.forEach(function(item));
-	// };
-
-	return Asserv;
-})();
-
-/*
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('asserv');
-	var COMMANDS = require('./defineParser.js')('./arduino/asserv/protocol.h');
-	var DETECT_SERIAL_TIMEOUT = 100; //ms, -1 to disable
-
-	// function Asserv(sp, client) {
-	// 	this.client = client;
-	// 	this.getPos();
-	// 	this.sp = sp;
-	// 	this.pos = {};
-	// 	this.sentCommands = {};
-	// 	this.currentId = 0;
-	// }
-
-	function Asserv(sp, client, who, sendStatus, fifo) {
-		this.ready = true;
-		this.sendStatus = sendStatus;
-		this.sp = sp;
-		this.client = client;
-		this.pos = {};
-		this.who = who;
-		this.currentId = 0;
-		this.color = "yellow";
-		this.fifo = fifo;
-
-		this.data_sent = {};
-
-		this.sp.on("data", function(data){
-			if(this.ready === false){
-				this.ready = true;
-				this.sendStatus();
-			}
-			this.parseCommand(data.toString());
-		}.bind(this));
-		this.sp.on("error", function(data){
-			this.ready = false;
-			this.sendStatus();
-			logger.debug("error", data.toString());
-		}.bind(this));
-		this.sp.on("close", function(data){
-			this.ready = false;
-			this.sendStatus();
-			logger.debug(data.toString());
-		}.bind(this));
-
-		setTimeout(function() {
-			this.getPos();
-		}.bind(this), 2000);
-	}
-	Asserv.prototype.convertColorX = function(x) {
-		if(this.color == "yellow") {
-			return x;
-		} else {
-			return 3000-x;
-		}
-	}
-	Asserv.prototype.convertColorY = function(y) {
-		if(this.color == "yellow") {
-			return y;
-		} else {
-			return y;
-		}
-	}
-	Asserv.prototype.convertColorA = function(a) {
-		if(this.color == "yellow") {
-			return convertA(a);
-		} else {
-			return convertA(Math.PI - a);
-		}
-	}
-
-	function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); }
-	Asserv.prototype.setA = function(a) {
-		// logger.debug(a, convertA(a));
-		this.pos.a = convertA(a);
-	}
-	Asserv.prototype.Pos = function(pos) {
-		this.pos.x = pos.x;
-		this.pos.y = pos.y;
-		this.setA(pos.a);
-	}
-	Asserv.prototype.setPos = function(pos, callback) {
-		if(pos.color !== undefined)
-			this.color = pos.color;
-		this.sendCommand(COMMANDS.SET_POS, [
-			parseInt(this.convertColorX(pos.x)),
-			parseInt(this.convertColorY(pos.y)),
-			myWriteFloat(this.convertColorA(pos.a))
-		], false, callback);
-	}
-	Asserv.prototype.getPos = function(pos) {
-		this.client.send('ia', this.who+'.getpos');
-	}
-	Asserv.prototype.sendPos = function() {
-		this.client.send('ia', this.who+'.pos', this.pos);
-	}
-
-	Asserv.prototype.setPosCalage = function(pos, callback) {
-		this.sendCommand(COMMANDS.SET_POS, [
-			parseInt(this.convertColorX(pos.x)),
-			parseInt(this.convertColorY(pos.y)),
-			myWriteFloat(this.convertColorA(pos.a))
-		], false, function() {
-			callback();
-			this.fifo.orderFinished();
-		}.bind(this), true);
-	}
-
-	Asserv.prototype.calageX = function(x, a, callback) {
-		if(callback === undefined)
-			callback = function(){};
-		this.fifo.newOrder(function() {
-			this.setPosCalage({x: x, y: this.pos.y, a: a}, callback);
-		}.bind(this), 'calageX');
-
-	}
-	Asserv.prototype.calageY = function(y, a, callback) {
-		if(callback === undefined)
-			callback = function(){};
-		this.fifo.newOrder(function() {
-			this.setPosCalage({x: this.pos.x, y: y, a: a}, callback, true);
-		}.bind(this), 'calageY');
-	}
-
-	// For float
-	function myWriteFloat(f){ return Math.round(f*COMMANDS.FLOAT_PRECISION); }
-	function myParseFloat(f){ return parseInt(f)/COMMANDS.FLOAT_PRECISION;  }
-
-
-	Asserv.prototype.parseCommand = function(data){
-		// logger.debug(data);
-		var datas = data.split(';');
-		var cmd = datas.shift();//, id = datas.shift();
-		var id = parseInt(datas.shift());
-		if(cmd == COMMANDS.AUTO_SEND && datas.length >= 4) { // periodic position update
-			this.Pos({
-				x: this.convertColorX(parseInt(datas.shift())),
-				y: this.convertColorY(parseInt(datas.shift())),
-				a: this.convertColorA(myParseFloat(datas.shift()))
-			});
-
-			
-			this.sendPos();
-
-			// logger.debug(lastFinishedId);
-			if(this.data_sent[id] !== undefined) {
-				// logger.fatal('finish id', lastFinishedId);
-				// this.currentId = lastFinishedId;
-				this.data_sent[id].callback();
-				if(this.data_sent[id].use_fifo)
-					this.fifo.orderFinished();
-				// else
-				// 	this.use_fifo = this.old_use_fifo;
-				delete this.data_sent[id];
-			}
-		} else if(this.data_sent[id] !== undefined && this.data_sent[id].cmd == cmd) {
-			// this.order_sent = '';
-			// logger.debug('finish', datas.shift());
-			if(!this.data_sent[id].wait_for_id) {
-				this.data_sent[id].callback();
-				if(this.data_sent[id].use_fifo)
-					this.fifo.orderFinished();
-				delete this.data_sent[id];
-				// else
-				// 	this.use_fifo = this.old_use_fifo;
-			}
-		} else if (cmd == COMMANDS.JACK) {
-			logger.info("JACK !");
-			this.client.send("ia", "ia.jack");
-		} else {
-			// logger.warn(datas);
-			logger.warn("Command return from Arduino to unknown cmd="+cmd);
-		}
-	}
-	Asserv.prototype.sendCommand = function(cmd, args, wait_for_id, callback, no_fifo){
-		if(callback === undefined)
-			callback = function(){};
-
-		this.currentId += 1;
-		var id = this.currentId.toString();
-		args = args || [];
-
-		function nextOrder() {
-			this.sp.write([cmd,id].concat(args).join(";")+"\n");
-		}
-		this.data_sent[id] = {
-			callback: callback,
-			cmd: cmd,
-			wait_for_id: wait_for_id,
-			use_fifo: !no_fifo
-		};
-
-		if(!no_fifo) {
-			this.fifo.newOrder(nextOrder.bind(this), 'sendCommandAsserv('+cmd+':'+args+')');
-		} else {
-			nextOrder.call(this);
-		}
-	}
-
-	Asserv.prototype.setVitesse = function(v, r, callback) {
-		// logger.debug(myWriteFloat(r));
-		this.sendCommand(COMMANDS.SPDMAX, [
-			parseInt(v),
-			myWriteFloat(r)
-		], false, callback);
-	};
-
-	Asserv.prototype.speed = function(l, a, ms, callback) {
-		// logger.debug(myWriteFloat(r));
-		this.sendCommand(COMMANDS.SPD, [
-			parseInt(l),
-			parseInt(a),
-			parseInt(ms)
-		], true, callback);
-	};
-
-	Asserv.prototype.setAcc = function(acc,callback) {
-		// logger.debug(myWriteFloat(r));
-		this.sendCommand(COMMANDS.ACCMAX, [
-			parseInt(acc)
-		], false, callback);
-	};
-
-	Asserv.prototype.clean = function(callback){
-		this.sendCommand(COMMANDS.CLEANG, false, callback);
-	};
-
-	Asserv.prototype.pwm = function(left, right, ms, callback) {
-		this.sendCommand(COMMANDS.PWM, [
-			parseInt(left),
-			parseInt(right),
-			parseInt(ms)
-		], true, callback);
-		
-	};
-
-	Asserv.prototype.goxy = function(x, y, sens, callback, no_fifo){
-		if(sens == "avant") sens = 1;
-		else if(sens == "arriere") sens = -1;
-		else sens = 0;
-		
-		this.sendCommand(COMMANDS.GOTO, [
-			parseInt(this.convertColorX(x)),
-			parseInt(this.convertColorY(y)),
-			sens
-		], true, callback, no_fifo);
-	};
-	Asserv.prototype.goa = function(a, callback, no_fifo){
-		// this.clean();
-		this.sendCommand(COMMANDS.ROT, [
-			myWriteFloat(this.convertColorA(a))
-		], true, callback, no_fifo);
-	};
-
-	Asserv.prototype.setPid = function(p, i, d, callback){
-		// this.clean();
-		this.sendCommand(COMMANDS.PIDALL, [
-			myWriteFloat(p),
-			myWriteFloat(i),
-			myWriteFloat(d)
-		],false, callback);
-	};
-
-	// Asserv.prototype.gotoPath = function(callback, path){
-	// 	this.clean();
-	// 	if(instanceof path !=== "Array") path = path.path; // not sure about Path class right now
-	// 	path.forEach(function(item));
-	// };
-
-	return Asserv;
-})();
-
-*/
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_shared_asserv.simu.class.js.html b/doc/clients_shared_asserv.simu.class.js.html deleted file mode 100644 index b18484a..0000000 --- a/doc/clients_shared_asserv.simu.class.js.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - clients/shared/asserv.simu.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/asserv.simu.class.js

- - - - - - - -
-
-
/**
- * Asserv Simulator module
- * 
- * @module clients/shared/asserv-simu
- * @see {@link clients/shared/asserv-simu.Asserv}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('asserv');
-
-	// For simu
-	var SIMU_FACTOR_VIT = 1;
-	var SIMU_FACTOR_A = 0.3; 	// Facteur
-	// var SIMU_PWM_REF = 255; 	// à une PWM de 80
-	function SIMU_DIST(pwm, dt, vitesse) { return (vitesse*SIMU_FACTOR_VIT)*dt; }
-	function SIMU_DIST_ROT(a) { return Math.abs(a)*100; } // Rayon aproximatif de 10cm
-	function SIMU_ROT_TIME(a, vitesse) { return SIMU_DIST_ROT(a)/(vitesse*SIMU_FACTOR_VIT*SIMU_FACTOR_A); }
-	var FPS = 30;
-
-	var timeouts = [];
-
-	/**
-	 * Asserv Constructor
-	 * 
-	 * @exports clients/shared/asserv-simu.Asserv
-	 * @constructor
-	 * @param {Object} client
-	 * @param {Object} who
-	 * @param {clients/shared/asserv.Asserv} fifo
-	 */
-	function Asserv(client, who, fifo) {
-		/** @type {Object} */
-		this.client = client;
-		/** @type {Object} */
-		this.who = who;
-		/** @type {Object} */
-		this.pos = {
-			x:0,y:0,a:0
-		};
-		/** @type {clients/shared/asserv.Asserv} */
-		this.fifo = fifo;
-		/** @type {int} */
-		this.vitesse = 800;
-		this.getPos();
-	}
-
-	/**
-	 * New Order
-	 * 
-	 * @param {Object} callback
-	 * @param {int} ms
-	 * @param {boolean} no_fifo
-	 */
-	Asserv.prototype.newOrder = function(callback, ms, no_fifo, delay_order_finished){
-		if(callback === undefined)
-			callback = function(){};
-		var use_fifo = !no_fifo;
-		if(ms === undefined) ms = 0;
-		if(delay_order_finished === undefined) delay_order_finished = 0;
-
-		function nextOrder() {
-			timeouts.push(setTimeout(function() {
-				callback();
-				timeouts.push(setTimeout(function() {
-					this.fifo.orderFinished();
-				}.bind(this), delay_order_finished));
-			}.bind(this), ms));
-		}
-
-		if(use_fifo) {
-			// logger.debug('use_fifo');
-			this.fifo.newOrder(nextOrder.bind(this));
-		} else {
-			// logger.debug('no_fifo');
-			timeouts.push(setTimeout(callback, ms));//.call(this));
-		}
-	}
-
-	/**
-	 * Convert Angle
-	 * 
-	 * @param {int} a Angle
-	 */
-	function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); }
-	/**
-	 * Set Angle
-	 * 
-	 * @param {int} a Angle
-	 */
-	Asserv.prototype.setA = function(a) {
-		this.pos.a = convertA(a);
-	}
-	/**
-	 * Position ?
-	 * 
-	 * @param {Object} pos
-	 */
-	Asserv.prototype.Pos = function(pos) {
-		this.pos.x = pos.x;
-		this.pos.y = pos.y;
-		this.setA(pos.a);
-	}
-	/**
-	 * Sets Position
-	 * 
-	 * @param {Object} pos
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setPos = function(pos, callback) {
-		this.Pos(pos);
-		this.sendPos();
-		if(callback !== undefined)
-			callback();
-	}
-	/**
-	 * Gets Position
-	 * 
-	 * @param {Object} pos
-	 */
-	Asserv.prototype.getPos = function(pos) {
-		this.client.send('ia', this.who+'.getpos');
-	}
-	/**
-	 * Sends Position
-	 */
-	Asserv.prototype.sendPos = function() {
-		this.client.send('ia', this.who+'.pos', this.pos);
-	}
-
-	/**
-	 * Clean
-	 */
-	Asserv.prototype.clean = function(){
-		logger.debug('cleaning %d timeouts', timeouts.length);
-		while(timeouts.length > 0) {
-			clearTimeout(timeouts.shift());
-		}
-	};
-	/**
-	 * Avancer plot
-	 * 
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.avancerPlot = function(callback) {
-		this.newOrder(callback, 1200);
-	}
-
-	/**
-	 * Set vitesse
-	 * 
-	 * @param {int} v Speed
-	 * @param {int} r rotation
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setVitesse = function(v, r, callback) {
-		this.vitesse = parseInt(v);
-		if(callback !== undefined)
-			callback();
-	};
-	/**
-	 * Calage X
-	 * 
-	 * @param {int} x
-	 * @param {int} a Angle
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.calageX = function(x, a, callback) {
-		this.setPos({x: x, y: this.pos.y, a: a}, callback);
-	}
-	/**
-	 * Calage Y
-	 * 
-	 * @param {int} y
-	 * @param {int} a Angle
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.calageY = function(y, a, callback) {
-		this.setPos({x: this.pos.x, y: y, a: a}, callback);
-	}
-
-	/**
-	 * Simu Speed
-	 * 
-	 * @param {int} vit Speed
-	 * @param {int} x
-	 * @param {int} y
-	 * @param {int} a Angle
-	 * @param {int} dt
-	 */
-	Asserv.prototype.simu_speed = function(vit, x, y, a, dt) {
-		return function() {
-			this.pos = {
-				x: x + Math.cos(a) * vit*dt/1000,
-				y: y + Math.sin(a) * vit*dt/1000,
-				a: a
-			}
-			this.sendPos();
-		}.bind(this);
-	}
-	/**
-	 * Speed ?
-	 * 
-	 * @param {int} l
-	 * @param {int} a Angle
-	 * @param {int} ms
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.speed = function(l, a, ms,callback) {
-		this.newOrder(function() {
-			// this.simu.pwm(callback, l/3, l/3, ms);
-			for(var t = 0; t < ms; t += 1000/FPS) {
-				timeouts.push(setTimeout(this.simu_speed(l, this.pos.x, this.pos.y, this.pos.a, t), t));
-			}
-			timeouts.push(setTimeout(this.simu_speed(l, this.pos.x, this.pos.y, this.pos.a, ms), ms));
-			timeouts.push(setTimeout(callback, ms));
-		}.bind(this), 0, false, ms);
-	};
-
-	/**
-	 * Simu Pulse Width Modulation
-	 * 
-	 * @param {int} x
-	 * @param {int} y
-	 * @param {int} a Angle
-	 * @param {int} dt
-	 */
-	Asserv.prototype.simu_pwm = function(pwm, x, y, a, dt) {
-		return function() {
-			this.pos = {
-				x: x + Math.cos(a) * SIMU_DIST(pwm, dt/1000, this.vitesse),
-				y: y + Math.sin(a) * SIMU_DIST(pwm, dt/1000, this.vitesse),
-				a: a
-			}
-			this.sendPos();
-		}.bind(this);
-	}
-	/**
-	 * Pulse Width Modulation
-	 * 
-	 * @param {string} left
-	 * @param {string} right
-	 * @param {int} ms
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.pwm = function(left, right, ms, callback) {
-		this.newOrder(function() {
-			var pwm = (left+right)/2;
-			for(var t = 0; t < ms; t += 1000/FPS) {
-				timeouts.push(setTimeout(this.simu_pwm(pwm, this.pos.x, this.pos.y, this.pos.a, t), t));
-			}
-			timeouts.push(setTimeout(this.simu_pwm(pwm, this.pos.x, this.pos.y, this.pos.a, ms), ms));
-			timeouts.push(setTimeout(callback, ms));
-		}.bind(this), 0, false, ms);
-	};
-
-	/**
-	 * Simu Go X Y
-	 * 
-	 * @param {int} x
-	 * @param {int} y
-	 */
-	Asserv.prototype.simu_goxy = function(x, y) {
-		return function() {
-			this.pos.x = x;
-			this.pos.y = y;
-			this.sendPos();
-		}.bind(this);
-	}
-	/**
-	 * Go X Y
-	 * 
-	 * @param {int} x
-	 * @param {int} y
-	 * @param {string} sens
-	 * @param {Object} callback
-	 * @param {boolean} no_fifo
-	 */
-	Asserv.prototype.goxy = function(x, y, sens, callback, no_fifo) {
-		
-			var dx = x-this.pos.x;
-			var dy = y-this.pos.y;
-			var dist = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2));
-			var tf = (dist / (this.vitesse*SIMU_FACTOR_VIT))*1000; // *1000 s->ms
-
-			angle_avant = convertA(Math.atan2(dy,dx)-this.pos.a);
-			angle_arriere = convertA(angle_avant+Math.PI);
-
-			if(sens == "avant") angle_depart = angle_avant
-			else if(sens == "arriere") angle_depart = angle_arriere;
-			else if (Math.abs(angle_avant) < Math.abs(angle_arriere)) angle_depart = angle_avant;
-			else angle_depart = angle_arriere;
-
-			// logger.debug("dx: ", dx);
-			// logger.debug("dy: ", dy);
-			// logger.debug("angle: ", this.pos.a);
-			// logger.debug("angle avant: ", angle_avant);
-			// logger.debug("angle arriere: ", angle_arriere);
-			// logger.debug("angle depart: ", angle_depart);
-
-			this.goa(angle_depart+this.pos.a, function() {
-				this.newOrder(function() {
-					for(var t = 0; t < tf; t += 1000/FPS) {
-						timeouts.push(setTimeout(this.simu_goxy(this.pos.x+dx*t/tf, this.pos.y+dy*t/tf), t));
-					}
-					timeouts.push(setTimeout(this.simu_goxy(x, y), tf));
-					timeouts.push(setTimeout(callback, tf));
-				}.bind(this), 0, no_fifo, tf);
-			}.bind(this), no_fifo);
-	};
-	/**
-	 * Simu Go Angle
-	 * 
-	 * @param {int} a Angle
-	 */
-	Asserv.prototype.simu_goa = function(a) {
-		return function() {
-			this.setA(a);
-			this.sendPos();
-		}.bind(this);
-	}
-	/**
-	 * Simu Go Angle
-	 * 
-	 * @param {int} a Angle
-	 * @param {Object} callback
-	 * @param {boolean} no_fifo
-	 */
-	Asserv.prototype.goa = function(a, callback, no_fifo){
-		a = convertA(a);
-		da = convertA(a-this.pos.a);
-		// logger.debug("depart:", this.pos.a);
-		// logger.debug("arrivee:", a);
-		// logger.debug("delta:", da);
-
-		var tf = SIMU_ROT_TIME(da, this.vitesse)*1000; // *1000 s->ms
-		this.newOrder(function() {
-			for(var t = 0; t < tf; t += 1000/FPS) {
-				// logger.debug(this.pos.a+da*t/tf);
-				timeouts.push(setTimeout(this.simu_goa(this.pos.a+da*t/tf), t));
-			}
-			timeouts.push(setTimeout(this.simu_goa(a), tf));
-			timeouts.push(setTimeout(callback, tf));
-		}.bind(this), 0, no_fifo, tf);
-	};
-
-	/**
-	 * Set P I D
-	 * 
-	 * @param {int} p
-	 * @param {int} i
-	 * @param {int} d
-	 * @param {Object} callback
-	 */
-	Asserv.prototype.setPid = function(p, i, d, callback){
-		this.newOrder(callback);
-	};
-
-	return Asserv;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_shared_defineParser.js.html b/doc/clients_shared_defineParser.js.html deleted file mode 100644 index b95dd78..0000000 --- a/doc/clients_shared_defineParser.js.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - clients/shared/defineParser.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/defineParser.js

- - - - - - - -
-
-
/**
- * Define Parser module
- * 
- * @module clients/shared/defineParser
- */
-
-/* Converts :
- * #define VALUEA
- * #define VALUEB 'b'
- * #define VALUEC 42
- * In :
- * {
- *	VALUEA : null,
- *	VALUEB : "b",
- *	VALUEC : 42	
- * }
- */
-
-
-
-module.exports = (function(){
-	var logger = require('log4js').getLogger('DefineParser');
-	var fs = require('fs');
-
-	var reg = /#define[ \t]+(\S+)[ \t]+(\S+)/g;
-
-
-	return function parse(file){
-		var parsed = {};
-		fs.readFile(file, 'utf8', function (err,data) {
-			if(err) {
-				logger.fatal("cant read file:\""+file+"\"");
-				return ;
-			}
-			var nb = 0;
-			while( findings = reg.exec(data) ) {
-				try {
-					parsed[findings[1]] = eval(findings[2]);
-				} catch(e) {}
-				// try to evaluate calculus...
-				nb++;
-			}
-			logger.info("done parsing \""+file+"\" with "+nb+" defines");
-			//should be quick enough
-		});
-		return parsed;
-	}
-
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/clients_shared_fifo.Fifo.html b/doc/clients_shared_fifo.Fifo.html deleted file mode 100644 index ad813aa..0000000 --- a/doc/clients_shared_fifo.Fifo.html +++ /dev/null @@ -1,741 +0,0 @@ - - - - - Fifo - Documentation - - - - - - - - - - - - - - - - -
- -

Fifo

- - - - - - - -
- -
- -

- Fifo -

- - -
- -
-
- - - - - -

new Fifo()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Fifo Constructor -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

fifo

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- fifo -
- - - - - - - - - - -

order_in_progress :boolean

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -boolean - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

clean()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Clean -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

newOrder(callback, nameopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- New Order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
callback - - -Object - - - - - - - - - -
name - - -string - - - - - - <optional>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -

nextOrder()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Next Order -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

orderFinished()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Order finished -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/clients_shared_fifo.class.js.html b/doc/clients_shared_fifo.class.js.html deleted file mode 100644 index ad8aae2..0000000 --- a/doc/clients_shared_fifo.class.js.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - clients/shared/fifo.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/fifo.class.js

- - - - - - - -
-
-
/**
- * First In First Out module
- * 
- * @module clients/shared/fifo
- * @see {@link clients/shared/fifo.Fifo}
- */
-
-module.exports = (function () {
-	var logger = require('log4js').getLogger('Fifo');
-
-	/**
-	 * Fifo Constructor
-	 * 
-	 * @exports clients/shared/fifo.Fifo
-	 * @constructor
-	 */
-	function Fifo() {
-		this.clean();
-	}
-
-	/**
-	 * Clean
-	 */
-	Fifo.prototype.clean = function(callback) {
-		/** fifo */
-		this.fifo = [];
-		/** @type {boolean} */
-		this.order_in_progress = false;
-	}
-
-	/**
-	 * Order finished
-	 */
-	Fifo.prototype.orderFinished = function() {
-		this.order_in_progress = false;
-		this.nextOrder();
-	}
-
-	/**
-	 * New Order
-	 * 
-	 * @param {Object} callback
-	 * @param {string} [name]
-	 */
-	Fifo.prototype.newOrder = function(callback, name) {
-		if (name === undefined)
-			name = "";
-		this.fifo.push({callback: callback, name: name});
-		this.nextOrder();
-	}
-
-	/**
-	 * Next Order
-	 */
-	Fifo.prototype.nextOrder = function() {
-		if(!this.order_in_progress && this.fifo.length > 0) {
-			// logger.debug(this.fifo.length);
-			this.order_in_progress = true;
-			object = this.fifo.shift();
-			// logger.debug("Calling : "+object.name);
-			object.callback();
-		}
-	}
-
-
-	return Fifo;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/config.js.html b/doc/config.js.html deleted file mode 100644 index 75ca760..0000000 --- a/doc/config.js.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - config.js - Documentation - - - - - - - - - - - - - - - - -
- -

config.js

- - - - - - - -
-
-
/**
- * Server config
- * 
- * @module config
- * @type {Object}
- */
-
-module.exports = {
-	"server": "127.0.0.1:3128",
-	//"server": "192.168.0.100:3128",
-	"hokuyo_command": "/root/coupe15/hokuyo/bin/hokuyo"
-}
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_actions.Actions.html b/doc/ia_actions.Actions.html deleted file mode 100644 index 6f3ad9d..0000000 --- a/doc/ia_actions.Actions.html +++ /dev/null @@ -1,2838 +0,0 @@ - - - - - Actions - Documentation - - - - - - - - - - - - - - - - -
- -

Actions

- - - - - - - -
- -
- -

- Actions -

- - -
- -
-
- - - - - -

new Actions(ia)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Actions Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ia - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

color

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Team color -
- - - - - - - - - - -

done

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- done -
- - - - - - - - - - -

ia

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- IA -
- - - - - - - - - - -

inprogress

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Tasks in progress -
- - - - - - - - - - -

killed

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- killed -
- - - - - - - - - - -

todo

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Tasks to do -
- - - - - - - - - - -

valid_id_do_action

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Valid id do action -
- - - - - - - - - - - - -

Methods

- - - - - - -

actionFinished()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Action Finished -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

collision()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Collision -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

doAction(callback, action, startpoint, id)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Do Action -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - -
action - - -Object - - - -
startpoint - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
id - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

doNextAction(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Do next Action -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - -
- - - - - - - - - - - - - - - - - - - - - -

exists(action_name)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return true if the action exists -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
action_name - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

getNearestStartpoint(pos, startpoints)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return nearest Startpoint -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
startpoints - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

getNormAction(pos, an)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return the distance between a position and the position of the current action -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
an - - -string - - - - Action name
- - - - - - - - - - - - - - - - - - - - - -

getPriorityAction(an)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Get priority Action -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
an - - -string - - - - Action name
- - - - - - - - - - - - - - - - - - - - - -

importActions(data)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Import Actions from data -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
data - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

isDoable(action)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return true id is doable -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
action - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

isDone(action_name)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return true if the action is done -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
action_name - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

kill(action_name)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Kill an action -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
action_name - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

parseOrder(from, name, params)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse Order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
from - - -string - - - - Sender
name - - -string - - - - Name of the action
params - - -Object - - - - Parameters of the action
- - - - - - - - - - - - - - - - - - - - - -

pathDoAction(callback, actions, id)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Find the path to the action -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - -
actions - - -Object - - - -
id - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_actions.class.js.html b/doc/ia_actions.class.js.html deleted file mode 100644 index 083c92c..0000000 --- a/doc/ia_actions.class.js.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - ia/actions.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/actions.class.js

- - - - - - - -
-
-
/**
- * Actions Module
- * 
- * @module ia/actions
- * @see {@link ia/actions.Actions}
- */
-
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('ia.actions');
-	/**
-	 * Actions Constructor
-	 * 
-	 * @exports ia/actions.Actions
-	 * @constructor
-	 * @param ia
-	 */
-	function Actions(ia) {
-		/** IA */
-		this.ia = ia;
-		/** Team color */
-		this.color = ia.color;
-
-		/** done */
-		this.done = {};
-		/** Tasks to do*/
-		this.todo = {};
-		/** Tasks in progress */
-		this.inprogress = null;
-		/** killed */
-		this.killed = {};
-
-		/** Valid id do action */
-		this.valid_id_do_action = -1;
-
-		this.todo = this.importActions(ia.data);
-	}
-
-	var __dist_startpoints_plot = 120;
-	var __nb_startpoints_plot = 16;
-	/**
-	 * Convert Angle
-	 * 
-	 * @param {int} a Angle
-	 */
-	function convertA(a) { return Math.atan2(Math.sin(a), Math.cos(a)); }
-
-	/**
-	 * Collision
-	 */
-	Actions.prototype.collision = function() {
-		if(this.inprogress !== null) {
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			// Décommenter la ligne, juste pour tester
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			this.todo[this.inprogress.name] = this.inprogress;
-			this.inprogress = null;
-		}
-	}
-
-	/**
-	 * Import Actions from data
-	 * 
-	 * @param {Object} data
-	 */
-	Actions.prototype.importActions = function (data) {
-		var req;
-
-		try {
-			req = require('./actions.json');
-		}
-		catch(err) {
-		    logger.fatal("Erreur lors de l'importation des actions dans l'IA: "+err);
-		}
-		var actions = req.actions;
-
-		// Link "object" with exiting thing in the Data class
-		Object.keys(actions).forEach(function(i) {
-			actions[i].object = data.getObjectRef(actions[i].objectname);
-			actions[i].name = i;
-
-			if ((actions[i].object !== null) && (actions[i].type == "plot") && (actions[i].startpoints.length === 0)) {
-				actions[i].startpoints.push({
-					x: actions[i].object.pos.x,
-					y: actions[i].object.pos.y
-				});
-				// var temp;
-				// for(var j = 0; j < __nb_startpoints_plot; j++) {
-				// 	temp = j*2*Math.PI/__nb_startpoints_plot;
-				// 	actions[i].startpoints.push({
-				// 		x: actions[i].object.pos.x + __dist_startpoints_plot * Math.cos(temp),
-				// 		y: actions[i].object.pos.y + __dist_startpoints_plot * Math.sin(temp),
-				// 		a: convertA(temp+Math.PI)
-				// 	});
-				// }
-			}
-			else if((actions[i].object !== null) && (actions[i].type == "clap")) {
-				if(this.color != "yellow") {
-					var a = actions[i].startpoints[0].a;
-					actions[i].startpoints[0].a = (a < 0) ? -Math.PI - a : Math.PI - a;
-				}
-			}
-		}.bind(this));
-
-		return actions;
-	};
-
-	/**
-	 * Parse Order
-	 * 
-	 * @param {string} from Sender
-	 * @param {string} name Name of the action
-	 * @param {Object} params Parameters of the action
-	 */
-	Actions.prototype.parseOrder = function (from, name, params) {
-		switch(name) {
-			case 'actions.action_finished':
-			// logger.debug('received action_finished');
-				this.actionFinished();
-			break;
-			case 'actions.path_finished':
-			logger.debug('received path_finished');
-				this.ia.pr.path = [];
-			break;
-			default:
-				logger.warn('Ordre inconnu dans ia.gr: '+name);
-		}
-	};
-
-
-	/**
-	 * Kill an action
-	 * 
-	 * @param {string} action_name
-	 */
-	Actions.prototype.kill = function (action_name){
-		// If action doesn't exist
-		if (!!action_name && this.exists(action_name)){
-			this.done[action_name] = this.todo[action_name];
-			delete this.todo[action_name];
-		}
-	};
-
-	/**
-	 * Return true if the action exists
-	 * 
-	 * @param {string} action_name
-	 */
-	Actions.prototype.exists = function (action_name){
-		if (!this.todo[action_name]){
-			if (!this.killed[action_name] && !this.done[action_name] && !this.done[action_name])
-				logger.warn("Action named '"+ action_name +"' doesn't exist");
-			else
-				logger.warn("Action named '"+ action_name +"' already killed in progress or done !");
-			return false;
-		} else {
-			return true;
-		}
-	};
-
-	/**
-	 * Return true if the action is done
-	 * 
-	 * @param {string} action_name
-	 */
-	Actions.prototype.isDone = function (action_name){
-		return !action_name || this.done.hasOwnProperty(action_name);
-	};
-
-	/**
-	 * Return the distance between two points
-	 * 
-	 * @param {Object} A
-	 * @param {int} A.x
-	 * @param {int} A.y
-	 * @param {Object} B.x
-	 * @param {object} B.y
-	 */
-	function norm2Points(A, B) {
-		return Math.sqrt(Math.pow(A.x-B.x, 2) + Math.pow(A.y-B.y, 2));
-	}
-	/**
-	 * Return the distance between a position and the position of the current action
-	 * 
-	 * @param {Object} pos
-	 * @param {int} pos.x
-	 * @param {int} pos.y
-	 * @param {string} an Action name
-	 */
-	Actions.prototype.getNormAction = function(pos, an) {
-		return norm2Points(pos, this.todo[an].object.pos);
-	};
-	
-	/**
-	 * Get priority Action
-	 * 
-	 * @param {string} an Action name
-	 */
-	Actions.prototype.getPriorityAction = function(an) {
-		return this.todo[an].object.status == "lost" ? -1000 : this.todo[an].priority;
-	};
-	
-	/**
-	 * Return true id is doable
-	 * 
-	 * @param {Object} action
-	 */
-	Actions.prototype.isDoable = function(action) {
-		// Verifies some things about the action
-
-		if (!!action.dependency && !this.isDone(action.dependency)){
-			// Depends on an action, but it hasn't already been done
-			return false;
-		}
-
-		if (action.dependencyRobotContent !== undefined){
-			// Depends on the robot content
-
-			if ((action.dependencyRobotContent.gobelet !== undefined) &&
-				(this.ia.pr.content.gobelet !== action.dependencyRobotContent.gobelet)){
-				// The cup holder position isn't consistent with needed state
-				return false;
-			}
-
-			// If there's a constraint about the current number of cylinders
-			if ((action.dependencyRobotContent.invPlot !== undefined)  &&
-				(this.ia.pr.content.nb_plots < action.dependencyRobotContent.invPlot)){
-				return false;
-			}
-			if ((action.dependencyRobotContent.subPlot !== undefined)  &&
-				(this.ia.pr.content.nb_plots > action.dependencyRobotContent.subPlot)){
-				return false;
-			}
-		 
-		}
-
-		// if (action.object.status == "lost"){
-		// 	return false;
-		// }
-
-		return true;
-	};
-	
-	/**
-	 * Do next Action
-	 * 
-	 * @param callback
-	 */
-	Actions.prototype.doNextAction = function(callback) {
-		this.valid_id_do_action++;
-		var actions_todo = [];
-
-		// Get les actions possibles
-		Object.getOwnPropertyNames(this.todo).forEach(function(an) { //an = action name
-			if(this.isDoable(this.todo[an])) {
-				actions_todo.push(an);
-			}
-		}, this);
-
-		// Tri par priorité puis par norme
-		var pos = this.ia.pr.pos;
-		actions_todo.sort(function(a, b) {
-			return (this.getPriorityAction(b) - this.getPriorityAction(a)) || (this.getNormAction(pos, a) - this.getNormAction(pos, b));
-		}.bind(this));
-
-		for(var i in actions_todo) {
-			logger.debug('[%d] %s (%d)', this.todo[actions_todo[i]].priority, actions_todo[i], this.getNormAction(pos, actions_todo[i]));
-		}
-
-		// Va choisir l'action la plus proche, demander le path et faire doAction
-		this.pathDoAction(callback, actions_todo, this.valid_id_do_action);
-	};
-
-	/**
-	 * Return nearest Startpoint
-	 * 
-	 * @param {Object} pos
-	 * @param {int} pos.x
-	 * @param {int} pos.y
-	 * @param {Object} startpoints
-	 */
-	Actions.prototype.getNearestStartpoint = function(pos, startpoints) {
-		var min_dist = Infinity;
-		var nearest = null;
-
-		for (var i = 0; i < startpoints.length; i++) {
-			var dist = norm2Points(pos, startpoints[i]);
-
-			if (dist < min_dist){
-				min_dist = dist;
-				nearest = startpoints[i];
-			}
-		}
-
-		return nearest;
-	};
-
-	/**
-	 * Find the path to the action
-	 * 
-	 * @param callback
-	 * @param {Object} actions
-	 * @param {int} id
-	 */
-	Actions.prototype.pathDoAction = function(callback, actions, id) {
-		if(id != this.valid_id_do_action) {
-			logger.Debug('id different');
-			return;
-		}
-		// Va choisir l'action la plus proche, demander le path et faire doAction
-		if(actions.length > 0) {
-			var action = this.todo[actions.shift()];
-			var startpoint = this.getNearestStartpoint(this.ia.pr.pos, action.startpoints);
-			this.ia.pathfinding.getPath(this.ia.pr.pos, startpoint, function(path) {
-				if(path !== null) {
-					this.ia.pr.path = path;
-					this.doAction(callback, action, startpoint, id);
-				} else {
-					logger.debug("path not found");
-					// Si le pathfinding foire, on fait la deuxième action la plus importante
-					this.pathDoAction(callback, actions, id);
-				}
-			}.bind(this));
-		} else {
-			logger.debug("all paths not found");
-			setTimeout(function() {
-				this.doNextAction(callback);
-			}.bind(this), 500);
-		}
-	};
-
-	/**
-	 * Do Action
-	 * 
-	 * @param callback
-	 * @param {Object} action
-	 * @param {Object} startpoint
-	 * @param {int} startpoint.x
-	 * @param {int} startpoint.y
-	 * @param {int} id
-	 */
-	Actions.prototype.doAction = function (callback, action, startpoint, id) {
-		if(id != this.valid_id_do_action)
-			return;
-		this.callback = callback;
-		
-		// // Change action to state "in progress"
-		this.inprogress = action;
-		delete this.todo[action.name];
-
-		logger.debug('Action en cours %s (%d;%d;%d)', action.name, startpoint.x, startpoint.y, startpoint.a);
-		this.ia.pr.path.map(function(checkpoint) {
-			this.ia.client.send('pr', "goxy", {
-				x: checkpoint.x,
-				y: checkpoint.y,
-				sens: action.sens
-			});
-		}, this);
-		if(!!startpoint.a) {
-			this.ia.client.send('pr', "goa", {
-				a: startpoint.a
-			});
-		}
-
-		this.ia.client.send('pr', "send_message", {
-			name: "actions.path_finished"
-		});
-		// 1 order for 1 action
-		// action.orders.forEach(function (order, index, array){
-		this.ia.client.send('pr', action.orders[0].name, action.orders[0].params);
-		// }.bind(this));
-		this.ia.client.send('pr', "send_message", {
-			name: "actions.action_finished"
-		});
-
-		// // Set object to "done" ! XXX
-
-		// // Change action and its "to be killed" actions to state done
-
-		// console.log(this.todo);
-		// console.log(this.inprogress);
-		// console.log(this.done);
-	};
-
-	/**
-	 * Action Finished
-	 */
-	Actions.prototype.actionFinished = function () {
-		if(this.inprogress !== null) {
-			this.done[this.inprogress.name] = this.inprogress;
-			logger.info('Action %s est finie !', this.inprogress.name);
-			this.inprogress = null;
-			var temp = this.callback;
-			this.callback = function() {logger.warn('callback vide'); };
-			temp();
-		}
-	};
-	
-	return Actions;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_data.Data.html b/doc/ia_data.Data.html deleted file mode 100644 index 15af62e..0000000 --- a/doc/ia_data.Data.html +++ /dev/null @@ -1,1990 +0,0 @@ - - - - - Data - Documentation - - - - - - - - - - - - - - - - -
- -

Data

- - - - - - - -
- -
- -

- Data -

- - -
- -
-
- - - - - -

new Data(ia, nb_erobots, EGR_d, EPR_d)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Data Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ia - - -Object - - - -
nb_erobots - - -int - - - - Number of robots in a team
EGR_d - -
EPR_d - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

balle

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- balle -
- - - - - - - - - - -

chargeur

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- chargeur -
- - - - - - - - - - -

clap

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- clap -
- - - - - - - - - - -

depot

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- depot -
- - - - - - - - - - -

dots

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- dots -
- - - - - - - - - - -

dynamic

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- dynamic -
- - - - - - - - - - -

erobot

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- erobot -
- - - - - - - - - - -

gobelet

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- gobelet -
- - - - - - - - - - -

nb_erobots

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- nb_erobot -
- - - - - - - - - - -

pile

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- pile -
- - - - - - - - - - -

plot

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- plot -
- - - - - - - - - - - - -

Methods

- - - - - - -

getDistance(pos1, pos2)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return the distance between two positions -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos1 - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
pos2 - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
- - - - - - - - - - - - - - - - - - - - - -

getObjectRef(name)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return Object Reference -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
name - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

importObjects()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Import the Objects -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

isCloser(dist1, dist2)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Returns true if dist1 is smaller than dist2 -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
dist1 - - -int - - - -
dist2 - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

parseOrder(from, name, param)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse Order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
from - - -string - - - -
name - - -string - - - -
param - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

theEnnemyWentThere(pos, e_robot_id)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Takes a position and the ennemy robot # to put everything in its surroundings (~ 1.1 * radius) as "lost" -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pos - - -Object - - - -
e_robot_id - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_data.class.js.html b/doc/ia_data.class.js.html deleted file mode 100644 index 0394488..0000000 --- a/doc/ia_data.class.js.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - ia/data.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/data.class.js

- - - - - - - -
-
-
/**
- * Data Module
- * 
- * @module ia/data
- * @see {@link ia/data.Data}
- */
-
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('ia.data');
-
-	/**
-	 * Data Constructor
-	 * 
-	 * @exports ia/data.Data
-	 * @constructor
-	 * @param {Object} ia
-	 * @param {int} nb_erobots Number of robots in a team
-	 * @param EGR_d
-	 * @param EPR_d 
-	 */
-	function Data(ia, nb_erobots, EGR_d, EPR_d) {
-		/** balle */
-		this.balle = [];
-		/** chargeur */
-		this.chargeur = [];
-		/** clap */
-		this.clap = [];
-		/** plot */
-		this.plot = [];
-		/** erobot */
-		this.erobot = [];
-		/** gobelet */
-		this.gobelet = [];
-		/** pile */
-		this.pile = {};
-		/** dynamic */
-		this.dynamic = []; //used for laid stacks
-		/** depot */
-		this.depot = [];
-		/** nb_erobot */
-		this.nb_erobots = nb_erobots;
-
-		/** dots */
-		this.dots = [];
-
-		this.importObjects();
-		
-		this.erobot = [{ // big robot on position 0
-				name: "gr",
-				pos:{
-					x:3200,
-					y:1000
-				},
-				speed:{ // in mm/sec
-					x:0,
-					y:0,
-				},
-				lastUpdate: 0, // time in ms from the beining of the match
-				d: EGR_d || 320,
-				status: "lost"
-			},{ // small robot on position 1
-				name: "pr",
-				pos:{
-					x:3500,
-					y:1000
-				},
-				speed:{
-					x:0,
-					y:0
-				},
-				lastUpdate: 0,
-				d: EPR_d || 200,
-				status: "lost"
-			}];
-	}
-
-	/**
-	 * Import the Objects
-	 */
-	Data.prototype.importObjects = function () {
-		var ret = require('./objects.json');
-
-		this.balle = ret.balle;
-		this.chargeur = ret.chargeur;
-		this.clap = ret.clap;
-		this.plot = ret.plot;
-		this.gobelet = ret.gobelet;
-		this.pile = ret.pile;
-		this.depot = ret.depot;
-		return ret;
-	};
-
-	/**
-	 * Return Object Reference
-	 * 
-	 * @param {string} name
-	 */
-	Data.prototype.getObjectRef = function(name) {
-		// Retourne une référence vers l'objet name
-		// 		name étant de la forme <type>__<nom>
-		// Permet d'avoir une référence vers l'objet dans une action
-
-		var actName = name.split("__");
-		if (actName.length != 2){
-			logger.warn("Le nom '"+name+"' n'est pas un nom d'objet correct.");
-			return null;
-		}
-
-		if (!this[actName[0]][actName[1]]){
-			logger.warn("L'objet "+actName[0]+" de type "+actName[1]+" est inconnu.");
-			return null;
-		}
-
-		return this[actName[0]][actName[1]];
-	};
-
-	/**
-	 * Returns true if dist1 is smaller than dist2 
-	 * 
-	 * @param {int} dist1
-	 * @param {int} dist2
-	 */
-	Data.prototype.isCloser = function (dist1, dist2){
-		return (dist1 < dist2);
-	};
-
-	/**
-	 * Return the distance between two positions
-	 * 
-	 * @param {Object} pos1
-	 * @param {int} pos1.x
-	 * @param {int} pos1.y
-	 * @param {Object} pos2
-	 * @param {int} pos2.x
-	 * @param {int} pos2.y
-	 */
-	Data.prototype.getDistance = function (pos1, pos2){
-		return Math.sqrt(Math.pow(pos1.x - pos2.x, 2) + Math.pow(pos1.y - pos2.y, 2));
-	};
-
-	/**
-	 * Takes a position and the ennemy robot # to put everything in its surroundings (~ 1.1 * radius) as "lost"
-	 * 
-	 * @param {Object} pos
-	 * @param {int} e_robot_id
-	 */
-	Data.prototype.theEnnemyWentThere = function (pos, e_robot_id){
-		Object.keys(this.plot).forEach(function(c) {
-			if ((this.getDistance(pos, this.plot[c].pos) < 0.55*this.erobot[e_robot_id].d) && (this.plot[c].status != "lost")) {
-				logger.info("Le plot " + c + " est marqué lost");
-				this.plot[c].status = "lost";
-			}
-		}.bind(this));
-		var min_dist = Infinity;
-		Object.keys(this.gobelet).forEach(function(g) {
-			if ((this.getDistance(pos, this.gobelet[g].pos) < 0.55*this.erobot[e_robot_id].d) && (this.gobelet[g].status != "lost")) {
-				logger.info("Le gobelet" + g + " est marqué lost");
-				this.gobelet[g].status = "lost";
-			}
-		}.bind(this));
-	};
-
-	/**
-	 * Parse Order
-	 * 
-	 * @param {string} from
-	 * @param {string} name
-	 * @param {Object} param
-	 */
-	Data.prototype.parseOrder = function(from, name, param){
-		switch(name){
-			case "data.add_dynamic" :
-				if(!!param.pos && !!param.pos.x && !!param.pos.y && !!param.d){
-					this.dynamic.push(param);
-					logger.info("added dynamic from :"+from+" params:"+JSON.stringify(param));
-				}else{
-					logger.error("invalid dynamic from :"+from+" params:"+JSON.stringify(param));
-				}				
-			break;
-			default: logger.error("Unknown order name:"+name+" from:"+from);
-		}
-	};
-
-	var data = new Data();
-	
-	return Data;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_export_simulator.ExportSimulator.html b/doc/ia_export_simulator.ExportSimulator.html deleted file mode 100644 index b5b3201..0000000 --- a/doc/ia_export_simulator.ExportSimulator.html +++ /dev/null @@ -1,540 +0,0 @@ - - - - - ExportSimulator - Documentation - - - - - - - - - - - - - - - - -
- -

ExportSimulator

- - - - - - - -
- -
- -

- ExportSimulator -

- - -
- -
-
- - - - - -

new ExportSimulator(ia)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- ExportSimulator Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ia - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ia

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- IA -
- - - - - - - - - - - - -

Methods

- - - - - - -

orderToSimu()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Order to Simulator -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

start()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Start -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

stop()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Stop -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_export_simulator.class.js.html b/doc/ia_export_simulator.class.js.html deleted file mode 100644 index 6aa1ac0..0000000 --- a/doc/ia_export_simulator.class.js.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - ia/export_simulator.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/export_simulator.class.js

- - - - - - - -
-
-
/**
- * Export simulator Module
- * 
- * @module ia/export_simulator
- * @see {@link ia/export_simulator.ExportSimulator}
- */
-
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('ia.export_simulator');
-
-	var __timeout = null;
-	var FPS = 30;
-	/** Color of the team */
-	var color;
-
-	/**
-	 * ExportSimulator Constructor
-	 * 
-	 * @exports ia/export_simulator.ExportSimulator
-	 * @constructor
-	 * @param ia
-	 */
-	function ExportSimulator(ia) {
-		/** IA */
-		this.ia = ia;
-		this.start();
-		color = this.ia.color;
-	}
-
-	/**
-	 * Convert x, depends on the team color
-	 * 
-	 * @param {int} x
-	 */
-	function convertX(x) {
-		if(color == "yellow") {
-			return (x-1500)/1000;
-		} else {
-			return (1500-x)/1000;
-		}
-	}
-	/**
-	 * Convert y
-	 * 
-	 * @param {int} y
-	 */
-	function convertY(y) {
-		return (1000-y)/1000;
-	}
-	/**
-	 * Convert Angle, depends on the team color
-	 * 
-	 * @param {int} a Angle
-	 */
-	function convertA(a) {
-		if(color == "yellow") {
-			return a;
-		} else {
-			return (a < 0) ? -Math.PI - a : Math.PI - a;
-		}
-	}
-	/**
-	 * Start
-	 */
-	ExportSimulator.prototype.start = function() {
-		this.orderToSimu();
-	}
-	/**
-	 * Stop
-	 */
-	ExportSimulator.prototype.stop = function() {
-		clearTimeout(__timeout);
-	}
-
-	/**
-	 * Order to Simulator
-	 */
-	ExportSimulator.prototype.orderToSimu = function() {
-		var data = {};
-		
-		data.robots = {
-			gr: {
-				x: convertX(this.ia.gr.pos.x),
-				y: convertY(this.ia.gr.pos.y),
-				a: convertA(this.ia.gr.pos.a)
-			},
-			pr: {
-				x: convertX(this.ia.pr.pos.x),
-				y: convertY(this.ia.pr.pos.y),
-				a: convertA(this.ia.pr.pos.a),
-				path: [this.ia.pr.pos].concat(this.ia.pr.path).map(function(pos){
-					return [convertX(pos.x), convertY(pos.y)];
-				})
-			},
-			egr: {
-				x: convertX(this.ia.data.erobot[0].pos.x),
-				y: convertY(this.ia.data.erobot[0].pos.y),
-			},
-			epr: {
-				x: convertX(this.ia.data.erobot[1].pos.x),
-				y: convertY(this.ia.data.erobot[1].pos.y)
-			}
-		};
-		data.dynamic = this.ia.data.dynamic.map(function(o){
-			return [convertX(o.pos.x), convertY(o.pos.y)];
-		});
-		// logger.debug(data.robots.egr);
-		this.ia.client.send("webclient", "simulateur", data);
-
-		__timeout = setTimeout(function(){this.orderToSimu()}.bind(this), 1000/FPS);
-	}
-
-	return ExportSimulator;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_gr.Gr.html b/doc/ia_gr.Gr.html deleted file mode 100644 index d2f5a9b..0000000 --- a/doc/ia_gr.Gr.html +++ /dev/null @@ -1,1167 +0,0 @@ - - - - - Gr - Documentation - - - - - - - - - - - - - - - - -
- -

Gr

- - - - - - - -
- -
- -

- Gr -

- - -
- -
-
- - - - - -

new Gr(ia, color)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Gr Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ia - - -Object - - - -
color - - -string - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ia

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- IA -
- - - - - - - - - - -

orders

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Orders -
- - - - - - - - - - -

path

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Path -
- - - - - - - - - - -

pos

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Position -
- - - - - - - - - - -

size

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Size of the robot -
- - - - - - - - - - - - -

Methods

- - - - - - -

onCollision()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- On Collision : TODO send order STOP -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

parseOrder(from, name, params)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse Order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
from - - -string - - - -
name - - -string - - - -
params - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

sendOrders()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send Orders -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendPos()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send position -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

start()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Start -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

stop()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Stop -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_gr.class.js.html b/doc/ia_gr.class.js.html deleted file mode 100644 index 350d136..0000000 --- a/doc/ia_gr.class.js.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - ia/gr.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/gr.class.js

- - - - - - - -
-
-
/**
- * Grand Robot Module
- * 
- * @module ia/gr
- * @see {@link ia/gr.Gr}
- */
-
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('ia.gr');
-
-	/**
-	 * Gr Constructor
-	 * 
-	 * @exports ia/gr.Gr
-	 * @constructor
-	 * @param {Object} ia
-	 * @param {string} color
-	 */
-	function Gr(ia, color) {
-		/** IA */
-		this.ia = ia;
-		/** Position */
-		this.pos = require('./gr.'+color+'.json')['pos'];
-		this.pos.color = color;
-		/** Size of the robot */
-		this.size = {
-			l: 290,
-			L: 290,
-			d: 420
-		};
-		/** Orders */
-		this.orders = require('./gr.'+color+'.json')['script'];
-		// logger.debug(this.orders);
-		/** Path */
-		this.path = null;
-	}
-
-	/**
-	 * Start
-	 */
-	Gr.prototype.start = function () {
-		this.sendOrders();
-	};
-
-	/**
-	 * Stop
-	 */
-	Gr.prototype.stop = function() {
-		logger.debug('stop GR');
-		this.ia.client.send('gr', 'stop');
-	}
-
-	/**
-	 * Send position
-	 */
-	Gr.prototype.sendPos = function () {
-		this.ia.client.send("gr", "setpos", this.pos);
-	};
-
-	/**
-	 * Parse Order
-	 * 
-	 * @param {string} from
-	 * @param {string} name
-	 * @param {Object} params
-	 */
-	Gr.prototype.parseOrder = function (from, name, params) {
-		switch(name) {
-			case 'gr.pos':
-				this.pos.x = params.x;
-				this.pos.y = params.y;
-				this.pos.a = params.a;
-			break;
-			case 'gr.getpos':
-				this.sendPos();
-			break;
-			default:
-				logger.warn('Ordre inconnu dans ia.gr: '+name);
-		}
-	};
-
-	/**
-	 * Send Orders
-	 */
-	Gr.prototype.sendOrders = function () {
-		for(var i in this.orders) {
-			this.ia.client.send("gr", this.orders[i].name, this.orders[i].data);
-		}
-	};
-
-	/**
-	 * On Collision : TODO send order STOP
-	 */
-	Gr.prototype.onCollision = function () {
-		logger.warn("Collision du gros robot");
-		// TODO send order STOP
-	};
-
-
-	
-	return Gr;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_hokuyo.Hokuyo.html b/doc/ia_hokuyo.Hokuyo.html deleted file mode 100644 index 42caf62..0000000 --- a/doc/ia_hokuyo.Hokuyo.html +++ /dev/null @@ -1,2651 +0,0 @@ - - - - - Hokuyo - Documentation - - - - - - - - - - - - - - - - -
- -

Hokuyo

- - - - - - - -
- -
- -

- Hokuyo -

- - -
- -
-
- - - - - -

new Hokuyo(ia, paramsopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Hokuyo Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
ia - - -Object - - - - - - - - - - IA
params - - -Object - - - - - - <optional>
- - - - - -
Parameters
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ia

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- IA -
- - - - - - - - - - -

lastNow

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Dernier timestamp où on a update (changé à la fin de l'update) -
- - - - - - - - - - -

matchStarted

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Match Started -
- - - - - - - - - - -

nb_hokuyo

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Number of hokuyo -
- - - - - - - - - - -

nb_lost

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- nb d'itération depuis laquelle on a perdu un robot -
- - - - - - - - - - -

params

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parameters -
- - - - - - - - - - - - -

Methods

- - - - - - -

deleteOurRobots(dots)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Remove our robot from the detected points -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
dots - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

detectCollision(dots)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Detects Collision -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
dots - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

getBestMatchingCoef(dots, robots, now)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Returns Best Matching Coefficient -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
dots - - -Object - - - -
robots - - -Object - - - -
now - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - -

getDistance(spot1, spot2)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return the distance between two points -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
spot1 - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
spot2 - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
- - - - - - - - - - - - - - - - - - - - - -

getMatchingCoef(spot, eRobot, dt, status)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return Matching coefficient -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
spot - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
eRobot - - -Object - - - -
dt - - -int - - - -
status - -
- - - - - - - - - - - - - - - - - - - - - -

isOk()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return true if the number of Hokuyo isn't equal to 0 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

isOnTheStairs(spot)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Return true if the position is on the stair -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
spot - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
x - - -int - - - -
y - - -int - - - -
- -
- - - - - - - - - - - - - - - - - - - - - -

mayday(reason)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- May Day -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
reason - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

parseOrder(from, name, params)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse Order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
from - - -string - - - -
name - - -string - - - -
params - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

start()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Starts the hokuyo -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

stop()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Stops the Hokuyo -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

timedOut()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Timed out -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

updateNumberOfRobots(nb)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Updates number of robots -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
nb - - -int - - - - Number of robots
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_hokuyo.class.js.html b/doc/ia_hokuyo.class.js.html deleted file mode 100644 index 1ca8955..0000000 --- a/doc/ia_hokuyo.class.js.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - - ia/hokuyo.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/hokuyo.class.js

- - - - - - - -
-
-
/**
- * Hokuyo module
- * 
- * @module ia/hokuyo
- * @see ia/hokuyo.Hokuyo
- */
-
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	// var gaussian = require('gaussian');
-	var logger = log4js.getLogger('ia.hokuyo');
-
-	var GR_OFFSET = 110; // (mm) distance between our robot origin and the robot's center
-	var PR_GR_COEF = 1; // security coeff to bind our robots with the dots
-	var SEGMENT_DELTA_D = 30; // (mm) between 2 iterations on a segment to detect colision
-	var DELTA_T = 500; // (ms) in the future : estimation of ennemy robots
-	var DEBUG = false; // mettre à true LE TEMPS DU DEBUG !!!!!
-	var LOST_TIMEOUT = 10;
-	var SECURITY_COEF = 1.1;
-	var MAX_SPD = 1;
-	var timeout;
-
-	/**
-	 * Hokuyo Constructor
-	 * 
-	 * @exports ia/hokuyo.Hokuyo
-	 * @constructor
-	 * @param {Object} ia IA
-	 * @param {Object} [params] Parameters
-	 */
-	function Hokuyo(ia, params) {
-		/** Parameters */
-		this.params = params || {};
-		/** Number of hokuyo */
-		this.nb_hokuyo = 0;
-		/** IA */
-		this.ia = ia;
-		/** Dernier timestamp où on a update (changé à la fin de l'update) */
-		this.lastNow = 0;
-		/** Match Started */
-		this.matchStarted = false;
-		/** nb d'itération depuis laquelle on a perdu un robot */
-		this.nb_lost = 0;
-	}
-
-	/**
-	 * Starts the hokuyo
-	 */
-	Hokuyo.prototype.start = function () {
-		this.matchStarted = true;
-
-		logger.info("La classe hokuyo attend...");
-		this.ia.client.send("hokuyo", "start", {color:this.params.color});
-		timeout = setTimeout(function() {this.timedOut(); }.bind(this) , LOST_TIMEOUT*1000);
-	};
-
-	/**
-	 * Stops the Hokuyo
-	 */
-	Hokuyo.prototype.stop = function () {
-		this.matchStarted = false;
-		this.ia.client.send("hokuyo", "stop", {});
-		clearTimeout(timeout);
-	};
-
-	/**
-	 * Timed out
-	 */
-	Hokuyo.prototype.timedOut = function() {
-		this.mayday("Hokuyo timed out");
-	};
-
-	/**
-	 * Return the distance between two points
-	 * 
-	 * @param {Object} spot1
-	 * @param {int} spot1.x
-	 * @param {int} spot1.y
-	 * @param {Object} spot2
-	 * @param {int} spot2.x
-	 * @param {int} spot2.y
-	 */
-	Hokuyo.prototype.getDistance = function (spot1, spot2) {
-		return Math.sqrt(Math.pow(spot1.x - spot2.x, 2) + Math.pow(spot1.y - spot2.y, 2));
-	};
-
-	/**
-	 * Return true if the position is on the stair
-	 * 
-	 * @param {Object} spot
-	 * @param {int} spot.x
-	 * @param {int} spot.y
-	 */
-	Hokuyo.prototype.isOnTheStairs = function (spot){
-		return (spot.x>967) && (spot.x < 2033) && (spot.y > 2000-580);
-	};
-
-	/**
-	 * Return Matching coefficient
-	 * 
-	 * @param {Object} spot
-	 * @param {int} spot.x
-	 * @param {int} spot.y
-	 * @param {Object} eRobot
-	 * @param {int} dt
-	 * @param status
-	 */
-	Hokuyo.prototype.getMatchingCoef = function (spot, eRobot, dt, status){
-		var estimatedPos = {
-			x: eRobot.pos.x + eRobot.speed.x*dt,
-			y: eRobot.pos.y + eRobot.speed.y*dt
-		};
-
-		// var distribution = gaussian(0,eRobot.d);
-		var distance = this.getDistance(spot, estimatedPos);
-		// logger.debug(distance);
-		// return 10*distribution.pdf(distance/10);
-		return distance;
-	};
-
-	/**
-	 * Remove our robot from the detected points
-	 * 
-	 * @param {Object} dots
-	 */
-	Hokuyo.prototype.deleteOurRobots = function (dots){
-		var pr_dist = this.getDistance({x: 0, y:0}, {x: 3000, y:2000});
-		var pr_i = -1;
-		var gr_dist = this.getDistance({x: 0, y:0}, {x: 3000, y:2000});
-		var gr_i = -1;
-
-		var gr_pos_with_offset = {
-			x: this.ia.gr.pos.x + GR_OFFSET*Math.cos(this.ia.gr.pos.a),
-			y: this.ia.gr.pos.y + GR_OFFSET*Math.sin(this.ia.gr.pos.a)
-		};
-
-		// logger.debug("Pos PR");
-		// logger.debug(this.ia.pr.pos);
-		// logger.debug("Pos GR");
-		// logger.debug(gr_pos_with_offset);
-
-		for (var i = 0; i < dots.length; i++) {
-			var pr_temp_dist = this.getDistance(dots[i], this.ia.pr.pos);
-			var gr_temp_dist = this.getDistance(dots[i], gr_pos_with_offset);
-			// logger.debug("Pr le pt :");
-			// logger.debug(dots[i]);
-			// logger.debug(pr_temp_dist);
-			// logger.debug(gr_temp_dist);
-
-
-			if ((pr_dist > pr_temp_dist) && (pr_temp_dist < this.ia.pr.size.d * PR_GR_COEF)){
-				pr_dist = pr_temp_dist;
-				pr_i = i;
-			}
-
-			if ((gr_dist > gr_temp_dist) && (gr_temp_dist < this.ia.gr.size.d * PR_GR_COEF)){
-				gr_dist = gr_temp_dist;
-				gr_i = i;
-			}
-		}
-		
-		if (pr_i != -1) {
-			// logger.debug("Deleting PR:");
-			// logger.debug(dots[pr_i]);
-			// logger.debug(this.ia.pr.pos);
-			dots.splice(pr_i,1);
-
-			if (pr_i < gr_i) {
-				gr_i = gr_i -1;
-			}
-		} else {
-			logger.warn("On a pas trouvé le PR parmis les points de l'Hokuyo");
-		}
-
-		if (gr_i != -1) {
-			// logger.debug("Deleting GR:");
-			// logger.debug(dots[gr_i]);
-			// logger.debug(gr_pos_with_offset);
-			// logger.debug(this.getDistance(dots[gr_i], gr_pos_with_offset));
-
-			dots.splice(gr_i,1);
-		} else {
-			logger.warn("On a pas trouvé le GR parmis les points de l'Hokuyo");
-		}
-		// logger.debug(dots);
-	};
-
-	/**
-	 * Returns Best Matching Coefficient
-	 * 
-	 * @param {Object} dots
-	 * @param {Object} robots
-	 * @param {int} now
-	 */
-	Hokuyo.prototype.getBestMatchingCoef = function(dots, robots, now) {
-		// Return the couple of ennemy robot and dot that matches the best
-
-		var matching_coef = [];
-		var best_coef = {
-			value: this.getDistance({x: 0, y:0}, {x: 3000, y:2000}),
-			dot: -1,
-			e_robot: -1
-		};
-
-		for (var d = 0; d < dots.length; d++){
-			// for each real point
-			matching_coef[d] = [];
-			for (var i = 0; i < robots.length; i++) {
-				// we make a matching coefficient
-
-				matching_coef[d][i] = this.getMatchingCoef(dots[d], robots[i], robots[i].lastUpdate - now, robots[i].status);
-
-				if (best_coef.value > matching_coef[d][i]) {
-					best_coef.value = matching_coef[d][i];
-					best_coef.dot = d;
-					best_coef.e_robot = i;
-				}
-			}
-		}
-
-		//logger.debug("Coefficients de matching");
-		//logger.debug(matching_coef);
-
-		return best_coef;
-	};
-
-	Hokuyo.prototype.updatePos = function (dots) {
-		// Invert dots if we are green
-		if (this.ia.color == "green"){
-			for (var i = 0; i < dots.length; i++) {
-				dots[i].x = 3000 - dots[i].x;
-			}
-		}
-
-		if (!this.matchStarted){
-//			logger.debug("Le match n'a pas commencé");
-			return;
-		}
-
-		if (dots.length === 0)
-			logger.warn("On a reçu un message vide (pas de spots dedans)");
-		else {
-
-			clearTimeout(timeout);
-
-			if (dots.length != ((this.params.we_have_hats?2:0) + this.params.nb_erobots)) {
-			//	logger.info("On a pas le meme nombre de spots ("+dots.length+") que de robots à détecter ("+
-//					((this.params.we_have_hats?2:0) + this.params.nb_erobots) + ").");
-			}
-
-			// takes a timestamp to be able to compute speeds
-			var now = this.ia.timer.get();
-			// var now = this.lastNow = this.lastNow+1;
-
-			// if we have hats, kill ourselves (virtualy, of course)
-			if (this.params.we_have_hats)
-				this.deleteOurRobots(dots);
-
-			// // until there are dots left to be matched with ennmies
-			// while (dots.length > 0){
-			// 	// if some robots aren't already matched
-			// 	var e_r2Bmatched = [];
-
-			// 	for (var i = 0; i < this.ia.data.nb_erobots; i++) {
-			// 		if(this.ia.data.erobot[i].lastUpdate < now){
-			// 			// logger.debug(this.ia.data.erobot[i].name + " last update :");
-			// 			// logger.debug(this.ia.data.erobot[i].lastUpdate);
-			// 			e_r2Bmatched.push(this.ia.data.erobot[i]);
-			// 		}
-			// 	}
-
-			// 	if (e_r2Bmatched.length > 0) {
-			// 		// logger.debug("On s'occupe des robots :");
-			// 		// logger.debug(e_r2Bmatched);
-			// 		// logger.debug("Avec les points :");
-			// 		// logger.debug(dots);
-
-
-			// 		// for each eatimated position of the robots
-			// 		var best_coef = this.getBestMatchingCoef(dots, e_r2Bmatched, now);
-			// 		// logger.debug(best_coef);
-
-			// 		// if the bigger coefficient is under the arbitrary threshold
-			// 		// XXX
-
-			// 		// we take the best/bigger coefficient (well named best_coef :P )
-
-			// 		// if it isn't, set the new position, speed, status, call the "ennemy went there" function
-			// 		// logger.debug("On a matché le point suivant avec le "+e_r2Bmatched[best_coef.e_robot].name+" ennemi");
-			// 		// logger.debug(dots[best_coef.dot]);
-
-			// 		if (best_coef.e_robot == -1){
-			// 			logger.warn('Erreur de matching (il reste des robots à matcher avec des points mais ils collent pas) :');
-			// 			//logger.warn(e_r2Bmatched);
-			// 			//logger.warn(dots);
-			// 			break;
-			// 		}
-
-			// 		//logger.debug("Le "+e_r2Bmatched[best_coef.e_robot].name+" est passé de "+e_r2Bmatched[best_coef.e_robot].pos.x+", "+e_r2Bmatched[best_coef.e_robot].pos.y+ " à "+dots[best_coef.dot].x+", "+dots[best_coef.dot].y);
-
-			// 		e_r2Bmatched[best_coef.e_robot].lastUpdate = now;
-			// 		var deltaT = now - this.lastNow;
-			// 		if (deltaT !== 0){
-			// 			var x_spd = (dots[best_coef.dot].x - e_r2Bmatched[best_coef.e_robot].pos.x)/deltaT;
-			// 			var y_spd = (dots[best_coef.dot].y - e_r2Bmatched[best_coef.e_robot].pos.y)/deltaT;
-			// 			if (x_spd > MAX_SPD) {
-			// 				x_spd = MAX_SPD;
-			// 			} else if (x_spd < -MAX_SPD) {
-			// 				x_spd = -MAX_SPD;
-			// 			}
-			// 			if (y_spd > MAX_SPD) {
-			// 				y_spd = MAX_SPD;
-			// 			} else if (y_spd < -MAX_SPD) {
-			// 				y_spd = -MAX_SPD;
-			// 			}
-
-			// 			e_r2Bmatched[best_coef.e_robot].speed = {
-			// 				x: x_spd,
-			// 				y: y_spd
-			// 			};
-			// 		} else {
-			// 			logger.warn("Tiens, deltaT = 0, c'est bizarre...");
-			// 			e_r2Bmatched[best_coef.e_robot].speed = {
-			// 				x:0,
-			// 				y:0
-			// 			};
-			// 		}
-
-			// 		e_r2Bmatched[best_coef.e_robot].pos = {
-			// 			x: dots[best_coef.dot].x,
-			// 			y: dots[best_coef.dot].y,
-			// 		};
-
-			// 		// logger.debug("Position et vitesse du robot :");
-			// 		// logger.debug(e_r2Bmatched[best_coef.e_robot].pos);
-			// 		// logger.debug(e_r2Bmatched[best_coef.e_robot].speed);
-
-
-			// 		// if it's climbing the stairs, set the correct status
-			// 		if (this.isOnTheStairs(dots[best_coef.dot])){
-			// 			e_r2Bmatched[best_coef.e_robot].status = "on_the_stairs";
-			// 			logger.info(e_r2Bmatched[best_coef.e_robot].status);
-			// 		} else {
-			// 			e_r2Bmatched[best_coef.e_robot].status = "moving";
-			// 			this.ia.data.theEnnemyWentThere(e_r2Bmatched[best_coef.e_robot].pos, best_coef.e_robot);
-			// 		}
-					
-			// 		// and delete the dot
-			// 		dots.splice(best_coef.dot,1);
-			// 	} else {
-			// 		// if all the robots are tidied up, ouw, that's strange ^^
-			// 		//logger.warn("Un ou plusieurs spots de plus que de robots sur la table :");
-			// 		//logger.warn(dots);
-			// 		//logger.warn("e_r2Bmatched");
-			// 		//logger.warn(e_r2Bmatched);
-			// 		break;
-			// 	}
-
-			// }
-
-			// // XXX /!\ robots on the stairs !
-
-
-			// // if there's some robots to be matched (but no real point left :/), they're lost...
-			// // we estimate their position and tag them with "lost"
-			// for (var i = 0; i < this.ia.data.nb_erobots; i++) {
-			// 	if ((this.ia.data.erobot[i].lastUpdate < now) && (this.ia.data.erobot[i].status == "moving")){
-			// 		this.ia.data.erobot[i].pos = {
-			// 			x: this.ia.data.erobot[i].pos.x +  this.ia.data.erobot[i].speed.x*Math.abs(this.ia.data.erobot[i].lastUpdate - now),
-			// 			y: this.ia.data.erobot[i].pos.y +  this.ia.data.erobot[i].speed.y*Math.abs(this.ia.data.erobot[i].lastUpdate - now)
-			// 		};
-			// 		this.ia.data.erobot[i].speed = {
-			// 			x:0,
-			// 			y:0,
-			// 		};
-			// 		this.ia.data.erobot[i].status = "lost";
-			// 		this.ia.data.erobot[i].lastUpdate = now;
-			// 		this.nb_lost = 0;
-			// 	} else if ((this.ia.data.erobot[i].lastUpdate < now) && (this.ia.data.erobot[i].status == "lost") && (this.nb_lost<LOST_TIMEOUT)){
-			// 		this.nb_lost += 1;
-			// 	} else if ((this.ia.data.erobot[i].lastUpdate < now) && (this.ia.data.erobot[i].status == "lost") && (this.nb_lost==LOST_TIMEOUT)){
-			// 		// Si le robot était déjà perdu à l'itération d'avant
-			// 		this.mayday("On a perdu le "+this.ia.data.erobot[i].name + " ennemi");
-			// 	}
-			// }
-
-			// this.lastNow = now;
-
-			// this.detectCollision(dots);
-			// this.ia.data.dots = dots.map(function(val){
-			// 	return {
-			// 		pos: val,
-			// 		d: 320
-			// 	};	
-			// });
-
-			for(var d in dots) {
-				if(d.x > 300 && d.x < 2700 && d.y > 300 && d.y < 1700) {
-					this.ia.pr.stop();
-				}
-			}
-
-			timeout = setTimeout(function() {this.timedOut();}.bind(this) , 1000);
-		}
-
-	};
-
-	/**
-	 * Detects Collision
-	 * 
-	 * @param {Object} dots
-	 */
-	Hokuyo.prototype.detectCollision = function(dots) {
-		var collision = false;
-		var pf = this.ia.pr.path;
-		var minDist;
-		// for each path segment
-		var complete_path = [this.ia.pr.pos].concat(this.ia.pr.path);
-		for (var i = 0; i < complete_path.length-1 && !collision; (i++) ) {
-			var segment = [complete_path[i], complete_path[i+1]]; // so segment[0][0] is the x value of the beginning of the segment
-			var segLength = this.getDistance({x:segment[0].x , y:segment[0].y }, {x:segment[1].x , y:segment[1].y });
-			var nthX = (segment[1].x-segment[0].x)*SEGMENT_DELTA_D/segLength; // segment X axis length nth 
-			var nthY = (segment[1].y-segment[0].y)*SEGMENT_DELTA_D/segLength;
-
-			// for each X cm of the segment
-			for (var j = 0; (j*SEGMENT_DELTA_D) < segLength && !collision; (j++)) {
-
-				var segPoint = {
-					x: segment[0].x + nthX*j,
-					y: segment[0].y + nthY*j
-				};
-
-				// distance to each estimated position of the ennemi robots
-				minDist = 10000;//this.getDistance(dots[0], segPoint);
-
-				for(var k = 0; k < dots.length; k++) {
-					var tmp = this.getDistance(dots[k], segPoint);
-					if (tmp < minDist) {
-						minDist = tmp;
-					}
-				}
-				// if (ebots.length == 2) {
-				// 	var tmp = this.getDistance(ebots[1], segPoint);
-				// 	if (tmp < minDist) {
-				// 		minDist = tmp;
-				// 	}
-				// }
-
-				// if one of the dist < security diameter, there will be a collision
-				if (minDist < 450) {
-					collision = true;
-				}
-				
-			}
-		}
-
-		if (collision) {
-			this.ia.pr.collision();
-		}
-	};
-
-	// Hokuyo.prototype.detectCollision = function() {
-	// 	var collision = false;
-	// 	var pf = this.ia.pr.path;
-	// 	var ebots = [{ // estimated positions
-	// 			x:this.ia.data.erobot[0].pos.x +  this.ia.data.erobot[0].speed.x*DELTA_T,
-	// 			y:this.ia.data.erobot[0].pos.y +  this.ia.data.erobot[0].speed.y*DELTA_T,
-	// 			d:this.ia.data.erobot[0].d
-	// 		}];
-
-	// 	if (this.ia.data.nb_erobots == 2) {
-	// 		ebots.push = {
-	// 			x:this.ia.data.erobot[1].pos.x +  this.ia.data.erobot[1].speed.x*DELTA_T,
-	// 			y:this.ia.data.erobot[1].pos.y +  this.ia.data.erobot[1].speed.y*DELTA_T,
-	// 			d:this.ia.data.erobot[1].d
-	// 		};
-	// 	}
-
-	// 	// for each path segment
-	// 	var complete_path = [this.ia.pr.pos].concat(this.ia.pr.path);
-	// 	for (var i = 0; i < complete_path.length-1 && !collision; (i++) ) {
-	// 		var segment = [complete_path[i], complete_path[i+1]]; // so segment[0][0] is the x value of the beginning of the segment
-	// 		var segLength = this.getDistance({x:segment[0].x , y:segment[0].y }, {x:segment[1].x , y:segment[1].y });
-	// 		var nthX = (segment[1].x-segment[0].x)*SEGMENT_DELTA_D/segLength; // segment X axis length nth 
-	// 		var nthY = (segment[1].y-segment[0].y)*SEGMENT_DELTA_D/segLength;
-
-	// 		// for each X cm of the segment
-	// 		for (var j = 0; (j*SEGMENT_DELTA_D) < segLength && !collision; (j++)) {
-
-	// 			var segPoint = {
-	// 				x: segment[0].x + nthX*j,
-	// 				y: segment[0].y + nthY*j
-	// 			};
-
-	// 			// distance to each estimated position of the ennemi robots
-	// 			var minDist = this.getDistance(ebots[0], segPoint);
-
-	// 			/*
-	// 			if (ebots.length == 2) {
-	// 				var tmp = this.getDistance(ebots[1], segPoint);
-	// 				if (tmp < minDist) {
-	// 					minDist = tmp;
-	// 				}
-	// 			}*/
-
-	// 			// if one of the dist < security diameter, there will be a collision
-	// 			if (minDist < SECURITY_COEF*ebots[0].d/2.0) {
-	// 				collision = true;
-	// 			}
-				
-	// 		}
-	// 	}
-
-	// 	if (collision) {
-	// 		this.ia.pr.collision();
-	// 	}
-	// };
-
-	/**
-	 * Updates number of robots
-	 * 
-	 * @param {int} nb Number of robots
-	 */
-	Hokuyo.prototype.updateNumberOfRobots = function (nb) {
-		switch (nb){
-			case 0:
-				this.nb_hokuyo = 0;
-				// Fatal error
-				this.mayday("On plus d'hokuyo");
-				break;
-			case 1:
-				this.nb_hokuyo = 1;
-				// bigger security zone ? throw startAgain ?
-				break;
-			case 2:
-				this.nb_hokuyo = 2;
-				break;
-			default:
-				logger.info("Invalid number of robots received :" + nb);
-		}
-	};
-
-	/**
-	 * May Day
-	 * 
-	 * @param {string} reason
-	 */
-	Hokuyo.prototype.mayday = function(reason) {
-		logger.error("Mayday called, the given reason is :");
-		logger.error(reason);
-
-		// XXX ? -> en fait on bloque peut-être pas ! : si le robot s'est vautré, c'est son soucis
-	};
-
-	/**
-	 * Parse Order
-	 * 
-	 * @param {string} from
-	 * @param {string} name
-	 * @param {Object} params
-	 */
-	Hokuyo.prototype.parseOrder = function (from, name, params) {
-		var orderName = name.split('.')[1];
-		switch (orderName){
-			case "position_tous_robots":
-				this.updatePos(params.dots);
-				break;
-			case "nb_hokuyo":
-				this.updateNumberOfRobots(params.nb);
-				break;
-			default:
-				logger.warn("Message name " + name + " not understood");
-		}
-	};
-
-	/**
-	 * Return true if the number of Hokuyo isn't equal to 0
-	 */
-	Hokuyo.prototype.isOk = function () {
-		if (this.nb_hokuyo === 0)
-			return false;
-		else
-			return true;
-	};
-
-	return Hokuyo;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_ia.Ia.html b/doc/ia_ia.Ia.html deleted file mode 100644 index 13116e5..0000000 --- a/doc/ia_ia.Ia.html +++ /dev/null @@ -1,1111 +0,0 @@ - - - - - Ia - Documentation - - - - - - - - - - - - - - - - -
- -

Ia

- - - - - - - -
- -
- -

- Ia -

- - -
- -
-
- - - - - -

new Ia(color, nb_erobots, EGR_d, EGPR_d)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Constructor of Ia -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
color - - -string - - - - - - yellow - -
nb_erobots - - -int - - - - - - 2 - - Number of robots in a team
EGR_d - - - - EGR diameter
EGPR_d - - - - EPR diameter
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

actions

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Actions -
- - - - - - - - - - -

client

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Socket client -
- - - - - - - - - - -

color

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Color of the IA team -
- - - - - - - - - - -

data

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Data -
- - - - - - - - - - -

export_simulator

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Export simulator -
- - - - - - - - - - -

gr

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Grand robot -
- - - - - - - - - - -

nb_erobots

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Number of robots controlled by the IA -
- - - - - - - - - - -

pathfinding

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Pathfinding -
- - - - - - - - - - -

pr

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Petit robot -
- - - - - - - - - - -

timer

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Timer -
- - - - - - - - - - - - -

Methods

- - - - - - -

jack()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Unjack action - -Starts the robots -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

stop()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Stop the robots and stop the programm -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_ia.class.js.html b/doc/ia_ia.class.js.html deleted file mode 100644 index 173cb9d..0000000 --- a/doc/ia_ia.class.js.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - ia/ia.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/ia.class.js

- - - - - - - -
-
-
/**
- * IA Module
- * 
- * @module ia/ia
- * @requires module:server/socket_client
- * @requires module:config
- * @requires module:ia/timer
- * @requires module:ia/pathfinding
- * @requires module:ia/data
- * @requires module:ia/actions
- * @requires module:ia/gr
- * @requires module:ia/pr
- * @requires module:ia/export_simulator
- * @see {@link ia/ia.Ia}
- */
-
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('ia.ia'); 
-	var log_counter = 0;
-
-	/**
-	 * Return the distance between two positions
-	 * 
-	 * @param {int} Ax
-	 * @param {int} Ay
-	 * @param {int} Bx
-	 * @param {int} By
-	 */
-	function norm(Ax, Ay, Bx, By) {
-		return Math.sqrt(Math.pow(Ax-Bx, 2) + Math.pow(Ay-By, 2));
-	}
-
-	/**
-	 * Constructor of Ia
-	 * 
-	 * @exports ia/ia.Ia
-	 * @constructor
-	 * @param {string} color=yellow
-	 * @param {int} nb_erobots=2 Number of robots in a team
-	 * @param EGR_d EGR diameter
-	 * @param EGPR_d EPR diameter
-	 */
-	function Ia(color, nb_erobots, EGR_d, EPR_d) {
-		var we_have_hats = true;
-		if(!color) {
-			logger.error('Please give a color to ia');
-		}
-		if(!nb_erobots) {
-			logger.error('Please give the number of ennemis robots');
-		}
-		if(!we_have_hats) {
-			logger.error('Please say true if we have something on our robots detectable by the Hokuyos');
-		}
-		if(!EGR_d) {
-			logger.error('Please give the EGR diameter');
-		}
-		if(!EPR_d) {
-			logger.error('Please give the EPR diameter');
-		}
-		/**
-		 * Color of the IA team
-		 */
-		this.color = color || "yellow";
-		/**
-		 * Number of robots controlled by the IA
-		 */
-		this.nb_erobots = nb_erobots || 2;
-		logger.info("Launching a "+this.color+" AI with "+this.nb_erobots+" ennemies.");
-		
-		/** Socket client */
-		this.client = new (require('../server/socket_client.class.js'))({type: 'ia', server_ip: require('../config.js').server });
-		/** Timer */
-		this.timer = new (require('./timer.class.js'))(this);
-		/** Pathfinding */
-		this.pathfinding = new (require('./pathfinding.class.js'))(this);
-		/** Data */
-		this.data = new (require('./data.class.js'))(this, this.nb_erobots, EGR_d, EPR_d);
-		/** Actions */
-		this.actions = new (require('./actions.class.js'))(this);
-		/** Grand robot */
-		this.gr = new (require('./gr.class.js'))(this, this.color);
-		/** Petit robot */
-		this.pr = new (require('./pr.class.js'))(this, this.color);
-		// this.hokuyo = new (require('./hokuyo.class.js'))(this, {
-		// 	color: this.color,
-		// 	nb_erobots: parseInt(this.nb_erobots),
-		// 	we_have_hats: (we_have_hats === "true")
-		// });
-		/** Export simulator */
-		this.export_simulator = new (require('./export_simulator.class.js'))(this);
-
-		this.client.send("server", "server.iaColor", {color: this.color});
-
-		this.client.order(function(from, name, params) {
-			var classe = name.split('.')[0];
-				// logger.debug(this[classe]);
-			if(classe == 'ia') {
-				switch(name) {
-					case 'ia.jack':
-						this.jack();
-					break;
-					case 'ia.stop':
-						this.stop();
-					break;
-					case 'ia.hok':
-						if ((log_counter++ % 15) == 0) {
-							logger.debug(params);
-						}
-						this.pr.updatePos(params);
-					break;
-					case 'ia.hokfailed':
-						 logger.fatal("HOKUYO NOT WORKING, UNPLUG AND REPLUG USB");
-						this.pr.updatePos(params);
-					break;
-					default:
-						logger.warn("Ordre pour l'ia inconnu : "+name);
-				}
-			} else if(!!this[classe]) {
-				// logger.debug("Order to class: "+classe);
-				if(!this[classe].parseOrder) {
-					logger.warn("Attention, pas de fonction parseOrder dans ia."+classe);
-				} else {
-					this[classe].parseOrder(from, name, params);
-				}
-			} else {
-				logger.warn("Sous client inconnu: "+classe);
-			}
-		}.bind(this));
-
-		// temp //
-		// this.gr.start();
-		// this.jack();
-		//////////
-	}
-
-	/**
-	 * Unjack action
-	 * 
-	 * Starts the robots
-	 */
-	Ia.prototype.jack = function() {
-		if(!this.timer.match_started) {
-			logger.info("Démarrage du match");
-			this.timer.start();
-			setTimeout(function() {
-				this.gr.start();
-			}.bind(this), 10000);
-			this.pr.start();
-			// this.hokuyo.start();
-		} else {
-			logger.warn("Match déjà lancé");
-		}
-	};
-
-	/**
-	 * Stop the robots and stop the programm
-	 */
-	Ia.prototype.stop = function() {
-		logger.fatal('Stop IA');
-		this.gr.stop();
-		this.pr.stop();
-		// this.hokuyo.stop();
-		setTimeout(process.exit, 1000);
-	};
-
-	return Ia;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_main.js.html b/doc/ia_main.js.html deleted file mode 100644 index 4a267a2..0000000 --- a/doc/ia_main.js.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - ia/main.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/main.js

- - - - - - - -
-
-
/**
- * Main module
- * 
- * @module ia/main
- * @requires ia/ia
- */
-
-(function () {
-	"use strict";
-
-	// Modules nodejs
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('ia.ia');
-
-	var color = process.argv[2];
-	if(!color) color = null;
-	var nb_erobots = process.argv[3];
-	if(!nb_erobots) nb_erobots = null;
-	var EGR_d = process.argv[4];
-	if(!EGR_d) EGR_d = null;
-	var EPR_d = process.argv[5];
-	if(!EPR_d) EPR_d = null;
-
-	var ia = new (require('./ia.class.js'))(color, nb_erobots, EGR_d, EPR_d);
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_pathfinding.Pathfinding.html b/doc/ia_pathfinding.Pathfinding.html deleted file mode 100644 index 5deceec..0000000 --- a/doc/ia_pathfinding.Pathfinding.html +++ /dev/null @@ -1,1127 +0,0 @@ - - - - - Pathfinding - Documentation - - - - - - - - - - - - - - - - -
- -

Pathfinding

- - - - - - - -
- -
- -

- Pathfinding -

- - -
- -
-
- - - - - -

new Pathfinding(ia)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Pathfinding constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ia - - -Ia - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ia

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Ia -
- - - - - - - - - - - - -

Methods

- - - - - - -

getPath(start, end, callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Get Path -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
start - -
end - -
callback - -
- - - - - - - - - - - - - - - - - - - - - -

sendDynamic(objects)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send Dynamic -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
objects - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

sendQuery(start, end, cb)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send a Query -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
start - -
end - -
cb - -
- - - - - - - - - - - - - - - - - - - - - -

updateMap()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Update Map -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(inner) parse(data)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Parse data -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
data - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

(inner) vecMultiply(arr, ratio)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Vector Multiply -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - -Object - - - -
ratio - - -int - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_pathfinding.class.js.html b/doc/ia_pathfinding.class.js.html deleted file mode 100644 index 55580c9..0000000 --- a/doc/ia_pathfinding.class.js.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - ia/pathfinding.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/pathfinding.class.js

- - - - - - - -
-
-
/**
- * Pathfinding module
- * 
- * @module ia/pathfinding
- * @see {@link ia/pathfinding.Pathfinding}
- */
-
-module.exports = (function () {
-	"use strict";
-
-	var Path = require('path');
-
-	var programm = Path.normalize("./pathfinding/bin/pathfinding");
-	var image = Path.normalize("./pathfinding/img/map-20mm-yellow.bmp");
-	var RATIO = 20;
-	var SEPARATOR = ";";
-
-	var logger = require('log4js').getLogger('ia.pathfinding');
-	var Child_process = require('child_process');
-	var Byline = require('byline');
-
-	/**
-	 * Pathfinding constructor
-	 * 
-	 * @exports ia/pathfinding.Pathfinding
-	 * @constructor
-	 * @param {Ia} ia
-	 */
-	function Pathfinding(ia) {
-		/** Ia */
-		this.ia = ia;
-		var fifo = [];
-
-		/*var instance_pkill = Child_process.spawn("pkill", ["pathfinding"]);
-		instance_pkill.on('error', function(err){
-			logger.error("error pkilling pathfinding code:"+err.code);
-		});
-		instance_pkill.on('exit', function(code){
-			logger.info("successfully pkilled all old instances of pathfinding");
-		});
-
-
-		var instance = Child_process.spawn(programm, [ image ]);*/
-		var instance = Child_process.spawn("bash", ["-c", "pkill pathfinding;"+programm+" "+image]);
-
-		instance.on('error', function(err) {
-			if(err.code === 'ENOENT'){
-				logger.fatal("pathfinding programm executable not found! Is it compiled ? :) Was looking in \""+Path.resolve(programm)+"\"");
-				process.exit();
-			}
-			logger.error("c++ subprocess terminated with error:", err);
-			console.log(err);
-		});
-		instance.on('exit', function(code) {
-			logger.fatal("c++ subprocess terminated with code:"+code);
-		});
-
-
-
-		process.on('exit', function(){ //ensure child process is killed
-			if(instance.connected){ //and was still connected (dont kill another process)
-				instance.kill();
-			}
-		});
-
-		var stdout = Byline.createStream(instance.stdout);
-		stdout.setEncoding('utf8')
-		stdout.on('data', function(data) {
-			logger.debug("Received: "+data);
-			parse(data);
-		});
-
-		instance.stderr.on('data', function(data) {
-			logger.error("stderr :"+data.toString());
-		});
-
-		/**
-		 * Vector Multiply
-		 * 
-		 * @param {Object} arr
-		 * @param {int} ratio
-		 */
-		function vecMultiply(arr, ratio){
-			return arr.map(function(val){
-				return Math.round(val*ratio);
-			});
-		}
-
-		/**
-		 * Send a Query
-		 * 
-		 * @param start
-		 * @param end
-		 * @param cb
-		 */
-		this.sendQuery = function(start, end, cb){
-			fifo.push(cb || true);
-
-
-			var str = ["C"].concat( vecMultiply(start, 1/RATIO) ).concat( vecMultiply(end, 1/RATIO) ).join(SEPARATOR) + "\n";
-			instance.stdin.write( str );
-			logger.info("Sending:"+str);
-		};
-
-		/**
-		 * Send Dynamic
-		 * 
-		 * @param {Object} objects
-		 */
-		this.sendDynamic = function(objects){
-			//X0, Y0, R0, ...
-			var str = ["D"].concat(objects.reduce(function(acc, obj){
-				return acc.concat( vecMultiply(obj, 1/RATIO) );
-			}, [])).join(SEPARATOR) + "\n";
-			// logger.debug(str);
-			instance.stdin.write(str);
-		}
-
-		/**
-		 * Parse data
-		 * 
-		 * @param {Object} data
-		 */
-		function parse (data) {
-			// X0; Y0; ... Xn; Yn
-			var ret = null;
-			if(data != "FAIL") {
-				var path = [];
-				var splitted = data.split(SEPARATOR);
-				while(splitted.length > 1){
-					path.push( vecMultiply([splitted.shift(), splitted.shift()], RATIO) );
-				}
-
-				
-				if(path.length > 0) ret = path;
-			}
-
-			var callback = fifo.shift();
-			callback(ret); // if(typeof callback === "function") 
-		}
-
-	}
-
-	/**
-	 * Get Path
-	 * 
-	 * @param start
-	 * @param end
-	 * @param callback
-	 */
-	Pathfinding.prototype.getPath = function (start, end, callback) {
-		this.ia.pathfinding.updateMap();
-		this.timeout_getpath = setTimeout(function() {
-			callback(null);
-			callback = function() {};
-		}, 1000);
-		this.sendQuery([start.x, start.y], [end.x, end.y], function(path){
-			clearTimeout(this.timeout_getpath);
-			if(path !== null) {
-				path.shift();
-				path = path.map(function(val) {
-					return {
-						x: val[0],
-						y: val[1]
-					};
-				});
-			}
-			callback(path);
-		}.bind(this));
-	};
-
-	/**
-	 * Borne
-	 * 
-	 * @param {int} x
-	 * @param {int} min
-	 * @param {int} max
-	 */
-	function borne(x, min, max) {
-		return x > max ? max : x < min ? min : x;
-	}
-	
-	/**
-	 * Update Map
-	 */
-	Pathfinding.prototype.updateMap = function () {
-		//[ [x, y, r], ... ]
-
-		// var objects = [];
-		// objects.push();
-		var objects = [{
-			pos: this.ia.gr.pos,
-			d: this.ia.gr.size.d
-		}].concat(this.ia.data.dots).concat(this.ia.data.dynamic);
-
-
-		// logger.debug(objects);
-
-		this.sendDynamic( objects.map(function(val){
-			// logger.debug(val);
-			return [borne(val.pos.x, 0, 2980), borne(val.pos.y, 0, 1980), 1*((val.d/2)+(this.ia.pr.size.d/2))];
-		}.bind(this)) );
-	};
-
-	return Pathfinding;
-})();
-
-/*
-(function(){
-	var pathfinding = new module.exports();
-	function log(result){
-		console.log("RESULT", result);
-		process.exit();
-	}
-
-	setTimeout(function(){
-		pathfinding.getPath([500,1000], [1500, 200], log);
-	}, 10);
-})();
-//*/
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_pr.class.js.html b/doc/ia_pr.class.js.html deleted file mode 100644 index fd997ce..0000000 --- a/doc/ia_pr.class.js.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - ia/pr.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/pr.class.js

- - - - - - - -
-
-
/**
- * Petit Robot Module
- * 
- * @module ia/pr
- * @see {@Link ia/pr.Pr}
- */
-
-module.exports = (function () {
-	"use strict";
-	var logger = require('log4js').getLogger('ia.pr');
-	var GR_OFFSET = 110;
-	var PR_GR_COEF = 1;
-
-	/**
-	 * Pr Constructor
-	 * 
-	 * @param {Object} ia
-	 * @param {string} color Team color
-	 */
-	function Pr(ia, color) {
-		/** IA */
-		this.ia = ia;
-		/** Position */
-		this.pos = { // if we are yellow, default, left side of the table
-			x: 0,
-			y: 0,
-			a: 0
-		};
-		/** Size of the robot */
-		this.size = {
-			l: 170,
-			L: 220,
-			d: 280
-		};
-		/** Current action */
-		this.current_action = null;
-		//this.path = null;
-		/** Path */
-		this.path = [];
-		/** Content */
-		this.content = {
-			nb_plots: 0,
-			gobelet:false
-		};
-		/** We have hats on the top */
-		this.we_have_hats = false;
-		/** Team color */
-		this.color = color;
-	}
-
-	/**
-	 * Loop
-	 */
-	Pr.prototype.loop = function () {
-		logger.debug('loop');
-		this.ia.actions.doNextAction(function() {
-			this.loop();
-		}.bind(this));
-	};
-
-	/**
-	 * Collision
-	 */
-	Pr.prototype.collision = function() {
-		if(this.path.length === 0) { // Utile quand on clique nous même sur le bouton dans le simu
-			logger.warn("Normalement impossible, collision sur un path vide ?");
-			//return;
-		}
-
-		logger.info('collision');
-		this.path = [];
-		this.ia.client.send('pr', "collision");
-		this.ia.actions.collision();
-		this.loop();
-	}
-	/**
-	 * Stop
-	 */
-	Pr.prototype.stop = function() {
-		this.ia.client.send('pr', 'stop');
-	}
-
-	/**
-	 * Place
-	 */
-	Pr.prototype.place = function () {
-		// logger.debug('place');
-		this.sendInitialPos();
-		this.ia.client.send('pr', 'placer');
-	};
-
-	/**
-	 * Start
-	 */
-	Pr.prototype.start = function () {
-		this.ia.client.send("pr", "ouvrir_ax12");
-		this.loop();
-	};
-
-	/**
-	 * Send initial position
-	 */
-	Pr.prototype.sendInitialPos = function () {
-		this.ia.client.send("pr", "setpos", {
-			x: 142,
-			y: 1000,
-			a: 0,
-			color: this.color
-		});
-	};
-
-	/**
-	 * Borne
-	 * 
-	 * @param {int} x
-	 * @param {int} min
-	 * @param {int} max
-	 */
-	function borne(x, min, max) {
-		return x > max ? max : x < min ? min : x;
-	}
-
-	/**
-	 * Parse Order
-	 * 
-	 * @param {string} from
-	 * @param {string} name
-	 * @param {Object} params
-	 */
-	Pr.prototype.parseOrder = function (from, name, params) {
-		switch(name) {
-			case 'pr.collision':
-				this.collision();
-			break;
-			// Asserv
-			case 'pr.pos':
-				params.x = borne(params.x, 0, 3000);
-				params.y = borne(params.y, 0, 2000);
-				this.pos = params;
-			break;
-			case 'pr.getpos':
-				this.sendInitialPos();
-			break;
-			case 'pr.placer':
-				this.place();
-			break;
-			case 'pr.plot++':
-				this.content.nb_plots += 1;
-			break;
-			case 'pr.plot0':
-				this.content.nb_plots = 0;
-			break;
-			case 'pr.gobelet1':
-				this.content.gobelet = true;
-			break;
-			case 'pr.gobelet0':
-				this.content.gobelet = false;
-			break;
-			case 'pr.hok':
-				this.updatePos(params);
-			break;
-			default:
-				logger.warn('Ordre inconnu dans ia.pr: '+name);
-		}
-	};
-
-	/** (mm) between 2 iterations on a segment to detect colision */
-	var SEGMENT_DELTA_D = 30;
-
-	/**
-	 * Return the distance between two spots
-	 * 
-	 * @param {Object} spot1
-	 * @param {int} spot1.x
-	 * @param {int} spot1.y
-	 * @param {Object} spot2
-	 * @param {int} spot2.x
-	 * @param {int} spot2.y
-	 */
-	Pr.prototype.getDistance = function (spot1, spot2) {
-		return Math.sqrt(Math.pow(spot1.x - spot2.x, 2) + Math.pow(spot1.y - spot2.y, 2));
-	};
-
-	/**
-	 * Detect Collision
-	 * 
-	 * @param {Objects} dots
-	 */
-	Pr.prototype.detectCollision = function(dots) {
-		var collision = false;
-		var pf = this.path;
-		var minDist;
-		// for each path segment
-		var complete_path = [this.pos].concat(this.path);
-		for (var i = 0; i < complete_path.length-1 && !collision; (i++) ) {
-			var segment = [complete_path[i], complete_path[i+1]]; // so segment[0][0] is the x value of the beginning of the segment
-			var segLength = this.getDistance({x:segment[0].x , y:segment[0].y }, {x:segment[1].x , y:segment[1].y });
-			var nthX = (segment[1].x-segment[0].x)*SEGMENT_DELTA_D/segLength; // segment X axis length nth 
-			var nthY = (segment[1].y-segment[0].y)*SEGMENT_DELTA_D/segLength;
-
-			// for each X cm of the segment
-			for (var j = 0; (j*SEGMENT_DELTA_D) < segLength && !collision; (j++)) {
-
-				var segPoint = {
-					x: segment[0].x + nthX*j,
-					y: segment[0].y + nthY*j
-				};
-
-				// distance to each estimated position of the ennemi robots
-				minDist = 10000;//this.getDistance(dots[0], segPoint);
-
-				for(var k = 0; k < dots.length; k++) {
-					var tmp = this.getDistance(dots[k], segPoint);
-					if (tmp < minDist) {
-						minDist = tmp;
-					}
-				}
-				// if (ebots.length == 2) {
-				// 	var tmp = this.getDistance(ebots[1], segPoint);
-				// 	if (tmp < minDist) {
-				// 		minDist = tmp;
-				// 	}
-				// }
-
-				// if one of the dist < security diameter, there will be a collision
-				if (minDist < 450) {
-					collision = true;
-				}
-				
-			}
-		}
-
-		if (collision) {
-			this.collision();
-		}
-	}
-
-	/**
-	 * Update position
-	 * 
-	 * @param {Object} dots
-	 */
-	Pr.prototype.updatePos = function(dots) {
-		if(this.ia.timer.match_started) {
-
-			// Invert if green
-			if(this.color == "green") {
-				dots = dots.map(function(val) {
-					return [val[0], 2000-val[1]];
-				});
-			}
-
-			// Delete our robots
-			for(var i in dots) {
-				if(this.norm(dots[i][0], dots[i][1], this.pos.x, this.pos.y) < 150 ||
-					this.norm(dots[i][0], dots[i][1], this.ia.gr.pos.x, this.ia.gr.pos.y) < 150)
-				dots.splice(i, 1);
-			}
-
-			// Check path
-			this.detectCollision(dots);
-
-			// Update data
-			this.ia.data.dots = dots.map(function(val) {
-				return {
-					pos: {
-						x: val[0],
-						y: val[1],
-					},
-					d: 320
-				}
-			});
-			if (dots.length > 0) {
-				this.ia.data.erobot[0].pos= {
-					x: dots[0][0],
-					y: dots[0][1]
-				};
-
-				if (dots.length > 1) {
-					this.ia.data.erobot[1].pos= {
-						x: dots[1][0],
-						y: dots[1][1]
-					};
-				};
-			};
-
-			// logger.fatal(dots);
-			// logger.fatal(this.pos);
-			// logger.fatal(this.ia.data.erobot);
-		}
-	};
-
-	/**
-	 * Distance between two points
-	 * 
-	 * @param {int} Ax
-	 * @param {int} AY
-	 * @param {int} Bx
-	 * @param {int} BY
-	 */
-	Pr.prototype.norm = function(Ax, Ay, Bx, By) {
-		return Math.sqrt(Math.pow(Ax-Bx, 2) + Math.pow(Ay-By, 2));
-	}
-	
-	return Pr;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/ia_timer.Timer.html b/doc/ia_timer.Timer.html deleted file mode 100644 index 175ba6c..0000000 --- a/doc/ia_timer.Timer.html +++ /dev/null @@ -1,671 +0,0 @@ - - - - - Timer - Documentation - - - - - - - - - - - - - - - - -
- -

Timer

- - - - - - - -
- -
- -

- Timer -

- - -
- -
-
- - - - - -

new Timer(ia)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Timer Constructor -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ia - - -Object - - - -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ia

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- IA -
- - - - - - - - - - -

match_started

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Match started -
- - - - - - - - - - -

t0

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- t0 -
- - - - - - - - - - - - -

Methods

- - - - - - -

get()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Get Timer. Permet d'obtenir le temps écoulé en ms -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

start()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Start timer -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

status()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Status -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/ia_timer.class.js.html b/doc/ia_timer.class.js.html deleted file mode 100644 index 941f063..0000000 --- a/doc/ia_timer.class.js.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - ia/timer.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

ia/timer.class.js

- - - - - - - -
-
-
/**
- * Timer Module
- * 
- * @module ia/timer
- * @see {@link ia/timer.Timer}
- */
-
-module.exports = (function () {
-	"use strict";
-
-	/**
-	 * Timer Constructor
-	 * 
-	 * @exports ia/timer.Timer
-	 * @constructor
-	 * @param {Object} ia
-	 */
-	function Timer(ia) {
-		/** t0 */
-		this.t0 = null;
-		/** Match started */
-		this.match_started = false;
-		/** IA */
-		this.ia = ia;
-	}
-	/**
-	 * Start timer
-	 */
-	Timer.prototype.start = function() {
-		this.t0 = Date.now();
-		this.match_started = true; // le match commence
-		setTimeout(function() {
-			logger.fatal("TIME OVER");
-			this.ia.stop();
-		}.bind(this), 89000);
-	};
-
-
-	/**
-	 * Get Timer. Permet d'obtenir le temps écoulé en ms
-	 */
-	Timer.prototype.get = function () {
-		if (this.match_started)
-			return Date.now() - this.t0;
-		else
-			return 0;
-	};
-	/**
-	 * Status
-	 */
-	Timer.prototype.status = function () {
-		if (this.match_started) {
-			return "Match started";
-		}
-		else {
-			return "Wainting for jack";
-		}
-	};
-
-	return Timer;
-})();
-
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/index.html b/doc/index.html deleted file mode 100644 index 697530a..0000000 --- a/doc/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Home - Documentation - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-client_gr_actuators.html b/doc/module-client_gr_actuators.html deleted file mode 100644 index 08bd71d..0000000 --- a/doc/module-client_gr_actuators.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - client/gr/actuators - Documentation - - - - - - - - - - - - - - - - -
- -

client/gr/actuators

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Actuators module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -

Requires

- -
    -
  • module:client/shared/fifo
  • - -
  • module:client/gr/servos
  • - -
  • module:client/gr/servos-simu
  • - -
  • module:client/shared/asserv
  • - -
  • module:client/shared/asserv-simu
  • -
- - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 15:31:03 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-client_gr_detect.html b/doc/module-client_gr_detect.html deleted file mode 100644 index 6bb8391..0000000 --- a/doc/module-client_gr_detect.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - client/gr/detect - Documentation - - - - - - - - - - - - - - - - -
- -

client/gr/detect

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Detect module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 15:31:03 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-client_gr_servos.html b/doc/module-client_gr_servos.html deleted file mode 100644 index 5afc262..0000000 --- a/doc/module-client_gr_servos.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - client/gr/servos - Documentation - - - - - - - - - - - - - - - - -
- -

client/gr/servos

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Servos module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 15:31:03 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_gr_actuators.html b/doc/module-clients_gr_actuators.html deleted file mode 100644 index 05a0dfb..0000000 --- a/doc/module-clients_gr_actuators.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - clients/gr/actuators - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/actuators

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_gr_detect.html b/doc/module-clients_gr_detect.html deleted file mode 100644 index 5325754..0000000 --- a/doc/module-clients_gr_detect.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/gr/detect - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/detect

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Detect module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_gr_main.html b/doc/module-clients_gr_main.html deleted file mode 100644 index c6ac699..0000000 --- a/doc/module-clients_gr_main.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - clients/gr/main - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/main

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_gr_servos-simu.html b/doc/module-clients_gr_servos-simu.html deleted file mode 100644 index ca667fb..0000000 --- a/doc/module-clients_gr_servos-simu.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/gr/servos-simu - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/servos-simu

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_gr_servos.html b/doc/module-clients_gr_servos.html deleted file mode 100644 index aa717e5..0000000 --- a/doc/module-clients_gr_servos.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - clients/gr/servos - Documentation - - - - - - - - - - - - - - - - -
- -

clients/gr/servos

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_actuators.html b/doc/module-clients_pr_actuators.html deleted file mode 100644 index f232f2f..0000000 --- a/doc/module-clients_pr_actuators.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - clients/pr/actuators - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/actuators

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_ax12-simu.html b/doc/module-clients_pr_ax12-simu.html deleted file mode 100644 index d66c26d..0000000 --- a/doc/module-clients_pr_ax12-simu.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/pr/ax12-simu - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/ax12-simu

- - - - - - - -
- -
- - - - - -
- -
-
- - -
AX12 Simulator module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_ax12.html b/doc/module-clients_pr_ax12.html deleted file mode 100644 index f3ec33c..0000000 --- a/doc/module-clients_pr_ax12.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/pr/ax12 - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/ax12

- - - - - - - -
- -
- - - - - -
- -
-
- - -
AX12 module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_detect.html b/doc/module-clients_pr_detect.html deleted file mode 100644 index 86f214e..0000000 --- a/doc/module-clients_pr_detect.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/pr/detect - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/detect

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Detect module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_elevator.html b/doc/module-clients_pr_elevator.html deleted file mode 100644 index f255a7c..0000000 --- a/doc/module-clients_pr_elevator.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/pr/elevator - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/elevator

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Elevator module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_main.html b/doc/module-clients_pr_main.html deleted file mode 100644 index 0c4de4b..0000000 --- a/doc/module-clients_pr_main.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - clients/pr/main - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/main

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_others-simu.html b/doc/module-clients_pr_others-simu.html deleted file mode 100644 index 57ed393..0000000 --- a/doc/module-clients_pr_others-simu.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/pr/others-simu - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/others-simu

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_pr_others.html b/doc/module-clients_pr_others.html deleted file mode 100644 index 55a92d8..0000000 --- a/doc/module-clients_pr_others.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/pr/others - Documentation - - - - - - - - - - - - - - - - -
- -

clients/pr/others

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Others module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_shared_asserv-simu.html b/doc/module-clients_shared_asserv-simu.html deleted file mode 100644 index 1cd7588..0000000 --- a/doc/module-clients_shared_asserv-simu.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/shared/asserv-simu - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/asserv-simu

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_shared_asserv.html b/doc/module-clients_shared_asserv.html deleted file mode 100644 index 974a54d..0000000 --- a/doc/module-clients_shared_asserv.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - clients/shared/asserv - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/asserv

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_shared_defineParser.html b/doc/module-clients_shared_defineParser.html deleted file mode 100644 index 9e85767..0000000 --- a/doc/module-clients_shared_defineParser.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - clients/shared/defineParser - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/defineParser

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Define Parser module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-clients_shared_fifo.html b/doc/module-clients_shared_fifo.html deleted file mode 100644 index 4b5ea2f..0000000 --- a/doc/module-clients_shared_fifo.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - clients/shared/fifo - Documentation - - - - - - - - - - - - - - - - -
- -

clients/shared/fifo

- - - - - - - -
- -
- - - - - -
- -
-
- - -
First In First Out module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-config.html b/doc/module-config.html deleted file mode 100644 index 271529d..0000000 --- a/doc/module-config.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - config - Documentation - - - - - - - - - - - - - - - - -
- -

config

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Server config
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_actions.html b/doc/module-ia_actions.html deleted file mode 100644 index ce7b472..0000000 --- a/doc/module-ia_actions.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/actions - Documentation - - - - - - - - - - - - - - - - -
- -

ia/actions

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Actions Module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_data.html b/doc/module-ia_data.html deleted file mode 100644 index bd89108..0000000 --- a/doc/module-ia_data.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/data - Documentation - - - - - - - - - - - - - - - - -
- -

ia/data

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Data Module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_export_simulator.html b/doc/module-ia_export_simulator.html deleted file mode 100644 index 9722dd4..0000000 --- a/doc/module-ia_export_simulator.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/export_simulator - Documentation - - - - - - - - - - - - - - - - -
- -

ia/export_simulator

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_gr.html b/doc/module-ia_gr.html deleted file mode 100644 index 25f6d2e..0000000 --- a/doc/module-ia_gr.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/gr - Documentation - - - - - - - - - - - - - - - - -
- -

ia/gr

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Grand Robot Module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_hokuyo.html b/doc/module-ia_hokuyo.html deleted file mode 100644 index 8ba1e4a..0000000 --- a/doc/module-ia_hokuyo.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/hokuyo - Documentation - - - - - - - - - - - - - - - - -
- -

ia/hokuyo

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Hokuyo module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_ia.html b/doc/module-ia_ia.html deleted file mode 100644 index b51071c..0000000 --- a/doc/module-ia_ia.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - ia/ia - Documentation - - - - - - - - - - - - - - - - -
- -

ia/ia

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_main.html b/doc/module-ia_main.html deleted file mode 100644 index 4a35f13..0000000 --- a/doc/module-ia_main.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - ia/main - Documentation - - - - - - - - - - - - - - - - -
- -

ia/main

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Main module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -

Requires

- - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_pathfinding.html b/doc/module-ia_pathfinding.html deleted file mode 100644 index fa8b8ac..0000000 --- a/doc/module-ia_pathfinding.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/pathfinding - Documentation - - - - - - - - - - - - - - - - -
- -

ia/pathfinding

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Pathfinding module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_pr.html b/doc/module-ia_pr.html deleted file mode 100644 index 4258076..0000000 --- a/doc/module-ia_pr.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/pr - Documentation - - - - - - - - - - - - - - - - -
- -

ia/pr

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Petit Robot Module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
-
    -
  • ia/pr.Pr
  • -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-ia_timer.html b/doc/module-ia_timer.html deleted file mode 100644 index 8a3589e..0000000 --- a/doc/module-ia_timer.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - ia/timer - Documentation - - - - - - - - - - - - - - - - -
- -

ia/timer

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Timer Module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-server_server.html b/doc/module-server_server.html deleted file mode 100644 index f737377..0000000 --- a/doc/module-server_server.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - server/server - Documentation - - - - - - - - - - - - - - - - -
- -

server/server

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Server module
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
See:
-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -

Requires

- - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-server_socket_client.html b/doc/module-server_socket_client.html deleted file mode 100644 index 65aa1e4..0000000 --- a/doc/module-server_socket_client.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - server/socket_client - Documentation - - - - - - - - - - - - - - - - -
- -

server/socket_client

- - - - - - - -
- -
- - - - - -
- - - -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/module-utcoupe_utcoupe.html b/doc/module-utcoupe_utcoupe.html deleted file mode 100644 index a36f946..0000000 --- a/doc/module-utcoupe_utcoupe.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - utcoupe/utcoupe - Documentation - - - - - - - - - - - - - - - - -
- -

utcoupe/utcoupe

- - - - - - - -
- -
- - - - - -
- -
-
- - -
Main application
- - - - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -

Requires

- - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/scripts/linenumber.js b/doc/scripts/linenumber.js deleted file mode 100644 index 9cb8914..0000000 --- a/doc/scripts/linenumber.js +++ /dev/null @@ -1,25 +0,0 @@ -/*global document */ -(function() { - var source = document.getElementsByClassName('prettyprint source linenums'); - var i = 0; - var lineNumber = 0; - var lineId; - var lines; - var totalLines; - var anchorHash; - - if (source && source[0]) { - anchorHash = document.location.hash.substring(1); - lines = source[0].getElementsByTagName('li'); - totalLines = lines.length; - - for (; i < totalLines; i++) { - lineNumber++; - lineId = 'line' + lineNumber; - lines[i].id = lineId; - if (lineId === anchorHash) { - lines[i].className += ' selected'; - } - } - } -})(); diff --git a/doc/scripts/prettify/Apache-License-2.0.txt b/doc/scripts/prettify/Apache-License-2.0.txt deleted file mode 100644 index 75b5248..0000000 --- a/doc/scripts/prettify/Apache-License-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/doc/scripts/prettify/lang-css.js b/doc/scripts/prettify/lang-css.js deleted file mode 100644 index bb6dbea..0000000 --- a/doc/scripts/prettify/lang-css.js +++ /dev/null @@ -1,2 +0,0 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/doc/scripts/prettify/prettify.js b/doc/scripts/prettify/prettify.js deleted file mode 100644 index ec2a488..0000000 --- a/doc/scripts/prettify/prettify.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p - - - - Server - Documentation - - - - - - - - - - - - - - - - -
- -

Server

- - - - - - - -
- -
- -

- Server -

- - -
- -
-
- - - - - -

new Server(server_portopt)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Starts a server on the port specified. Default port: 3128 -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
server_port - - -int - - - - - - <optional>
- - - - - -
- - 3128 - - Server port
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

ip :string

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -string - - -
  • -
- - - - - - - - -

ip_port :string

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -string - - -
  • -
- - - - - - - - -

network :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Create the network default object -
- - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

progs :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

server :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Create the server -
- - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - -

server_port :int

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -int - - -
  • -
- - - - - - - - -

utcoupe :Object

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - - - - - - -

Methods

- - - - - - -

launch()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Launch the robot -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendNetwork()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send Network -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

sendUTCoupe(prog)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- sendUTCoupe -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
prog - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - -

stop(prog)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Stops all -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
prog - - -string - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/server_server.SocketClient.html b/doc/server_server.SocketClient.html deleted file mode 100644 index 5ab805b..0000000 --- a/doc/server_server.SocketClient.html +++ /dev/null @@ -1,1332 +0,0 @@ - - - - - SocketClient - Documentation - - - - - - - - - - - - - - - - -
- -

SocketClient

- - - - - - - -
- -
- -

- SocketClient -

- - -
- -
-
- - - - - -

new SocketClient(params)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Create a socket for the clients -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
server_ip - - -string - - - - - - <optional>
- - - - - -
- - 127.0.0.1:3128 - - Server IPv4 and port
type - - -string - - - - - - - - - - - - Type of client
- -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

callbacks

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- callbacks -
- - - - - - - - - - -

client

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- client -
- - - - - - - - - - -

server_ip :string

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Server IP -
- - - -
Type:
-
    -
  • - -string - - -
  • -
- - - - - - - - -

type

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Type of client -
- - - - - - - - - - - - -

Methods

- - - - - - -

connect(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- connect -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - -
- - - - - - - - - - - - - - - - - - - - - -

errorServerNotFound()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Throw Server not found -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

errorServerTimeout()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Throw Server timed out -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

order(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - -
- - - - - - - - - - - - - - - - - - - - - -

send(to, name, params)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send parameters -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
to - - -string - - - -
name - - -string - - - -
params - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

throwError(msg)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Appends the error message in the logger -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
msg - - -string - - - - message to send
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 15:24:25 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/server_server.class.js.html b/doc/server_server.class.js.html deleted file mode 100644 index 9b8f832..0000000 --- a/doc/server_server.class.js.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - server/server.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

server/server.class.js

- - - - - - - -
-
-
/**
- * Server module
- * @module server/server
- * @requires module:ia/main
- * @see {@link server/server.Server}
- */
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('Server');
-	var spawn = require('child_process').spawn;
-	var Convert = require('ansi-to-html');
-	var convert = new Convert({newLine: true});
-	var spawn = require('child_process').spawn;
-
-	/**
-	 * Starts a server on the port specified. Default port: 3128
-	 * 
-	 * @exports server/server.Server
-	 * @constructor
-	 * @param {int} [server_port=3128] Server port
-	 */
-	function Server(server_port) {
-		/**
-		 * @type {int}
-		 */
-		this.server_port = server_port || 3128;
-		
-		// Get server IP address
-		var os = require('os');
-		var networkInterfaces = os.networkInterfaces();
-		try {
-			/** @type {string} */
-			this.ip = networkInterfaces["eth0"][0].address || networkInterfaces["Wi-Fi"][0].address || "127.0.0.1";
-		}
-		catch(e) {
-			this.ip = "127.0.0.1";
-		}
-		/** @type {string} */
-		this.ip_port = this.ip+':'+this.server_port;
-
-		/**
-		 * Create the server
-		 * @type {Object}
-		 */
-		this.server = require('socket.io')();
-
-		/** 
-		 * Create the network default object
-		 * @type {Object}
-		 * */
-		this.network = {
-			server: {
-				name: "Server",
-				ip: this.ip_port
-			},
-			webclient: {},
-			ia: {},
-			hokuyo: {},
-			pr: {},
-			gr: {}
-		};
-		/** @type {Object} */
-		this.utcoupe = {
-			'ia': false,
-			'pr': false,
-			'gr': false,
-			'hokuyo': false
-		};
-		 /** @type {Object} */
-		this.progs = {
-			'ia': null,
-			'pr': null,
-			'gr': null,
-			'hokuyo': false
-		}
-
-		// When the client is connected
-		this.server.on('connection', function (client) {
-			// When the client is disconnected
-			client.on('disconnect', function() {
-				logger.info(client.type+" is disconnected!");
-				try {
-					delete this.network[client.type][client.id];
-				}
-				catch(e) { }
-				this.sendNetwork();
-			}.bind(this));
-
-			// When the client send his type
-			client.on('type', function(data) {
-				if(typeof data.type !== 'string') {
-					logger.error("The client type sent isn't a string");
-					return;
-				}
-				if(!(data.type in this.network)) {
-					logger.error("The client type `"+data.type+"` isn't valid");
-					return;
-				}
-				// The type is valid
-				client.type = data.type;
-				logger.info(client.type+" is connected!");
-				data.options.ip = client.handshake.address;
-				this.network[client.type][client.id] = data.options;
-				// console.log(this.network);
-				client.join(client.type);
-				client.emit('log', "Connected to the server successfully at " + client.handshake.headers.host);
-				this.sendNetwork();
-				this.sendUTCoupe();
-			}.bind(this));
-
-			// When the client send an order
-			client.on('order', function(data) {
-				// console.log(data);
-				if(typeof data !== 'object') {
-					logger.error("The client order sent isn't a object");
-					return;
-				}
-				if(data.to === undefined) {
-					logger.error("The order hasn't 'to' argument (recipient)");
-					return;
-				}
-				// if(!(data.to in client.adapter.rooms)) {
-				// 	logger.warn("The order recipient `"+data.to+"` doesn't exist.");
-				// }
-				if(data.name == 'server.launch') {
-					this.launch(data.params);
-				} else if(data.name == 'server.stop') {
-					this.stop(data.params);
-				} else if(data.name == 'server.childrenUpdate') {
-					// console.log(this.network);
-					this.network[client.type][client.id].status = data.params.status || "";
-					this.network[client.type][client.id].children = data.params.children || "";
-					// console.log(this.network);
-					this.sendNetwork();
-				} else if (data.name == 'server.iaColor') {
-					this.network[client.type][client.id].color = data.params.color || "";
-					this.sendNetwork();
-				} else if (data.name == 'server.sync_all_git') {
-					logger.info("Starting to sync all git repositories");
-					spawn('/root/sync_all_git.sh', [], {
-						detached: true
-					});
-				} else if (data.name == 'server.flash_arduinos') {
-					logger.info("Starting to flash all arduinos");
-					spawn('/root/flash_all_arduinos.sh', [], {
-						detached: true
-					});
-				} else {
-					// The order is valid
-					// logger.info("Data " +data.name+ " from " +data.from+ " to " +data.to);
-					this.server.to('webclient').to(data.to).emit('order', data);
-				}
-			}.bind(this));
-		}.bind(this));
-
-		this.server.listen(this.server_port);
-		logger.info("Server started at "+this.ip_port);
-	}
-
-	/**
-	 * Send Network
-	 */
-	Server.prototype.sendNetwork = function(){
-		// logger.info("Message sent to webclient !");
-		// logger.info(this.network);
-		this.server.to('webclient').emit('order', {
-			to: 'webclient',
-			name: 'reseau',
-			params: {
-				network: this.network
-			},
-			from: 'server'
-			});
-	}
-
-	/**
-	 * Launch the robot
-	 */
-	Server.prototype.launch = function(params) {
-		var prog = params.prog;
-		if(!this.utcoupe[prog]) {
-			switch(prog) {
-				case 'ia':
-					this.progs[prog] = spawn('node', ['./ia/main.js', params.color, params.nb_erobots, params.EGR_d, params.EPR_d]);
-				break;
-				case 'pr':
-					this.progs[prog] = spawn('ssh', ['igep', '/root/main.sh']);
-				break;
-				case 'gr':
-					this.progs[prog] = spawn('node', ['./clients/gr/main.js']);
-				break;
-				case 'hokuyo':
-					this.progs[prog] = spawn('ssh', ['raspi', '/root/main.sh']);
-				break;
-			}
-
-			logger.info("[Launch]"+prog);
-
-
-			this.progs[prog].on('error', function (prog, err) {
-				this.server.to('webclient').emit('order', {
-					to: 'webclient',
-					name: 'logger',
-					params: {
-						head: '[ERROR]['+prog+'](code:'+err.code+')',
-						text: convert.toHtml(JSON.stringify(err))						
-					},
-					from: 'server'
-				});
-			}.bind(this, prog));
-			this.progs[prog].on('close', function (prog, code) {
-				logger.error("[CLOSE]"+prog);
-				this.server.to('webclient').emit('order', {
-					to: 'webclient',
-					name: 'logger',
-					// params: '[CLOSE]['+prog+'] '+data.toString(),
-					params: {
-						head: '[CLOSE]['+prog+'](code:'+code+')',
-						text: " "						
-					},
-					from: 'server'
-				});
-				this.stop(prog);
-			}.bind(this, prog));
-
-			this.progs[prog].stdout.on('data', function (prog, data) {
-				// logger.debug(data);
-				// for(var i in data) {
-				// 	if(data[i] == 5)
-				// 		logger.debug('LOL');
-				// }
-				this.server.to('webclient').emit('order', {
-					to: 'webclient',
-					name: 'logger',
-					params: {
-						head: '['+prog+'][stdout]',
-						text: convert.toHtml(data.toString())						
-					},
-					from: 'server'
-				});
-			}.bind(this, prog));
-			this.progs[prog].stderr.on('data', function (prog, data) {
-				this.server.to('webclient').emit('order', {
-					to: 'webclient',
-					name: 'logger',
-					params: {
-						source: '['+prog+'][stderr]',
-						text: convert.toHtml(data.toString())						
-					},
-					from: 'server'
-				});
-			}.bind(this, prog));
-			 
-				// logger.debug(prog);
-				// logger.fatal(prog, '|stdout|', data.toString());
-			this.utcoupe[prog] = true;
-		}
-		this.sendUTCoupe();
-	}
-
-	/**
-	 * Stops all
-	 * 
-	 * @param {string} prog
-	 */
-	Server.prototype.stop = function(prog) {
-		if (prog == "pr") {
-			this.progs[prog] = spawn('ssh', ['igep', 'pkill', 'node']);
-		} else if (prog == "hokuyo") {
-			this.progs[prog] = spawn('ssh', ['raspi', 'pkill', 'node']);
-		}
-		if(this.utcoupe[prog]) {
-			this.progs[prog].kill();
-			logger.info("stopped "+prog);
-			this.utcoupe[prog] = false;
-		}
-		this.sendUTCoupe();
-	}
-
-	/**
-	 * sendUTCoupe
-	 * 
-	 * @param {string} prog
-	 */
-	Server.prototype.sendUTCoupe = function(prog) {
-		this.server.to('webclient').emit('order', {
-			to: 'webclient',
-			name: 'utcoupe',
-			params: this.utcoupe,
-			from: 'server'
-		});
-	}
-
-	return Server;
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/server_socket_client.SocketClient.html b/doc/server_socket_client.SocketClient.html deleted file mode 100644 index 8421ba2..0000000 --- a/doc/server_socket_client.SocketClient.html +++ /dev/null @@ -1,1332 +0,0 @@ - - - - - SocketClient - Documentation - - - - - - - - - - - - - - - - -
- -

SocketClient

- - - - - - - -
- -
- -

- SocketClient -

- - -
- -
-
- - - - - -

new SocketClient(params)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Create a socket for the clients -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
server_ip - - -string - - - - - - <optional>
- - - - - -
- - 127.0.0.1:3128 - - Server IPv4 and port
type - - -string - - - - - - - - - - - - Type of client
- -
- - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -

Members

- - - -

callbacks

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- callbacks -
- - - - - - - - - - -

client

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- client -
- - - - - - - - - - -

server_ip :string

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Server IP -
- - - -
Type:
-
    -
  • - -string - - -
  • -
- - - - - - - - -

type

- - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Type of client -
- - - - - - - - - - - - -

Methods

- - - - - - -

connect(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- connect -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - -
- - - - - - - - - - - - - - - - - - - - - -

errorServerNotFound()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Throw Server not found -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

errorServerTimeout()

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Throw Server timed out -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

order(callback)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- order -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
callback - -
- - - - - - - - - - - - - - - - - - - - - -

send(to, name, params)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Send parameters -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
to - - -string - - - -
name - - -string - - - -
params - - -Object - - - -
- - - - - - - - - - - - - - - - - - - - - -

throwError(msg)

- - - - - - -
- - -
Source:
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- Appends the error message in the logger -
- - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
msg - - -string - - - - message to send
- - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - \ No newline at end of file diff --git a/doc/server_socket_client.class.js.html b/doc/server_socket_client.class.js.html deleted file mode 100644 index 695ef0d..0000000 --- a/doc/server_socket_client.class.js.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - server/socket_client.class.js - Documentation - - - - - - - - - - - - - - - - -
- -

server/socket_client.class.js

- - - - - - - -
-
-
/**
- * Socket Client
- * 
- * @module server/socket_client
- * @see {@link server/socket_client.SocketClient}
- */
-
-module.exports = (function () {
-	"use strict";
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('Client');
-
-	/**
-	 * Create a socket for the clients
-	 * 
-	 * @exports server/socket_client.SocketClient
-	 * @constructor
-	 * @param {Object} params
-	 * @param {string} [params.server_ip=127.0.0.1:3128] Server IPv4 and port
-	 * @param {string} params.type Type of client
-	 */
-	function SocketClient(params) {
-		/**
-		 * Server IP
-		 * @type {string}
-		 */
-		this.server_ip = params.server_ip || '127.0.0.1:3128';
-		/**
-		 * client
-		 */
-		this.client = require('socket.io-client')('http://'+this.server_ip);
-		/**
-		 * callbacks
-		 */
-		this.callbacks = {};
-
-		if(!!params.type)
-			/** Type of client */
-			this.type = params.type;
-		else
-			logger.error("Missing client type.");
-
-		// When the client is connected to the server
-		this.client.on('connect', function(){
-			logger.info('Client connected from server');
-			this.client.emit('type', {
-				type: this.type,
-				options: {
-					name: this.type
-				}
-			});
-			if(!!this.callbacks.connect)
-				this.callbacks.connect();
-			// this.client.emit('order', {to:'client2',text:'Hello!'});
-		}.bind(this));
-
-		// When the client receive log from the server
-		this.client.on('log', function(data){
-			logger.info('[Server log] '+data);
-		}.bind(this));
-
-		// When the client receive order from the server
-		this.client.on('order', function(data){
-			// logger.info('[Order to '+data.to+'] '+data.text);
-			if(!!this.callbacks.order)
-				if (!!data.name)
-					this.callbacks.order(data.from, data.name, data.params || {});
-				else
-					logger.error("Order has no name ! : " + data);
-		}.bind(this));
-
-		// If after 500ms the client isn't connected, throw "server not found" error
-		setTimeout(function() {
-			if(this.client.disconnected)
-				this.errorServerNotFound();
-		}.bind(this), 500);
-	}
-
-	/**
-	 * connect
-	 * 
-	 * @param callback
-	 */
-	SocketClient.prototype.connect = function (callback) {
-		this.callbacks.connect = callback;
-	};
-
-	/**
-	 * order
-	 * 
-	 * @param callback
-	 */
-	SocketClient.prototype.order = function (callback) {
-		this.callbacks.order = callback;
-	};
-	/**
-	 * Send parameters
-	 * 
-	 * @param {string} to
-	 * @param {string} name
-	 * @param {Object} params
-	 */
-	SocketClient.prototype.send = function (to, name, params) {
-		// logger.debug('send %s to %s', name, to);
-		this.client.emit('order', {
-			to: to,
-			name: name,
-			params: params,
-			from: this.type
-		});
-	};
-
-	// Error functions
-	/**
-	 * Appends the error message in the logger
-	 * 
-	 * @param {string} msg message to send
-	 */
-	SocketClient.prototype.throwError = function (msg) {
-		logger.error(msg);
-	};
-	/**
-	 * Throw Server not found
-	 */
-	SocketClient.prototype.errorServerNotFound = function () {
-		this.throwError('Server not found at '+this.server_ip+', please make sure the server is running.');
-	};
-	/**
-	 * Throw Server timed out
-	 */
-	SocketClient.prototype.errorServerTimeout = function () {
-		this.throwError('Server timed out, please make sure the server is still running.');
-	};
-
-	return SocketClient;
-})();
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - diff --git a/doc/styles/jsdoc.css b/doc/styles/jsdoc.css deleted file mode 100644 index c13c7d4..0000000 --- a/doc/styles/jsdoc.css +++ /dev/null @@ -1,645 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Montserrat:400,700); - -* { - box-sizing: border-box -} - -html, body { - height: 100%; - width: 100%; -} - -body { - color: #4d4e53; - background-color: white; - margin: 0 auto; - padding: 0 20px; - font-family: 'Helvetica Neue', Helvetica, sans-serif; - font-size: 16px; - line-height: 160%; -} - -a, -a:active { - color: #606; - text-decoration: none; -} - -a:hover { - text-decoration: none; -} - -article a { - border-bottom: 1px solid #ddd; -} - -article a:hover, article a:active { - border-bottom-color: #222; -} - -p, ul, ol, blockquote { - margin-bottom: 1em; -} - -h1, h2, h3, h4, h5, h6 { - font-family: 'Montserrat', sans-serif; -} - -h1, h2, h3, h4, h5, h6 { - color: #000; - font-weight: 400; - margin: 0; -} - -h1 { - font-weight: 300; - font-size: 48px; - margin: 1em 0 .5em; -} - -h1.page-title { - font-size: 48px; - margin: 1em 30px; -} - -h2 { - font-size: 24px; - margin: 1.5em 0 .3em; -} - -h3 { - font-size: 24px; - margin: 1.2em 0 .3em; -} - -h4 { - font-size: 18px; - margin: 1em 0 .2em; - color: #4d4e53; -} - -h4.name { - color: #fff; - background: #6d426d; - box-shadow: 0 .25em .5em #d3d3d3; - border-top: 1px solid #d3d3d3; - border-bottom: 1px solid #d3d3d3; - margin: 1.5em 0 0.5em; - padding: .75em 0 .75em 10px; -} - -h4.name a { - color: #fc83ff; -} - -h4.name a:hover { - border-bottom-color: #fc83ff; -} - -h5, .container-overview .subsection-title { - font-size: 120%; - letter-spacing: -0.01em; - margin: 8px 0 3px 0; -} - -h6 { - font-size: 100%; - letter-spacing: -0.01em; - margin: 6px 0 3px 0; - font-style: italic; -} - -tt, code, kbd, samp { - font-family: Consolas, Monaco, 'Andale Mono', monospace; - background: #f4f4f4; - padding: 1px 5px; -} - -.class-description { - font-size: 130%; - line-height: 140%; - margin-bottom: 1em; - margin-top: 1em; -} - -.class-description:empty { - margin: 0 -} - -#main { - float: right; - min-width: 360px; - width: calc(100% - 240px); -} - -header { - display: block -} - -section { - display: block; - background-color: #fff; - padding: 0 0 0 30px; -} - -.variation { - display: none -} - -.signature-attributes { - font-size: 60%; - color: #eee; - font-style: italic; - font-weight: lighter; -} - -nav { - float: left; - display: block; - width: 250px; - background: #fff; - overflow: auto; - position: fixed; - height: 100%; -} - -nav h3 { - margin-top: 12px; - font-size: 13px; - text-transform: uppercase; - letter-spacing: 1px; - font-weight: 700; - line-height: 24px; - margin: 15px 0 10px; - padding: 0; - color: #000; -} - -nav ul { - font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; - font-size: 100%; - line-height: 17px; - padding: 0; - margin: 0; - list-style-type: none; -} - -nav ul a, -nav ul a:active { - font-family: 'Montserrat', sans-serif; - line-height: 18px; - padding: 0; - display: block; - font-size: 12px; -} - -nav a:hover, -nav a:active { - color: #606; -} - -nav > ul { - padding: 0 10px; -} - -nav > ul > li > a { - color: #606; -} - -nav ul ul { - margin-bottom: 10px -} - -nav ul ul + ul { - margin-top: -10px; -} - -nav ul ul a { - color: hsl(207, 1%, 60%); - border-left: 1px solid hsl(207, 10%, 86%); -} - -nav ul ul a, -nav ul ul a:active { - padding-left: 20px -} - -nav h2 { - font-size: 12px; - margin: 0; - padding: 0; -} - -nav > h2 > a { - display: block; - margin: 10px 0 -10px; - color: #606 !important; -} - -footer { - color: hsl(0, 0%, 28%); - margin-left: 250px; - display: block; - padding: 15px; - font-style: italic; - font-size: 90%; -} - -.ancestors { - color: #999 -} - -.ancestors a { - color: #999 !important; -} - -.clear { - clear: both -} - -.important { - font-weight: bold; - color: #950B02; -} - -.yes-def { - text-indent: -1000px -} - -.type-signature { - color: #CA79CA -} - -.type-signature:last-child { - color: #eee; -} - -.name, .signature { - font-family: Consolas, Monaco, 'Andale Mono', monospace -} - -.signature { - color: #fc83ff; -} - -.details { - margin-top: 6px; - border-left: 2px solid #DDD; - line-height: 20px; - font-size: 14px; -} - -.details dt { - width: 120px; - float: left; - padding-left: 10px; -} - -.details dd { - margin-left: 70px; - margin-top: 6px; - margin-bottom: 6px; -} - -.details ul { - margin: 0 -} - -.details ul { - list-style-type: none -} - -.details pre.prettyprint { - margin: 0 -} - -.details .object-value { - padding-top: 0 -} - -.description { - margin-bottom: 1em; - margin-top: 1em; -} - -.code-caption { - font-style: italic; - font-size: 107%; - margin: 0; -} - -.prettyprint { - font-size: 14px; - overflow: auto; -} - -.prettyprint.source { - width: inherit; - line-height: 18px; - display: block; - background-color: #0d152a; - color: #aeaeae; -} - -.prettyprint code { - line-height: 18px; - display: block; - background-color: #0d152a; - color: #4D4E53; -} - -.prettyprint > code { - padding: 15px; -} - -.prettyprint .linenums code { - padding: 0 15px -} - -.prettyprint .linenums li:first-of-type code { - padding-top: 15px -} - -.prettyprint code span.line { - display: inline-block -} - -.prettyprint.linenums { - padding-left: 70px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.prettyprint.linenums ol { - padding-left: 0 -} - -.prettyprint.linenums li { - border-left: 3px #34446B solid; -} - -.prettyprint.linenums li.selected, .prettyprint.linenums li.selected * { - background-color: #34446B; -} - -.prettyprint.linenums li * { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.params, .props { - border-spacing: 0; - border: 1px solid #ddd; - border-collapse: collapse; - border-radius: 3px; - box-shadow: 0 1px 3px rgba(0,0,0,0.1); - width: 100%; - font-size: 14px; - margin: 1em 0; -} - -.params .type { - white-space: nowrap; -} - -.params code { - white-space: pre; -} - -.params td, .params .name, .props .name, .name code { - color: #4D4E53; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 100%; -} - -.params td, .params th, .props td, .props th { - margin: 0px; - text-align: left; - vertical-align: top; - padding: 10px; - display: table-cell; -} - -.params td { - border-top: 1px solid #eee -} - -.params thead tr, .props thead tr { - background-color: #fff; - font-weight: bold; -} - -.params .params thead tr, .props .props thead tr { - background-color: #fff; - font-weight: bold; -} - -.params td.description > p:first-child, .props td.description > p:first-child { - margin-top: 0; - padding-top: 0; -} - -.params td.description > p:last-child, .props td.description > p:last-child { - margin-bottom: 0; - padding-bottom: 0; -} - -span.param-type, .params td .param-type, .param-type dd { - color: #606; - font-family: Consolas, Monaco, 'Andale Mono', monospace -} - -.param-type dt, .param-type dd { - display: inline-block -} - -.param-type { - margin: 14px 0; -} - -.disabled { - color: #454545 -} - -/* navicon button */ -.navicon-button { - display: none; - position: relative; - padding: 2.0625rem 1.5rem; - transition: 0.25s; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - opacity: .8; -} -.navicon-button .navicon:before, .navicon-button .navicon:after { - transition: 0.25s; -} -.navicon-button:hover { - transition: 0.5s; - opacity: 1; -} -.navicon-button:hover .navicon:before, .navicon-button:hover .navicon:after { - transition: 0.25s; -} -.navicon-button:hover .navicon:before { - top: .825rem; -} -.navicon-button:hover .navicon:after { - top: -.825rem; -} - -/* navicon */ -.navicon { - position: relative; - width: 2.5em; - height: .3125rem; - background: #000; - transition: 0.3s; - border-radius: 2.5rem; -} -.navicon:before, .navicon:after { - display: block; - content: ""; - height: .3125rem; - width: 2.5rem; - background: #000; - position: absolute; - z-index: -1; - transition: 0.3s 0.25s; - border-radius: 1rem; -} -.navicon:before { - top: .625rem; -} -.navicon:after { - top: -.625rem; -} - -/* open */ -.nav-trigger:checked + label:not(.steps) .navicon:before, -.nav-trigger:checked + label:not(.steps) .navicon:after { - top: 0 !important; -} - -.nav-trigger:checked + label .navicon:before, -.nav-trigger:checked + label .navicon:after { - transition: 0.5s; -} - -/* Minus */ -.nav-trigger:checked + label { - -webkit-transform: scale(0.75); - transform: scale(0.75); -} - -/* × and + */ -.nav-trigger:checked + label.plus .navicon, -.nav-trigger:checked + label.x .navicon { - background: transparent; -} - -.nav-trigger:checked + label.plus .navicon:before, -.nav-trigger:checked + label.x .navicon:before { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - background: #FFF; -} - -.nav-trigger:checked + label.plus .navicon:after, -.nav-trigger:checked + label.x .navicon:after { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - background: #FFF; -} - -.nav-trigger:checked + label.plus { - -webkit-transform: scale(0.75) rotate(45deg); - transform: scale(0.75) rotate(45deg); -} - -.nav-trigger:checked ~ nav { - left: 0 !important; -} - -.nav-trigger:checked ~ .overlay { - display: block; -} - -.nav-trigger { - position: fixed; - top: 0; - clip: rect(0, 0, 0, 0); -} - -.overlay { - display: none; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - background: hsla(0, 0%, 0%, 0.5); - z-index: 1; -} - -@media only screen and (min-width: 320px) and (max-width: 680px) { - body { - overflow-x: hidden; - } - - nav { - background: #FFF; - width: 250px; - height: 100%; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: -250px; - z-index: 3; - padding: 0 10px; - transition: left 0.2s; - } - - .navicon-button { - display: inline-block; - position: fixed; - top: 1.5em; - right: 0; - z-index: 2; - } - - #main { - width: 100%; - min-width: 360px; - } - - #main h1.page-title { - margin: 1em 0; - } - - #main section { - padding: 0; - } - - footer { - margin-left: 0; - } -} - -/** Add a '#' to static members */ -[data-type="member"] a::before { - content: '#'; - display: inline-block; - margin-left: -14px; - margin-right: 5px; -} diff --git a/doc/styles/prettify.css b/doc/styles/prettify.css deleted file mode 100644 index 629bde5..0000000 --- a/doc/styles/prettify.css +++ /dev/null @@ -1,79 +0,0 @@ -.pln { - color: #ddd; -} - -/* string content */ -.str { - color: #61ce3c; -} - -/* a keyword */ -.kwd { - color: #fbde2d; -} - -/* a comment */ -.com { - color: #aeaeae; -} - -/* a type name */ -.typ { - color: #8da6ce; -} - -/* a literal value */ -.lit { - color: #fbde2d; -} - -/* punctuation */ -.pun { - color: #ddd; -} - -/* lisp open bracket */ -.opn { - color: #000000; -} - -/* lisp close bracket */ -.clo { - color: #000000; -} - -/* a markup tag name */ -.tag { - color: #8da6ce; -} - -/* a markup attribute name */ -.atn { - color: #fbde2d; -} - -/* a markup attribute value */ -.atv { - color: #ddd; -} - -/* a declaration */ -.dec { - color: #EF5050; -} - -/* a variable name */ -.var { - color: #c82829; -} - -/* a function name */ -.fun { - color: #4271ae; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} diff --git a/doc/utcoupe_utcoupe.js.html b/doc/utcoupe_utcoupe.js.html deleted file mode 100644 index d8ffcb9..0000000 --- a/doc/utcoupe_utcoupe.js.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - utcoupe/utcoupe.js - Documentation - - - - - - - - - - - - - - - - -
- -

utcoupe/utcoupe.js

- - - - - - - -
-
-
/**
- * Main application
- * 
- * @module utcoupe/utcoupe
- * @requires module:server/server
- */
-(function () {
-	/**
-	 * Server
-	 * @type {server/server.Server}
-	 */
-	var Server = require('../server/server.class.js');
-
-	var log4js = require('log4js');
-	var logger = log4js.getLogger('Server');
-
-	/** 
-	 * Create the server with default port
-	 */ 
-	var server = new Server();
-})();
-
-
-
- - - - -
- -
- -
- Documentation generated by JSDoc 3.4.3 on Sat Nov 12 2016 17:40:18 GMT+0100 (CET) using the docdash theme. -
- - - - - From f4727b8493fd80afa8fba65d58668350b87f8e4f Mon Sep 17 00:00:00 2001 From: Mindstan Date: Sat, 1 Apr 2017 19:52:07 +0200 Subject: [PATCH 13/74] Added ink-docstrap in dependencies --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index c4ddbba..0b82941 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "log4js": "^0.6.38", "serialport": "^4.0.3", "socket.io": "^1.5.0", - "socket.io-client": "^1.5.0" + "socket.io-client": "^1.5.0", + "ink-docstrap": "1.3.0" }, "devDependencies": { "docdash": "^0.4.0", From f58cf3210137c4c9fea8ea8584691f638302d833 Mon Sep 17 00:00:00 2001 From: Mindstan Date: Sat, 1 Apr 2017 20:56:42 +0200 Subject: [PATCH 14/74] Added some doc and made base code working --- clients/Asserv/Asserv.class.js | 16 +++++++++++----- clients/Asserv/AsservReal.class.js | 18 ++++++++++++++++-- clients/Asserv/AsservSimu.class.js | 19 ++++++++++++++++--- clients/Robot/grobot.class.js | 20 +++++++++++++++++--- clients/Robot/robot.class.js | 20 +++++++++++++++++--- clients/Robot/tibot.class.js | 20 +++++++++++++++++--- clients/client.class.js | 25 ++++++++++++++++++++----- clients/fifo.class.js | 6 +++--- 8 files changed, 117 insertions(+), 27 deletions(-) diff --git a/clients/Asserv/Asserv.class.js b/clients/Asserv/Asserv.class.js index b8dc3ee..4f56deb 100644 --- a/clients/Asserv/Asserv.class.js +++ b/clients/Asserv/Asserv.class.js @@ -1,11 +1,15 @@ /** * Module exportant la classe abstraite Asserve * - * @module clients/Asserv/asserv + * @module clients/Asserv/Asserv */ - -module.exports = class Asserv{ +/** + * Class Asserv. + * + * @memberof module:clients/Asserv/Asserv + */ +class Asserv{ /** * Creates an instance of Asserv. * @param {any} client @@ -25,7 +29,7 @@ module.exports = class Asserv{ /** @type {Object} */ this.pos = {}; - /** @type {clients/Asserv/asserv.asserv} */ + /** @type {clients/fifo.Fifo} */ this.fifo = fifo; } @@ -158,4 +162,6 @@ module.exports = class Asserv{ * @param {Object} callback */ setPid(p, i, d, callback){} -} \ No newline at end of file +} + +module.exports = Asserv; \ No newline at end of file diff --git a/clients/Asserv/AsservReal.class.js b/clients/Asserv/AsservReal.class.js index 22f5b87..9203121 100644 --- a/clients/Asserv/AsservReal.class.js +++ b/clients/Asserv/AsservReal.class.js @@ -1,7 +1,21 @@ +/** + * Classe implémentant l'asservissement en mode réel. + * + * @module clients/Asserv/AsservReal + */ +const Asserv = require('Asserv.class.js'); -module.exports = class AsservReal extends Asserv{ +/** + * Classe implémentant l'asservissement en mode réel + * + * @memberof module:clients/Asserv/AsservReal + * @extends {clients/Asserv/Asserv.Asserv} + */ +class AsservReal extends Asserv{ constructor(){ } -} \ No newline at end of file +} + +module.exports = AsservReal; \ No newline at end of file diff --git a/clients/Asserv/AsservSimu.class.js b/clients/Asserv/AsservSimu.class.js index b3fe2e5..7102b7b 100644 --- a/clients/Asserv/AsservSimu.class.js +++ b/clients/Asserv/AsservSimu.class.js @@ -1,8 +1,21 @@ +/** + * Module Asservissement en mode simulateur + * + * @module clients/Asserv/AsservSimu + */ +const Asserv = require('Asserv.class.js'); - -module.exports = class AsservSimu extends Asserv{ +/** + * Classe héritant de l'asservissement, mode simulateur + * + * @memberof module:clients/Asserv/AsservSimu + * @extends {clients/Asserv/Asserv.Asserv} + */ +class AsservSimu extends Asserv{ constructor(){ } -} \ No newline at end of file +} + +module.exports = AsservSimu; \ No newline at end of file diff --git a/clients/Robot/grobot.class.js b/clients/Robot/grobot.class.js index 084e592..6ac06cb 100644 --- a/clients/Robot/grobot.class.js +++ b/clients/Robot/grobot.class.js @@ -1,8 +1,22 @@ +/** + * Module du grand robot + * + * @module clients/Robot/grobot + */ +const Robot = require('robot.class.js'); - -module.exports = class Grobot extends Robot{ +/** + * Grand Robot + * + * @class Grobot + * @memberof module:clients/Robot/grobot + * @extends {clients/Robot/robot.Robot} + */ +class Grobot extends Robot{ constructor(){ } -} \ No newline at end of file +} + +module.exports = Grobot; \ No newline at end of file diff --git a/clients/Robot/robot.class.js b/clients/Robot/robot.class.js index 3cc9d96..c211637 100644 --- a/clients/Robot/robot.class.js +++ b/clients/Robot/robot.class.js @@ -1,8 +1,22 @@ +/** + * Module du robot de base + * + * @module clients/Robot/robot + */ +const Client = require('../client.class.js'); - -module.exports = class Robot extends Client{ +/** + * Robot abstrait + * + * @class Robot + * @memberof module:clients/Robot/robot + * @extends {clients/client.Client} + */ +class Robot extends Client{ constructor(){ } -} \ No newline at end of file +} + +module.exports = Robot; \ No newline at end of file diff --git a/clients/Robot/tibot.class.js b/clients/Robot/tibot.class.js index 63dc1da..296ebfe 100644 --- a/clients/Robot/tibot.class.js +++ b/clients/Robot/tibot.class.js @@ -1,8 +1,22 @@ +/** + * Module du petit robot + * + * @module clients/Robot/tibot + */ +const Robot = require('robot.class.js'); - -module.exports = class Tibot extends Robot{ +/** + * Petit Robot + * + * @class Grobot + * @memberof module:clients/Robot/tibot + * @extends {clients/Robot/robot.Robot} + */ +class Tibot extends Robot{ constructor(){ } -} \ No newline at end of file +} + +module.exports = Tibot; \ No newline at end of file diff --git a/clients/client.class.js b/clients/client.class.js index 59a9d57..5461e2e 100644 --- a/clients/client.class.js +++ b/clients/client.class.js @@ -1,7 +1,20 @@ - - - -module.exports = class Client { +/** + * Module du client de base + * + * @module clients/client + */ + + +/** + * Client abstrait + * + * @memberof module:clients/client + */ +class Client { + /** + * Creates an instance of Client. + * @param {any} status + */ constructor(status){ this.Log4js = require('log4js'); this.SocketClient = require('../../server/socket_client.class.js'); @@ -24,4 +37,6 @@ module.exports = class Client { status(){ } -} \ No newline at end of file +} + +module.exports = Client; \ No newline at end of file diff --git a/clients/fifo.class.js b/clients/fifo.class.js index 8d359f1..0ba705d 100644 --- a/clients/fifo.class.js +++ b/clients/fifo.class.js @@ -1,8 +1,8 @@ /** * First In First Out module * - * @module clients/shared/fifo - * @see {@link clients/shared/fifo.Fifo} + * @module clients/fifo + * @see {@link clients/fifo.Fifo} */ module.exports = (function () { @@ -11,7 +11,7 @@ module.exports = (function () { /** * Fifo Constructor * - * @exports clients/shared/fifo.Fifo + * @memberof module:clients/fifo * @constructor */ function Fifo() { From 362d67e16a6d9fb15b841b94ad77d688fa1f4ec3 Mon Sep 17 00:00:00 2001 From: Mindstan Date: Sat, 1 Apr 2017 21:10:13 +0200 Subject: [PATCH 15/74] Added missing requires --- clients/Asserv/AsservReal.class.js | 1 + clients/Asserv/AsservSimu.class.js | 1 + clients/Robot/grobot.class.js | 1 + clients/Robot/robot.class.js | 1 + clients/Robot/tibot.class.js | 1 + 5 files changed, 5 insertions(+) diff --git a/clients/Asserv/AsservReal.class.js b/clients/Asserv/AsservReal.class.js index 9203121..bf45250 100644 --- a/clients/Asserv/AsservReal.class.js +++ b/clients/Asserv/AsservReal.class.js @@ -2,6 +2,7 @@ * Classe implémentant l'asservissement en mode réel. * * @module clients/Asserv/AsservReal + * @requires module:clients/Asserv/Asserv */ const Asserv = require('Asserv.class.js'); diff --git a/clients/Asserv/AsservSimu.class.js b/clients/Asserv/AsservSimu.class.js index 7102b7b..d8eaba7 100644 --- a/clients/Asserv/AsservSimu.class.js +++ b/clients/Asserv/AsservSimu.class.js @@ -2,6 +2,7 @@ * Module Asservissement en mode simulateur * * @module clients/Asserv/AsservSimu + * @requires module:clients/Asserv/Asserv */ const Asserv = require('Asserv.class.js'); diff --git a/clients/Robot/grobot.class.js b/clients/Robot/grobot.class.js index 6ac06cb..1ea428b 100644 --- a/clients/Robot/grobot.class.js +++ b/clients/Robot/grobot.class.js @@ -2,6 +2,7 @@ * Module du grand robot * * @module clients/Robot/grobot + * @requires module:clients/Robot/robot */ const Robot = require('robot.class.js'); diff --git a/clients/Robot/robot.class.js b/clients/Robot/robot.class.js index c211637..adaa8f9 100644 --- a/clients/Robot/robot.class.js +++ b/clients/Robot/robot.class.js @@ -2,6 +2,7 @@ * Module du robot de base * * @module clients/Robot/robot + * @requires module:clients/client */ const Client = require('../client.class.js'); diff --git a/clients/Robot/tibot.class.js b/clients/Robot/tibot.class.js index 296ebfe..f0ed3f8 100644 --- a/clients/Robot/tibot.class.js +++ b/clients/Robot/tibot.class.js @@ -2,6 +2,7 @@ * Module du petit robot * * @module clients/Robot/tibot + * @requires module:clients/Robot/robot */ const Robot = require('robot.class.js'); From be4d949148dddb6c8d66a080d13553acc5d54566 Mon Sep 17 00:00:00 2001 From: mmxm Date: Sat, 1 Apr 2017 21:10:21 +0200 Subject: [PATCH 16/74] clustering implemented (only tested with hokuyo corner) --- hokuyo/main.js | 4 +- lidar/lidar.class.js | 92 ++++++++++++------- webclient/pages/hokuyo/hokuyoDisplay.class.js | 12 +-- 3 files changed, 67 insertions(+), 41 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index 51eb2f5..e277aa7 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -29,7 +29,7 @@ var server = process.argv[2] || config.server; var command = process.argv[3] || config.hokuyo_command; - + process.env.UTCOUPE_WORKSPACE = config.UTCOUPE_WORKSPACE; if (!process.env.UTCOUPE_WORKSPACE) { logger.error("Missing UTCOUPE_WORKSPACE environment variable. Make sure to call 'sudo -E node ...'"); process.exit(1); @@ -152,7 +152,7 @@ bufferData = bufferData + temp[2]; client.send("lidar", "hokuyo.polar_raw_data", { "hokuyo": temp[0], "polarSpots" : JSON.parse(bufferData) }); count = 0; - logger.warn(JSON.parse(bufferData)); + //logger.warn(JSON.parse(bufferData)); } } } diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index a21b0bb..32fabf5 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -121,6 +121,8 @@ module.exports = (function () { function Spot(angle, distance){ this.angle = angle; this.distance = distance; + this.filtered = true; + this.inTheTable = false; } Spot.prototype.toCartesian = function(lidar, hokName) { let ret = []; @@ -131,10 +133,10 @@ module.exports = (function () { // x is the forward axe // y is the RIGHT axe looking from the top // ie : the hokuyo on the back left hand corner, oriented to 0, has the same frame as the table translated a little - // thus, hokuyo positive angles are at its right hand + // thus, hokuyo positive angles are at its left hand let cartPt = [ - this.distance * Math.cos(lidar.toRadian(this.angle)), - this.distance * Math.sin(lidar.toRadian(this.angle)) + this.distance * Math.cos(lidar.toRadian(-this.angle)), + this.distance * Math.sin(lidar.toRadian(-this.angle)) ] // Change to table frame this.x = hokPos.x + cartPt[0] * Math.cos(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.sin(lidar.toRadian(hokPos.w)), @@ -156,27 +158,42 @@ module.exports = (function () { this.y = y/nb; } + Cluster.prototype.diagBox = function() { + let Xmax = 0, Ymax = 0, Xmin = 10000, Ymin = 10000, x, y; + for(let i = 0 ; i < this.spots.length; i++){ + x = this.spots[i].x; + y = this.spots[i].y; + if (Xmax < x ) Xmax = x; + if (Xmin > x) Xmin = x; + if (Ymax < x ) Ymax = y; + if (Ymin > x) Ymin = y; + } + x = Xmax - Xmin; + y = Ymax - Ymin; + let d = Math.sqrt(x*x +y*y); + this.diag = d ; + } /** * When Hokuyo data arrives */ Lidar.prototype.onHokuyoPolar = function (hokuyoName, polarSpots) { - logger.warn("nb points :" + polarSpots.length) + //logger.warn("nb points :" + polarSpots.length) let spots = this.createSpot(polarSpots); this.toCartesian(hokuyoName, spots); //clusterize let clusters = this.clusterize(spots) - logger.warn("nb clusters" + clusters.length); + //logger.warn("nb clusters" + clusters.length); // First Filter - Delete unused clusters and corresponding spots : // too big or too small clusters let filteredSpots = this.filterPolar(clusters); - logger.warn("nb spots:" + filteredSpots.length); + //logger.warn("nb spots:" + filteredSpots.length); // Save this.lastCartSpots[hokuyoName] = {}; this.lastCartSpots[hokuyoName].isWorking = function() { return Date.now() - this.time < 2 * DELTA_T; }; // we had some data no long ago this.lastCartSpots[hokuyoName].time = Date.now(); - this.lastCartSpots[hokuyoName].spots = filteredSpots; + this.lastCartSpots[hokuyoName].filteredSpots = spots; this.lastCartSpots[hokuyoName].clusters = clusters; @@ -190,13 +207,11 @@ module.exports = (function () { //logger.warn(this.mergedSpots); /* Merge very close clusters provided by two different hokuyo */ - - + //this.toCartesian(hokuyoName, this.mergedSpots); // Filter (bis) - //this.mergedSpots = this.filterCart(this.mergedSpots); - + this.mergedFilterSpots = this.filterCart(this.mergedSpots); // Find enemy robots - this.robotsSpots = this.findRobots(this.mergedSpots); + this.robotsSpots = this.findRobots(this.mergedFilterSpots); this.displaySpots = this.prepareData(this.mergedSpots); //renvoie un tableau de coordonnées prêt à être affiché // Prepare data @@ -247,11 +262,11 @@ module.exports = (function () { D : distance maximale entre deux points d'un même cluster k : la distance est calculée entre le point i et les k points précédents *****/ - var clusters = [], k = 5; + var clusters = [], k = 6; if(spotsIn.length < k){ return clusters; } - var g = 0, D = 3; + var g = 0, D = 5; var G = []; //le point Spot[i] appartient au groupe G[i] var d=[]; @@ -315,20 +330,19 @@ module.exports = (function () { for(let i = 0; i < clusters.length ; i++){ count.push(clusters[i].spots.length); clusters[i].calculCenter(); - if (clusters[i].spots.length >= 3 && clusters[i].spots.length <= 10 - && clusters[i].x <300 && clusters[i].x > 0 - && clusters[i].y <200 && clusters[i].y > 0){ + if (clusters[i].spots.length >= 3 && clusters[i].spots.length <= 50 || 1){ count3 = count3 +1; count1.push(clusters[i].spots.length); filteredClusters.push(clusters[i]); for(let j = 0; j < clusters[i].spots.length ; j++){ filteredSpots.push(clusters[i].spots[j]) + clusters[i].spots[j].filtered = false } } } clusters = filteredClusters; - //logger.warn(count, count1, count3); + logger.warn(count, count1, count3); return filteredSpots; }; @@ -355,15 +369,18 @@ module.exports = (function () { // Keep only points in the table for(let pt of cartSpots){ - if (isInTable(pt)) { - ret.push(pt); - } + //if (pt.x > 0 && pt.x < 295 && pt.y>0 && pt.y<195) { + // pt.inTheTable = true; + if (pt.filtered == false){ + ret.push(pt); + } + //} } + return ret; }; - Lidar.prototype.mergeSpots = function(cartSpots) { let ret = []; let workingHokuyos = this.hokuyosWorking(); @@ -372,22 +389,26 @@ module.exports = (function () { //logger.warn("TODO: check that cartSpots[workingHokuyos[0].name].spots works"); if (workingHokuyos.length == 2) { - for(let spot of cartSpots.one.spots) { - if(spot.x < 300 && spot.y < 200){ - ret.push(spot); + for(let spot of cartSpots.one.filteredSpot) { + if (spot.x > 0 && spot.x < 200 && spot.y>0 && spot.y<195) { + spot.inTheTable = true } + ret.push(spot); + } - for(let spot of cartSpots.two.spots) { - if(spot.x < 300 && spot.y < 200 ){ - ret.push(spot); + for(let spot of cartSpots.two.filteredSpots) { + if (spot.x > 0 && spot.x < 200 && spot.y>0 && spot.y<195) { + spot.inTheTable = true } + ret.push(spot); } } else if (workingHokuyos.length == 1) { - for(let spot of cartSpots[workingHokuyos[0].name].spots) { - if(spot.x < 300 && spot.x > 0 && spot.y < 200 && spot.y > 0){ - ret.push(spot); + for(let spot of cartSpots[workingHokuyos[0].name].filteredSpots) { + if (spot.x > 0 && spot.x < 295 && spot.y>0 && spot.y<195) { + spot.inTheTable = true } + ret.push(spot); } } else if (workingHokuyos.length == 0) { logger.warn("Trying to merge point without active hokuyo"); @@ -395,12 +416,16 @@ module.exports = (function () { return ret; }; + Lidar.prototype.findRobots = function(cartSpots) { let ret = []; - let clusters = this.clusterize(cartSpots); + let clusters = this.clusterize(cartSpots); + logger.warn("nb robots :" + clusters.length) for (let i = 0 ; i < clusters.length ; i++){ clusters[i].calculCenter(); + clusters[i].diagBox(); + if (clusters[i].diag < 7 && clusters[i].diag > 3) ret.push([clusters[i].x, clusters[i].y]); } /*ret = [ @@ -413,7 +438,8 @@ module.exports = (function () { Lidar.prototype.prepareData = function(spots){ let ret = []; for(let i = 0; i < spots.length ; i++){ - ret.push([spots[i].x, spots[i].y]) + if (spots[i].inTheTable == true) + ret.push([spots[i].x, spots[i].y]) } return ret; } diff --git a/webclient/pages/hokuyo/hokuyoDisplay.class.js b/webclient/pages/hokuyo/hokuyoDisplay.class.js index 3a59441..bb84f51 100644 --- a/webclient/pages/hokuyo/hokuyoDisplay.class.js +++ b/webclient/pages/hokuyo/hokuyoDisplay.class.js @@ -33,15 +33,15 @@ class HokuyoDisplay { this.realH = 0; this.W = 0; this.H = 0; - this.center = {}; - this.center.x = 0; + this.center = {}; + this.center.x = 0; this.center.y = 0; this.center.str = this.center.x + "," + this.center.y; // in the viewport frame this.viewportScale = 1; if (this.mode == this.MAIN) { var maxWidth = 1000; // px - + this.realW = 300; this.realH = 200; @@ -183,8 +183,8 @@ class HokuyoDisplay { var dot = this.r.circle(0, newSpot[1] * this.viewportScale, this.dotRadius).attr({ stroke: this.dotColor, fill: this.dotColor, - transform: "t," + this.center.str + "r180,0,0" + "r" + newSpot[0] + ",0,0"}); - // + " 0 0" + + + transform: "t," + this.center.str + "r180,0,0" + "r" + -newSpot[0] + ",0,0"}); + // + " 0 0" + + this.dots.set(newSpot[0], dot); } }.bind(this)); @@ -248,4 +248,4 @@ class HokuyoDisplay { } } -} \ No newline at end of file +} From 4b11c529212a6cc0ba2321519454ab58a149b846 Mon Sep 17 00:00:00 2001 From: Mewen Date: Sun, 2 Apr 2017 10:39:00 +0200 Subject: [PATCH 17/74] Launching and killing correctly the hokuyo NodeJS and C clients --- config.js | 3 ++- hokuyo/main.js | 40 ++++++++++++++++++++++++++++------------ server/server.class.js | 12 +++++++----- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/config.js b/config.js index 444b715..bdcc020 100644 --- a/config.js +++ b/config.js @@ -8,5 +8,6 @@ module.exports = { "server": "127.0.0.1:3128", //"server": "192.168.0.100:3128", - "hokuyo_command": "$UTCOUPE_WORKSPACE/bin/hokuyo" + "hokuyo_command": "$UTCOUPE_WORKSPACE/bin/hokuyo", + "UTCOUPE_WORKSPACE": "/home/mewen/dev/UTCoupe/coupe17/" } diff --git a/hokuyo/main.js b/hokuyo/main.js index 51eb2f5..4b217ae 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -29,9 +29,12 @@ var server = process.argv[2] || config.server; var command = process.argv[3] || config.hokuyo_command; + if (!process.env.UTCOUPE_WORKSPACE) { + process.env.UTCOUPE_WORKSPACE = config.UTCOUPE_WORKSPACE; + } if (!process.env.UTCOUPE_WORKSPACE) { - logger.error("Missing UTCOUPE_WORKSPACE environment variable. Make sure to call 'sudo -E node ...'"); + logger.warn("Missing UTCOUPE_WORKSPACE environment variable. Make sure to call 'sudo -E node ...' or to fill UTCOUPE_WORKSPACE in config.js"); process.exit(1); } @@ -49,6 +52,15 @@ logger.info("Starting with pid " + process.pid); + // Exit handlers + //do something when app is closing + // process.on('exit', exit); // doesn't seem to work, don't know why... https://nodejs.org/api/process.html#process_event_exit + // catches ctrl+c event + process.on('SIGINT', exit); + // process.on('SIGTERM', quitC); // SIGTERM impossible to catch + //catches uncaught exceptions + //process.on('uncaughtException', uException); + client.order(function(from, name, params){ var now = Date.now(); logger.info("Time since last order : "+(now - lastT)); @@ -64,14 +76,13 @@ logger.info("Receive order to start"); start(); } else - logger.error("ALready started !"); + logger.error("Already started !"); break; case "shutdown": quitC("stop"); spawn('sudo', ['halt']); break; case "stop": - started = false; quitC("stop"); break; case "sync_git": @@ -95,6 +106,13 @@ }); } + function exit(code) { + logger.info("Closing Hokuyo C client"); + quitC(code); + logger.info("Exiting"); + process.exit(); + } + function quitC(code){ if(!!child){ logger.info("Closing child "+child.pid+" at "+code); @@ -105,6 +123,7 @@ logger.info("Father's pid : " + process.pid); // process.kill(process.pid, 'SIGINT'); } + started = false; } function uException(code){ @@ -122,18 +141,11 @@ var now = Date.now() - lastT; matchLogger(match_name, now); now = lastT; + var logcount = 101; // If there's a child, kill it quitC("start"); - // Exit handlers - //do something when app is closing - process.on('exit', quitC); - // catches ctrl+c event - // process.on('SIGINT', quitC); - //catches uncaught exceptions - //process.on('uncaughtException', uException); - // Functions function parseData(string) { //logger.warn(string.length); @@ -152,7 +164,11 @@ bufferData = bufferData + temp[2]; client.send("lidar", "hokuyo.polar_raw_data", { "hokuyo": temp[0], "polarSpots" : JSON.parse(bufferData) }); count = 0; - logger.warn(JSON.parse(bufferData)); + // logger.warn(JSON.parse(bufferData)); + if (logcount++ > 100) { + logger.info("Hokuyo correctly running"); + logcount = 0; + } } } } diff --git a/server/server.class.js b/server/server.class.js index a4e5571..e3b1bac 100644 --- a/server/server.class.js +++ b/server/server.class.js @@ -193,6 +193,7 @@ module.exports = (function () { this.progs[prog] = spawn('node', ['./clients/gr/main.js']); break; case 'hokuyo': + // this.progs[prog] = spawn('ssh', ['raspi', './hokuyo/main.js']); this.progs[prog] = spawn('node', ['./hokuyo/main.js']); break; case 'lidar': @@ -272,12 +273,13 @@ module.exports = (function () { Server.prototype.stop = function(prog) { if (prog == "pr") { this.progs[prog] = spawn('ssh', ['igep', 'pkill', 'node']); - } else if (prog == "hokuyo") { - this.progs[prog] = spawn('ssh', ['raspi', 'pkill', 'node']); } - if(this.utcoupe[prog]) { - this.progs[prog].kill(); - logger.info("stopped "+prog); + // else if (prog == "hokuyo") { + // this.progs[prog] = spawn('ssh', ['raspi', 'pkill', 'node']); + // } + if(!!this.utcoupe[prog]) { + logger.info("Killing "+prog); + this.progs[prog].kill("SIGINT"); this.utcoupe[prog] = false; } this.sendUTCoupe(); From 85a282f731f806006cba7b9f6da91811104b0399 Mon Sep 17 00:00:00 2001 From: Mewen Date: Sun, 2 Apr 2017 10:49:31 +0200 Subject: [PATCH 18/74] Moved C start/stop button in webclient --- webclient/index.js | 9 +++++++++ webclient/index.tpl.html | 2 ++ webclient/pages/telecommande/telecommande.js | 18 +++++++++--------- .../pages/telecommande/telecommande.tpl.html | 8 ++++---- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/webclient/index.js b/webclient/index.js index 699b45f..0272a85 100644 --- a/webclient/index.js +++ b/webclient/index.js @@ -18,9 +18,18 @@ angular.module('app').controller('IndexCtrl', ['$rootScope', '$scope', 'UTCoupe' EPR_d: $scope.EPR_d }); } + $scope.stop = function(u) { Client.send('server', 'server.stop', u); } + + $scope.startC = function(u) { + Client.send("hokuyo", "start", {}); + } + + $scope.stopC = function(u) { + Client.send("hokuyo", "stop", {}); + } }]); angular.module('app').service('UTCoupe', ['$rootScope', 'Client', function($rootScope, Client) { diff --git a/webclient/index.tpl.html b/webclient/index.tpl.html index 1728e54..c50e385 100644 --- a/webclient/index.tpl.html +++ b/webclient/index.tpl.html @@ -58,6 +58,8 @@ Hokuyo + +

diff --git a/webclient/pages/telecommande/telecommande.js b/webclient/pages/telecommande/telecommande.js index ad5c91b..3a9e5ea 100644 --- a/webclient/pages/telecommande/telecommande.js +++ b/webclient/pages/telecommande/telecommande.js @@ -173,15 +173,15 @@ angular.module('app').controller('TelecommandeCtrl', ['$rootScope', '$scope', 'C }); - $(document).on("click", "#rc_hok_start", function(e) { - Client.send("hokuyo", "start", {}); - console.log("Message `start` sent"); - }); - - $(document).on("click", "#rc_hok_stop", function(e) { - Client.send("hokuyo", "stop", {}); - console.log("Message `stop` sent"); - }); + // $(document).on("click", "#rc_hok_start", function(e) { + // Client.send("hokuyo", "start", {}); + // console.log("Message `start` sent"); + // }); + + // $(document).on("click", "#rc_hok_stop", function(e) { + // Client.send("hokuyo", "stop", {}); + // console.log("Message `stop` sent"); + // }); /*$scope.rc_pr_pos_value = 0.5; diff --git a/webclient/pages/telecommande/telecommande.tpl.html b/webclient/pages/telecommande/telecommande.tpl.html index f018596..cd363b3 100644 --- a/webclient/pages/telecommande/telecommande.tpl.html +++ b/webclient/pages/telecommande/telecommande.tpl.html @@ -88,8 +88,8 @@

PR



-

Hokuyo

- + - +--> +
  • + Serveur websocket + +
  • IA @@ -58,8 +62,8 @@ Hokuyo - - + +

  • diff --git a/webclient/webclient.css b/webclient/webclient.css index c2e7c46..e074ab5 100644 --- a/webclient/webclient.css +++ b/webclient/webclient.css @@ -9,6 +9,10 @@ li { color: green; } +.activeButton { + background-color: #81E939; +} + .config { color: #fff; background: #000; From 034510413197ef5547e4b54e9f802a2540bb72bf Mon Sep 17 00:00:00 2001 From: mmxm Date: Sun, 2 Apr 2017 18:38:01 +0200 Subject: [PATCH 29/74] bug fixe on merging clusters from different hokuyo --- lidar/lidar.class.js | 25 ++++++++++++++++++++++--- server/server.class.js | 2 ++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index bc2965b..3cad9e7 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -391,14 +391,33 @@ module.exports = (function () { Lidar.prototype.findRobots = function(cartSpots) { let ret = []; - + let d = 10000, j=0, x, y, diff = 0; let clusters = this.clusterize(cartSpots); for (let i = 0 ; i < clusters.length ; i++){ + clusters[i].calculCenter(); + } + for (let i = 0 ; i < clusters.length ; i++){ + j = i+1; + while(j < clusters.length){ + if (j != i){ + x = Math.abs(clusters[i].x - clusters[j].x); + y = Math.abs(clusters[i].y - clusters[j].y); + d = Math.sqrt(x*x + y*y) + if(d < 20){ + clusters[i].spots = clusters[i].spots.concat(clusters[j].spots); + clusters.splice(j, 1); + diff ++; + } + } + j = j+1; + } + } + for (let i = 0 ; i < clusters.length ; i++){ + clusters[i].calculCenter(); if (clusters[i].spots.length >3){ - clusters[i].calculCenter(); if(clusters[i].x > X_MIN_ZONE && clusters[i].x < X_MAX_ZONE && clusters[i].y < Y_MAX_ZONE && clusters[i].y > Y_MIN_ZONE){ clusters[i].diagBox(); - if (clusters[i].diag < 10 && clusters[i].diag > 4 ) + if (clusters[i].diag < 30 && clusters[i].diag > 4 ) ret.push([clusters[i].x, clusters[i].y]); } } diff --git a/server/server.class.js b/server/server.class.js index 1dabb8c..3175ede 100644 --- a/server/server.class.js +++ b/server/server.class.js @@ -37,6 +37,8 @@ module.exports = (function () { this.ip = networkInterfaces["wlan0"][0].address; } else if (!!networkInterfaces["Wi-Fi"]){ this.ip = networkInterfaces["Wi-Fi"][0].address; + } else { + this.ip = "127.0.0.1"; } } catch(e) { From 3b5594b71b187929fe7a61dd70a7a5010f07afbc Mon Sep 17 00:00:00 2001 From: Mewen Date: Sun, 2 Apr 2017 19:26:57 +0200 Subject: [PATCH 30/74] Hokuyo and Lidar correct status --- hokuyo/main.js | 19 ++++++++++++++++--- lidar/lidar.class.js | 2 +- lidar/main.js | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index 5461e9e..81d8a58 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -48,7 +48,7 @@ var lastStatus = { "status": "waiting" }; - sendChildren(lastStatus); + changeStatus("waiting"); logger.info("Starting with pid " + process.pid); @@ -133,7 +133,7 @@ function start(){ // We just an order to start, with the flavour :P (color, number of robots) - sendChildren({"status": "starting"}); + changeStatus("starting"); // Generates the match name (for the log file) var tmp = new Date(); @@ -230,11 +230,12 @@ case "HI:)": // send "C started" to server logger.info('C Hokuyo software says "Hi !" :)'); - sendChildren({"status": "starting"}); + changeStatus("starting"); break; case "DATA": //logger.info('C Hokuyo software sends datas'); parseData(inputAr[i].substring(6)); + changeStatus("everythingIsAwesome"); break; case "INFO": logger.info('C Hokuyo software sends information :'+inputAr[i].substring(6)); @@ -285,6 +286,10 @@ child.stderr.on('data', function(data) { logger.error(data.toString()); + sendChildren({"status": "error"}); + setTimeout(function(){ + sendChildren({"status": "waiting", "children":[]}); + }, 5000); }); @@ -323,6 +328,14 @@ return data; } + function changeStatus(newStatus) { + if (newStatus != lastStatus.status) { + logger.info("New status : " + newStatus); + lastStatus.status = newStatus; + sendChildren(lastStatus) + } + }; + // Sends status to server function sendChildren(status){ diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 3cad9e7..458f260 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -106,7 +106,7 @@ module.exports = (function () { }; Lidar.prototype.changeStatus = function(newStatus) { - logger.info("New status : " + newStatus); + logger.info("New lidar status : " + newStatus); this.status = newStatus; this.sendStatus(this.status); }; diff --git a/lidar/main.js b/lidar/main.js index 47582ac..1bc5d89 100644 --- a/lidar/main.js +++ b/lidar/main.js @@ -106,7 +106,7 @@ } break; case "hokuyo.polar_raw_data": - if (hokMng.started = 1) { //a modifier + if (hokMng.started) { hokMng.onHokuyoPolar(params.hokuyo, params.polarSpots); } else { logger.warn("Start the Lidar before sending data !"); From a8033e71b24245b47bfba3e2adfb4324c38e8ebd Mon Sep 17 00:00:00 2001 From: Mewen Date: Sun, 2 Apr 2017 19:30:03 +0200 Subject: [PATCH 31/74] Fixed verbose bug --- server/server.class.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/server.class.js b/server/server.class.js index 740c6e1..c244118 100644 --- a/server/server.class.js +++ b/server/server.class.js @@ -171,7 +171,7 @@ module.exports = (function () { // The order is valid // logger.info("Data " +data.name+ " from " +data.from+ " to " +data.to); if (!this.verbose && - this.spamList.indexOf(data.name) != 1) { + this.spamList.indexOf(data.name) != -1) { this.server.to(data.to).emit('order', data); } else { this.server.to('webclient').to(data.to).emit('order', data); From 6837cb2122d997243fd460b46707ab365d17cd85 Mon Sep 17 00:00:00 2001 From: Mewen Date: Sun, 2 Apr 2017 19:46:05 +0200 Subject: [PATCH 32/74] Updated Lidar and hokuyo starting process --- webclient/index.js | 10 +++++ webclient/index.tpl.html | 2 + webclient/pages/reseau/reseau.js | 76 ++++++++++++++++---------------- 3 files changed, 51 insertions(+), 37 deletions(-) diff --git a/webclient/index.js b/webclient/index.js index ea73b04..b7e9fe1 100644 --- a/webclient/index.js +++ b/webclient/index.js @@ -34,6 +34,16 @@ angular.module('app').controller('IndexCtrl', ['$rootScope', '$scope', 'UTCoupe' $scope.stopC = function() { Client.send("hokuyo", "stop", {}); } + + $scope.resumeLidar = function() { + Client.send("lidar", "start", { + "color": $scope.our_color + }); + } + + $scope.pauseLidar = function() { + Client.send("lidar", "stop", {}); + } }]); angular.module('app').service('UTCoupe', ['$rootScope', 'Client', function($rootScope, Client) { diff --git a/webclient/index.tpl.html b/webclient/index.tpl.html index 3172c58..f274daf 100644 --- a/webclient/index.tpl.html +++ b/webclient/index.tpl.html @@ -56,6 +56,8 @@ Lidar + +

  • diff --git a/webclient/pages/reseau/reseau.js b/webclient/pages/reseau/reseau.js index 858b8a5..a32ea1d 100644 --- a/webclient/pages/reseau/reseau.js +++ b/webclient/pages/reseau/reseau.js @@ -20,13 +20,13 @@ angular.module('app').service('Reseau', ['$rootScope', 'Client', function($rootS $(document).on("click", ".hokuyo", function(e) { switch(e.target.innerHTML){ - case "Start": - Client.send("hokuyo", "start", { - "color": $("#rc_hok_color").val()}); - break; - case "Stop": - Client.send("hokuyo", "stop", {}); - break; + // case "Start": + // Client.send("hokuyo", "start", { + // "color": $("#rc_hok_color").val()}); + // break; + // case "Stop": + // Client.send("hokuyo", "stop", {}); + // break; case "Shutdown": Client.send("hokuyo", "shutdown", {}); break; @@ -51,19 +51,19 @@ angular.module('app').service('Reseau', ['$rootScope', 'Client', function($rootS } }); - $(document).on("click", ".lidar", function(e) { - if(e.target.innerHTML == "yellow"){ - Client.send("lidar", "start", { - "color": "yellow" - }); - } else if(e.target.innerHTML == "blue"){ - Client.send("lidar", "start", { - "color": "blue" - }); - } else { - Client.send("lidar", "stop", {}); - } - }); + // $(document).on("click", ".lidar", function(e) { + // if(e.target.innerHTML == "yellow"){ + // Client.send("lidar", "start", { + // "color": "yellow" + // }); + // } else if(e.target.innerHTML == "blue"){ + // Client.send("lidar", "start", { + // "color": "blue" + // }); + // } else { + // Client.send("lidar", "stop", {}); + // } + // }); /* --------- Prints ------------- */ @@ -109,23 +109,25 @@ angular.module('app').service('Reseau', ['$rootScope', 'Client', function($rootS if(parentId == "clients" || parentId == "children"){ devClass = name.toLowerCase(); - if(color == "waiting"){ - // Hok params - if(devClass == "lidar"){ - // newDiv.innerHTML += ""; - newDiv.innerHTML += "Start : "; - newDiv.innerHTML += ""; - } else { - newDiv.innerHTML += ""; - } - - - if(devClass == "hokuyo") - newDiv.innerHTML += "
    "; - else - newDiv.innerHTML += "
    "; - } else{ - newDiv.innerHTML += "
    "; + // if(color == "waiting"){ + // // Hok params + // if(devClass == "lidar"){ + // // newDiv.innerHTML += ""; + // newDiv.innerHTML += "Start : "; + // newDiv.innerHTML += ""; + // } else { + // newDiv.innerHTML += ""; + // } + + + // + // else + // newDiv.innerHTML += "
    "; + // } else{ + // newDiv.innerHTML += "
    "; + // } + if(devClass == "hokuyo"){ + newDiv.innerHTML += "
    "; } } From 07ece08aa9b272d3b739980b48b0321b8b0ce71e Mon Sep 17 00:00:00 2001 From: mmxm Date: Tue, 4 Apr 2017 21:00:46 +0200 Subject: [PATCH 33/74] New feature : angular calibration using rocket position on the field (tested on one hokuyo) --- lidar/lidar.class.js | 116 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 94 insertions(+), 22 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 3cad9e7..6f66cd9 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -38,21 +38,30 @@ module.exports = (function () { this.sendStatus = sendStatus; this.statusTimer; - this.lastSignOfLife = {}; // of each hokuyo this.hokuyoPositions = { one: { - "x": -6.2, - "y": -6.2, - "w": 0 + "x": -6.2, //-6.2 + "y": -6.2, //-6.2 + "w": 0 , //0 + "decalage" : [], + "init" : 3 }, two: { - "x": 306.2, - "y": 100, - "w": 180 + "x": 306.2, //306.2 + "y": 100, //100 + "w": 180 , //180 + "decalage" : [], + "init" : 0 } } + this.rocketPositions = { + one : { + "x" : 185, + "y" : 4 + } + } // If other color logger.warn("TODO: change Lidar color depending ours"); @@ -178,16 +187,31 @@ module.exports = (function () { let d = Math.sqrt(x*x +y*y); this.diag = d ; } + Cluster.prototype.toCartesian = function(lidar, hokName) { + let ret = []; + let hokPos = lidar.hokuyoPositions[hokName]; + let cartPt = [ + this.distance * Math.cos(lidar.toRadian(-this.angle)), + this.distance * Math.sin(lidar.toRadian(-this.angle)) + ] + // Change to table frame + this.x = hokPos.x + cartPt[0] * Math.cos(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.sin(lidar.toRadian(hokPos.w)), + this.y = hokPos.y + cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) + + } /** * When Hokuyo data arrives */ Lidar.prototype.onHokuyoPolar = function (hokuyoName, polarSpots) { //logger.warn("nb points :" + polarSpots.length) let spots = this.createSpot(polarSpots); - this.toCartesian(hokuyoName, spots); + if (this.hokuyoPositions[hokuyoName].init != 0){ + this.calibration(spots, hokuyoName) + } // Save + this.lastCartSpots[hokuyoName] = {}; this.lastCartSpots[hokuyoName].isWorking = function() { return Date.now() - this.time < 2 * DELTA_T; }; // we had some data no long ago this.lastCartSpots[hokuyoName].time = Date.now(); @@ -331,22 +355,9 @@ module.exports = (function () { Lidar.prototype.filterCart = function(cartSpots) { let ret = []; - - function isInTable (p) { - var ret = p[0] > 0 - && p[0] < 300 - && p[1] > 0 - && p[1] < 200; - return ret; - } - // Keep only points in the table for(let pt of cartSpots){ - //if (pt.x > 0 && pt.x < 295 && pt.y>0 && pt.y<195) { - // pt.inTheTable = true; ret.push(pt); - - //} } @@ -438,6 +449,67 @@ module.exports = (function () { return ret; } + /*** + *Fixes small hokuyo angulation postionning error + *by using the rockets positions on the play aera + ***/ + Lidar.prototype.calibration = function(spots, hokName){ + let clusters = this.clusterize(spots); + let hokPos = this.hokuyoPositions[hokName]; + let angle; + let detected = false; + function isNear(lidar, cluster, rocketName, d){ + let x = lidar.rocketPositions[rocketName].x; + let y = lidar.rocketPositions[rocketName].y; + + //logger.warn([cluster.x, lidar.rocketPositions["one"].x]); + if (cluster.x > x - d + && cluster.x < x + d + && cluster.y > y - d + && cluster.y < y + d){ + logger.warn("fusee detectee") + return true; + } + else return false; + } + function angleGap(lidar, cluster, rocketName, hokName){ + var tab1 = lidar.toPolar(cluster, hokName); + var tab2 = lidar.toPolar(lidar.rocketPositions[rocketName], hokName); + //logger.warn([tab1[0], tab2[0]]) + return (tab2[0] - tab1 [0]) + } + for (let i = 0; i < clusters.length ; i++){ + clusters[i].calculCenter(); + if (isNear(this, clusters[i], "one", 35) == true){ + angle = angleGap(this, clusters[i], "one", hokName) + hokPos.decalage.push(angle) + detected = true; + } + } + hokPos.init = hokPos.init - 1 ; + if (hokPos.init == 0 && detected == true){ + let a = 0; + let nb = hokPos.decalage.length + for( let i = 0; i < nb; i++){ + a = a + hokPos.decalage[i]; + } + logger.warn("Recalibrage de l'hokuyo " + hokName + " : " + a/nb); + hokPos.w = hokPos.w + a/nb + } + + } + + Lidar.prototype.toPolar = function(object, hokName){ + let ret = []; + let hokPos = this.hokuyoPositions[hokName]; + let x = object.x - hokPos.x + let y = object.y - hokPos.y + let distance = Math.sqrt(x*x + y*y); + let angle = this.toDegree(Math.atan2(y, x) - this.toRadian(hokPos.w)) + + return [angle, distance]; + } + Lidar.prototype.toRadian = function(angleInDegree) { let angleInRadian; @@ -449,7 +521,7 @@ module.exports = (function () { Lidar.prototype.toDegree = function(angleInRadian) { let angleInDegree; - angleInDegree = angleInRadian * 180 / Math.PI; + angleInDegree = angleInRadian* 180 / Math.PI; return angleInDegree; }; From 4d0ca0c6a6d121226c3c87d89784af51d1d7ed1d Mon Sep 17 00:00:00 2001 From: Mindstan Date: Thu, 6 Apr 2017 18:39:01 +0200 Subject: [PATCH 34/74] Added Actuators --- clients/Extension/Actuators/actuator.class.js | 19 +++++++++++++++ clients/Extension/Actuators/ax12.class.js | 23 +++++++++++++++++++ clients/Extension/Actuators/servo.class.js | 23 +++++++++++++++++++ clients/Extension/Actuators/stepper.class.js | 23 +++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 clients/Extension/Actuators/actuator.class.js create mode 100644 clients/Extension/Actuators/ax12.class.js create mode 100644 clients/Extension/Actuators/servo.class.js create mode 100644 clients/Extension/Actuators/stepper.class.js diff --git a/clients/Extension/Actuators/actuator.class.js b/clients/Extension/Actuators/actuator.class.js new file mode 100644 index 0000000..7354f32 --- /dev/null +++ b/clients/Extension/Actuators/actuator.class.js @@ -0,0 +1,19 @@ +/** + * Module définissant un actuator abstrait + * + * @module clients/Extension/Actuators/actuator + */ + +/** + * Classe abstraite représentant un actuator + * + * @class Actuator + * @memberof module:clients/Extension/Actuators/actuator + */ +class Actuator { + constructor () { + // + } +} + +module.exports = Actuator; \ No newline at end of file diff --git a/clients/Extension/Actuators/ax12.class.js b/clients/Extension/Actuators/ax12.class.js new file mode 100644 index 0000000..5ec046e --- /dev/null +++ b/clients/Extension/Actuators/ax12.class.js @@ -0,0 +1,23 @@ +/** + * Module implémentant un actuator pour l'AX12 + * + * @module clients/Extension/Actuators/ax12 + * @requires module:clients/Extension/Actuators/actuator + */ + +const Actuator = require('actuator.class.js'); + +/** + * Classe implémentant un actuator pour l'AX12 + * + * @class Ax12 + * @memberof clients/Extension/Actuators/ax12 + * @extends {clients/Extension/Actuators/actuator.Actuator} + */ +class Ax12 extends Actuator { + constructor (){ + // + } +} + +module.exports = Ax12; \ No newline at end of file diff --git a/clients/Extension/Actuators/servo.class.js b/clients/Extension/Actuators/servo.class.js new file mode 100644 index 0000000..dcb2f5a --- /dev/null +++ b/clients/Extension/Actuators/servo.class.js @@ -0,0 +1,23 @@ +/** + * Module implémentant l'actuator pour le servo-moteur + * + * @module clients/Extension/Actuators/servo + * @requires clients/Extension/Actuators/actuator + */ + +const Actuator = require('actuator.class.js'); + +/** + * Classe implémentant l'actuator pour le servo-moteur + * + * @class Servo + * @memberof clients/Extension/Actuators/servo + * @extends {clients/Extension/Actuators/actuator.Actuator} + */ +class Servo extends Actuator { + constructor () { + // + } +} + +module.exports = Servo; \ No newline at end of file diff --git a/clients/Extension/Actuators/stepper.class.js b/clients/Extension/Actuators/stepper.class.js new file mode 100644 index 0000000..b8ee0c3 --- /dev/null +++ b/clients/Extension/Actuators/stepper.class.js @@ -0,0 +1,23 @@ +/** + * Module implémentant l'actuator pour le capteur pas-à-pas + * + * @module clients/Extension/Actuators/stepper + * @requires clients/Extension/Actuators/actuator + */ + +const Actuator = require('actuator.class.js'); + +/** + * Classe implémentant l'actuator pour le capteur pas-à-pas + * + * @class Stepper + * @memberof clients/Extension/Actuators/stepper + * @extends {clients/Extension/Actuators/actuator.Actuator} + */ +class Stepper extends Actuator { + constructor () { + // + } +} + +module.exports = Stepper; \ No newline at end of file From 82b19f2f8ac1fb5bc14fe312eddfff4699b9de8a Mon Sep 17 00:00:00 2001 From: Mindstan Date: Thu, 6 Apr 2017 19:12:49 +0200 Subject: [PATCH 35/74] Added strict mode --- clients/Asserv/Asserv.class.js | 2 ++ clients/Asserv/AsservReal.class.js | 2 ++ clients/Asserv/AsservSimu.class.js | 2 ++ clients/Extension/Actuators/actuator.class.js | 2 ++ clients/Extension/Actuators/ax12.class.js | 2 ++ clients/Extension/Actuators/servo.class.js | 2 ++ clients/Extension/Actuators/stepper.class.js | 2 ++ clients/Extension/baseconstructor.class.js | 2 ++ clients/Extension/canon.class.js | 2 ++ clients/Extension/extension.class.js | 2 ++ clients/Extension/jack.class.js | 2 ++ clients/Extension/sweeper.class.js | 2 ++ clients/Extension/unitgrabber.class.js | 2 ++ clients/Robot/grobot.class.js | 2 ++ clients/Robot/robot.class.js | 2 ++ clients/Robot/tibot.class.js | 2 ++ clients/client.class.js | 2 ++ clients/fifo.class.js | 2 ++ 18 files changed, 36 insertions(+) diff --git a/clients/Asserv/Asserv.class.js b/clients/Asserv/Asserv.class.js index 4f56deb..d763858 100644 --- a/clients/Asserv/Asserv.class.js +++ b/clients/Asserv/Asserv.class.js @@ -4,6 +4,8 @@ * @module clients/Asserv/Asserv */ +"use strict"; + /** * Class Asserv. * diff --git a/clients/Asserv/AsservReal.class.js b/clients/Asserv/AsservReal.class.js index bf45250..f6f6062 100644 --- a/clients/Asserv/AsservReal.class.js +++ b/clients/Asserv/AsservReal.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Asserv/Asserv */ +"use strict"; + const Asserv = require('Asserv.class.js'); /** diff --git a/clients/Asserv/AsservSimu.class.js b/clients/Asserv/AsservSimu.class.js index d8eaba7..a4bbbcb 100644 --- a/clients/Asserv/AsservSimu.class.js +++ b/clients/Asserv/AsservSimu.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Asserv/Asserv */ +"use strict"; + const Asserv = require('Asserv.class.js'); /** diff --git a/clients/Extension/Actuators/actuator.class.js b/clients/Extension/Actuators/actuator.class.js index 7354f32..8fd13aa 100644 --- a/clients/Extension/Actuators/actuator.class.js +++ b/clients/Extension/Actuators/actuator.class.js @@ -4,6 +4,8 @@ * @module clients/Extension/Actuators/actuator */ +"use strict"; + /** * Classe abstraite représentant un actuator * diff --git a/clients/Extension/Actuators/ax12.class.js b/clients/Extension/Actuators/ax12.class.js index 5ec046e..4f4cd91 100644 --- a/clients/Extension/Actuators/ax12.class.js +++ b/clients/Extension/Actuators/ax12.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Extension/Actuators/actuator */ +"use strict"; + const Actuator = require('actuator.class.js'); /** diff --git a/clients/Extension/Actuators/servo.class.js b/clients/Extension/Actuators/servo.class.js index dcb2f5a..85d04ff 100644 --- a/clients/Extension/Actuators/servo.class.js +++ b/clients/Extension/Actuators/servo.class.js @@ -5,6 +5,8 @@ * @requires clients/Extension/Actuators/actuator */ +"use strict"; + const Actuator = require('actuator.class.js'); /** diff --git a/clients/Extension/Actuators/stepper.class.js b/clients/Extension/Actuators/stepper.class.js index b8ee0c3..683453e 100644 --- a/clients/Extension/Actuators/stepper.class.js +++ b/clients/Extension/Actuators/stepper.class.js @@ -5,6 +5,8 @@ * @requires clients/Extension/Actuators/actuator */ +"use strict"; + const Actuator = require('actuator.class.js'); /** diff --git a/clients/Extension/baseconstructor.class.js b/clients/Extension/baseconstructor.class.js index 1daa29c..f1dd459 100644 --- a/clients/Extension/baseconstructor.class.js +++ b/clients/Extension/baseconstructor.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Extension/extension */ +"use strict"; + const Extension = require('extension.class.js'); /** diff --git a/clients/Extension/canon.class.js b/clients/Extension/canon.class.js index ec97ddd..91d5a95 100644 --- a/clients/Extension/canon.class.js +++ b/clients/Extension/canon.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Extension/extension */ +"use strict"; + const Extension = require('extension.class.js'); /** diff --git a/clients/Extension/extension.class.js b/clients/Extension/extension.class.js index 5feff3b..ee1cae1 100644 --- a/clients/Extension/extension.class.js +++ b/clients/Extension/extension.class.js @@ -5,6 +5,8 @@ * @requires module:clients/client */ +"use strict"; + const Client = require('../client.class.js'); /** diff --git a/clients/Extension/jack.class.js b/clients/Extension/jack.class.js index 672a286..54444c3 100644 --- a/clients/Extension/jack.class.js +++ b/clients/Extension/jack.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Extension/extension */ +"use strict"; + const Extension = require('extension.class.js'); /** diff --git a/clients/Extension/sweeper.class.js b/clients/Extension/sweeper.class.js index 3681380..e82173b 100644 --- a/clients/Extension/sweeper.class.js +++ b/clients/Extension/sweeper.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Extension/extension */ +"use strict"; + const Extension = require('extension.class.js'); /** diff --git a/clients/Extension/unitgrabber.class.js b/clients/Extension/unitgrabber.class.js index 9c79431..a2728c8 100644 --- a/clients/Extension/unitgrabber.class.js +++ b/clients/Extension/unitgrabber.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Extension/extension */ +"use strict"; + const Extension = require('extension.class.js'); /** diff --git a/clients/Robot/grobot.class.js b/clients/Robot/grobot.class.js index 1ea428b..ce01709 100644 --- a/clients/Robot/grobot.class.js +++ b/clients/Robot/grobot.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Robot/robot */ +"use strict"; + const Robot = require('robot.class.js'); /** diff --git a/clients/Robot/robot.class.js b/clients/Robot/robot.class.js index adaa8f9..93a4d2d 100644 --- a/clients/Robot/robot.class.js +++ b/clients/Robot/robot.class.js @@ -5,6 +5,8 @@ * @requires module:clients/client */ +"use strict"; + const Client = require('../client.class.js'); /** diff --git a/clients/Robot/tibot.class.js b/clients/Robot/tibot.class.js index f0ed3f8..aab59c4 100644 --- a/clients/Robot/tibot.class.js +++ b/clients/Robot/tibot.class.js @@ -5,6 +5,8 @@ * @requires module:clients/Robot/robot */ +"use strict"; + const Robot = require('robot.class.js'); /** diff --git a/clients/client.class.js b/clients/client.class.js index 9a30c12..96d38bb 100644 --- a/clients/client.class.js +++ b/clients/client.class.js @@ -5,6 +5,8 @@ * @requires module:server/socket_client */ +"use strict"; + /** * Client abstrait diff --git a/clients/fifo.class.js b/clients/fifo.class.js index 0ba705d..7794712 100644 --- a/clients/fifo.class.js +++ b/clients/fifo.class.js @@ -5,6 +5,8 @@ * @see {@link clients/fifo.Fifo} */ +"use strict"; + module.exports = (function () { var logger = require('log4js').getLogger('Fifo'); From 7672a4c17e27653f90dc452c09261678702d5dfc Mon Sep 17 00:00:00 2001 From: Mindstan Date: Thu, 6 Apr 2017 20:37:05 +0200 Subject: [PATCH 36/74] Remade Fifo, now is a class --- clients/fifo.class.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/clients/fifo.class.js b/clients/fifo.class.js index 7794712..a56c10c 100644 --- a/clients/fifo.class.js +++ b/clients/fifo.class.js @@ -7,23 +7,28 @@ "use strict"; -module.exports = (function () { - var logger = require('log4js').getLogger('Fifo'); +/** + * First In First Out class + * + * @class Fifo + * @memberof module:clients/fifo + */ +class Fifo { /** * Fifo Constructor - * - * @memberof module:clients/fifo - * @constructor */ - function Fifo() { + constructor() { + this.logger = require('log4js').getLogger('Fifo'); this.clean(); } /** * Clean + * + * @param {function} callback */ - Fifo.prototype.clean = function(callback) { + clean (callback) { /** fifo */ this.fifo = []; /** @type {boolean} */ @@ -33,7 +38,7 @@ module.exports = (function () { /** * Order finished */ - Fifo.prototype.orderFinished = function() { + orderFinished () { this.order_in_progress = false; this.nextOrder(); } @@ -44,7 +49,7 @@ module.exports = (function () { * @param {Object} callback * @param {string} [name] */ - Fifo.prototype.newOrder = function(callback, name) { + newOrder (callback, name) { if (name === undefined) name = ""; this.fifo.push({callback: callback, name: name}); @@ -54,16 +59,15 @@ module.exports = (function () { /** * Next Order */ - Fifo.prototype.nextOrder = function() { + nextOrder () { if(!this.order_in_progress && this.fifo.length > 0) { // logger.debug(this.fifo.length); this.order_in_progress = true; - object = this.fifo.shift(); + var object = this.fifo.shift(); // logger.debug("Calling : "+object.name); object.callback(); } } +} - - return Fifo; -})(); +module.exports = Fifo; From 2dabbb592399f5bfb2669b2bee71c049d629f31b Mon Sep 17 00:00:00 2001 From: Mindstan Date: Thu, 6 Apr 2017 20:54:01 +0200 Subject: [PATCH 37/74] Added documentation --- clients/fifo.class.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/clients/fifo.class.js b/clients/fifo.class.js index a56c10c..fd09d95 100644 --- a/clients/fifo.class.js +++ b/clients/fifo.class.js @@ -2,7 +2,6 @@ * First In First Out module * * @module clients/fifo - * @see {@link clients/fifo.Fifo} */ "use strict"; @@ -10,13 +9,12 @@ /** * First In First Out class * - * @class Fifo * @memberof module:clients/fifo */ class Fifo { /** - * Fifo Constructor + * Construit une nouvelle FiFo vide. */ constructor() { this.logger = require('log4js').getLogger('Fifo'); @@ -24,19 +22,17 @@ class Fifo { } /** - * Clean - * - * @param {function} callback + * Vide la file et remet order_in_progress à faux */ - clean (callback) { - /** fifo */ + clean () { + /** @type {Array<{callback: function, name: String}>} */ this.fifo = []; /** @type {boolean} */ this.order_in_progress = false; } /** - * Order finished + * Fonction à appeler lorsque un ordre est terminé. Cette fonction invoque directement l'ordre suivant (si il existe) */ orderFinished () { this.order_in_progress = false; @@ -44,7 +40,8 @@ class Fifo { } /** - * New Order + * Ajoute un ordre à la file par le biais d'une fonction. Nommer l'ordre ne sert que pour le débuggage. + * La fonction invoque automatiquement nextOrder(). * * @param {Object} callback * @param {string} [name] @@ -57,7 +54,8 @@ class Fifo { } /** - * Next Order + * Si un ordre n'est pas déjà en cours et si la fifo n'est pas vide, + * cette fonction enlève et éxécute la prochaine fonction de la file. */ nextOrder () { if(!this.order_in_progress && this.fifo.length > 0) { From 32969267062ba88005afe333f0a4542e5a8d7b0a Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sat, 8 Apr 2017 19:32:53 +0200 Subject: [PATCH 38/74] Add the launch script of hokuyo in 2015 --- scripts/hokuyo/main.sh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 scripts/hokuyo/main.sh diff --git a/scripts/hokuyo/main.sh b/scripts/hokuyo/main.sh new file mode 100644 index 0000000..b33003d --- /dev/null +++ b/scripts/hokuyo/main.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +pkill node +echo "Lauching Hokuyo" +cd /root/coupe15/new_hokuyo/urg_library-1.0.4/samples +echo > /var/log/utcoupe/client.log +node test.js > /var/log/utcoupe/client.log 2>&1 + From b0d35f0bd800427a029dc0f271a6d358c5f22e33 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sat, 8 Apr 2017 23:03:34 +0200 Subject: [PATCH 39/74] Add things to make the hokuyo work without being root --- scripts/install_utcoupe_setup.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/install_utcoupe_setup.sh b/scripts/install_utcoupe_setup.sh index c159ee7..62a8797 100755 --- a/scripts/install_utcoupe_setup.sh +++ b/scripts/install_utcoupe_setup.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash ### The goal of this script is to install all UTCoupe specific packages to have a working setup. ### This script is called automatically when you run a npm install. @@ -40,6 +40,13 @@ function env_setup() { echo "export UTCOUPE_WORKSPACE=$PWD" >> $HOME/.bashrc source $HOME/.bashrc fi + if ! id -Gn $USER | grep -qw "dialout"; then + sudo usermod -a -G dialout $USER + fi + if [ ! -d "/var/log/utcoupe" ]; then + sudo mkdir /var/log/utcoupe + fi + sudo chown $USER:$USER /var/log/utcoupe } ### Compile and install the UTCoupe libraries From 405fa3873bb486f342ed5087ca5c283c59334894 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sat, 8 Apr 2017 23:04:25 +0200 Subject: [PATCH 40/74] Remove hokuyo stuff, not used anymore because directly in hokuyo client --- config.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/config.js b/config.js index d13adb3..6e68133 100644 --- a/config.js +++ b/config.js @@ -6,8 +6,6 @@ */ module.exports = { - "server": "127.0.0.1:3128", - //"server": "192.168.0.100:3128", - "hokuyo_command": "home/francois/dev/utcoupe/coupe17/bin/hokuyo", - "UTCOUPE_WORKSPACE": "/home/francois/dev/utcoupe/coupe17/" + "server": "127.0.0.1:3128" + //"server": "192.168.0.100:3128" } From 2768e545eafc9eec1075de7197db301321c24522 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sat, 8 Apr 2017 23:04:53 +0200 Subject: [PATCH 41/74] Remove unused file --- hokuyo/config.js | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 hokuyo/config.js diff --git a/hokuyo/config.js b/hokuyo/config.js deleted file mode 100644 index 8d594c5..0000000 --- a/hokuyo/config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - server: "192.168.0.100:3128", // server adress + port - //server: "127.0.0.1:3128", - command: "/root/coupe15/hokuyo/bin/hokuyo" // C sw place -}; From 9260617a352ac8718650703b9795ea11d1182122 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sat, 8 Apr 2017 23:09:39 +0200 Subject: [PATCH 42/74] Change path to hokuyo logfile, now in main utcoupe log folder --- hokuyo/src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hokuyo/src/main.c b/hokuyo/src/main.c index 3b265c5..787240c 100644 --- a/hokuyo/src/main.c +++ b/hokuyo/src/main.c @@ -51,7 +51,7 @@ int main(int argc, char **argv){ hok1.urg = 0; // Open log file - logfile = fopen("/var/log/hokuyo.log", "a+"); + logfile = fopen("/var/log/utcoupe/hokuyo.log", "a+"); // logfile = stderr; if (logfile == NULL) { fprintf(stderr, "Can't open log file (what do you think about beeing a sudoer ? :P )\n"); From eefb63427a157fe8a1ab4c7c8ff3288171afd8b6 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sat, 8 Apr 2017 23:10:52 +0200 Subject: [PATCH 43/74] Adapt code to run hokuyo in normal mode and not in sudo --- hokuyo/main.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index 81d8a58..8139fcc 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -27,14 +27,9 @@ var nth = 0; var server = process.argv[2] || config.server; - var command = process.argv[3] || config.hokuyo_command; if (!process.env.UTCOUPE_WORKSPACE) { - process.env.UTCOUPE_WORKSPACE = config.UTCOUPE_WORKSPACE; - } - - if (!process.env.UTCOUPE_WORKSPACE) { - logger.warn("Missing UTCOUPE_WORKSPACE environment variable. Make sure to call 'sudo -E node ...' or to fill UTCOUPE_WORKSPACE in config.js"); + logger.warn("Missing UTCOUPE_WORKSPACE environment variable... Please make sur you have launched the install script"); process.exit(1); } @@ -254,7 +249,6 @@ // Execute C program - // var command = "/home/pi/coupe15/hokuyo/bin/hokuyo"; var command = process.env.UTCOUPE_WORKSPACE + "/bin/hokuyo"; var args = []; // [color]; // var options = // default : { cwd: undefined, env: process.env}; From 12e64e3ec772776c7288b175cbe9f45d57076725 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sat, 8 Apr 2017 23:15:18 +0200 Subject: [PATCH 44/74] Remove some useless code and blank --- hokuyo/main.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index 8139fcc..c28c77f 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -35,7 +35,7 @@ var client = new SocketClient({ server_ip: server, - type: "hokuyo", + type: "hokuyo" }); var started = false; @@ -168,10 +168,6 @@ } } } - - // Send all robots - - } function parseInfo(string) { @@ -247,7 +243,6 @@ } } - // Execute C program var command = process.env.UTCOUPE_WORKSPACE + "/bin/hokuyo"; var args = []; // [color]; @@ -286,7 +281,6 @@ }, 5000); }); - child.on('close', function(code) { started = false; if (code == 0) @@ -299,6 +293,7 @@ sendChildren({"status": "waiting", "children":[]}); }); } + function getStatus(){ var data = { "status": "", @@ -328,8 +323,7 @@ lastStatus.status = newStatus; sendChildren(lastStatus) } - }; - + } // Sends status to server function sendChildren(status){ From 7775b46dea9d277a21dccdcb7067c2a3cb4a47be Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Sun, 9 Apr 2017 17:05:12 +0200 Subject: [PATCH 45/74] Hokuyo buttons visible by default, otherwise can't launch remote hokuyo --- webclient/index.tpl.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/webclient/index.tpl.html b/webclient/index.tpl.html index f274daf..1665d7a 100644 --- a/webclient/index.tpl.html +++ b/webclient/index.tpl.html @@ -63,9 +63,9 @@
  • Hokuyo - - - + + +

  • From 4717cc3010905e922b33cf5d3a91144696449354 Mon Sep 17 00:00:00 2001 From: Mewen Date: Tue, 11 Apr 2017 13:24:17 +0200 Subject: [PATCH 46/74] Changed message to AI --- hokuyo/main.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index c28c77f..b4e203f 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -321,7 +321,7 @@ if (newStatus != lastStatus.status) { logger.info("New status : " + newStatus); lastStatus.status = newStatus; - sendChildren(lastStatus) + sendChildren(lastStatus); } } @@ -330,7 +330,10 @@ lastStatus = status; client.send("server", "server.childrenUpdate", lastStatus); - client.send("ia", "hokuyo.nb_hokuyo", { nb: nb_active_hokuyos }); + client.send("ia", "lidar.status", { + nb: nb_active_hokuyos, + status: lastStatus.status + }); } function isOk(){ From 027c704d735748413ff20366e42db09058fdb434 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Thu, 13 Apr 2017 19:31:52 +0200 Subject: [PATCH 47/74] Add startup script for hokuyo and adapt install script to install it (not tested) --- scripts/install_utcoupe_setup.sh | 14 +++++++++ scripts/utcoupe_hokuyo.sh | 51 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100755 scripts/utcoupe_hokuyo.sh diff --git a/scripts/install_utcoupe_setup.sh b/scripts/install_utcoupe_setup.sh index 62a8797..5825b58 100755 --- a/scripts/install_utcoupe_setup.sh +++ b/scripts/install_utcoupe_setup.sh @@ -35,18 +35,32 @@ function apt_install() { ### Setup the variable environment to taget the UTCoupe main folder function env_setup() { + # Add the UTCOUPE_WORKSPACE env variable if [ -z "$UTCOUPE_WORKSPACE" ]; then green_echo "Env variable is not set." echo "export UTCOUPE_WORKSPACE=$PWD" >> $HOME/.bashrc source $HOME/.bashrc fi + # Add a file where to find UTCOUPE_WORKSPACE for node launched at startup + if [ ! -f "/etc/default/utcoupe" ]; then + sudo touch "/etc/default/utcoupe" + sudo echo "UTCOUPE_WORKSPACE=$PWD" >> /etc/default/utcoupe + fi + # Add the current user to the dialout group (to r/w in /dev files) if ! id -Gn $USER | grep -qw "dialout"; then sudo usermod -a -G dialout $USER fi + # Create the utcoupe folder where log files are stored if [ ! -d "/var/log/utcoupe" ]; then sudo mkdir /var/log/utcoupe fi + # Change the ownership of the utcoupe log folder sudo chown $USER:$USER /var/log/utcoupe + # Install the hokuyo automatic startup script (only for raspberry pi zero) + if [ "$ARCH" = "armv6l" ]; then + sudo install $UTCOUPE_WORKSPACE/scripts/utcoupe_hokuyo.sh /etc/init.d/ + sudo update-rc.d utcoupe_hokuyo.sh defaults 99 + fi } ### Compile and install the UTCoupe libraries diff --git a/scripts/utcoupe_hokuyo.sh b/scripts/utcoupe_hokuyo.sh new file mode 100755 index 0000000..c32e985 --- /dev/null +++ b/scripts/utcoupe_hokuyo.sh @@ -0,0 +1,51 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: utcoupe_hokuyo +# Default-Start 2 3 4 5 +# Default-Stop 0 1 6 +# Short-Description: Starts the utcoupe node client for the hokuyo +### END INIT INFO +#/etc/init.d/utcoupe_hokuyo + +#export PATH=$PATH:/usr/local/bin +#export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules + +PID_FILE=/var/log/utcoupe/utcoupe_hokuyo.pid + +function start_hokuyo { + echo -n "Starting the utcoupe_hokuyo node client..." + exec forever --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -p $PID_FILE main.js + echo "done." +} + +function stop_hokuyo { + echo -n "Terminating the utcoupe_hokuyo node client...." + exec forever stop --sourceDir=$UTCOUPE_WORKSPACE/hokuyo main.js + echo "done." +} + +# Retrieves the UTCOUPE_WORKSPACE value +[ -f /etc/default/utcoupe ] && . /etc/default/utcoupe +if [ -z "$UTCOUPE_WORKSPACE" ] ; then + echo "UTCOUPE_WORKSPACE is not set, please set it in /etc/default/utcoupe" >&2 + exit 1 +fi + +case "$1" in +start) + start_hokuyo + ;; +stop) + stop_hokuyo + ;; +restart|reload|force-reload) + stop_hokuyo + start_hokuyo + ;; +*) + echo "Usage: /etc/init.d/utcoupe_hokuyo {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 From 2a65ea208b4d07398d32eae76b56c45e332d373d Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 15 Apr 2017 18:11:29 +0000 Subject: [PATCH 48/74] Startup script finally working... --- scripts/utcoupe_hokuyo.sh | 43 +++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/scripts/utcoupe_hokuyo.sh b/scripts/utcoupe_hokuyo.sh index c32e985..0976c5e 100755 --- a/scripts/utcoupe_hokuyo.sh +++ b/scripts/utcoupe_hokuyo.sh @@ -1,36 +1,53 @@ -#!/bin/sh +#!/bin/bash ### BEGIN INIT INFO # Provides: utcoupe_hokuyo -# Default-Start 2 3 4 5 -# Default-Stop 0 1 6 -# Short-Description: Starts the utcoupe node client for the hokuyo +# Required-Start: +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: UTCoupe node client for the hokuyo ### END INIT INFO -#/etc/init.d/utcoupe_hokuyo -#export PATH=$PATH:/usr/local/bin -#export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules -PID_FILE=/var/log/utcoupe/utcoupe_hokuyo.pid +PID_FILE_D=/var/log/utcoupe/utcoupe_hokuyo_deamon.pid +PID_FILE_F=/var/log/utcoupe/utcoupe_hokuyo_forever.pid -function start_hokuyo { +start_hokuyo() { echo -n "Starting the utcoupe_hokuyo node client..." - exec forever --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -p $PID_FILE main.js +# start-stop-daemon -p $PID_FILE_D -m -b -u $USER -S --exec forever -- --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -l /var/log/utcoupe/forever.log -p $PID_FILE_F main.js + +# start-stop-daemon -p $PID_FILE_D -v -m -b --start --exec /usr/local/bin/node -- $UTCOUPE_WORKSPACE/hokuyo/main.js +# start-stop-daemon --start -m --pidfile $PID_FILE_D --background --startas /bin/bash -- -E -c "/usr/local/bin/node $UTCOUPE_WORKSPACE/hokuyo/main.js > /var/log/utcoupe/hokuyo_daemon.log 2>&1" + + # Working ! +# UTCOUPE_WORKSPACE=$UTCOUPE_WORKSPACE start-stop-daemon --start -m --pidfile $PID_FILE_D --startas /bin/bash -- -c "node $UTCOUPE_WORKSPACE/hokuyo/main.js > /var/log/utcoupe/hokuyo_daemon.log 2>&1" + + UTCOUPE_WORKSPACE=$UTCOUPE_WORKSPACE start-stop-daemon --start -m --pidfile $PID_FILE_D --background --exec /usr/local/bin/node -- $UTCOUPE_WORKSPACE/hokuyo/main.js + +# start-stop-daemon --start -m --pidfile $PID_FILE_D --background --startas node -- $UTCOUPE_WORKSPACE/hokuyo/main.js > /var/log/utcoupe/hokuyo_daemon.log 2>&1 +# forever --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -p $PID_FILE_F main.js +# su - $USER -c "$UTCOUPE_WORKSPACE/node_modules/forever/bin/forever --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -p $PID_FILE_F main.js" +#--> fail because fucking node is launching in sudo echo "done." } -function stop_hokuyo { +stop_hokuyo() { echo -n "Terminating the utcoupe_hokuyo node client...." - exec forever stop --sourceDir=$UTCOUPE_WORKSPACE/hokuyo main.js +# forever stop --sourceDir=$UTCOUPE_WORKSPACE/hokuyo main.js +# start-stop-daemon -K -v -p $PID_FILE_D --startas /bin/bash -- -c "node $UTCOUPE_WORKSPACE/hokuyo/main.sh" + start-stop-daemon -K -v -p $PID_FILE_D --exec /usr/local/bin/node echo "done." } -# Retrieves the UTCOUPE_WORKSPACE value [ -f /etc/default/utcoupe ] && . /etc/default/utcoupe if [ -z "$UTCOUPE_WORKSPACE" ] ; then echo "UTCOUPE_WORKSPACE is not set, please set it in /etc/default/utcoupe" >&2 exit 1 fi +#export PATH=$PATH:$UTCOUPE_WORKSPACE/node_modules/forever/bin +#export NODE_PATH=$NODE_PATH:$UTCOUPE_WORKSPACE/node_module/forever/lib + case "$1" in start) start_hokuyo From 45367ee2b9d89f008e0afe9f7755486a33003bce Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 15 Apr 2017 18:42:28 +0000 Subject: [PATCH 49/74] Hokuyo init script cleanup --- scripts/utcoupe_hokuyo.sh | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/scripts/utcoupe_hokuyo.sh b/scripts/utcoupe_hokuyo.sh index 0976c5e..0c016c4 100755 --- a/scripts/utcoupe_hokuyo.sh +++ b/scripts/utcoupe_hokuyo.sh @@ -8,46 +8,27 @@ # Short-Description: UTCoupe node client for the hokuyo ### END INIT INFO - -PID_FILE_D=/var/log/utcoupe/utcoupe_hokuyo_deamon.pid -PID_FILE_F=/var/log/utcoupe/utcoupe_hokuyo_forever.pid +PID_FILE=/var/log/utcoupe/utcoupe_hokuyo_deamon.pid start_hokuyo() { echo -n "Starting the utcoupe_hokuyo node client..." -# start-stop-daemon -p $PID_FILE_D -m -b -u $USER -S --exec forever -- --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -l /var/log/utcoupe/forever.log -p $PID_FILE_F main.js - -# start-stop-daemon -p $PID_FILE_D -v -m -b --start --exec /usr/local/bin/node -- $UTCOUPE_WORKSPACE/hokuyo/main.js -# start-stop-daemon --start -m --pidfile $PID_FILE_D --background --startas /bin/bash -- -E -c "/usr/local/bin/node $UTCOUPE_WORKSPACE/hokuyo/main.js > /var/log/utcoupe/hokuyo_daemon.log 2>&1" - - # Working ! -# UTCOUPE_WORKSPACE=$UTCOUPE_WORKSPACE start-stop-daemon --start -m --pidfile $PID_FILE_D --startas /bin/bash -- -c "node $UTCOUPE_WORKSPACE/hokuyo/main.js > /var/log/utcoupe/hokuyo_daemon.log 2>&1" - - UTCOUPE_WORKSPACE=$UTCOUPE_WORKSPACE start-stop-daemon --start -m --pidfile $PID_FILE_D --background --exec /usr/local/bin/node -- $UTCOUPE_WORKSPACE/hokuyo/main.js - -# start-stop-daemon --start -m --pidfile $PID_FILE_D --background --startas node -- $UTCOUPE_WORKSPACE/hokuyo/main.js > /var/log/utcoupe/hokuyo_daemon.log 2>&1 -# forever --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -p $PID_FILE_F main.js -# su - $USER -c "$UTCOUPE_WORKSPACE/node_modules/forever/bin/forever --sourceDir=$UTCOUPE_WORKSPACE/hokuyo -p $PID_FILE_F main.js" -#--> fail because fucking node is launching in sudo + UTCOUPE_WORKSPACE=$UTCOUPE_WORKSPACE start-stop-daemon --start -m --pidfile $PID_FILE --background --exec /usr/local/bin/node -- $UTCOUPE_WORKSPACE/hokuyo/main.js echo "done." } stop_hokuyo() { echo -n "Terminating the utcoupe_hokuyo node client...." -# forever stop --sourceDir=$UTCOUPE_WORKSPACE/hokuyo main.js -# start-stop-daemon -K -v -p $PID_FILE_D --startas /bin/bash -- -c "node $UTCOUPE_WORKSPACE/hokuyo/main.sh" - start-stop-daemon -K -v -p $PID_FILE_D --exec /usr/local/bin/node + start-stop-daemon -K -v -p $PID_FILE --exec /usr/local/bin/node echo "done." } +# Retrieves the UTCOUPE_WORKSPACE env variable [ -f /etc/default/utcoupe ] && . /etc/default/utcoupe if [ -z "$UTCOUPE_WORKSPACE" ] ; then echo "UTCOUPE_WORKSPACE is not set, please set it in /etc/default/utcoupe" >&2 exit 1 fi -#export PATH=$PATH:$UTCOUPE_WORKSPACE/node_modules/forever/bin -#export NODE_PATH=$NODE_PATH:$UTCOUPE_WORKSPACE/node_module/forever/lib - case "$1" in start) start_hokuyo From 509f201307adbd55a620686f7531cf972a347c7a Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 15 Apr 2017 18:54:23 +0000 Subject: [PATCH 50/74] Update install script, add instruction for pi zero + script not launched if not from right --- scripts/install_utcoupe_setup.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/install_utcoupe_setup.sh b/scripts/install_utcoupe_setup.sh index 5825b58..a231d6e 100755 --- a/scripts/install_utcoupe_setup.sh +++ b/scripts/install_utcoupe_setup.sh @@ -44,11 +44,11 @@ function env_setup() { # Add a file where to find UTCOUPE_WORKSPACE for node launched at startup if [ ! -f "/etc/default/utcoupe" ]; then sudo touch "/etc/default/utcoupe" - sudo echo "UTCOUPE_WORKSPACE=$PWD" >> /etc/default/utcoupe + sudo sh -c "echo 'UTCOUPE_WORKSPACE=$PWD' >> /etc/default/utcoupe" fi # Add the current user to the dialout group (to r/w in /dev files) if ! id -Gn $USER | grep -qw "dialout"; then - sudo usermod -a -G dialout $USER + sudo usermod -a -G dialout $USER fi # Create the utcoupe folder where log files are stored if [ ! -d "/var/log/utcoupe" ]; then @@ -57,7 +57,7 @@ function env_setup() { # Change the ownership of the utcoupe log folder sudo chown $USER:$USER /var/log/utcoupe # Install the hokuyo automatic startup script (only for raspberry pi zero) - if [ "$ARCH" = "armv6l" ]; then + if [ ! -f "/etc/init.d/utcoupe_hokuyo.sh" ] && [ "$ARCH" = "armv6l" ]; then sudo install $UTCOUPE_WORKSPACE/scripts/utcoupe_hokuyo.sh /etc/init.d/ sudo update-rc.d utcoupe_hokuyo.sh defaults 99 fi @@ -121,8 +121,16 @@ function launch_script() { fi } +# Verify that the script is launched from the good place +if [ ! "${PWD##*/}" = "coupe17" ]; then + red_echo "You have to launch this script from UTCoupe main directory : ./script/${0##*/}" + exit 1 +fi + +# Ask the user if he wants launch the script printf "Launch install script ? [Y/n]?" read answer if [ "$answer" = "" ] || [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then launch_script fi + From 9e0a9726c27e0605f176a653d877110858c7afc1 Mon Sep 17 00:00:00 2001 From: Thomas Fuhrmann Date: Mon, 17 Apr 2017 20:11:26 +0200 Subject: [PATCH 51/74] Merge of single file test --- .gitignore | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index e510c85..e397b0d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -+++++++++### Main git ignore files +### Main git ignore files ### Beware, there are som gitignore files in subdirectories, for local and specific files # Generated executables @@ -10,7 +10,6 @@ build/ CMakeCache* CMakeFiles* cmake_install* -Makefile # Generated scons / arduino files .sconsign.dblite @@ -28,6 +27,7 @@ npm-debug.log *.sublime* .idea .vscode/ +cmake-build-debug/ # UTCoupe folders bin/ @@ -42,4 +42,4 @@ doc/ *sync_time_stamp *liburg_c.a *.swp -tmp.bmp + From dfe98091790d8aee8845932db60b2eac0cbdc7c5 Mon Sep 17 00:00:00 2001 From: Mewen Date: Mon, 17 Apr 2017 19:03:49 +0200 Subject: [PATCH 52/74] Merge modifs for zsh shell users --- scripts/install_utcoupe_setup.sh | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/scripts/install_utcoupe_setup.sh b/scripts/install_utcoupe_setup.sh index 88226e3..3637931 100755 --- a/scripts/install_utcoupe_setup.sh +++ b/scripts/install_utcoupe_setup.sh @@ -23,17 +23,17 @@ function apt_install() { if [ "$ARCH" = "x86_64" ]; then green_echo "x86 architecture detected." sudo apt-get install nodejs npm nodejs-legacy linux-headers-$(uname -r) - else if [ "$ARCH" = "armv7l" ]; then + elif [ "$ARCH" = "armv7l" ]; then green_echo "Raspberry Pi 3 system detected, remove previous npm installation to setup the used version." sudo apt-get install raspberrypi-kernel-headers sudo apt-get remove npm nodejs nodejs-legacy curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo npm install npm@3.5.2 -g - else if [ "$ARCH" = "armv6l" ]; then + elif [ "$ARCH" = "armv6l" ]; then sudo apt-get install raspberrypi-kernel-headers sudo apt-get remove npm nodejs nodejs-legacy wget https://nodejs.org/dist/v4.8.1/node-v4.8.1-linux-armv6l.tar.gz - tar -xvf node-v4.8.1-linux-armv6l.tar.gz + tar -xvf node-v4.8.1-linux-armv6l.tar.gz cd node-v4.8.1-linux-armv6l sudo cp -R * /usr/local/ cd .. @@ -45,11 +45,18 @@ function apt_install() { ### Setup the variable environment to taget the UTCoupe main folder function env_setup() { - # Add the UTCOUPE_WORKSPACE env variable + # Add the UTCOUPE_WORKSPACE env variable, default consider as bash shell if [ -z "$UTCOUPE_WORKSPACE" ]; then green_echo "Env variable is not set." - echo "export UTCOUPE_WORKSPACE=$PWD" >> $HOME/.bashrc - source $HOME/.bashrc + if [ "$SHELL" = "/bin/zsh" ]; then + echo "export UTCOUPE_WORKSPACE=$PWD" >> $HOME/.zshrc + printf "Warning :\n" + printf "Please \"source ~/.zshrc\" and run again this script if necessary\n" + exit 1 + else + echo "export UTCOUPE_WORKSPACE=$PWD" >> $HOME/.bashrc + source $HOME/.bashrc + fi fi # Add a file where to find UTCOUPE_WORKSPACE for node launched at startup if [ ! -f "/etc/default/utcoupe" ]; then @@ -103,6 +110,7 @@ function compile_hokuyo() { } function launch_script() { + env_setup printf "Install apt missing packets ? [Y/n]?" From 8bb7171d3ec01132be4e8ee66fb2589eacf6e3a8 Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sat, 22 Apr 2017 18:39:08 +0200 Subject: [PATCH 53/74] Fixed hokuyo count bug, clear webclient display on silence --- lidar/lidar.class.js | 2 +- webclient/pages/hokuyo/hokuyoDisplay.class.js | 24 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 430480d..2c74fa5 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -258,7 +258,7 @@ module.exports = (function () { // For each active hokuyo, add hokuyo information to return value for (let hokName in lastData){ // logger.debug(Date.now() - lastData[hokName].time + " -> " + ((Date.now() - lastData[hokName].time < 2 * DELTA_T)?"ok":"not ok")); - if (lastData[hokName].isWorking) { + if (lastData[hokName].isWorking()) { hokuyos.push({ "name": hokName, "position": this.hokuyoPositions[hokName] diff --git a/webclient/pages/hokuyo/hokuyoDisplay.class.js b/webclient/pages/hokuyo/hokuyoDisplay.class.js index 83dbab6..2c43099 100644 --- a/webclient/pages/hokuyo/hokuyoDisplay.class.js +++ b/webclient/pages/hokuyo/hokuyoDisplay.class.js @@ -6,14 +6,15 @@ class HokuyoDisplay { this.ONE = "one"; this.TWO = "two"; - this.dotRadius = 1; // cm + this.dotRadius = 1; // cm this.parentId = parentId; this.mode = mode; this.div = $('#' + this.parentId); - this.isBusy = false; // lock - this.isBusy = false; + this.isBusy = false; // lock + + this.clearMainTimeout = null; // timeout in case we don't receive data for a while if (reinitColor) { Raphael.getColor.reset(); @@ -208,6 +209,10 @@ class HokuyoDisplay { this.isBusy = true; + if (!!this.clearMainTimeout) { + clearTimeout(this.clearMainTimeout); + } + // console.log(hokuyos); // For each hokuyo @@ -252,5 +257,18 @@ class HokuyoDisplay { this.isBusy = false; + this.clearMainTimeout = setTimeout(clearMain, 1000); + } + + clearMain() { + // For each object + for(let hok of this.hokuyos) { + hok.remove(); + } + + // For each object + for(let obj of this.objects) { + obj.remove(); + } } } From c35f3e558ee8423bb34f35bdf3178383ee3c1b48 Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 22 Apr 2017 17:09:19 +0000 Subject: [PATCH 54/74] Disconnect hokuyo on exiting --- hokuyo/src/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hokuyo/src/main.c b/hokuyo/src/main.c index 787240c..e5aa50c 100644 --- a/hokuyo/src/main.c +++ b/hokuyo/src/main.c @@ -24,8 +24,9 @@ FILE* logfile; void exit_handler() { fprintf(logfile, "\n%sClosing lidar(s), please wait...\n", PREFIX); - /*if (hok1.urg != 0) + if (hok1.urg != 0) urg_disconnect(hok1.urg); + /* if (hok2.urg != 0) urg_disconnect(hok2.urg); */ From d91b17e650b6597b5a9b1d7e62261756af6cd5b1 Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 22 Apr 2017 17:36:45 +0000 Subject: [PATCH 55/74] Set timeout to 100ms instead of 1s --- hokuyo/src/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hokuyo/src/global.h b/hokuyo/src/global.h index 104388d..95da081 100644 --- a/hokuyo/src/global.h +++ b/hokuyo/src/global.h @@ -16,7 +16,7 @@ #define MAX_CLUSTERS 50 // nombre maxi de clusters #define MAX_ROBOTS 4 // au cas où qu'on précise pas à l'appel du programme #define BORDER_MARGIN 50 -#define TIMEOUT 1000 +#define TIMEOUT 100 #define CONE_DIAM_MAX 690 // à modifier en fonction du cône utilisé From 6d1dfe68fbeec176c9d9feb260bb38f746104cf6 Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sat, 22 Apr 2017 19:50:57 +0200 Subject: [PATCH 56/74] Show button, temp --- webclient/index.tpl.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/webclient/index.tpl.html b/webclient/index.tpl.html index 1665d7a..9e4c5b9 100644 --- a/webclient/index.tpl.html +++ b/webclient/index.tpl.html @@ -62,10 +62,10 @@
  • Hokuyo - - - - + + + +

  • From 107d645a073761e5ca587248a6b6b456c10bd066 Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 22 Apr 2017 18:27:49 +0000 Subject: [PATCH 57/74] Changed hokuyos pos --- lidar/lidar.class.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 2c74fa5..2959d10 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -19,6 +19,7 @@ module.exports = (function () { var Y_MIN_ZONE = 0; var CLUSTER_DISTANCE = 5; var CLUSTER_K = 6; + // var SILENCE_TIMEOUT = 300; /** * Lidar Constructor @@ -42,14 +43,14 @@ module.exports = (function () { this.hokuyoPositions = { one: { - "x": -6.2, //-6.2 - "y": -6.2, //-6.2 + "x": -4, //-6.2 + "y": -4, //-6.2 "w": 0 , //0 "decalage" : [], "init" : 3 }, two: { - "x": 306.2, //306.2 + "x": 304, //306.2 "y": 100, //100 "w": 180 , //180 "decalage" : [], @@ -111,7 +112,7 @@ module.exports = (function () { this.statusTimer = setTimeout( function(){ this.updateStatus(); - }.bind(this), 200); + }.bind(this), 2*DELTA_T /*SILENCE_TIMEOUT*/); }; Lidar.prototype.changeStatus = function(newStatus) { From c99bfdc4a4bde4adde39c67ebec35c5c6c07e135 Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 22 Apr 2017 21:18:50 +0000 Subject: [PATCH 58/74] Fixed send status spamm by Hokuyo node + clean up lidar --- hokuyo/main.js | 5 ---- lidar/lidar.class.js | 12 ++++++--- lidar/main.js | 58 +++----------------------------------------- 3 files changed, 12 insertions(+), 63 deletions(-) diff --git a/hokuyo/main.js b/hokuyo/main.js index b4e203f..cd56632 100644 --- a/hokuyo/main.js +++ b/hokuyo/main.js @@ -330,10 +330,6 @@ lastStatus = status; client.send("server", "server.childrenUpdate", lastStatus); - client.send("ia", "lidar.status", { - nb: nb_active_hokuyos, - status: lastStatus.status - }); } function isOk(){ @@ -342,6 +338,5 @@ client.send("ia", "isOkAnswer", lastStatus); client.send("server", "server.childrenUpdate", lastStatus); - client.send("ia", "hokuyo.nb_hokuyo", { nb: nb_active_hokuyos }); } })(); diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 2959d10..0db87bf 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -67,7 +67,7 @@ module.exports = (function () { // If other color logger.warn("TODO: change Lidar color depending ours"); - this.sendStatus(this.status); + this.sendStatus(this.status, 0); // Status loop @@ -118,7 +118,7 @@ module.exports = (function () { Lidar.prototype.changeStatus = function(newStatus) { logger.info("New lidar status : " + newStatus); this.status = newStatus; - this.sendStatus(this.status); + this.sendStatus(this.status, this.hokuyosWorking().length); }; Lidar.prototype.start = function(color) { @@ -244,8 +244,12 @@ module.exports = (function () { }; // Send it to AI - this.send("lidar.all", toBeSent); - this.lastDataSent = Date.now(); + if(this.status == "error"){ + logger.warn("Fell in an error while computing !"); + } else { + this.send("lidar.all", toBeSent); + this.lastDataSent = Date.now(); + } } this.updateStatus(); diff --git a/lidar/main.js b/lidar/main.js index 1bc5d89..7b6ff7b 100644 --- a/lidar/main.js +++ b/lidar/main.js @@ -25,65 +25,14 @@ var hokMng = new Lidar(function (name, params){ client.send("ia", name, params); - }, function (newStatus) { + }, function (newStatus, nbHok) { sendChildren({ - "status": newStatus + "status": newStatus, + "nb": nbHok }); }); client.connect(function(){ -/* - setTimeout(function() { - client.send("lidar", "start", { - color: "yellow" - }); // TMP - }, 300); - - setTimeout(function() { - client.send("lidar", "hokuyo.polar_raw_data", { - hokuyo: "one", - polarSpots: [ - [ -40, 200 ], - [ -35, 200 ], - [ -30, 200 ], - [ -25, 230 ], - [ -20, 100 ], - [ -15, 105 ], - [ -5, 120 ], - [ 0, 100 ], - [ 5, 90 ], - [ 10, 95 ], - [ 15, 100 ], - [ 20, 100 ], - [ 25, 130 ], - [ 30, 135 ] - ] - }); // TMP - }, 1000); - - - setTimeout(function() { - client.send("lidar", "hokuyo.polar_raw_data", { - hokuyo: "two", - polarSpots: [ - [ -40, 155 ], - [ -30, 155 ], - [ -35, 150 ], - [ -25, 150 ], - [ -20, 100 ], - [ -15, 105 ], - [ -5, 120 ], - [ 0, 100 ], - [ 5, 90 ], - [ 10, 95 ], - [ 15, 100 ], - [ 20, 100 ], - [ 25, 230 ], - [ 30, 235 ] - ] - }); // TMP - }, 1100);*/ - client.order(function(from, name, params){ @@ -168,6 +117,7 @@ // Sends status to server function sendChildren(status){ client.send("server", "server.childrenUpdate", status); + client.send("ia", "lidar.status", status); // client.send("ia", "hokuyo.nb_hokuyo", { nb: nb_active_hokuyos }); } From 2758615bc044962ddec3f65f368492a276324008 Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 22 Apr 2017 21:30:15 +0000 Subject: [PATCH 59/74] Fixed clearMain bug --- webclient/pages/hokuyo/hokuyoDisplay.class.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webclient/pages/hokuyo/hokuyoDisplay.class.js b/webclient/pages/hokuyo/hokuyoDisplay.class.js index 2c43099..3615fc1 100644 --- a/webclient/pages/hokuyo/hokuyoDisplay.class.js +++ b/webclient/pages/hokuyo/hokuyoDisplay.class.js @@ -257,7 +257,7 @@ class HokuyoDisplay { this.isBusy = false; - this.clearMainTimeout = setTimeout(clearMain, 1000); + this.clearMainTimeout = setTimeout(this.clearMain, 1000); } clearMain() { From 3769fc127107a4e481470d0ee2cf465c964742a9 Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 22 Apr 2017 21:59:59 +0000 Subject: [PATCH 60/74] Clear hokuyo plot finally working ! --- webclient/pages/hokuyo/hokuyoDisplay.class.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/webclient/pages/hokuyo/hokuyoDisplay.class.js b/webclient/pages/hokuyo/hokuyoDisplay.class.js index 3615fc1..c064455 100644 --- a/webclient/pages/hokuyo/hokuyoDisplay.class.js +++ b/webclient/pages/hokuyo/hokuyoDisplay.class.js @@ -257,13 +257,15 @@ class HokuyoDisplay { this.isBusy = false; - this.clearMainTimeout = setTimeout(this.clearMain, 1000); + this.clearMainTimeout = setTimeout(function() { + this.clearMain(); + }.bind(this), 1000); } clearMain() { // For each object - for(let hok of this.hokuyos) { - hok.remove(); + for(let hokName in this.hokuyos) { + this.hokuyos[hokName].remove(); } // For each object From 7acc1e7c5a792fb1071e961a7db0c3915cf5c87f Mon Sep 17 00:00:00 2001 From: utcoupe-dev rpi3-3 Date: Sat, 22 Apr 2017 23:00:35 +0000 Subject: [PATCH 61/74] Trying to find that lag... --- lidar/lidar.class.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 0db87bf..1507d82 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -268,6 +268,8 @@ module.exports = (function () { "name": hokName, "position": this.hokuyoPositions[hokName] }); + } else { + logger.warn("Haven't heard from " + hokName + " since " + (Date.now() - lastData[hokName].time)); } } From a2b3a6b949f2893746375658160b22324b678d79 Mon Sep 17 00:00:00 2001 From: mmxm Date: Thu, 4 May 2017 20:48:03 +0200 Subject: [PATCH 62/74] Recalage avec fusee: correction de bugs --- lidar/lidar.class.js | 42 +++++++++++++++++++++++++++++++----------- lidar/main.js | 2 ++ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 1507d82..2e2d815 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -43,24 +43,30 @@ module.exports = (function () { this.hokuyoPositions = { one: { - "x": -4, //-6.2 - "y": -4, //-6.2 + "x": -2, //-6.2 + "y": -2, //-6.2 "w": 0 , //0 "decalage" : [], - "init" : 3 + "init" : 2, //Nb de boucles de recalage + "rockets" : ["two"] }, two: { "x": 304, //306.2 "y": 100, //100 "w": 180 , //180 "decalage" : [], - "init" : 0 + "init" : 2, + "rockets" : ["one"] } } this.rocketPositions = { one : { "x" : 185, "y" : 4 + }, + two : { + "x" : 115, + "y" : 4 } } @@ -464,11 +470,11 @@ module.exports = (function () { let clusters = this.clusterize(spots); let hokPos = this.hokuyoPositions[hokName]; let angle; - let detected = false; + let finish = false function isNear(lidar, cluster, rocketName, d){ let x = lidar.rocketPositions[rocketName].x; let y = lidar.rocketPositions[rocketName].y; - + //logger.warn([cluster.x, x]); //logger.warn([cluster.x, lidar.rocketPositions["one"].x]); if (cluster.x > x - d && cluster.x < x + d @@ -483,20 +489,34 @@ module.exports = (function () { var tab1 = lidar.toPolar(cluster, hokName); var tab2 = lidar.toPolar(lidar.rocketPositions[rocketName], hokName); //logger.warn([tab1[0], tab2[0]]) - return (tab2[0] - tab1 [0]) + return (tab2[0] - tab1[0]) } for (let i = 0; i < clusters.length ; i++){ clusters[i].calculCenter(); - if (isNear(this, clusters[i], "one", 35) == true){ + finish = false; + /*if (isNear(this, clusters[i], "one", 15) == true && finish == false){ angle = angleGap(this, clusters[i], "one", hokName) hokPos.decalage.push(angle) - detected = true; + finish = true; + } + if (isNear(this, clusters[i], "two", 15) == true && finish == false){ + angle = angleGap(this, clusters[i], "two", hokName) + hokPos.decalage.push(angle) + finish = true; + }*/ + for(let j=0; j < hokPos.rockets.length; j++){ + if (isNear(this, clusters[i], hokPos.rockets[j], 30) == true && finish == false){ + angle = angleGap(this, clusters[i], hokPos.rockets[j], hokName) + hokPos.decalage.push(angle) + finish = true; + logger.warn("fusee detectee"); + } } } hokPos.init = hokPos.init - 1 ; - if (hokPos.init == 0 && detected == true){ + let nb = hokPos.decalage.length; + if (hokPos.init == 0 && nb > 0){ let a = 0; - let nb = hokPos.decalage.length for( let i = 0; i < nb; i++){ a = a + hokPos.decalage[i]; } diff --git a/lidar/main.js b/lidar/main.js index 7b6ff7b..f1898c1 100644 --- a/lidar/main.js +++ b/lidar/main.js @@ -65,6 +65,8 @@ // quitC("stop"); spawn('sudo', ['halt']); break; + case "calibration": + break; case "stop": hokMng.stop(); // quitC("stop"); From 5452b6902c1174a362e46cf0c86bc636c6f3aeae Mon Sep 17 00:00:00 2001 From: Mindstan Date: Thu, 4 May 2017 21:01:07 +0200 Subject: [PATCH 63/74] Added calibration --- Not tested yet --- webclient/index.js | 4 ++++ webclient/index.tpl.html | 1 + 2 files changed, 5 insertions(+) diff --git a/webclient/index.js b/webclient/index.js index b7e9fe1..4e3d687 100644 --- a/webclient/index.js +++ b/webclient/index.js @@ -35,6 +35,10 @@ angular.module('app').controller('IndexCtrl', ['$rootScope', '$scope', 'UTCoupe' Client.send("hokuyo", "stop", {}); } + $scope.calibration = function() { + Client.send("hokuyo", "calibration", {}); + } + $scope.resumeLidar = function() { Client.send("lidar", "start", { "color": $scope.our_color diff --git a/webclient/index.tpl.html b/webclient/index.tpl.html index 9e4c5b9..065b312 100644 --- a/webclient/index.tpl.html +++ b/webclient/index.tpl.html @@ -66,6 +66,7 @@ +

    From cc544d5ba91479af79cb7ea037ba253fce502311 Mon Sep 17 00:00:00 2001 From: Mindstan Date: Sat, 6 May 2017 21:16:07 +0200 Subject: [PATCH 64/74] DAE now lighter --- simulateur/3d/mod_lun_bleu.dae | 20 +- simulateur/3d/mod_lun_bleu_jaune.dae | 178 ++++++------ simulateur/3d/mod_lun_bleu_jaune_old.dae | 344 +++++++++++++++++++++++ simulateur/3d/mod_lun_bleu_old.dae | 136 +++++++++ simulateur/3d/mod_lun_jaune.dae | 30 +- simulateur/3d/mod_lun_jaune_old.dae | 136 +++++++++ simulateur/3d/titane.dae | 10 +- 7 files changed, 735 insertions(+), 119 deletions(-) create mode 100644 simulateur/3d/mod_lun_bleu_jaune_old.dae create mode 100644 simulateur/3d/mod_lun_bleu_old.dae create mode 100644 simulateur/3d/mod_lun_jaune_old.dae diff --git a/simulateur/3d/mod_lun_bleu.dae b/simulateur/3d/mod_lun_bleu.dae index 73708f9..7ff579c 100644 --- a/simulateur/3d/mod_lun_bleu.dae +++ b/simulateur/3d/mod_lun_bleu.dae @@ -3,10 +3,10 @@ Blender User - Blender 2.77.0 commit date:1970-01-01, commit time:00:00, hash:unknown + Blender 2.78.0 - 2017-01-16T16:14:46 - 2017-01-16T16:14:46 + 2017-05-06T19:10:31 + 2017-05-06T19:10:31 Z_UP @@ -26,7 +26,7 @@ 0.5992157 0.5992157 0.5992157 1 - 0.009374999 0.009374999 0.009374999 1 + 0.004687499 0.004687499 0.004687499 1 50 @@ -52,7 +52,7 @@ 0.07215687 0.3043137 0.5364706 1 - 0.009374999 0.009374999 0.009374999 1 + 0.004687499 0.004687499 0.004687499 1 50 @@ -77,7 +77,7 @@ - 0.03150022 0.1000001 0 0.03134822 0.1000001 0.00308758 0.03134822 0 0.00308758 0.03089499 0.1000001 0.006145477 0.03014397 0.1000001 0.009144067 0.03014397 0 0.009144067 0.03089499 0 0.006145477 0.02910232 0.1000001 0.01205468 0.02778077 0.1000001 0.01484882 0.02778077 0 0.01484882 0.02619147 0.1000001 0.01750046 0.02435016 0.1000001 0.01998353 0.02435016 0 0.01998353 0.02619147 0 0.01750046 0.02910232 0 0.01205468 0.02227377 0.1000001 0.02227377 0.01998353 0.1000001 0.02434968 0.01998353 0 0.02434968 0.01750046 0.1000001 0.02619135 0.01484894 0.1000001 0.02778065 0.01484894 0 0.02778065 0.01750046 0 0.02619135 0.01205468 0.1000001 0.02910232 0.009144306 0.1000001 0.03014349 0.009144306 0 0.03014349 0.006145477 0.1000001 0.03089487 0.003087759 0.1000001 0.03134822 0.003087759 0 0.03134822 0.006145477 0 0.03089487 0.01205468 0 0.02910232 0.02227377 0 0.02227377 2.38419e-7 0.1000001 0.0315001 -0.003087282 0.1000001 0.03134822 -0.003087282 0 0.03134822 -0.006145 0.1000001 0.03089487 -0.009143829 0.1000001 0.03014349 -0.009143829 0 0.03014349 -0.006145 0 0.03089487 -0.0120542 0.1000001 0.02910232 -0.01484853 0.1000001 0.02778065 -0.01484853 0 0.02778065 -0.01750016 0.1000001 0.02619135 -0.01998305 0.1000001 0.02434968 -0.01998305 0 0.02434968 -0.01750016 0 0.02619135 -0.0120542 0 0.02910232 -0.02227354 0.1000001 0.02227377 -0.02434957 0.1000001 0.01998353 -0.02434957 0 0.01998353 -0.02619099 0.1000001 0.01750046 -0.02778029 0.1000001 0.01484882 -0.02778029 0 0.01484882 -0.02619099 0 0.01750046 -0.02910161 0.1000001 0.01205468 -0.03014338 0.1000001 0.009144067 -0.03014338 0 0.009144067 -0.03089427 0.1000001 0.006145477 -0.03134799 0.1000001 0.00308758 -0.03134799 0 0.00308758 -0.03089427 0 0.006145477 -0.02910161 0 0.01205468 -0.02227354 0 0.02227377 2.38419e-7 0 0.0315001 0.03150022 0 0 -0.03149986 0.1000001 0 0.03134822 0 -0.003087401 -0.03134799 0.1000001 -0.003087401 -0.03134799 0 -0.003087401 -0.03089427 0.1000001 -0.006145179 -0.03014338 0.1000001 -0.009143829 -0.03014338 0 -0.009143829 -0.03089427 0 -0.006145179 -0.02910161 0.1000001 -0.01205444 -0.02778029 0.1000001 -0.01484858 -0.02778029 0 -0.01484858 -0.02619099 0.1000001 -0.0175004 -0.02434957 0.1000001 -0.01998329 -0.02434957 0 -0.01998329 -0.02619099 0 -0.0175004 -0.02910161 0 -0.01205444 -0.02227354 0.1000001 -0.0222736 -0.01998305 0.1000001 -0.02434957 -0.01998305 0 -0.02434957 -0.01750016 0.1000001 -0.02619111 -0.01484853 0.1000001 -0.02778041 -0.01484853 0 -0.02778041 -0.01750016 0 -0.02619111 -0.0120542 0.1000001 -0.02910184 -0.009143829 0.1000001 -0.03014338 -0.009143829 0 -0.03014338 -0.006145 0.1000001 -0.03089439 -0.003087282 0.1000001 -0.03134799 -0.003087282 0 -0.03134799 -0.006145 0 -0.03089439 -0.0120542 0 -0.02910184 -0.02227354 0 -0.0222736 2.38419e-7 0.1000001 -0.03149986 0.003087759 0.1000001 -0.03134799 0.003087759 0 -0.03134799 0.006145477 0.1000001 -0.03089439 0.009144306 0.1000001 -0.03014338 0.009144306 0 -0.03014338 0.006145477 0 -0.03089439 0.01205468 0.1000001 -0.02910184 0.01484894 0.1000001 -0.02778041 0.01484894 0 -0.02778041 0.01750046 0.1000001 -0.02619111 0.01998353 0.1000001 -0.02434957 0.01998353 0 -0.02434957 0.01750046 0 -0.02619111 0.01205468 0 -0.02910184 0.02227377 0.1000001 -0.0222736 0.02435016 0.1000001 -0.01998329 0.02435016 0 -0.01998329 0.02619147 0.1000001 -0.0175004 0.02778077 0.1000001 -0.01484858 0.02778077 0 -0.01484858 0.02619147 0 -0.0175004 0.02910232 0.1000001 -0.01205444 0.03014397 0.1000001 -0.009143829 0.03014397 0 -0.009143829 0.03089499 0.1000001 -0.006145179 0.03134822 0.1000001 -0.003087401 0.03089499 0 -0.006145179 0.02910232 0 -0.01205444 0.02227377 0 -0.0222736 2.38419e-7 0 -0.03149986 -0.03149986 0 0 -0.01414144 0.1000001 0.02645754 -0.01666671 0.1000001 0.02494418 -0.01750016 0.1000001 0.02619135 -0.01998305 0.1000001 0.02434968 -0.01148033 0.1000001 0.02771627 -0.01484853 0.1000001 0.02778065 -0.01903152 0.1000001 0.0231902 -0.02121305 0.1000001 0.02121329 -0.02227354 0.1000001 0.02227377 -0.02319002 0.1000001 0.01903188 -0.006145 0.1000001 0.03089487 -0.003087282 0.1000001 0.03134822 -0.005852401 0.1000001 0.02942371 2.38419e-7 0.1000001 0.03000009 -0.002940118 0.1000001 0.02985543 -0.009143829 0.1000001 0.03014349 -0.008708238 0.1000001 0.0287081 -0.0120542 0.1000001 0.02910232 -0.02942299 0.1000001 0.005852818 -0.03089427 0.1000001 0.006145477 -0.03014338 0.1000001 0.009144067 -0.02870798 0.1000001 0.008708715 -0.02910161 0.1000001 0.01205468 -0.0277161 0.1000001 0.01148051 -0.03134799 0.1000001 0.00308758 -0.02999973 0.1000001 0 -0.03149986 0.1000001 0 -0.02985525 0.1000001 0.002940595 -0.03134799 0.1000001 -0.003087401 -0.02434957 0.1000001 0.01998353 -0.02494359 0.1000001 0.016667 -0.02619099 0.1000001 0.01750046 -0.02645725 0.1000001 0.01414179 -0.02778029 0.1000001 0.01484882 0.003087759 0.1000001 0.03134822 0.006145477 0.1000001 0.03089487 0.005852878 0.1000001 0.02942371 0.009144306 0.1000001 0.03014349 2.38419e-7 0.1000001 0.0315001 0.002940595 0.1000001 0.02985543 0.008708715 0.1000001 0.0287081 0.01148056 0.1000001 0.02771627 0.01484894 0.1000001 0.02778065 0.01205468 0.1000001 0.02910232 0.01750046 0.1000001 0.02619135 0.01414179 0.1000001 0.02645754 0.01998353 0.1000001 0.02434968 0.01666736 0.1000001 0.02494418 0.02227377 0.1000001 0.02227377 0.019032 0.1000001 0.0231902 0.02319025 0.1000001 0.01903188 0.02121353 0.1000001 0.02121329 0.0249443 0.1000001 0.016667 0.02435016 0.1000001 0.01998353 0.02645754 0.1000001 0.01414179 0.02619147 0.1000001 0.01750046 0.02778077 0.1000001 0.01484882 0.02771639 0.1000001 0.01148051 0.02910232 0.1000001 0.01205468 0.03014397 0.1000001 0.009144067 0.02870821 0.1000001 0.008708715 0.02942371 0.1000001 0.005852818 0.03134822 0.1000001 0.00308758 0.02985548 0.1000001 0.002940595 0.03089499 0.1000001 0.006145477 0.03000015 0.1000001 0 -0.02942299 0.1000001 -0.00585258 -0.03089427 0.1000001 -0.006145179 -0.02985525 0.1000001 -0.002940416 -0.03014338 0.1000001 -0.009143829 -0.0277161 0.1000001 -0.01148033 -0.02870798 0.1000001 -0.008708477 -0.02778029 0.1000001 -0.01484858 -0.02910161 0.1000001 -0.01205444 -0.02645725 0.1000001 -0.01414155 -0.02434957 0.1000001 -0.01998329 -0.02619099 0.1000001 -0.0175004 -0.02494359 0.1000001 -0.01666676 -0.02227354 0.1000001 -0.0222736 -0.02319002 0.1000001 -0.01903164 -0.01903152 0.1000001 -0.02319014 -0.02121305 0.1000001 -0.02121305 -0.01666671 0.1000001 -0.0249437 -0.01998305 0.1000001 -0.02434957 -0.01414144 0.1000001 -0.0264573 -0.01750016 0.1000001 -0.02619111 -0.01148033 0.1000001 -0.0277161 -0.01484853 0.1000001 -0.02778041 -0.009143829 0.1000001 -0.03014338 -0.0120542 0.1000001 -0.02910184 -0.008708238 0.1000001 -0.0287081 -0.005852401 0.1000001 -0.02942347 -0.003087282 0.1000001 -0.03134799 -0.002940118 0.1000001 -0.02985537 2.38419e-7 0.1000001 -0.02999985 -0.006145 0.1000001 -0.03089439 2.38419e-7 0.1000001 -0.03149986 0.003087759 0.1000001 -0.03134799 0.02778077 0.1000001 -0.01484858 0.02645754 0.1000001 -0.01414155 0.02771639 0.1000001 -0.01148033 0.02910232 0.1000001 -0.01205444 0.02870821 0.1000001 -0.008708477 0.03014397 0.1000001 -0.009143829 0.02619147 0.1000001 -0.0175004 0.0249443 0.1000001 -0.01666676 0.02435016 0.1000001 -0.01998329 0.02319025 0.1000001 -0.01903164 0.02227377 0.1000001 -0.0222736 0.03134822 0.1000001 -0.003087401 0.02985548 0.1000001 -0.002940416 0.03150022 0.1000001 0 0.02942371 0.1000001 -0.00585258 0.03089499 0.1000001 -0.006145179 0.008708715 0.1000001 -0.0287081 0.01148056 0.1000001 -0.0277161 0.009144306 0.1000001 -0.03014338 0.01484894 0.1000001 -0.02778041 0.01205468 0.1000001 -0.02910184 0.005852878 0.1000001 -0.02942347 0.006145477 0.1000001 -0.03089439 0.002940595 0.1000001 -0.02985537 0.01998353 0.1000001 -0.02434957 0.019032 0.1000001 -0.02319014 0.01666736 0.1000001 -0.0249437 0.02121353 0.1000001 -0.02121305 0.01750046 0.1000001 -0.02619111 0.01414179 0.1000001 -0.0264573 0.02985548 0 0.002940595 0.02985548 0.1000001 0.002940595 0.03000015 0.1000001 0 0.02870821 0 0.008708715 0.02870821 0.1000001 0.008708715 0.02942371 0.1000001 0.005852818 0.02942371 0 0.005852818 0.02645754 0 0.01414179 0.02645754 0.1000001 0.01414179 0.02771639 0.1000001 0.01148051 0.02319025 0 0.01903188 0.02319025 0.1000001 0.01903188 0.0249443 0.1000001 0.016667 0.0249443 0 0.016667 0.02771639 0 0.01148051 0.019032 0 0.0231902 0.019032 0.1000001 0.0231902 0.02121353 0.1000001 0.02121329 0.01414179 0 0.02645754 0.01414179 0.1000001 0.02645754 0.01666736 0.1000001 0.02494418 0.01666736 0 0.02494418 0.008708715 0 0.0287081 0.008708715 0.1000001 0.0287081 0.01148056 0.1000001 0.02771627 0.002940595 0 0.02985543 0.002940595 0.1000001 0.02985543 0.005852878 0.1000001 0.02942371 0.005852878 0 0.02942371 0.01148056 0 0.02771627 0.02121353 0 0.02121329 -0.002940118 0 0.02985543 -0.002940118 0.1000001 0.02985543 2.38419e-7 0.1000001 0.03000009 -0.008708238 0 0.0287081 -0.008708238 0.1000001 0.0287081 -0.005852401 0.1000001 0.02942371 -0.005852401 0 0.02942371 -0.01414144 0 0.02645754 -0.01414144 0.1000001 0.02645754 -0.01148033 0.1000001 0.02771627 -0.01903152 0 0.0231902 -0.01903152 0.1000001 0.0231902 -0.01666671 0.1000001 0.02494418 -0.01666671 0 0.02494418 -0.01148033 0 0.02771627 -0.02319002 0 0.01903188 -0.02319002 0.1000001 0.01903188 -0.02121305 0.1000001 0.02121329 -0.02645725 0 0.01414179 -0.02645725 0.1000001 0.01414179 -0.02494359 0.1000001 0.016667 -0.02494359 0 0.016667 -0.02870798 0 0.008708715 -0.02870798 0.1000001 0.008708715 -0.0277161 0.1000001 0.01148051 -0.02985525 0 0.002940595 -0.02985525 0.1000001 0.002940595 -0.02942299 0.1000001 0.005852818 -0.02942299 0 0.005852818 -0.0277161 0 0.01148051 -0.02121305 0 0.02121329 2.38419e-7 0 0.03000009 0.03000015 0 0 -0.02999973 0.1000001 0 0.02985548 0 -0.002940416 -0.02985525 0 -0.002940416 -0.02985525 0.1000001 -0.002940416 -0.02870798 0 -0.008708477 -0.02870798 0.1000001 -0.008708477 -0.02942299 0.1000001 -0.00585258 -0.02942299 0 -0.00585258 -0.02645725 0 -0.01414155 -0.02645725 0.1000001 -0.01414155 -0.0277161 0.1000001 -0.01148033 -0.02319002 0 -0.01903164 -0.02319002 0.1000001 -0.01903164 -0.02494359 0.1000001 -0.01666676 -0.02494359 0 -0.01666676 -0.0277161 0 -0.01148033 -0.01903152 0 -0.02319014 -0.01903152 0.1000001 -0.02319014 -0.02121305 0.1000001 -0.02121305 -0.01414144 0 -0.0264573 -0.01414144 0.1000001 -0.0264573 -0.01666671 0.1000001 -0.0249437 -0.01666671 0 -0.0249437 -0.008708238 0 -0.0287081 -0.008708238 0.1000001 -0.0287081 -0.01148033 0.1000001 -0.0277161 -0.002940118 0 -0.02985537 -0.002940118 0.1000001 -0.02985537 -0.005852401 0.1000001 -0.02942347 -0.005852401 0 -0.02942347 -0.01148033 0 -0.0277161 -0.02121305 0 -0.02121305 0.002940595 0 -0.02985537 0.002940595 0.1000001 -0.02985537 2.38419e-7 0.1000001 -0.02999985 0.008708715 0 -0.0287081 0.008708715 0.1000001 -0.0287081 0.005852878 0.1000001 -0.02942347 0.005852878 0 -0.02942347 0.01414179 0 -0.0264573 0.01414179 0.1000001 -0.0264573 0.01148056 0.1000001 -0.0277161 0.019032 0 -0.02319014 0.019032 0.1000001 -0.02319014 0.01666736 0.1000001 -0.0249437 0.01666736 0 -0.0249437 0.01148056 0 -0.0277161 0.02319025 0 -0.01903164 0.02319025 0.1000001 -0.01903164 0.02121353 0.1000001 -0.02121305 0.02645754 0 -0.01414155 0.02645754 0.1000001 -0.01414155 0.0249443 0.1000001 -0.01666676 0.0249443 0 -0.01666676 0.02870821 0 -0.008708477 0.02870821 0.1000001 -0.008708477 0.02771639 0.1000001 -0.01148033 0.02985548 0.1000001 -0.002940416 0.02942371 0.1000001 -0.00585258 0.02942371 0 -0.00585258 0.02771639 0 -0.01148033 0.02121353 0 -0.02121305 2.38419e-7 0 -0.02999985 -0.02999973 0 0 -0.01750016 0 0.02619135 -0.01666671 0 0.02494418 -0.01414144 0 0.02645754 -0.01998305 0 0.02434968 -0.01484853 0 0.02778065 -0.01148033 0 0.02771627 -0.02227354 0 0.02227377 -0.02121305 0 0.02121329 -0.01903152 0 0.0231902 -0.02319002 0 0.01903188 -0.005852401 0 0.02942371 -0.003087282 0 0.03134822 -0.006145 0 0.03089487 -0.002940118 0 0.02985543 2.38419e-7 0 0.03000009 -0.009143829 0 0.03014349 -0.008708238 0 0.0287081 -0.0120542 0 0.02910232 -0.03014338 0 0.009144067 -0.03089427 0 0.006145477 -0.02942299 0 0.005852818 -0.02870798 0 0.008708715 -0.0277161 0 0.01148051 -0.02910161 0 0.01205468 -0.03134799 0 0.00308758 -0.03149986 0 0 -0.02999973 0 0 -0.02985525 0 0.002940595 -0.03134799 0 -0.003087401 -0.02619099 0 0.01750046 -0.02494359 0 0.016667 -0.02434957 0 0.01998353 -0.02645725 0 0.01414179 -0.02778029 0 0.01484882 0.005852878 0 0.02942371 0.006145477 0 0.03089487 0.003087759 0 0.03134822 0.009144306 0 0.03014349 2.38419e-7 0 0.0315001 0.002940595 0 0.02985543 0.008708715 0 0.0287081 0.01148056 0 0.02771627 0.01205468 0 0.02910232 0.01484894 0 0.02778065 0.01414179 0 0.02645754 0.01750046 0 0.02619135 0.01666736 0 0.02494418 0.01998353 0 0.02434968 0.019032 0 0.0231902 0.02227377 0 0.02227377 0.02121353 0 0.02121329 0.02319025 0 0.01903188 0.02435016 0 0.01998353 0.0249443 0 0.016667 0.02619147 0 0.01750046 0.02645754 0 0.01414179 0.02778077 0 0.01484882 0.02771639 0 0.01148051 0.02910232 0 0.01205468 0.02870821 0 0.008708715 0.03014397 0 0.009144067 0.02942371 0 0.005852818 0.02985548 0 0.002940595 0.03134822 0 0.00308758 0.03089499 0 0.006145477 0.03000015 0 0 -0.03089427 0 -0.006145179 -0.02942299 0 -0.00585258 -0.02985525 0 -0.002940416 -0.03014338 0 -0.009143829 -0.02870798 0 -0.008708477 -0.0277161 0 -0.01148033 -0.02910161 0 -0.01205444 -0.02778029 0 -0.01484858 -0.02645725 0 -0.01414155 -0.02494359 0 -0.01666676 -0.02619099 0 -0.0175004 -0.02434957 0 -0.01998329 -0.02319002 0 -0.01903164 -0.02227354 0 -0.0222736 -0.02121305 0 -0.02121305 -0.01903152 0 -0.02319014 -0.01998305 0 -0.02434957 -0.01666671 0 -0.0249437 -0.01750016 0 -0.02619111 -0.01414144 0 -0.0264573 -0.01484853 0 -0.02778041 -0.01148033 0 -0.0277161 -0.0120542 0 -0.02910184 -0.009143829 0 -0.03014338 -0.005852401 0 -0.02942347 -0.008708238 0 -0.0287081 2.38419e-7 0 -0.02999985 -0.002940118 0 -0.02985537 -0.003087282 0 -0.03134799 -0.006145 0 -0.03089439 2.38419e-7 0 -0.03149986 0.003087759 0 -0.03134799 0.02771639 0 -0.01148033 0.02645754 0 -0.01414155 0.02778077 0 -0.01484858 0.02910232 0 -0.01205444 0.03014397 0 -0.009143829 0.02870821 0 -0.008708477 0.02619147 0 -0.0175004 0.02319025 0 -0.01903164 0.02435016 0 -0.01998329 0.0249443 0 -0.01666676 0.02227377 0 -0.0222736 0.02985548 0 -0.002940416 0.03134822 0 -0.003087401 0.03150022 0 0 0.02942371 0 -0.00585258 0.03089499 0 -0.006145179 0.009144306 0 -0.03014338 0.01148056 0 -0.0277161 0.008708715 0 -0.0287081 0.01205468 0 -0.02910184 0.01484894 0 -0.02778041 0.005852878 0 -0.02942347 0.006145477 0 -0.03089439 0.002940595 0 -0.02985537 0.019032 0 -0.02319014 0.01998353 0 -0.02434957 0.01666736 0 -0.0249437 0.02121353 0 -0.02121305 0.01414179 0 -0.0264573 0.01750046 0 -0.02619111 + 0.03150022 0.1000001 0 0.03134816 0.1000001 0.00308758 0.03134816 0 0.00308758 0.03089499 0.1000001 0.006145477 0.03014397 0.1000001 0.009144067 0.03014397 0 0.009144067 0.03089499 0 0.006145477 0.02910232 0.1000001 0.01205468 0.02778077 0.1000001 0.01484876 0.02778077 0 0.01484876 0.02619147 0.1000001 0.01750046 0.02435016 0.1000001 0.01998353 0.02435016 0 0.01998353 0.02619147 0 0.01750046 0.02910232 0 0.01205468 0.02227371 0.1000001 0.02227371 0.01998353 0.1000001 0.02434962 0.01998353 0 0.02434962 0.01750046 0.1000001 0.02619135 0.01484888 0.1000001 0.02778065 0.01484888 0 0.02778065 0.01750046 0 0.02619135 0.01205468 0.1000001 0.02910232 0.009144306 0.1000001 0.03014343 0.009144306 0 0.03014343 0.006145477 0.1000001 0.03089487 0.003087759 0.1000001 0.03134816 0.003087759 0 0.03134816 0.006145477 0 0.03089487 0.01205468 0 0.02910232 0.02227371 0 0.02227371 2.38419e-7 0.1000001 0.0315001 -0.003087282 0.1000001 0.03134816 -0.003087282 0 0.03134816 -0.006145 0.1000001 0.03089487 -0.009143829 0.1000001 0.03014343 -0.009143829 0 0.03014343 -0.006145 0 0.03089487 -0.0120542 0.1000001 0.02910232 -0.01484853 0.1000001 0.02778065 -0.01484853 0 0.02778065 -0.01750016 0.1000001 0.02619135 -0.01998305 0.1000001 0.02434962 -0.01998305 0 0.02434962 -0.01750016 0 0.02619135 -0.0120542 0 0.02910232 -0.02227354 0.1000001 0.02227371 -0.02434957 0.1000001 0.01998353 -0.02434957 0 0.01998353 -0.02619099 0.1000001 0.01750046 -0.02778029 0.1000001 0.01484876 -0.02778029 0 0.01484876 -0.02619099 0 0.01750046 -0.02910161 0.1000001 0.01205468 -0.03014338 0.1000001 0.009144067 -0.03014338 0 0.009144067 -0.03089421 0.1000001 0.006145477 -0.03134799 0.1000001 0.00308758 -0.03134799 0 0.00308758 -0.03089421 0 0.006145477 -0.02910161 0 0.01205468 -0.02227354 0 0.02227371 2.38419e-7 0 0.0315001 0.03150022 0 0 -0.03149986 0.1000001 0 0.03134816 0 -0.003087401 -0.03134799 0.1000001 -0.003087401 -0.03134799 0 -0.003087401 -0.03089421 0.1000001 -0.006145179 -0.03014338 0.1000001 -0.009143829 -0.03014338 0 -0.009143829 -0.03089421 0 -0.006145179 -0.02910161 0.1000001 -0.01205444 -0.02778029 0.1000001 -0.01484853 -0.02778029 0 -0.01484853 -0.02619099 0.1000001 -0.0175004 -0.02434957 0.1000001 -0.01998329 -0.02434957 0 -0.01998329 -0.02619099 0 -0.0175004 -0.02910161 0 -0.01205444 -0.02227354 0.1000001 -0.0222736 -0.01998305 0.1000001 -0.02434957 -0.01998305 0 -0.02434957 -0.01750016 0.1000001 -0.02619111 -0.01484853 0.1000001 -0.02778041 -0.01484853 0 -0.02778041 -0.01750016 0 -0.02619111 -0.0120542 0.1000001 -0.02910178 -0.009143829 0.1000001 -0.03014338 -0.009143829 0 -0.03014338 -0.006145 0.1000001 -0.03089433 -0.003087282 0.1000001 -0.03134799 -0.003087282 0 -0.03134799 -0.006145 0 -0.03089433 -0.0120542 0 -0.02910178 -0.02227354 0 -0.0222736 2.38419e-7 0.1000001 -0.03149986 0.003087759 0.1000001 -0.03134799 0.003087759 0 -0.03134799 0.006145477 0.1000001 -0.03089433 0.009144306 0.1000001 -0.03014338 0.009144306 0 -0.03014338 0.006145477 0 -0.03089433 0.01205468 0.1000001 -0.02910178 0.01484888 0.1000001 -0.02778041 0.01484888 0 -0.02778041 0.01750046 0.1000001 -0.02619111 0.01998353 0.1000001 -0.02434957 0.01998353 0 -0.02434957 0.01750046 0 -0.02619111 0.01205468 0 -0.02910178 0.02227371 0.1000001 -0.0222736 0.02435016 0.1000001 -0.01998329 0.02435016 0 -0.01998329 0.02619147 0.1000001 -0.0175004 0.02778077 0.1000001 -0.01484853 0.02778077 0 -0.01484853 0.02619147 0 -0.0175004 0.02910232 0.1000001 -0.01205444 0.03014397 0.1000001 -0.009143829 0.03014397 0 -0.009143829 0.03089499 0.1000001 -0.006145179 0.03134816 0.1000001 -0.003087401 0.03089499 0 -0.006145179 0.02910232 0 -0.01205444 0.02227371 0 -0.0222736 2.38419e-7 0 -0.03149986 -0.03149986 0 0 -0.01414144 0.1000001 0.02645748 -0.01666671 0.1000001 0.02494418 -0.01750016 0.1000001 0.02619135 -0.01998305 0.1000001 0.02434962 -0.01148033 0.1000001 0.02771621 -0.01484853 0.1000001 0.02778065 -0.01903152 0.1000001 0.0231902 -0.02121305 0.1000001 0.02121329 -0.02227354 0.1000001 0.02227371 -0.02319002 0.1000001 0.01903188 -0.006145 0.1000001 0.03089487 -0.003087282 0.1000001 0.03134816 -0.005852401 0.1000001 0.02942371 2.38419e-7 0.1000001 0.03000009 -0.002940118 0.1000001 0.02985543 -0.009143829 0.1000001 0.03014343 -0.008708238 0.1000001 0.0287081 -0.0120542 0.1000001 0.02910232 -0.02942293 0.1000001 0.005852818 -0.03089421 0.1000001 0.006145477 -0.03014338 0.1000001 0.009144067 -0.02870798 0.1000001 0.008708715 -0.02910161 0.1000001 0.01205468 -0.0277161 0.1000001 0.01148051 -0.03134799 0.1000001 0.00308758 -0.02999973 0.1000001 0 -0.03149986 0.1000001 0 -0.02985525 0.1000001 0.002940595 -0.03134799 0.1000001 -0.003087401 -0.02434957 0.1000001 0.01998353 -0.02494359 0.1000001 0.01666694 -0.02619099 0.1000001 0.01750046 -0.02645725 0.1000001 0.01414173 -0.02778029 0.1000001 0.01484876 0.003087759 0.1000001 0.03134816 0.006145477 0.1000001 0.03089487 0.005852878 0.1000001 0.02942371 0.009144306 0.1000001 0.03014343 2.38419e-7 0.1000001 0.0315001 0.002940595 0.1000001 0.02985543 0.008708715 0.1000001 0.0287081 0.01148051 0.1000001 0.02771621 0.01484888 0.1000001 0.02778065 0.01205468 0.1000001 0.02910232 0.01750046 0.1000001 0.02619135 0.01414173 0.1000001 0.02645748 0.01998353 0.1000001 0.02434962 0.01666736 0.1000001 0.02494418 0.02227371 0.1000001 0.02227371 0.019032 0.1000001 0.0231902 0.0231902 0.1000001 0.01903188 0.02121353 0.1000001 0.02121329 0.0249443 0.1000001 0.01666694 0.02435016 0.1000001 0.01998353 0.02645748 0.1000001 0.01414173 0.02619147 0.1000001 0.01750046 0.02778077 0.1000001 0.01484876 0.02771633 0.1000001 0.01148051 0.02910232 0.1000001 0.01205468 0.03014397 0.1000001 0.009144067 0.02870815 0.1000001 0.008708715 0.02942371 0.1000001 0.005852818 0.03134816 0.1000001 0.00308758 0.02985543 0.1000001 0.002940595 0.03089499 0.1000001 0.006145477 0.03000015 0.1000001 0 -0.02942293 0.1000001 -0.00585258 -0.03089421 0.1000001 -0.006145179 -0.02985525 0.1000001 -0.002940416 -0.03014338 0.1000001 -0.009143829 -0.0277161 0.1000001 -0.01148033 -0.02870798 0.1000001 -0.008708477 -0.02778029 0.1000001 -0.01484853 -0.02910161 0.1000001 -0.01205444 -0.02645725 0.1000001 -0.01414149 -0.02434957 0.1000001 -0.01998329 -0.02619099 0.1000001 -0.0175004 -0.02494359 0.1000001 -0.01666671 -0.02227354 0.1000001 -0.0222736 -0.02319002 0.1000001 -0.01903164 -0.01903152 0.1000001 -0.02319014 -0.02121305 0.1000001 -0.02121305 -0.01666671 0.1000001 -0.02494364 -0.01998305 0.1000001 -0.02434957 -0.01414144 0.1000001 -0.02645725 -0.01750016 0.1000001 -0.02619111 -0.01148033 0.1000001 -0.0277161 -0.01484853 0.1000001 -0.02778041 -0.009143829 0.1000001 -0.03014338 -0.0120542 0.1000001 -0.02910178 -0.008708238 0.1000001 -0.0287081 -0.005852401 0.1000001 -0.02942347 -0.003087282 0.1000001 -0.03134799 -0.002940118 0.1000001 -0.02985537 2.38419e-7 0.1000001 -0.02999985 -0.006145 0.1000001 -0.03089433 2.38419e-7 0.1000001 -0.03149986 0.003087759 0.1000001 -0.03134799 0.02778077 0.1000001 -0.01484853 0.02645748 0.1000001 -0.01414149 0.02771633 0.1000001 -0.01148033 0.02910232 0.1000001 -0.01205444 0.02870815 0.1000001 -0.008708477 0.03014397 0.1000001 -0.009143829 0.02619147 0.1000001 -0.0175004 0.0249443 0.1000001 -0.01666671 0.02435016 0.1000001 -0.01998329 0.0231902 0.1000001 -0.01903164 0.02227371 0.1000001 -0.0222736 0.03134816 0.1000001 -0.003087401 0.02985543 0.1000001 -0.002940416 0.03150022 0.1000001 0 0.02942371 0.1000001 -0.00585258 0.03089499 0.1000001 -0.006145179 0.008708715 0.1000001 -0.0287081 0.01148051 0.1000001 -0.0277161 0.009144306 0.1000001 -0.03014338 0.01484888 0.1000001 -0.02778041 0.01205468 0.1000001 -0.02910178 0.005852878 0.1000001 -0.02942347 0.006145477 0.1000001 -0.03089433 0.002940595 0.1000001 -0.02985537 0.01998353 0.1000001 -0.02434957 0.019032 0.1000001 -0.02319014 0.01666736 0.1000001 -0.02494364 0.02121353 0.1000001 -0.02121305 0.01750046 0.1000001 -0.02619111 0.01414173 0.1000001 -0.02645725 0.02985543 0 0.002940595 0.02985543 0.1000001 0.002940595 0.03000015 0.1000001 0 0.02870815 0 0.008708715 0.02870815 0.1000001 0.008708715 0.02942371 0.1000001 0.005852818 0.02942371 0 0.005852818 0.02645748 0 0.01414173 0.02645748 0.1000001 0.01414173 0.02771633 0.1000001 0.01148051 0.0231902 0 0.01903188 0.0231902 0.1000001 0.01903188 0.0249443 0.1000001 0.01666694 0.0249443 0 0.01666694 0.02771633 0 0.01148051 0.019032 0 0.0231902 0.019032 0.1000001 0.0231902 0.02121353 0.1000001 0.02121329 0.01414173 0 0.02645748 0.01414173 0.1000001 0.02645748 0.01666736 0.1000001 0.02494418 0.01666736 0 0.02494418 0.008708715 0 0.0287081 0.008708715 0.1000001 0.0287081 0.01148051 0.1000001 0.02771621 0.002940595 0 0.02985543 0.002940595 0.1000001 0.02985543 0.005852878 0.1000001 0.02942371 0.005852878 0 0.02942371 0.01148051 0 0.02771621 0.02121353 0 0.02121329 -0.002940118 0 0.02985543 -0.002940118 0.1000001 0.02985543 2.38419e-7 0.1000001 0.03000009 -0.008708238 0 0.0287081 -0.008708238 0.1000001 0.0287081 -0.005852401 0.1000001 0.02942371 -0.005852401 0 0.02942371 -0.01414144 0 0.02645748 -0.01414144 0.1000001 0.02645748 -0.01148033 0.1000001 0.02771621 -0.01903152 0 0.0231902 -0.01903152 0.1000001 0.0231902 -0.01666671 0.1000001 0.02494418 -0.01666671 0 0.02494418 -0.01148033 0 0.02771621 -0.02319002 0 0.01903188 -0.02319002 0.1000001 0.01903188 -0.02121305 0.1000001 0.02121329 -0.02645725 0 0.01414173 -0.02645725 0.1000001 0.01414173 -0.02494359 0.1000001 0.01666694 -0.02494359 0 0.01666694 -0.02870798 0 0.008708715 -0.02870798 0.1000001 0.008708715 -0.0277161 0.1000001 0.01148051 -0.02985525 0 0.002940595 -0.02985525 0.1000001 0.002940595 -0.02942293 0.1000001 0.005852818 -0.02942293 0 0.005852818 -0.0277161 0 0.01148051 -0.02121305 0 0.02121329 2.38419e-7 0 0.03000009 0.03000015 0 0 -0.02999973 0.1000001 0 0.02985543 0 -0.002940416 -0.02985525 0 -0.002940416 -0.02985525 0.1000001 -0.002940416 -0.02870798 0 -0.008708477 -0.02870798 0.1000001 -0.008708477 -0.02942293 0.1000001 -0.00585258 -0.02942293 0 -0.00585258 -0.02645725 0 -0.01414149 -0.02645725 0.1000001 -0.01414149 -0.0277161 0.1000001 -0.01148033 -0.02319002 0 -0.01903164 -0.02319002 0.1000001 -0.01903164 -0.02494359 0.1000001 -0.01666671 -0.02494359 0 -0.01666671 -0.0277161 0 -0.01148033 -0.01903152 0 -0.02319014 -0.01903152 0.1000001 -0.02319014 -0.02121305 0.1000001 -0.02121305 -0.01414144 0 -0.02645725 -0.01414144 0.1000001 -0.02645725 -0.01666671 0.1000001 -0.02494364 -0.01666671 0 -0.02494364 -0.008708238 0 -0.0287081 -0.008708238 0.1000001 -0.0287081 -0.01148033 0.1000001 -0.0277161 -0.002940118 0 -0.02985537 -0.002940118 0.1000001 -0.02985537 -0.005852401 0.1000001 -0.02942347 -0.005852401 0 -0.02942347 -0.01148033 0 -0.0277161 -0.02121305 0 -0.02121305 0.002940595 0 -0.02985537 0.002940595 0.1000001 -0.02985537 2.38419e-7 0.1000001 -0.02999985 0.008708715 0 -0.0287081 0.008708715 0.1000001 -0.0287081 0.005852878 0.1000001 -0.02942347 0.005852878 0 -0.02942347 0.01414173 0 -0.02645725 0.01414173 0.1000001 -0.02645725 0.01148051 0.1000001 -0.0277161 0.019032 0 -0.02319014 0.019032 0.1000001 -0.02319014 0.01666736 0.1000001 -0.02494364 0.01666736 0 -0.02494364 0.01148051 0 -0.0277161 0.0231902 0 -0.01903164 0.0231902 0.1000001 -0.01903164 0.02121353 0.1000001 -0.02121305 0.02645748 0 -0.01414149 0.02645748 0.1000001 -0.01414149 0.0249443 0.1000001 -0.01666671 0.0249443 0 -0.01666671 0.02870815 0 -0.008708477 0.02870815 0.1000001 -0.008708477 0.02771633 0.1000001 -0.01148033 0.02985543 0.1000001 -0.002940416 0.02942371 0.1000001 -0.00585258 0.02942371 0 -0.00585258 0.02771633 0 -0.01148033 0.02121353 0 -0.02121305 2.38419e-7 0 -0.02999985 -0.02999973 0 0 -0.01750016 0 0.02619135 -0.01666671 0 0.02494418 -0.01414144 0 0.02645748 -0.01998305 0 0.02434962 -0.01484853 0 0.02778065 -0.01148033 0 0.02771621 -0.02227354 0 0.02227371 -0.02121305 0 0.02121329 -0.01903152 0 0.0231902 -0.02319002 0 0.01903188 -0.005852401 0 0.02942371 -0.003087282 0 0.03134816 -0.006145 0 0.03089487 -0.002940118 0 0.02985543 2.38419e-7 0 0.03000009 -0.009143829 0 0.03014343 -0.008708238 0 0.0287081 -0.0120542 0 0.02910232 -0.03014338 0 0.009144067 -0.03089421 0 0.006145477 -0.02942293 0 0.005852818 -0.02870798 0 0.008708715 -0.0277161 0 0.01148051 -0.02910161 0 0.01205468 -0.03134799 0 0.00308758 -0.03149986 0 0 -0.02999973 0 0 -0.02985525 0 0.002940595 -0.03134799 0 -0.003087401 -0.02619099 0 0.01750046 -0.02494359 0 0.01666694 -0.02434957 0 0.01998353 -0.02645725 0 0.01414173 -0.02778029 0 0.01484876 0.005852878 0 0.02942371 0.006145477 0 0.03089487 0.003087759 0 0.03134816 0.009144306 0 0.03014343 2.38419e-7 0 0.0315001 0.002940595 0 0.02985543 0.008708715 0 0.0287081 0.01148051 0 0.02771621 0.01205468 0 0.02910232 0.01484888 0 0.02778065 0.01414173 0 0.02645748 0.01750046 0 0.02619135 0.01666736 0 0.02494418 0.01998353 0 0.02434962 0.019032 0 0.0231902 0.02227371 0 0.02227371 0.02121353 0 0.02121329 0.0231902 0 0.01903188 0.02435016 0 0.01998353 0.0249443 0 0.01666694 0.02619147 0 0.01750046 0.02645748 0 0.01414173 0.02778077 0 0.01484876 0.02771633 0 0.01148051 0.02910232 0 0.01205468 0.02870815 0 0.008708715 0.03014397 0 0.009144067 0.02942371 0 0.005852818 0.02985543 0 0.002940595 0.03134816 0 0.00308758 0.03089499 0 0.006145477 0.03000015 0 0 -0.03089421 0 -0.006145179 -0.02942293 0 -0.00585258 -0.02985525 0 -0.002940416 -0.03014338 0 -0.009143829 -0.02870798 0 -0.008708477 -0.0277161 0 -0.01148033 -0.02910161 0 -0.01205444 -0.02778029 0 -0.01484853 -0.02645725 0 -0.01414149 -0.02494359 0 -0.01666671 -0.02619099 0 -0.0175004 -0.02434957 0 -0.01998329 -0.02319002 0 -0.01903164 -0.02227354 0 -0.0222736 -0.02121305 0 -0.02121305 -0.01903152 0 -0.02319014 -0.01998305 0 -0.02434957 -0.01666671 0 -0.02494364 -0.01750016 0 -0.02619111 -0.01414144 0 -0.02645725 -0.01484853 0 -0.02778041 -0.01148033 0 -0.0277161 -0.0120542 0 -0.02910178 -0.009143829 0 -0.03014338 -0.005852401 0 -0.02942347 -0.008708238 0 -0.0287081 2.38419e-7 0 -0.02999985 -0.002940118 0 -0.02985537 -0.003087282 0 -0.03134799 -0.006145 0 -0.03089433 2.38419e-7 0 -0.03149986 0.003087759 0 -0.03134799 0.02771633 0 -0.01148033 0.02645748 0 -0.01414149 0.02778077 0 -0.01484853 0.02910232 0 -0.01205444 0.03014397 0 -0.009143829 0.02870815 0 -0.008708477 0.02619147 0 -0.0175004 0.0231902 0 -0.01903164 0.02435016 0 -0.01998329 0.0249443 0 -0.01666671 0.02227371 0 -0.0222736 0.02985543 0 -0.002940416 0.03134816 0 -0.003087401 0.03150022 0 0 0.02942371 0 -0.00585258 0.03089499 0 -0.006145179 0.009144306 0 -0.03014338 0.01148051 0 -0.0277161 0.008708715 0 -0.0287081 0.01205468 0 -0.02910178 0.01484888 0 -0.02778041 0.005852878 0 -0.02942347 0.006145477 0 -0.03089433 0.002940595 0 -0.02985537 0.019032 0 -0.02319014 0.01998353 0 -0.02434957 0.01666736 0 -0.02494364 0.02121353 0 -0.02121305 0.01414173 0 -0.02645725 0.01750046 0 -0.02619111 @@ -87,9 +87,9 @@ - -0.998793 0 -0.0491178 -0.9700253 0 -0.2430042 -0.9891843 0 -0.1466781 -0.9039723 0 -0.4275912 -0.803188 0 -0.5957257 -0.8577665 0 -0.5140396 -0.9415382 0 -0.3369065 -0.6715008 0 -0.7410038 -0.5140249 0 -0.8577754 -0.5957541 0 -0.8031669 -0.3368949 0 -0.9415423 -0.1466382 0 -0.9891903 -0.2430481 0 -0.9700143 -0.4275717 0 -0.9039815 -0.7410078 0 -0.6714964 0.04913944 0 -0.998792 0.2430466 0 -0.9700147 0.1466382 0 -0.9891903 0.4275888 0 -0.9039734 0.5957245 0 -0.8031889 0.5140596 0 -0.8577545 0.3368748 0 -0.9415495 0.7409747 0 -0.6715331 0.85772 0 -0.5141173 0.8032482 0 -0.5956445 0.9415318 0 -0.3369242 0.9891661 0 -0.1468007 0.9700548 0 -0.2428864 0.9039723 0 -0.4275912 0.6715008 0 -0.7410038 -0.04913783 0 -0.9987921 -0.9700253 0 -0.2430043 -0.9891843 0 -0.1466782 -0.8031883 0 -0.5957254 -0.8577663 0 -0.5140399 -0.9415382 0 -0.3369063 -0.5140237 0 -0.857776 -0.5957521 0 -0.8031684 -0.2430466 0 -0.9700147 -0.427573 0 -0.9039809 -0.7410068 0 -0.6714976 0.04913783 0 -0.9987921 0.2430481 0 -0.9700143 0.4275875 0 -0.903974 0.5957266 0 -0.8031874 0.5140608 0 -0.8577539 0.7409757 0 -0.6715319 0.8577201 0 -0.5141168 0.8032479 0 -0.5956448 0.9415317 0 -0.3369244 0.9891662 0 -0.1468007 0.9700549 0 -0.2428864 -0.04913938 0 -0.9987919 0.9987952 0 -0.04907363 -0.998793 0 0.04912078 0.998795 0 0.04907661 0.9700549 0 0.2428864 0.9891657 0 0.1468036 0.9039685 0 0.4275991 0.8032482 0 0.5956445 0.8577201 0 0.5141168 0.9415339 0 0.3369182 0.6715347 0 0.7409732 0.5141061 0 0.8577266 0.595646 0 0.8032472 0.3369281 0 0.9415305 0.1467001 0 0.9891811 0.242987 0 0.9700295 0.42759 0 0.9039728 0.740975 0 0.6715326 -0.04907786 0 0.998795 -0.2429856 0 0.97003 -0.1466985 0 0.9891813 -0.4275755 0 0.9039796 -0.5956745 0 0.8032259 -0.5140691 0 0.8577488 -0.3369495 0 0.9415228 -0.7410078 0 0.6714964 -0.8577665 0 0.5140396 -0.8031877 0 0.5957261 -0.9415404 0 0.3369002 -0.9891839 0 0.146681 -0.9700253 0 0.2430042 -0.9039685 0 0.4275991 -0.6715338 0 0.7409739 0.04907631 0 0.9987951 0.9891657 0 0.1468036 0.8032477 0 0.5956453 0.6715338 0 0.7409739 0.514105 0 0.8577274 0.595647 0 0.8032464 0.3369295 0 0.94153 0.1466985 0 0.9891813 0.2429856 0 0.97003 0.4275913 0 0.9039722 0.7409757 0 0.6715319 -0.04907625 0 0.998795 -0.242987 0 0.9700295 -0.1467002 0 0.9891811 -0.4275743 0 0.9039803 -0.5956735 0 0.8032268 -0.5140702 0 0.8577481 -0.3369481 0 0.9415233 -0.7410071 0 0.6714972 -0.8031883 0 0.5957254 -0.9891839 0 0.1466811 -0.6715347 0 0.7409732 0.04907786 0 0.998795 0.9987915 0 0.04915046 0.9700381 0 0.242953 0.9891909 0 0.146634 0.9039903 0 0.4275531 0.8032479 0 0.5956448 0.857728 0 0.5141038 0.9415218 0 0.336952 0.6715776 0 0.7409342 0.5141209 0 0.8577178 0.5957075 0 0.8032016 0.3368564 0 0.9415561 0.1466797 0 0.9891841 0.2430267 0 0.9700197 0.4275687 0 0.9039828 0.7408663 0 0.6716527 -0.04911255 0 0.9987933 -0.2430267 0 0.9700196 -0.1466797 0 0.989184 -0.4275687 0 0.9039829 -0.5957355 0 0.8031808 -0.5140967 0 0.8577322 -0.3368566 0 0.941556 -0.7409155 0 0.6715983 -0.8577283 0 0.5141035 -0.8032307 0 0.5956682 -0.9415148 0 0.3369719 -0.9891735 0 0.1467508 -0.9700433 0 0.242932 -0.9040129 0 0.4275053 -0.6715468 0 0.7409622 0.0491141 0 0.9987932 0.8577283 0 0.5141035 0.9415219 0 0.3369522 0.4275701 0 0.9039824 0.740867 0 0.6716519 -0.0491141 0 0.9987932 -0.4275675 0 0.9039835 -0.7409148 0 0.671599 -0.857728 0 0.5141038 -0.9415149 0 0.3369718 0.04911255 0 0.9987933 -0.9987926 0 0.04912763 0.9987913 0 -0.04915332 -0.9987924 0 -0.04913043 -0.9700444 0 -0.2429275 -0.9891727 0 -0.1467564 -0.9040129 0 -0.4275053 -0.8032098 0 -0.5956963 -0.8577432 0 -0.5140786 -0.9415147 0 -0.336972 -0.6715576 0 -0.7409525 -0.5140967 0 -0.8577322 -0.5957209 0 -0.8031916 -0.3369274 0 -0.9415307 -0.1467372 0 -0.9891756 -0.2429502 0 -0.9700388 -0.4275207 0 -0.9040056 -0.7409169 0 -0.6715968 0.04911255 0 -0.9987933 0.2429502 0 -0.9700389 0.1467357 0 -0.9891758 0.427522 0 -0.904005 0.5956929 0 -0.8032124 0.5141209 0 -0.8577178 0.3369285 0 -0.9415303 0.7408683 0 -0.6716504 0.8577437 0 -0.5140776 0.8032276 0 -0.5956723 0.9415219 0 -0.3369522 0.98919 0 -0.1466396 0.9700392 0 -0.2429484 0.9039903 0 -0.4275531 0.6715875 0 -0.7409252 -0.0491141 0 -0.9987932 -0.9891728 0 -0.1467563 -0.8032103 0 -0.5956956 -0.8577437 0 -0.5140776 -0.9415148 0 -0.3369719 -0.6715567 0 -0.7409532 -0.3369287 0 -0.9415302 -0.1467357 0 -0.9891757 0.0491141 0 -0.9987932 0.1467372 0 -0.9891755 0.3369271 0 -0.9415307 0.8577432 0 -0.5140786 0.8032271 0 -0.595673 0.9415218 0 -0.3369523 0.98919 0 -0.1466396 0.6715884 0 -0.7409245 -0.04911255 0 -0.9987933 0 1 -3.29915e-6 0 1 3.14197e-6 0 1 0 0 1 -3.29896e-6 0 1 3.14214e-6 0 1 -1.2569e-5 0 1 -6.59831e-6 0 1 1.31958e-5 0 1 3.14202e-6 0 1 3.14191e-6 0 1 -4.71262e-6 0 1 -1.57088e-6 0 1 3.71156e-6 0 1 1.57097e-6 0 1 6.59762e-6 0 1 6.59883e-6 0 1 2.35668e-6 0 1 1.25675e-5 0 1 -1.31961e-5 0 1 -1.31956e-5 0 1 4.94871e-6 0 1 -4.7128e-6 0 1 -1.57098e-6 0 1 -6.28337e-6 0 1 6.59794e-6 0 1 -6.28449e-6 0 1 6.59866e-6 0 1 9.42688e-6 0 1 3.29911e-6 0 1 -3.3002e-6 0 1 -3.29997e-6 0 1 6.28408e-6 0 1 1.57074e-6 0 1 6.59763e-6 0 1 -3.29849e-6 0 1 -3.29924e-6 0 1 -1.57091e-6 0 1 3.71155e-6 0 1 4.71283e-6 0 1 -3.14188e-6 0 1 -6.59872e-6 0 1 -2.06186e-7 0 1 -6.59722e-6 0 1 3.29941e-6 0 1 -3.14228e-6 0 1 3.2987e-6 0 1 -3.1417e-6 0 1 -3.14237e-6 0 1 -3.14245e-6 0 1 1.31983e-5 0 1 -1.31971e-5 0 1 1.25703e-5 0 1 -1.31965e-5 0 1 -6.59752e-6 0 1 -1.57067e-6 0 1 -6.28394e-6 0 1 -3.71178e-6 0 1 3.92758e-6 0 1 3.29931e-6 0 1 -6.28378e-6 0 1 6.59699e-6 0 1 -6.59866e-6 0 1 4.71344e-6 0 1 1.31974e-5 0 1 -6.59915e-6 0 1 -1.25692e-5 0 1 1.31971e-5 0 1 -9.42728e-6 0 1 -3.29957e-6 0 1 3.30019e-6 0 1 3.2998e-6 0 1 6.28337e-6 0 1 -6.59792e-6 0 1 6.28396e-6 0 1 -6.59775e-6 0 -1 0 + -0.9987921 0 -0.049138 -0.9700205 0 -0.2430233 -0.9891873 0 -0.1466583 -0.9039687 0 -0.4275986 -0.8031859 0 -0.5957286 -0.8577752 0 -0.514025 -0.9415379 0 -0.336907 -0.6715008 0 -0.7410038 -0.5140007 0 -0.8577899 -0.5957541 0 -0.8031669 -0.3369028 0 -0.9415395 -0.1466382 0 -0.9891903 -0.2430645 0 -0.9700102 -0.4275717 0 -0.9039815 -0.7410179 0 -0.6714853 0.04913944 0 -0.998792 0.243063 0 -0.9700106 0.1466382 0 -0.9891903 0.4275888 0 -0.9039734 0.5957245 0 -0.8031889 0.5140445 0 -0.8577637 0.336879 0 -0.9415479 0.7409747 0 -0.6715331 0.8577125 0 -0.5141298 0.8032637 0 -0.5956237 0.9415318 0 -0.3369242 0.9891632 0 -0.1468212 0.9700597 0 -0.2428668 0.9039685 0 -0.4275991 0.6715008 0 -0.7410038 -0.04913783 0 -0.9987921 -0.9700205 0 -0.2430233 -0.9891873 0 -0.1466583 -0.9415381 0 -0.3369069 -0.5139995 0 -0.8577905 -0.5957521 0 -0.8031684 -0.3369056 0 -0.9415385 -0.243063 0 -0.9700106 -0.427573 0 -0.9039809 -0.7410169 0 -0.6714865 0.04913783 0 -0.9987921 0.2430645 0 -0.9700102 0.4275875 0 -0.903974 0.5957266 0 -0.8031874 0.5140457 0 -0.8577629 0.3368762 0 -0.941549 0.7409757 0 -0.6715319 0.9415317 0 -0.3369244 0.9891632 0 -0.1468211 0.9700597 0 -0.2428666 -0.04913938 0 -0.9987919 0.9987952 0 -0.04907363 -0.9987919 0 0.04914098 0.998795 0 0.04907661 0.9700597 0 0.2428666 0.9891626 0 0.1468241 0.9039649 0 0.4276068 0.8032635 0 0.595624 0.8577125 0 0.5141298 0.9415339 0 0.3369182 0.6715347 0 0.7409732 0.514105 0 0.8577274 0.5956327 0 0.8032569 0.3369281 0 0.9415305 0.1467001 0 0.9891811 0.242987 0 0.9700295 0.4276068 0 0.9039649 0.740975 0 0.6715326 -0.04907786 0 0.998795 -0.2429856 0 0.97003 -0.1466985 0 0.9891813 -0.4275924 0 0.9039717 -0.5956613 0 0.8032358 -0.5140612 0 0.8577535 -0.3369561 0 0.9415205 -0.7410179 0 0.6714853 -0.8577755 0 0.5140247 -0.8031856 0 0.5957289 -0.9415403 0 0.3369008 -0.9891868 0 0.1466612 -0.9700205 0 0.2430233 -0.903965 0 0.4276066 -0.6715338 0 0.7409739 0.04907631 0 0.9987951 0.9891628 0 0.146824 0.9039648 0 0.4276071 0.8577127 0 0.5141294 0.6715338 0 0.7409739 0.5141061 0 0.8577266 0.5956337 0 0.8032562 0.3369295 0 0.94153 0.1466985 0 0.9891813 0.2429856 0 0.97003 0.4276081 0 0.9039642 0.7409757 0 0.6715319 -0.04907625 0 0.998795 -0.242987 0 0.9700295 -0.1467002 0 0.9891811 -0.4275911 0 0.9039723 -0.5956602 0 0.8032366 -0.51406 0 0.8577542 -0.3369547 0 0.9415209 -0.7410172 0 0.6714861 -0.8577752 0 0.514025 -0.9891868 0 0.1466612 -0.9039651 0 0.4276062 -0.6715347 0 0.7409732 0.04907786 0 0.998795 0.9987905 0 0.04916971 0.9700381 0 0.242953 0.9891937 0 0.1466152 0.9039869 0 0.4275603 0.8032479 0 0.5956448 0.8577331 0 0.5140951 0.9415218 0 0.336952 0.6715872 0 0.7409255 0.5141124 0 0.8577228 0.5957201 0 0.8031921 0.336839 0 0.9415623 0.146662 0 0.9891867 0.2430451 0 0.970015 0.4275762 0 0.9039793 0.7408485 0 0.6716722 -0.0491321 0 0.9987924 -0.2430452 0 0.9700151 -0.1466605 0 0.989187 -0.4275687 0 0.9039829 -0.5957481 0 0.8031713 -0.5140967 0 0.8577322 -0.3368392 0 0.9415622 -0.7409067 0 0.671608 -0.8577331 0 0.5140951 -0.8032307 0 0.5956682 -0.9415096 0 0.3369863 -0.9891708 0 0.1467696 -0.970048 0 0.2429139 -0.9040156 0 0.4274995 -0.6715459 0 0.7409629 0.0491321 0 0.9987924 0.9039867 0 0.4275606 0.9415219 0 0.3369522 0.6715864 0 0.7409263 0.1466605 0 0.9891869 0.4275775 0 0.9039788 -0.146662 0 0.9891867 -0.4275675 0 0.9039835 -0.9415097 0 0.3369862 -0.9040157 0 0.4274992 -0.6715468 0 0.7409622 -0.9987926 0 0.04912763 0.9987904 0 -0.04917252 -0.9987924 0 -0.04913043 -0.9700491 0 -0.2429094 -0.9891699 0 -0.1467752 -0.9040156 0 -0.4274995 -0.8032098 0 -0.5956963 -0.8577488 0 -0.5140693 -0.9415095 0 -0.3369864 -0.6715576 0 -0.7409525 -0.5140967 0 -0.8577322 -0.5957209 0 -0.8031916 -0.3369447 0 -0.9415245 -0.1467387 0 -0.9891753 -0.2429318 0 -0.9700434 -0.4275047 0 -0.9040132 -0.7409169 0 -0.6715968 0.04913061 0 -0.9987925 0.2429317 0 -0.9700434 0.1467416 0 -0.9891749 0.4275134 0 -0.904009 0.5956929 0 -0.8032124 0.5141124 0 -0.8577228 0.3369458 0 -0.9415241 0.7408587 0 -0.671661 0.8577485 0 -0.5140696 0.8032276 0 -0.5956723 0.9415219 0 -0.3369522 0.9891928 0 -0.1466207 0.9700392 0 -0.2429484 0.9039867 0 -0.4275606 0.6715972 0 -0.7409166 -0.04912763 0 -0.9987925 -0.9891699 0 -0.1467752 -0.8032103 0 -0.5956956 -0.8577485 0 -0.5140696 -0.9415096 0 -0.3369863 -0.6715567 0 -0.7409532 -0.336946 0 -0.941524 -0.1467416 0 -0.9891749 0.04912763 0 -0.9987925 0.1467387 0 -0.9891754 0.3369445 0 -0.9415246 0.8577488 0 -0.5140693 0.8032271 0 -0.595673 0.9415218 0 -0.3369523 0.9891928 0 -0.1466208 0.671598 0 -0.7409158 -0.04913061 0 -0.9987925 0 1 -3.29919e-6 0 1 3.14193e-6 0 1 0 0 1 -3.29907e-6 0 1 3.14224e-6 0 1 -1.2569e-5 0 1 -6.59857e-6 0 1 1.31958e-5 0 1 3.14191e-6 0 1 -3.14194e-6 0 1 4.71259e-6 0 1 -1.57088e-6 0 1 3.71156e-6 0 1 1.57097e-6 0 1 -6.5984e-6 0 1 6.28303e-6 0 1 3.29902e-6 0 1 6.59883e-6 0 1 2.35669e-6 0 1 1.25675e-5 0 1 -1.31962e-5 0 1 -1.31961e-5 0 1 4.94884e-6 0 1 7.85439e-6 0 1 -1.57091e-6 0 1 -9.42456e-6 0 1 -3.29885e-6 0 1 -6.28442e-6 0 1 6.59862e-6 0 1 3.14243e-6 0 1 3.29922e-6 0 1 -3.29804e-6 0 1 3.14129e-6 0 1 -6.59861e-6 0 1 6.28392e-6 0 1 -2.356e-6 0 1 6.59723e-6 0 1 -6.28418e-6 0 1 -3.2987e-6 0 1 -4.71274e-6 0 1 1.23718e-6 0 1 -4.7128e-6 0 1 4.94889e-6 0 1 -6.59872e-6 0 1 -2.0619e-7 0 1 -6.28289e-6 0 1 -3.29903e-6 0 1 3.29946e-6 0 1 -3.14228e-6 0 1 3.29859e-6 0 1 -3.1416e-6 0 1 -3.14247e-6 0 1 -3.14259e-6 0 1 1.31987e-5 0 1 -1.31976e-5 0 1 1.25708e-5 0 1 -1.31965e-5 0 1 -6.59735e-6 0 1 6.2843e-6 0 1 6.59724e-6 0 1 2.35588e-6 0 1 3.29804e-6 0 1 -3.14123e-6 0 1 6.5982e-6 0 1 -6.2838e-6 0 1 -1.23726e-6 0 1 1.57103e-6 0 1 -6.28332e-6 0 1 -3.14188e-6 0 1 6.28394e-6 0 1 -6.5988e-6 0 1 -7.85609e-6 0 1 1.31974e-5 0 1 -6.59936e-6 0 1 -1.25697e-5 0 1 1.31976e-5 0 1 -3.14247e-6 0 1 -3.29961e-6 0 1 9.42456e-6 0 1 3.29881e-6 0 1 6.28376e-6 0 1 -6.59742e-6 0 -1 0 - + @@ -103,13 +103,13 @@ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    256 0 257 0 258 0 259 1 260 1 261 1 262 2 261 2 257 2 263 3 264 3 265 3 266 4 267 4 268 4 269 5 268 5 264 5 270 6 265 6 260 6 271 7 272 7 273 7 274 8 275 8 276 8 277 9 276 9 272 9 278 10 279 10 280 10 281 11 282 11 283 11 284 12 283 12 279 12 285 13 280 13 275 13 286 14 273 14 267 14 287 15 288 15 289 15 290 16 291 16 292 16 293 17 292 17 288 17 294 18 295 18 296 18 297 19 298 19 299 19 300 20 299 20 295 20 301 21 296 21 291 21 302 22 303 22 304 22 305 23 306 23 307 23 308 24 307 24 303 24 309 25 310 25 311 25 312 26 313 26 314 26 315 27 314 27 310 27 316 28 311 28 306 28 317 29 304 29 298 29 318 30 289 30 282 30 258 0 319 0 256 0 261 31 262 31 259 31 262 32 257 32 256 32 265 3 270 3 263 3 268 33 269 33 266 33 269 34 264 34 263 34 270 35 260 35 259 35 273 7 286 7 271 7 276 36 277 36 274 36 277 37 272 37 271 37 280 10 285 10 278 10 283 11 284 11 281 11 284 38 279 38 278 38 285 39 275 39 274 39 286 40 267 40 266 40 289 41 318 41 287 41 292 42 293 42 290 42 293 17 288 17 287 17 296 43 301 43 294 43 299 44 300 44 297 44 300 45 295 45 294 45 301 21 291 21 290 21 304 46 317 46 302 46 307 47 308 47 305 47 308 48 303 48 302 48 311 49 316 49 309 49 314 50 315 50 312 50 315 51 310 51 309 51 316 28 306 28 305 28 317 29 298 29 297 29 318 52 282 52 281 52 312 53 320 53 313 53 321 54 319 54 258 54 322 55 323 55 320 55 324 56 325 56 326 56 327 57 326 57 323 57 328 58 329 58 330 58 331 59 332 59 333 59 334 60 333 60 329 60 335 61 330 61 325 61 336 62 337 62 338 62 339 63 340 63 341 63 342 64 341 64 337 64 343 65 344 65 345 65 346 66 347 66 348 66 349 67 348 67 344 67 350 68 345 68 340 68 351 69 338 69 332 69 352 70 353 70 354 70 355 71 356 71 357 71 358 72 357 72 353 72 359 73 360 73 361 73 362 74 363 74 364 74 365 75 364 75 360 75 366 76 361 76 356 76 367 77 368 77 369 77 370 78 371 78 372 78 373 79 372 79 368 79 374 80 375 80 376 80 321 81 377 81 378 81 379 82 378 82 375 82 380 83 376 83 371 83 381 84 369 84 363 84 382 85 354 85 347 85 320 55 383 55 322 55 326 56 327 56 324 56 327 86 323 86 322 86 330 58 335 58 328 58 333 87 334 87 331 87 334 60 329 60 328 60 335 61 325 61 324 61 338 88 351 88 336 88 341 89 342 89 339 89 342 90 337 90 336 90 345 91 350 91 343 91 348 92 349 92 346 92 349 93 344 93 343 93 350 94 340 94 339 94 351 95 332 95 331 95 354 96 382 96 352 96 357 97 358 97 355 97 358 98 353 98 352 98 361 99 366 99 359 99 364 100 365 100 362 100 365 101 360 101 359 101 366 102 356 102 355 102 369 103 381 103 367 103 372 78 373 78 370 78 373 104 368 104 367 104 376 80 380 80 374 80 378 105 379 105 321 105 379 82 375 82 374 82 380 83 371 83 370 83 381 106 363 106 362 106 382 107 347 107 346 107 321 54 258 54 377 54 312 53 383 53 320 53

    +

    256 0 257 0 258 0 259 1 260 1 261 1 262 2 261 2 257 2 263 3 264 3 265 3 266 4 267 4 268 4 269 5 268 5 264 5 270 6 265 6 260 6 271 7 272 7 273 7 274 8 275 8 276 8 277 9 276 9 272 9 278 10 279 10 280 10 281 11 282 11 283 11 284 12 283 12 279 12 285 13 280 13 275 13 286 14 273 14 267 14 287 15 288 15 289 15 290 16 291 16 292 16 293 17 292 17 288 17 294 18 295 18 296 18 297 19 298 19 299 19 300 20 299 20 295 20 301 21 296 21 291 21 302 22 303 22 304 22 305 23 306 23 307 23 308 24 307 24 303 24 309 25 310 25 311 25 312 26 313 26 314 26 315 27 314 27 310 27 316 28 311 28 306 28 317 29 304 29 298 29 318 30 289 30 282 30 258 0 319 0 256 0 261 31 262 31 259 31 262 32 257 32 256 32 265 3 270 3 263 3 268 4 269 4 266 4 269 5 264 5 263 5 270 33 260 33 259 33 273 7 286 7 271 7 276 34 277 34 274 34 277 35 272 35 271 35 280 36 285 36 278 36 283 11 284 11 281 11 284 37 279 37 278 37 285 38 275 38 274 38 286 39 267 39 266 39 289 40 318 40 287 40 292 41 293 41 290 41 293 17 288 17 287 17 296 42 301 42 294 42 299 43 300 43 297 43 300 44 295 44 294 44 301 45 291 45 290 45 304 46 317 46 302 46 307 23 308 23 305 23 308 24 303 24 302 24 311 47 316 47 309 47 314 48 315 48 312 48 315 49 310 49 309 49 316 28 306 28 305 28 317 29 298 29 297 29 318 50 282 50 281 50 312 51 320 51 313 51 321 52 319 52 258 52 322 53 323 53 320 53 324 54 325 54 326 54 327 55 326 55 323 55 328 56 329 56 330 56 331 57 332 57 333 57 334 58 333 58 329 58 335 59 330 59 325 59 336 60 337 60 338 60 339 61 340 61 341 61 342 62 341 62 337 62 343 63 344 63 345 63 346 64 347 64 348 64 349 65 348 65 344 65 350 66 345 66 340 66 351 67 338 67 332 67 352 68 353 68 354 68 355 69 356 69 357 69 358 70 357 70 353 70 359 71 360 71 361 71 362 72 363 72 364 72 365 73 364 73 360 73 366 74 361 74 356 74 367 75 368 75 369 75 370 76 371 76 372 76 373 77 372 77 368 77 374 78 375 78 376 78 321 79 377 79 378 79 379 80 378 80 375 80 380 81 376 81 371 81 381 82 369 82 363 82 382 83 354 83 347 83 320 53 383 53 322 53 326 54 327 54 324 54 327 84 323 84 322 84 330 85 335 85 328 85 333 57 334 57 331 57 334 86 329 86 328 86 335 59 325 59 324 59 338 87 351 87 336 87 341 88 342 88 339 88 342 89 337 89 336 89 345 90 350 90 343 90 348 91 349 91 346 91 349 92 344 92 343 92 350 93 340 93 339 93 351 94 332 94 331 94 354 95 382 95 352 95 357 96 358 96 355 96 358 97 353 97 352 97 361 98 366 98 359 98 364 99 365 99 362 99 365 100 360 100 359 100 366 101 356 101 355 101 369 102 381 102 367 102 372 103 373 103 370 103 373 77 368 77 367 77 376 78 380 78 374 78 378 104 379 104 321 104 379 80 375 80 374 80 380 105 371 105 370 105 381 106 363 106 362 106 382 107 347 107 346 107 321 52 258 52 377 52 312 51 383 51 320 51

    3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    0 108 1 108 2 108 3 109 4 109 5 109 1 110 3 110 6 110 7 111 8 111 9 111 10 112 11 112 12 112 8 113 10 113 13 113 4 114 7 114 14 114 15 115 16 115 17 115 18 116 19 116 20 116 16 117 18 117 21 117 22 118 23 118 24 118 25 119 26 119 27 119 23 120 25 120 28 120 19 121 22 121 29 121 11 122 15 122 30 122 31 123 32 123 33 123 34 124 35 124 36 124 32 125 34 125 37 125 38 126 39 126 40 126 41 127 42 127 43 127 39 128 41 128 44 128 35 129 38 129 45 129 46 130 47 130 48 130 49 131 50 131 51 131 47 132 49 132 52 132 53 133 54 133 55 133 56 134 57 134 58 134 54 135 56 135 59 135 50 136 53 136 60 136 42 137 46 137 61 137 26 138 31 138 62 138 0 108 2 108 63 108 5 109 6 109 3 109 2 110 1 110 6 110 9 111 14 111 7 111 12 112 13 112 10 112 9 139 8 139 13 139 5 140 4 140 14 140 17 115 30 115 15 115 20 116 21 116 18 116 17 117 16 117 21 117 24 118 29 118 22 118 27 119 28 119 25 119 24 120 23 120 28 120 20 141 19 141 29 141 12 142 11 142 30 142 33 143 62 143 31 143 36 124 37 124 34 124 33 125 32 125 37 125 40 144 45 144 38 144 43 127 44 127 41 127 40 128 39 128 44 128 36 129 35 129 45 129 48 145 61 145 46 145 51 146 52 146 49 146 48 132 47 132 52 132 55 147 60 147 53 147 58 134 59 134 56 134 55 135 54 135 59 135 51 136 50 136 60 136 43 137 42 137 61 137 27 148 26 148 62 148 57 149 64 149 58 149 0 150 63 150 65 150 64 151 66 151 67 151 68 152 69 152 70 152 66 153 68 153 71 153 72 154 73 154 74 154 75 155 76 155 77 155 73 156 75 156 78 156 69 157 72 157 79 157 80 158 81 158 82 158 83 159 84 159 85 159 81 160 83 160 86 160 87 161 88 161 89 161 90 162 91 162 92 162 88 163 90 163 93 163 84 164 87 164 94 164 76 165 80 165 95 165 96 166 97 166 98 166 99 167 100 167 101 167 97 168 99 168 102 168 103 169 104 169 105 169 106 170 107 170 108 170 104 171 106 171 109 171 100 172 103 172 110 172 111 173 112 173 113 173 114 174 115 174 116 174 112 175 114 175 117 175 118 176 119 176 120 176 121 177 122 177 65 177 119 178 121 178 123 178 115 179 118 179 124 179 107 180 111 180 125 180 91 181 96 181 126 181 67 151 127 151 64 151 70 152 71 152 68 152 67 182 66 182 71 182 74 154 79 154 72 154 77 183 78 183 75 183 74 184 73 184 78 184 70 185 69 185 79 185 82 186 95 186 80 186 85 159 86 159 83 159 82 160 81 160 86 160 89 187 94 187 87 187 92 188 93 188 90 188 89 163 88 163 93 163 85 164 84 164 94 164 77 165 76 165 95 165 98 189 126 189 96 189 101 167 102 167 99 167 98 190 97 190 102 190 105 169 110 169 103 169 108 170 109 170 106 170 105 171 104 171 109 171 101 191 100 191 110 191 113 173 125 173 111 173 116 192 117 192 114 192 113 193 112 193 117 193 120 194 124 194 118 194 65 195 123 195 121 195 120 178 119 178 123 178 116 179 115 179 124 179 108 196 107 196 125 196 92 197 91 197 126 197 122 150 0 150 65 150 64 149 127 149 58 149 128 198 129 198 130 198 131 199 130 199 129 199 132 200 128 200 133 200 130 200 133 200 128 200 134 200 135 200 136 200 137 200 136 200 135 200 129 201 134 201 131 201 136 202 131 202 134 202 138 203 139 203 140 203 141 204 142 204 139 204 139 200 142 200 140 200 140 200 143 200 138 200 143 205 144 205 132 205 133 206 145 206 132 206 144 200 143 200 140 200 132 200 145 200 143 200 146 207 147 207 148 207 146 200 148 200 149 200 150 200 151 200 148 200 146 208 152 208 147 208 153 209 154 209 152 209 152 210 155 210 153 210 153 211 156 211 154 211 146 200 155 200 152 200 157 200 158 200 159 200 160 212 159 212 158 212 136 200 137 200 157 200 158 200 157 200 137 200 161 200 151 200 150 200 149 213 148 213 151 213 161 200 160 200 151 200 159 200 160 200 161 200 162 214 163 214 164 214 163 215 165 215 164 215 141 200 166 200 162 200 162 200 167 200 141 200 165 216 168 216 164 216 162 217 164 217 167 217 141 200 139 200 166 200 169 218 168 218 165 218 170 219 169 219 171 219 165 220 171 220 169 220 172 221 173 221 170 221 169 222 170 222 173 222 174 223 175 223 172 223 173 224 172 224 175 224 176 225 177 225 174 225 175 226 174 226 177 226 178 227 179 227 176 227 177 228 176 228 179 228 180 200 178 200 181 200 176 200 181 200 178 200 182 200 180 200 183 200 181 229 183 229 180 229 184 230 182 230 183 230 185 200 182 200 184 200 184 200 186 200 185 200 187 231 188 231 185 231 187 200 185 200 186 200 187 232 189 232 188 232 190 233 191 233 189 233 189 234 192 234 190 234 190 235 193 235 191 235 187 200 192 200 189 200 194 236 195 236 156 236 156 200 196 200 194 200 194 237 197 237 195 237 153 238 196 238 156 238 198 200 197 200 199 200 200 200 201 200 198 200 198 200 201 200 197 200 194 200 199 200 197 200 202 239 200 239 198 239 203 200 204 200 205 200 202 240 205 240 204 240 202 200 204 200 200 200 206 200 203 200 207 200 205 200 207 200 203 200 208 200 206 200 209 200 207 200 209 200 206 200 210 241 211 241 208 241 206 242 208 242 211 242 212 243 213 243 210 243 211 244 210 244 213 244 214 200 215 200 212 200 213 200 212 200 215 200 216 245 217 245 214 245 215 246 214 246 217 246 216 200 218 200 219 200 220 247 221 247 222 247 221 248 220 248 219 248 219 249 220 249 223 249 220 200 222 200 224 200 223 200 216 200 219 200 216 250 214 250 218 250 225 200 224 200 222 200 226 200 227 200 228 200 226 200 228 200 229 200 230 251 231 251 228 251 226 252 232 252 227 252 233 200 234 200 235 200 236 200 235 200 234 200 227 200 232 200 233 200 234 253 233 253 232 253 237 254 238 254 193 254 193 255 239 255 237 255 237 256 240 256 238 256 190 257 239 257 193 257 240 258 231 258 230 258 229 200 228 200 231 200 240 237 241 237 231 237 237 200 241 200 240 200 242 259 243 259 244 259 245 260 246 260 243 260 243 200 246 200 244 200 244 261 247 261 242 261 247 200 248 200 225 200 222 262 249 262 225 262 248 263 247 263 244 263 225 264 249 264 247 264 236 265 250 265 251 265 252 266 251 266 250 266 235 267 236 267 253 267 251 268 253 268 236 268 254 269 245 269 255 269 243 270 255 270 245 270 250 271 254 271 252 271 255 272 252 272 254 272 384 273 385 273 386 273 385 273 384 273 387 273 388 273 386 273 389 273 386 273 388 273 384 273 390 273 391 273 392 273 391 273 390 273 393 273 387 273 392 273 385 273 392 273 387 273 390 273 394 273 395 273 396 273 395 273 397 273 398 273 394 273 397 273 395 273 396 273 399 273 394 273 389 273 400 273 399 273 389 273 401 273 388 273 394 273 399 273 400 273 399 273 401 273 389 273 402 273 403 273 404 273 405 273 402 273 404 273 402 273 406 273 407 273 403 273 408 273 404 273 408 273 409 273 410 273 410 273 411 273 408 273 409 273 412 273 410 273 408 273 411 273 404 273 413 273 414 273 415 273 414 273 413 273 416 273 415 273 393 273 390 273 393 273 415 273 414 273 407 273 406 273 417 273 406 273 402 273 405 273 406 273 416 273 417 273 417 273 416 273 413 273 418 273 419 273 420 273 418 273 421 273 419 273 420 273 422 273 398 273 398 273 423 273 420 273 418 273 424 273 421 273 423 273 418 273 420 273 422 273 395 273 398 273 421 273 424 273 425 273 426 273 425 273 427 273 425 273 426 273 421 273 427 273 428 273 429 273 428 273 427 273 425 273 429 273 430 273 431 273 430 273 429 273 428 273 431 273 432 273 433 273 432 273 431 273 430 273 433 273 434 273 435 273 434 273 433 273 432 273 436 273 435 273 437 273 435 273 436 273 433 273 438 273 437 273 439 273 437 273 438 273 436 273 438 273 439 273 440 273 440 273 439 273 441 273 441 273 442 273 440 273 441 273 443 273 444 273 442 273 441 273 444 273 443 273 445 273 444 273 445 273 446 273 447 273 447 273 448 273 445 273 446 273 449 273 447 273 445 273 448 273 444 273 412 273 450 273 451 273 451 273 452 273 412 273 450 273 453 273 451 273 412 273 452 273 410 273 454 273 453 273 455 273 455 273 456 273 457 273 453 273 456 273 455 273 453 273 454 273 451 273 455 273 457 273 458 273 459 273 460 273 461 273 460 273 459 273 458 273 457 273 460 273 458 273 462 273 461 273 463 273 461 273 462 273 459 273 464 273 463 273 465 273 463 273 464 273 462 273 465 273 466 273 467 273 466 273 465 273 463 273 467 273 468 273 469 273 468 273 467 273 466 273 469 273 470 273 471 273 470 273 469 273 468 273 471 273 472 273 473 273 472 273 471 273 470 273 474 273 475 273 473 273 476 273 477 273 478 273 474 273 478 273 477 273 479 273 478 273 474 273 480 273 476 273 478 273 474 273 473 273 479 273 475 273 471 273 473 273 476 273 480 273 481 273 482 273 483 273 484 273 485 273 482 273 484 273 482 273 486 273 487 273 483 273 488 273 484 273 489 273 490 273 491 273 490 273 489 273 492 273 491 273 488 273 483 273 488 273 491 273 490 273 449 273 493 273 494 273 494 273 495 273 449 273 493 273 496 273 494 273 449 273 495 273 447 273 487 273 486 273 496 273 486 273 482 273 485 273 486 273 497 273 496 273 496 273 497 273 494 273 498 273 499 273 500 273 499 273 501 273 502 273 498 273 501 273 499 273 500 273 503 273 498 273 481 273 504 273 503 273 481 273 505 273 476 273 498 273 503 273 504 273 503 273 505 273 481 273 506 273 507 273 492 273 507 273 506 273 508 273 509 273 492 273 489 273 492 273 509 273 506 273 510 273 502 273 511 273 502 273 510 273 499 273 508 273 511 273 507 273 511 273 508 273 510 273

    +

    0 108 1 108 2 108 3 109 4 109 5 109 1 110 3 110 6 110 7 111 8 111 9 111 10 112 11 112 12 112 8 113 10 113 13 113 4 114 7 114 14 114 15 115 16 115 17 115 18 116 19 116 20 116 16 117 18 117 21 117 22 118 23 118 24 118 25 119 26 119 27 119 23 120 25 120 28 120 19 121 22 121 29 121 11 122 15 122 30 122 31 123 32 123 33 123 34 124 35 124 36 124 32 125 34 125 37 125 38 126 39 126 40 126 41 127 42 127 43 127 39 128 41 128 44 128 35 129 38 129 45 129 46 130 47 130 48 130 49 131 50 131 51 131 47 132 49 132 52 132 53 133 54 133 55 133 56 134 57 134 58 134 54 135 56 135 59 135 50 136 53 136 60 136 42 137 46 137 61 137 26 138 31 138 62 138 0 108 2 108 63 108 5 109 6 109 3 109 2 110 1 110 6 110 9 139 14 139 7 139 12 112 13 112 10 112 9 113 8 113 13 113 5 140 4 140 14 140 17 141 30 141 15 141 20 116 21 116 18 116 17 117 16 117 21 117 24 118 29 118 22 118 27 142 28 142 25 142 24 120 23 120 28 120 20 143 19 143 29 143 12 122 11 122 30 122 33 123 62 123 31 123 36 124 37 124 34 124 33 144 32 144 37 144 40 145 45 145 38 145 43 127 44 127 41 127 40 128 39 128 44 128 36 129 35 129 45 129 48 130 61 130 46 130 51 131 52 131 49 131 48 132 47 132 52 132 55 146 60 146 53 146 58 134 59 134 56 134 55 135 54 135 59 135 51 147 50 147 60 147 43 148 42 148 61 148 27 138 26 138 62 138 57 149 64 149 58 149 0 150 63 150 65 150 64 151 66 151 67 151 68 152 69 152 70 152 66 153 68 153 71 153 72 154 73 154 74 154 75 155 76 155 77 155 73 156 75 156 78 156 69 157 72 157 79 157 80 158 81 158 82 158 83 159 84 159 85 159 81 160 83 160 86 160 87 161 88 161 89 161 90 162 91 162 92 162 88 163 90 163 93 163 84 164 87 164 94 164 76 165 80 165 95 165 96 166 97 166 98 166 99 167 100 167 101 167 97 168 99 168 102 168 103 169 104 169 105 169 106 170 107 170 108 170 104 171 106 171 109 171 100 172 103 172 110 172 111 173 112 173 113 173 114 174 115 174 116 174 112 175 114 175 117 175 118 176 119 176 120 176 121 177 122 177 65 177 119 178 121 178 123 178 115 179 118 179 124 179 107 180 111 180 125 180 91 181 96 181 126 181 67 151 127 151 64 151 70 152 71 152 68 152 67 182 66 182 71 182 74 154 79 154 72 154 77 183 78 183 75 183 74 184 73 184 78 184 70 185 69 185 79 185 82 186 95 186 80 186 85 159 86 159 83 159 82 160 81 160 86 160 89 187 94 187 87 187 92 188 93 188 90 188 89 163 88 163 93 163 85 164 84 164 94 164 77 165 76 165 95 165 98 189 126 189 96 189 101 167 102 167 99 167 98 190 97 190 102 190 105 169 110 169 103 169 108 170 109 170 106 170 105 171 104 171 109 171 101 191 100 191 110 191 113 173 125 173 111 173 116 192 117 192 114 192 113 193 112 193 117 193 120 194 124 194 118 194 65 195 123 195 121 195 120 178 119 178 123 178 116 179 115 179 124 179 108 196 107 196 125 196 92 197 91 197 126 197 122 150 0 150 65 150 64 149 127 149 58 149 128 198 129 198 130 198 131 199 130 199 129 199 132 200 128 200 133 200 130 200 133 200 128 200 134 200 135 200 136 200 137 200 136 200 135 200 129 201 134 201 131 201 136 202 131 202 134 202 138 203 139 203 140 203 141 204 142 204 139 204 139 200 142 200 140 200 140 200 143 200 138 200 143 205 144 205 132 205 133 206 145 206 132 206 144 200 143 200 140 200 132 200 145 200 143 200 146 207 147 207 148 207 146 200 148 200 149 200 150 200 151 200 148 200 146 208 152 208 147 208 153 209 154 209 152 209 152 210 155 210 153 210 153 211 156 211 154 211 146 212 155 212 152 212 157 213 158 213 159 213 160 200 159 200 158 200 136 200 137 200 157 200 158 214 157 214 137 214 161 200 151 200 150 200 149 215 148 215 151 215 161 200 160 200 151 200 159 200 160 200 161 200 162 216 163 216 164 216 163 217 165 217 164 217 141 200 166 200 162 200 162 200 167 200 141 200 165 218 168 218 164 218 162 219 164 219 167 219 141 200 139 200 166 200 169 220 168 220 165 220 170 221 169 221 171 221 165 222 171 222 169 222 172 223 173 223 170 223 169 224 170 224 173 224 174 225 175 225 172 225 173 226 172 226 175 226 176 227 177 227 174 227 175 228 174 228 177 228 178 200 179 200 176 200 177 200 176 200 179 200 180 229 178 229 181 229 176 230 181 230 178 230 182 231 180 231 183 231 181 232 183 232 180 232 184 233 182 233 183 233 185 234 182 234 184 234 184 235 186 235 185 235 187 236 188 236 185 236 187 200 185 200 186 200 187 200 189 200 188 200 190 200 191 200 189 200 189 237 192 237 190 237 190 238 193 238 191 238 187 200 192 200 189 200 194 239 195 239 156 239 156 240 196 240 194 240 194 206 197 206 195 206 153 241 196 241 156 241 198 200 197 200 199 200 200 200 201 200 198 200 198 200 201 200 197 200 194 200 199 200 197 200 202 242 200 242 198 242 203 243 204 243 205 243 202 200 205 200 204 200 202 200 204 200 200 200 206 200 203 200 207 200 205 244 207 244 203 244 208 200 206 200 209 200 207 200 209 200 206 200 210 245 211 245 208 245 206 246 208 246 211 246 212 247 213 247 210 247 211 248 210 248 213 248 214 200 215 200 212 200 213 200 212 200 215 200 216 249 217 249 214 249 215 250 214 250 217 250 216 200 218 200 219 200 220 251 221 251 222 251 221 252 220 252 219 252 219 253 220 253 223 253 220 200 222 200 224 200 223 200 216 200 219 200 216 254 214 254 218 254 225 200 224 200 222 200 226 255 227 255 228 255 226 256 228 256 229 256 230 257 231 257 228 257 226 258 232 258 227 258 233 259 234 259 235 259 236 260 235 260 234 260 227 261 232 261 233 261 234 262 233 262 232 262 237 263 238 263 193 263 193 264 239 264 237 264 237 200 240 200 238 200 190 200 239 200 193 200 240 200 231 200 230 200 229 265 228 265 231 265 240 266 241 266 231 266 237 267 241 267 240 267 242 268 243 268 244 268 245 269 246 269 243 269 243 200 246 200 244 200 244 270 247 270 242 270 247 200 248 200 225 200 222 271 249 271 225 271 248 272 247 272 244 272 225 273 249 273 247 273 236 274 250 274 251 274 252 275 251 275 250 275 235 200 236 200 253 200 251 200 253 200 236 200 254 276 245 276 255 276 243 277 255 277 245 277 250 278 254 278 252 278 255 279 252 279 254 279 384 280 385 280 386 280 385 280 384 280 387 280 388 280 386 280 389 280 386 280 388 280 384 280 390 280 391 280 392 280 391 280 390 280 393 280 387 280 392 280 385 280 392 280 387 280 390 280 394 280 395 280 396 280 395 280 397 280 398 280 394 280 397 280 395 280 396 280 399 280 394 280 389 280 400 280 399 280 389 280 401 280 388 280 394 280 399 280 400 280 399 280 401 280 389 280 402 280 403 280 404 280 405 280 402 280 404 280 402 280 406 280 407 280 403 280 408 280 404 280 408 280 409 280 410 280 410 280 411 280 408 280 409 280 412 280 410 280 408 280 411 280 404 280 413 280 414 280 415 280 414 280 413 280 416 280 415 280 393 280 390 280 393 280 415 280 414 280 407 280 406 280 417 280 406 280 402 280 405 280 406 280 416 280 417 280 417 280 416 280 413 280 418 280 419 280 420 280 418 280 421 280 419 280 420 280 422 280 398 280 398 280 423 280 420 280 418 280 424 280 421 280 423 280 418 280 420 280 422 280 395 280 398 280 421 280 424 280 425 280 426 280 425 280 427 280 425 280 426 280 421 280 427 280 428 280 429 280 428 280 427 280 425 280 429 280 430 280 431 280 430 280 429 280 428 280 431 280 432 280 433 280 432 280 431 280 430 280 433 280 434 280 435 280 434 280 433 280 432 280 436 280 435 280 437 280 435 280 436 280 433 280 438 280 437 280 439 280 437 280 438 280 436 280 438 280 439 280 440 280 440 280 439 280 441 280 441 280 442 280 440 280 441 280 443 280 444 280 442 280 441 280 444 280 443 280 445 280 444 280 445 280 446 280 447 280 447 280 448 280 445 280 446 280 449 280 447 280 445 280 448 280 444 280 412 280 450 280 451 280 451 280 452 280 412 280 450 280 453 280 451 280 412 280 452 280 410 280 454 280 453 280 455 280 455 280 456 280 457 280 453 280 456 280 455 280 453 280 454 280 451 280 455 280 457 280 458 280 459 280 460 280 461 280 460 280 459 280 458 280 457 280 460 280 458 280 462 280 461 280 463 280 461 280 462 280 459 280 464 280 463 280 465 280 463 280 464 280 462 280 465 280 466 280 467 280 466 280 465 280 463 280 467 280 468 280 469 280 468 280 467 280 466 280 469 280 470 280 471 280 470 280 469 280 468 280 471 280 472 280 473 280 472 280 471 280 470 280 474 280 475 280 473 280 476 280 477 280 478 280 474 280 478 280 477 280 479 280 478 280 474 280 480 280 476 280 478 280 474 280 473 280 479 280 475 280 471 280 473 280 476 280 480 280 481 280 482 280 483 280 484 280 485 280 482 280 484 280 482 280 486 280 487 280 483 280 488 280 484 280 489 280 490 280 491 280 490 280 489 280 492 280 491 280 488 280 483 280 488 280 491 280 490 280 449 280 493 280 494 280 494 280 495 280 449 280 493 280 496 280 494 280 449 280 495 280 447 280 487 280 486 280 496 280 486 280 482 280 485 280 486 280 497 280 496 280 496 280 497 280 494 280 498 280 499 280 500 280 499 280 501 280 502 280 498 280 501 280 499 280 500 280 503 280 498 280 481 280 504 280 503 280 481 280 505 280 476 280 498 280 503 280 504 280 503 280 505 280 481 280 506 280 507 280 492 280 507 280 506 280 508 280 509 280 492 280 489 280 492 280 509 280 506 280 510 280 502 280 511 280 502 280 510 280 499 280 508 280 511 280 507 280 511 280 508 280 510 280

    diff --git a/simulateur/3d/mod_lun_bleu_jaune.dae b/simulateur/3d/mod_lun_bleu_jaune.dae index 277748c..8a05d08 100644 --- a/simulateur/3d/mod_lun_bleu_jaune.dae +++ b/simulateur/3d/mod_lun_bleu_jaune.dae @@ -3,16 +3,16 @@ Blender User - Blender 2.77.0 commit date:1970-01-01, commit time:00:00, hash:unknown + Blender 2.78.0 - 2017-01-21T17:05:57 - 2017-01-21T17:05:57 + 2017-05-06T19:19:58 + 2017-05-06T19:19:58 Z_UP - + @@ -26,7 +26,7 @@ 0.5992157 0.5992157 0.5992157 1 - 0.075 0.075 0.075 1 + 0.0375 0.0375 0.0375 1 50 @@ -52,7 +52,7 @@ 0.8 0.8 0.8 1 - 0.075 0.075 0.075 1 + 0.0375 0.0375 0.0375 1 50 @@ -64,7 +64,7 @@ - + @@ -78,7 +78,7 @@ 0.07215687 0.3043137 0.5364706 1 - 0.075 0.075 0.075 1 + 0.0375 0.0375 0.0375 1 50 @@ -104,7 +104,7 @@ 0.774902 0.5678431 0 1 - 0.075 0.075 0.075 1 + 0.0375 0.0375 0.0375 1 50 @@ -118,14 +118,14 @@ - - + + - - + + @@ -135,9 +135,9 @@ - 0.02225017 0.1000001 -0.02229744 0.02225017 0 -0.02229744 0.02119064 0 -0.02123564 0.02119064 0.1000001 -0.02123564 0.0222975 0 0.02225023 0.02437096 0 0.0199576 0.02437096 0.1000001 0.0199576 0.02620983 0 0.01747268 0.0277962 0 0.01481956 0.0277962 0.1000001 0.01481956 0.02620983 0.1000001 0.01747268 0.02911496 0 0.01202356 0.03015327 0 0.00911194 0.03015327 0.1000001 0.00911194 0.03090119 0 0.006112635 0.0313515 0 0.003054261 0.0313515 0.1000001 0.003054261 0.03090119 0.1000001 0.006112635 0.02911496 0.1000001 0.01202356 0.0222975 0.1000001 0.02225023 0.03149998 0 -3.34382e-5 0.03149998 0.1000001 -3.34382e-5 0.03134495 0 -0.003120779 0.03088814 0 -0.006178081 0.03088814 0.1000001 -0.006178081 0.03013384 0 -0.009175956 0.02908933 0 -0.01208531 0.02908933 0.1000001 -0.01208531 0.03013384 0.1000001 -0.009175956 0.02776461 0 -0.01487845 0.02617257 0 -0.01752823 0.02617257 0.1000001 -0.01752823 0.02432852 0 -0.02000916 0.02225017 0 -0.02229744 0.02225017 0.1000001 -0.02229744 0.02432852 0.1000001 -0.02000916 0.02776461 0.1000001 -0.01487845 0.03134495 0.1000001 -0.003120779 0.02871733 0 0.008678138 0.03090119 0 0.006112635 0.03015327 0 0.00911194 0.02772849 0 0.011451 0.02911496 0 0.01202356 0.02942979 0 0.005821526 0.02985852 0 0.002908885 0.03149998 0 -3.34382e-5 0.0313515 0 0.003054261 0.02999997 0 -3.17693e-5 0.02496176 0 0.0166406 0.02620983 0 0.01747268 0.02437096 0 0.0199576 0.0222975 0 0.02225023 0.0212357 0 0.0211907 0.0277962 0 0.01481956 0.02647262 0 0.01411384 0.02321052 0 0.01900726 0.02492642 0 -0.01669353 0.02617257 0 -0.01752823 0.02776461 0 -0.01487845 0.02644258 0 -0.01416999 0.02908933 0 -0.01208531 0.02770406 0 -0.01150977 0.02432852 0 -0.02000916 0.02119064 0 -0.02123564 0.02225017 0 -0.02229744 0.02317011 0 -0.01905632 0.02941721 0 -0.005883872 0.03134495 0 -0.003120779 0.02985239 0 -0.002972126 0.03088814 0 -0.006178081 0.03013384 0 -0.009175956 0.02869892 0 -0.008738934 0.02321052 0.1000001 0.01900726 0.02321052 0 0.01900726 0.0212357 0 0.0211907 0.02647262 0.1000001 0.01411384 0.02647262 0 0.01411384 0.02496176 0 0.0166406 0.02496176 0.1000001 0.0166406 0.02871733 0.1000001 0.008678138 0.02871733 0 0.008678138 0.02772849 0 0.011451 0.02985852 0.1000001 0.002908885 0.02985852 0 0.002908885 0.02942979 0 0.005821526 0.02942979 0.1000001 0.005821526 0.02772849 0.1000001 0.011451 0.0212357 0.1000001 0.0211907 0.02999997 0.1000001 -3.17693e-5 0.02999997 0 -3.17693e-5 0.02941721 0.1000001 -0.005883872 0.02941721 0 -0.005883872 0.02985239 0 -0.002972126 0.02770406 0.1000001 -0.01150977 0.02770406 0 -0.01150977 0.02869892 0 -0.008738934 0.02869892 0.1000001 -0.008738934 0.02492642 0.1000001 -0.01669353 0.02492642 0 -0.01669353 0.02644258 0 -0.01416999 0.02119064 0.1000001 -0.02123564 0.02119064 0 -0.02123564 0.02317011 0 -0.01905632 0.02317011 0.1000001 -0.01905632 0.02644258 0.1000001 -0.01416999 0.02985239 0.1000001 -0.002972126 0.03015327 0.1000001 0.00911194 0.03090119 0.1000001 0.006112635 0.02871733 0.1000001 0.008678138 0.02772849 0.1000001 0.011451 0.02911496 0.1000001 0.01202356 0.02942979 0.1000001 0.005821526 0.0313515 0.1000001 0.003054261 0.03149998 0.1000001 -3.34382e-5 0.02985852 0.1000001 0.002908885 0.02999997 0.1000001 -3.17693e-5 0.02437096 0.1000001 0.0199576 0.02620983 0.1000001 0.01747268 0.02496176 0.1000001 0.0166406 0.0212357 0.1000001 0.0211907 0.0222975 0.1000001 0.02225023 0.0277962 0.1000001 0.01481956 0.02647262 0.1000001 0.01411384 0.02321052 0.1000001 0.01900726 0.02776461 0.1000001 -0.01487845 0.02617257 0.1000001 -0.01752823 0.02492642 0.1000001 -0.01669353 0.02644258 0.1000001 -0.01416999 0.02770406 0.1000001 -0.01150977 0.02908933 0.1000001 -0.01208531 0.02432852 0.1000001 -0.02000916 0.02225017 0.1000001 -0.02229744 0.02119064 0.1000001 -0.02123564 0.02317011 0.1000001 -0.01905632 0.02985239 0.1000001 -0.002972126 0.03134495 0.1000001 -0.003120779 0.02941721 0.1000001 -0.005883872 0.03088814 0.1000001 -0.006178081 0.03013384 0.1000001 -0.009175956 0.02869892 0.1000001 -0.008738934 0.0212357 0 0.0211907 0.0222975 0 0.02225023 0.0222975 0.1000001 0.02225023 0.0212357 0.1000001 0.0211907 + 0.02225017 0.1000001 -0.02229744 0.02225017 0 -0.02229744 0.02119064 0 -0.02123564 0.02119064 0.1000001 -0.02123564 0.02278894 0 0.02268481 0.02335369 0.1000001 0.02316164 0.0311551 0 0.006162703 0.03191679 0.1000001 -0.00111401 0.03010565 0 -0.01080799 0.0223062 0 -0.02234804 0.02305358 0.1000001 -0.02300161 0.02880966 0 0.008704304 0.03120118 0 0.0045951 0.02970546 0 0.01059317 0.03000134 0 0.001440525 0.03144532 0 -0.003130197 0.02577948 0 0.01541352 0.02629369 0 0.01752847 0.0222975 0 0.02225023 0.02131593 0 0.02124404 0.02586925 0 -0.01554363 0.02703344 0 -0.01624238 0.02968293 0 -0.01065599 0.02233421 0 -0.02235358 0.02119064 0 -0.02123564 0.02951127 0 -0.005903005 0.02141922 0.1000001 0.02135491 0.02237236 0 0.02216601 0.03111326 0.1000001 0.001994431 0.03035038 0 -0.001988172 0.02165788 0.1000001 -0.02165061 0.02184939 0 -0.02181553 0.02970546 0.1000001 0.01059317 0.03120118 0.1000001 0.0045951 0.02880966 0.1000001 0.008704304 0.03144532 0.1000001 -0.003130197 0.03000134 0.1000001 0.001440525 0.02629369 0.1000001 0.01752847 0.02577948 0.1000001 0.01541352 0.02131593 0.1000001 0.02124404 0.0222975 0.1000001 0.02225023 0.02703344 0.1000001 -0.01624238 0.02586925 0.1000001 -0.01554363 0.02968293 0.1000001 -0.01065599 0.02233421 0.1000001 -0.02235358 0.02119064 0.1000001 -0.02123564 0.02951127 0.1000001 -0.005903005 0.0212357 0 0.0211907 0.0222975 0 0.02225023 0.0222975 0.1000001 0.02225023 0.0212357 0.1000001 0.0211907 - + @@ -145,9 +145,9 @@ - -0.7078629 0 -0.7063499 -0.74165 0 -0.6707872 -0.8582706 0 -0.5131977 -0.8038469 0 -0.5948362 -0.9419022 0 -0.3358874 -0.9893366 0 -0.1456471 -0.9702824 0 -0.2419753 -0.9044525 0 -0.4265745 -0.8038463 0 -0.594837 -0.9419022 0 -0.3358875 -0.9044523 0 -0.4265748 -0.9893366 0 -0.1456472 -0.9988462 0 -0.04802554 -0.9988462 0 -0.04802554 -0.9890176 0 0.1477984 -0.9411809 0 0.3379031 -0.969775 0 0.2440008 -0.8571789 0 0.5150187 -0.7402247 0 0.6723596 -0.8025718 0 0.5965555 -0.9035546 0 0.4284731 -0.9987429 0 0.05012679 -0.9035543 0 0.4284737 -0.8571788 0 0.5150191 -0.9411808 0 0.3379035 -0.9987429 0 0.05012679 -0.7063492 0 0.7078636 0.7416586 0 0.6707775 0.8582688 0 0.5132005 0.8038466 0 0.5948367 0.9419034 0 0.335884 0.9893304 0 0.1456893 0.9702873 0 0.2419555 0.9044489 0 0.426582 0.8038468 0 0.5948364 0.9419034 0 0.3358841 0.9702875 0 0.2419553 0.9893304 0 0.1456893 0.9988468 0 0.04801154 0.9890206 0 -0.1477778 0.9411839 0 -0.3378948 0.9697698 0 -0.2440217 0.8571829 0 -0.5150124 0.7402296 0 -0.6723542 0.8025833 0 -0.59654 0.9035351 0 -0.4285144 0.9987425 0 -0.05013424 0.9890206 0 -0.1477778 0.9035348 0 -0.428515 0.941184 0 -0.3378947 0 -1 0 0 1 0 0 1 3.29931e-6 0 1 -6.28383e-6 0 1 2.47438e-6 0 1 6.28435e-6 0 1 -6.59845e-6 0 1 1.31972e-5 0 1 -3.29911e-6 0 1 6.28449e-6 0 1 -3.14224e-6 0 1 6.59836e-6 0 1 6.59848e-6 0 1 -4.7131e-6 0 1 6.28411e-6 0 1 -3.14203e-6 + -0.7078629 0 -0.7063499 -0.9493606 0.01973086 -0.3135687 -0.894106 -0.01215338 -0.4476907 -0.9190502 -0.00868225 0.3940449 -0.9285094 -0.002390563 0.3713012 -0.7063492 0 0.7078636 0.892122 -0.007192194 0.4517374 0.9429118 0.01702076 0.3326076 0.8284791 -0.009851455 -0.5599334 0.9267114 0.01959389 -0.375263 0.9980205 -0.01209276 -0.06171691 0 -1 0 0 1 0 3.19832e-6 1 1.34498e-5 0 1 -7.38023e-7 0 1 6.96694e-6 -4.3218e-6 1 4.95804e-6 0 1 -7.67302e-7 0 1 3.01024e-6 - + @@ -157,26 +157,26 @@ - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    0 0 1 0 2 0 0 0 2 0 3 0 72 1 73 1 74 1 75 2 76 2 77 2 78 3 77 3 73 3 79 4 80 4 81 4 82 5 83 5 84 5 85 6 84 6 80 6 86 7 81 7 76 7 72 1 74 1 87 1 75 2 77 2 78 2 72 8 78 8 73 8 86 9 79 9 81 9 76 10 75 10 86 10 85 6 80 6 79 6 82 11 84 11 85 11 82 12 88 12 89 12 82 13 89 13 83 13 90 14 91 14 92 14 93 15 94 15 95 15 96 16 95 16 91 16 97 17 98 17 99 17 100 18 101 18 102 18 103 19 102 19 98 19 104 20 99 20 94 20 92 21 88 21 105 21 91 16 90 16 96 16 90 14 92 14 105 14 94 22 93 22 104 22 98 19 97 19 103 19 102 18 103 18 100 18 97 23 99 23 104 23 93 24 95 24 96 24 89 25 88 25 92 25 140 26 141 26 142 26 142 26 143 26 140 26

    + 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 0 2 0 3 0 28 1 29 1 27 1 28 2 27 2 26 2 28 3 31 3 29 3 31 4 28 4 30 4 47 5 48 5 49 5 49 5 50 5 47 5

    - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    4 27 5 27 6 27 7 28 8 28 9 28 5 29 7 29 10 29 11 30 12 30 13 30 14 31 15 31 16 31 12 32 14 32 17 32 8 33 11 33 18 33 19 27 4 27 6 27 10 28 7 28 9 28 5 34 10 34 6 34 11 35 13 35 18 35 18 33 9 33 8 33 13 36 12 36 17 36 17 37 14 37 16 37 20 38 21 38 16 38 15 38 20 38 16 38 22 39 23 39 24 39 25 40 26 40 27 40 23 41 25 41 28 41 29 42 30 42 31 42 32 43 33 43 34 43 30 44 32 44 35 44 26 45 29 45 36 45 37 46 21 46 22 46 28 41 24 41 23 41 37 47 22 47 24 47 36 48 27 48 26 48 35 44 31 44 30 44 34 43 35 43 32 43 36 42 29 42 31 42 28 49 25 49 27 49 22 46 21 46 20 46 38 50 39 50 40 50 38 50 40 50 41 50 42 50 41 50 40 50 38 50 43 50 39 50 44 50 45 50 46 50 46 50 43 50 44 50 44 50 47 50 45 50 39 50 43 50 46 50 48 50 49 50 50 50 50 50 51 50 52 50 53 50 49 50 48 50 53 50 54 50 41 50 50 50 52 50 55 50 50 50 55 50 48 50 53 50 48 50 54 50 41 50 42 50 53 50 56 50 57 50 58 50 56 50 58 50 59 50 60 50 61 50 58 50 56 50 62 50 57 50 63 50 64 50 62 50 62 50 65 50 63 50 56 50 65 50 62 50 66 50 67 50 68 50 68 50 45 50 47 50 66 50 69 50 67 50 67 50 45 50 68 50 70 50 61 50 60 50 59 50 58 50 61 50 71 50 69 50 66 50 70 50 71 50 61 50 70 50 69 50 71 50 106 51 107 51 108 51 109 51 106 51 108 51 106 51 109 51 110 51 107 52 111 52 108 52 112 53 113 53 114 53 114 51 111 51 112 51 113 54 115 54 114 54 112 51 111 51 107 51 116 51 117 51 118 51 119 51 120 51 116 51 118 55 117 55 121 55 109 56 122 56 121 56 123 57 119 57 116 57 118 58 123 58 116 58 122 51 118 51 121 51 121 51 110 51 109 51 124 59 125 59 126 59 127 51 124 51 126 51 124 51 128 51 129 51 125 60 130 60 126 60 130 51 131 51 132 51 132 51 133 51 130 51 130 61 133 61 126 61 134 62 135 62 136 62 115 51 113 51 134 51 135 51 137 51 136 51 134 63 113 63 135 63 129 64 128 64 138 64 128 51 124 51 127 51 136 51 137 51 139 51 128 51 139 51 138 51 139 65 137 65 138 65

    + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    4 6 6 6 5 6 5 7 6 7 7 7 8 8 9 8 10 8 7 9 8 9 10 9 8 10 7 10 6 10 11 11 12 11 13 11 14 11 15 11 12 11 12 11 11 11 14 11 17 11 18 11 19 11 17 11 16 11 11 11 17 11 19 11 16 11 11 11 13 11 17 11 22 11 20 11 21 11 20 11 23 11 21 11 23 11 20 11 24 11 25 11 15 11 14 11 22 11 25 11 20 11 22 11 15 11 25 11 32 12 33 12 34 12 33 12 35 12 36 12 36 12 34 12 33 12 39 13 40 13 37 13 34 14 38 14 37 14 38 12 39 12 37 12 37 12 32 12 34 12 41 15 42 15 43 15 41 12 44 12 42 12 45 16 42 16 44 16 36 12 35 12 46 12 42 17 46 17 43 17 46 18 35 18 43 18

    - 0.02119064 0 -0.02123564 0.02225017 0 -0.02229744 0.02225017 0.1000001 -0.02229744 0.02119064 0.1000001 -0.02123564 0.02225017 0 -0.02229744 0.01995754 0 -0.0243709 0.01995754 0.1000001 -0.0243709 0.01747262 0 -0.02620977 0.0148195 0 -0.02779614 0.0148195 0.1000001 -0.02779614 0.01747262 0.1000001 -0.02620977 0.0120235 0 -0.0291149 0.009111881 0 -0.03015321 0.009111881 0.1000001 -0.03015321 0.006112515 0 -0.03090113 0.003054261 0 -0.03135144 0.003054261 0.1000001 -0.03135144 0.006112515 0.1000001 -0.03090113 0.0120235 0.1000001 -0.0291149 0.02225017 0.1000001 -0.02229744 -3.34382e-5 0 -0.03149992 -3.34382e-5 0.1000001 -0.03149992 -0.003120779 0 -0.03134495 -0.00617814 0 -0.03088814 -0.00617814 0.1000001 -0.03088814 -0.009175956 0 -0.03013378 -0.01208537 0 -0.02908927 -0.01208537 0.1000001 -0.02908927 -0.009175956 0.1000001 -0.03013378 -0.01487851 0 -0.02776455 -0.01752829 0 -0.02617251 -0.01752829 0.1000001 -0.02617251 -0.02000916 0 -0.02432847 -0.0222975 0 -0.02225011 -0.0222975 0.1000001 -0.02225011 -0.02000916 0.1000001 -0.02432847 -0.01487851 0.1000001 -0.02776455 -0.003120779 0.1000001 -0.03134495 0.02119064 0 -0.02123564 0.01995754 0 -0.0243709 0.02225017 0 -0.02229744 0.0190072 0 -0.02321046 0.01664054 0 -0.0249617 0.0148195 0 -0.02779614 0.01747262 0 -0.02620977 0.0120235 0 -0.0291149 0.01145094 0 -0.02772843 0.01411378 0 -0.02647256 0.009111881 0 -0.03015321 0.008678078 0 -0.02871727 0.006112515 0 -0.03090113 0.003054261 0 -0.03135144 0.005821466 0 -0.02942973 -3.34382e-5 0 -0.03149992 0.002908766 0 -0.02985846 -3.18885e-5 0 -0.02999991 -0.002972245 0 -0.02985233 -0.003120779 0 -0.03134495 -0.005883932 0 -0.02941715 -0.00617814 0 -0.03088814 -0.008739054 0 -0.02869886 -0.009175956 0 -0.03013378 -0.01208537 0 -0.02908927 -0.01150995 0 -0.02770406 -0.01487851 0 -0.02776455 -0.01416999 0 -0.02644252 -0.02000916 0 -0.02432847 -0.01669359 0 -0.02492636 -0.01905637 0 -0.02317005 -0.01752829 0 -0.02617251 -0.0222975 0 -0.02225011 -0.0212357 0 -0.02119058 0.0190072 0.1000001 -0.02321046 0.0190072 0 -0.02321046 0.02119064 0 -0.02123564 0.01411378 0.1000001 -0.02647256 0.01411378 0 -0.02647256 0.01664054 0 -0.0249617 0.01664054 0.1000001 -0.0249617 0.008678078 0.1000001 -0.02871727 0.008678078 0 -0.02871727 0.01145094 0 -0.02772843 0.002908766 0.1000001 -0.02985846 0.002908766 0 -0.02985846 0.005821466 0 -0.02942973 0.005821466 0.1000001 -0.02942973 0.01145094 0.1000001 -0.02772843 0.02119064 0.1000001 -0.02123564 -3.18885e-5 0.1000001 -0.02999991 -3.18885e-5 0 -0.02999991 -0.005883932 0.1000001 -0.02941715 -0.005883932 0 -0.02941715 -0.002972245 0 -0.02985233 -0.01150995 0.1000001 -0.02770406 -0.01150995 0 -0.02770406 -0.008739054 0 -0.02869886 -0.008739054 0.1000001 -0.02869886 -0.01669359 0.1000001 -0.02492636 -0.01669359 0 -0.02492636 -0.01416999 0 -0.02644252 -0.0212357 0.1000001 -0.02119058 -0.0212357 0 -0.02119058 -0.01905637 0 -0.02317005 -0.01905637 0.1000001 -0.02317005 -0.01416999 0.1000001 -0.02644252 -0.002972245 0.1000001 -0.02985233 0.02225017 0.1000001 -0.02229744 0.01995754 0.1000001 -0.0243709 0.02119064 0.1000001 -0.02123564 0.0190072 0.1000001 -0.02321046 0.01664054 0.1000001 -0.0249617 0.01747262 0.1000001 -0.02620977 0.0148195 0.1000001 -0.02779614 0.01145094 0.1000001 -0.02772843 0.0120235 0.1000001 -0.0291149 0.01411378 0.1000001 -0.02647256 0.009111881 0.1000001 -0.03015321 0.008678078 0.1000001 -0.02871727 0.006112515 0.1000001 -0.03090113 0.005821466 0.1000001 -0.02942973 0.003054261 0.1000001 -0.03135144 -3.18885e-5 0.1000001 -0.02999991 0.002908766 0.1000001 -0.02985846 -3.34382e-5 0.1000001 -0.03149992 -0.003120779 0.1000001 -0.03134495 -0.002972245 0.1000001 -0.02985233 -0.005883932 0.1000001 -0.02941715 -0.00617814 0.1000001 -0.03088814 -0.009175956 0.1000001 -0.03013378 -0.008739054 0.1000001 -0.02869886 -0.01150995 0.1000001 -0.02770406 -0.01208537 0.1000001 -0.02908927 -0.01416999 0.1000001 -0.02644252 -0.01487851 0.1000001 -0.02776455 -0.01905637 0.1000001 -0.02317005 -0.01669359 0.1000001 -0.02492636 -0.02000916 0.1000001 -0.02432847 -0.01752829 0.1000001 -0.02617251 -0.0212357 0.1000001 -0.02119058 -0.0222975 0.1000001 -0.02225011 -0.0222975 0 -0.02225011 -0.0212357 0 -0.02119058 -0.0212357 0.1000001 -0.02119058 -0.0222975 0.1000001 -0.02225011 + 0.02119064 0 -0.02123564 0.02225017 0 -0.02229744 0.02225017 0.1000001 -0.02229744 0.02119064 0.1000001 -0.02123564 0.02268475 0 -0.02278888 0.02230066 0.1000001 -0.02235358 0.01074433 0.1000001 -0.03012841 -5.51225e-4 0 -0.03249484 -0.006228625 0.1000001 -0.03114199 -0.02265751 0 -0.02265429 -0.02273309 0.1000001 -0.02274054 0.02124398 0 -0.02131587 0.02225017 0 -0.02229744 0.01541346 0 -0.02577942 0.01752841 0 -0.02629363 0.01059305 0 -0.0297054 0.008704185 0 -0.02880966 0.004594862 0 -0.03120112 -0.001580417 0 -0.03149807 -0.001513123 0 -0.03014183 -0.009204983 0 -0.03023028 -0.01154607 0 -0.02779299 -0.01758414 0 -0.02625632 -0.01791757 0 -0.02410644 -0.0222975 0 -0.02225011 -0.0212357 0 -0.02119058 0.02135485 0.1000001 -0.02141916 0.02216595 0 -0.0223723 0.003490209 0.1000001 -0.03075444 -0.001987993 0 -0.03035032 -0.02190643 0.1000001 -0.02195584 -0.02181553 0 -0.02184927 0.02225017 0.1000001 -0.02229744 0.01752841 0.1000001 -0.02629363 0.02124398 0.1000001 -0.02131587 0.01541346 0.1000001 -0.02577942 0.008704185 0.1000001 -0.02880966 0.01059305 0.1000001 -0.0297054 0.004594862 0.1000001 -0.03120112 -0.001513123 0.1000001 -0.03014183 -0.001580417 0.1000001 -0.03149807 -0.009204983 0.1000001 -0.03023028 -0.01154607 0.1000001 -0.02779299 -0.01758414 0.1000001 -0.02625632 -0.01791757 0.1000001 -0.02410644 -0.0212357 0.1000001 -0.02119058 -0.0222975 0.1000001 -0.02225011 -0.0222975 0 -0.02225011 -0.0212357 0 -0.02119058 -0.0212357 0.1000001 -0.02119058 -0.0222975 0.1000001 -0.02225011 - + @@ -184,9 +184,9 @@ - 0.7078629 0 0.7063499 -0.6707879 0 0.7416493 -0.5131974 0 0.8582707 -0.5948366 0 0.8038468 -0.3358863 0 0.9419026 -0.145647 0 0.9893367 -0.2419754 0 0.9702824 -0.4265756 0 0.9044519 -0.3358877 0 0.9419022 -0.4265744 0 0.9044526 -0.04802417 0 0.9988462 -0.04802578 0 0.9988462 0.1477944 0 0.9890182 0.3379008 0 0.9411818 0.2439999 0 0.9697753 0.5150101 0 0.8571842 0.6723591 0 0.7402252 0.5965554 0 0.802572 0.4284916 0 0.9035457 0.05012869 0 0.9987428 0.2440014 0 0.969775 0.1477959 0 0.989018 0.67236 0 0.7402244 0.05012714 0 0.9987428 -0.7063508 0 0.707862 -0.7063492 0 0.7078636 0.6707771 0 -0.7416591 0.5132013 0 -0.8582683 0.5948366 0 -0.8038468 0.3358849 0 -0.9419031 0.1456892 0 -0.9893305 0.241954 0 -0.9702878 0.4265817 0 -0.904449 0.3358836 0 -0.9419035 0.2419555 0 -0.9702875 0.1456907 0 -0.9893303 0.04801273 0 -0.9988468 0.04801124 0 -0.9988469 -0.1477767 0 -0.9890208 -0.3378872 0 -0.9411866 -0.244028 0 -0.9697682 -0.5150119 0 -0.857183 -0.6723449 0 -0.7402381 -0.5965492 0 -0.8025767 -0.4285151 0 -0.9035346 -0.05013179 0 -0.9987426 -0.2440294 0 -0.9697679 -0.1477752 0 -0.9890211 -0.672344 0 -0.7402388 -0.515013 0 -0.8571824 -0.3378898 0 -0.9411857 -0.05012881 0 -0.9987428 0 -1 0 0 1 0 0 1 6.59826e-6 0 1 -1.31969e-5 0 1 1.17824e-6 0 1 -3.92756e-6 0 1 4.12396e-6 0 1 4.71297e-6 0 1 9.42643e-6 0 1 -6.59869e-6 0 1 3.1423e-6 0 1 3.29928e-6 0 1 6.2845e-6 + 0.7078629 0 0.7063499 -0.3135629 0.02101409 0.9493349 -0.4631 -0.01220321 0.886222 0.3940575 0.001337349 0.9190848 0.3273252 -0.01411378 0.9448065 -0.7063508 0 0.707862 -0.7063492 0 0.7078636 0.3853472 -0.02169632 -0.9225167 0.5581936 0.005755186 -0.8296908 0.05960249 0.01688641 -0.9980794 -0.4066734 -0.001095414 -0.913573 -0.4536046 -0.01369786 -0.8910979 0 -1 0 4.28484e-6 1 -6.7249e-6 0 1 0 0 1 7.10021e-6 0 1 1.228e-5 0 1 -1.75057e-6 -8.53626e-7 1 6.29425e-6 -2.59971e-6 1 -5.90434e-6 - + @@ -196,26 +196,26 @@ - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    0 0 1 0 2 0 0 0 2 0 3 0 72 1 73 1 74 1 75 2 76 2 77 2 78 3 77 3 73 3 79 4 80 4 81 4 82 5 83 5 84 5 85 6 84 6 80 6 86 7 81 7 76 7 72 1 74 1 87 1 75 2 77 2 78 2 72 3 78 3 73 3 86 8 79 8 81 8 76 9 75 9 86 9 85 6 80 6 79 6 82 5 84 5 85 5 82 10 88 10 89 10 82 11 89 11 83 11 90 12 91 12 92 12 93 13 94 13 95 13 96 14 95 14 91 14 97 15 98 15 99 15 100 16 101 16 102 16 103 17 102 17 98 17 104 18 99 18 94 18 92 19 88 19 105 19 91 20 90 20 96 20 90 21 92 21 105 21 94 18 93 18 104 18 98 17 97 17 103 17 102 22 103 22 100 22 97 15 99 15 104 15 93 13 95 13 96 13 89 23 88 23 92 23 140 24 141 24 142 24 142 25 143 25 140 25

    + 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 0 2 0 3 0 28 1 29 1 27 1 28 2 27 2 26 2 30 3 31 3 29 3 30 4 29 4 28 4 47 5 48 5 49 5 49 6 50 6 47 6

    - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    4 26 5 26 6 26 7 27 8 27 9 27 5 28 7 28 10 28 11 29 12 29 13 29 14 30 15 30 16 30 12 31 14 31 17 31 8 32 11 32 18 32 19 26 4 26 6 26 10 27 7 27 9 27 5 28 10 28 6 28 11 33 13 33 18 33 18 32 9 32 8 32 13 34 12 34 17 34 17 35 14 35 16 35 20 36 21 36 16 36 15 37 20 37 16 37 22 38 23 38 24 38 25 39 26 39 27 39 23 40 25 40 28 40 29 41 30 41 31 41 32 42 33 42 34 42 30 43 32 43 35 43 26 44 29 44 36 44 37 45 21 45 22 45 28 46 24 46 23 46 37 47 22 47 24 47 36 44 27 44 26 44 35 43 31 43 30 43 34 48 35 48 32 48 36 49 29 49 31 49 28 50 25 50 27 50 22 51 21 51 20 51 38 52 39 52 40 52 39 52 38 52 41 52 41 52 42 52 39 52 42 52 43 52 44 52 45 52 43 52 46 52 42 52 47 52 43 52 39 52 42 52 44 52 47 52 46 52 43 52 48 52 45 52 46 52 48 52 46 52 49 52 49 52 50 52 48 52 51 52 50 52 52 52 49 52 52 52 50 52 53 52 54 52 55 52 52 52 54 52 51 52 51 52 54 52 53 52 56 52 57 52 53 52 57 52 56 52 58 52 58 52 59 52 57 52 55 52 56 52 53 52 60 52 61 52 59 52 62 52 61 52 63 52 60 52 63 52 61 52 58 52 60 52 59 52 64 52 63 52 65 52 66 52 67 52 68 52 67 52 64 52 65 52 69 52 67 52 66 52 70 52 66 52 71 52 66 52 68 52 71 52 64 52 67 52 69 52 64 52 62 52 63 52 106 53 107 53 108 53 109 53 108 53 107 53 107 54 110 54 109 54 111 53 112 53 110 53 113 53 112 53 114 53 112 53 115 53 110 53 111 53 110 53 107 53 112 55 113 55 115 55 113 53 114 53 116 53 117 53 113 53 116 53 116 53 118 53 117 53 119 53 118 53 120 53 118 53 119 53 117 53 121 53 122 53 123 53 120 53 122 53 119 53 123 56 122 56 120 56 123 57 124 57 125 57 126 58 125 58 124 58 124 59 127 59 126 59 123 53 125 53 121 53 127 60 128 60 129 60 130 53 128 53 131 53 128 53 130 53 129 53 127 53 129 53 126 53 132 53 130 53 133 53 134 53 135 53 136 53 132 61 133 61 135 61 136 62 135 62 137 62 138 53 136 53 139 53 138 63 134 63 136 63 137 64 135 64 133 64 130 53 131 53 133 53

    + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    4 7 7 7 6 7 4 8 6 8 5 8 7 9 8 9 6 9 7 10 9 10 10 10 10 11 8 11 7 11 11 12 14 12 12 12 11 12 13 12 14 12 15 12 14 12 16 12 13 12 16 12 14 12 16 12 17 12 15 12 16 12 19 12 17 12 17 12 19 12 18 12 19 12 20 12 18 12 19 12 21 12 20 12 23 12 22 12 21 12 24 12 22 12 25 12 22 12 23 12 25 12 22 12 20 12 21 12 32 13 33 13 34 13 33 14 35 14 34 14 36 14 33 14 37 14 33 14 36 14 35 14 37 15 38 15 36 15 38 16 39 16 36 16 40 14 39 14 38 14 40 14 41 14 39 14 41 14 42 14 39 14 42 17 43 17 44 17 45 18 43 18 46 18 45 19 44 19 43 19 42 14 41 14 43 14

    - -0.02225017 0.1000001 0.02229756 -0.02225017 0 0.02229756 -0.02119064 0 0.02123576 -0.02119064 0.1000001 0.02123576 -0.02437096 0 -0.01995748 -0.02620989 0 -0.01747256 -0.02620989 0.1000001 -0.01747256 -0.0222975 0 -0.02225011 -0.02437096 0.1000001 -0.01995748 -0.0277962 0 -0.01481944 -0.02911502 0 -0.01202344 -0.02911502 0.1000001 -0.01202344 -0.03015333 0 -0.009111821 -0.03090125 0 -0.006112456 -0.03090125 0.1000001 -0.006112456 -0.03015333 0.1000001 -0.009111821 -0.0277962 0.1000001 -0.01481944 -0.0222975 0.1000001 -0.02225011 -0.0313515 0 -0.003054141 -0.0313515 0.1000001 -0.003054141 -0.02225017 0 0.02229756 -0.02225017 0.1000001 0.02229756 -0.02432852 0.1000001 0.02000927 -0.03149998 0 3.35574e-5 -0.03134495 0 0.003120899 -0.03134495 0.1000001 0.003120899 -0.03088814 0 0.0061782 -0.0301339 0 0.009176075 -0.0301339 0.1000001 0.009176075 -0.03088814 0.1000001 0.0061782 -0.02908939 0 0.01208543 -0.02776467 0 0.01487857 -0.02776467 0.1000001 0.01487857 -0.02617263 0 0.01752835 -0.02432852 0 0.02000927 -0.02617263 0.1000001 0.01752835 -0.02908939 0.1000001 0.01208543 -0.03149998 0.1000001 3.35574e-5 -0.03088814 0 0.0061782 -0.02869892 0 0.008739054 -0.0301339 0 0.009176075 -0.02908939 0 0.01208543 -0.02770411 0 0.01150995 -0.02941733 0 0.005883932 -0.03149998 0 3.35574e-5 -0.02985239 0 0.002972245 -0.03134495 0 0.003120899 -0.02999997 0 3.18885e-5 -0.02432852 0 0.02000927 -0.02317005 0 0.01905643 -0.02119064 0 0.02123576 -0.02225017 0 0.02229756 -0.02492636 0 0.01669365 -0.02644252 0 0.01417011 -0.02776467 0 0.01487857 -0.02617263 0 0.01752835 -0.02437096 0 -0.01995748 -0.0212357 0 -0.02119058 -0.02321052 0 -0.01900714 -0.0277962 0 -0.01481944 -0.0249617 0 -0.01664048 -0.02647256 0 -0.01411372 -0.02620989 0 -0.01747256 -0.0222975 0 -0.02225011 -0.02772849 0 -0.01145088 -0.0313515 0 -0.003054141 -0.02942973 0 -0.005821347 -0.02985858 0 -0.002908766 -0.03090125 0 -0.006112456 -0.03015333 0 -0.009111821 -0.02911502 0 -0.01202344 -0.02871739 0 -0.008678019 -0.0249617 0.1000001 -0.01664048 -0.0249617 0 -0.01664048 -0.02321052 0 -0.01900714 -0.02321052 0.1000001 -0.01900714 -0.0212357 0 -0.02119058 -0.02772849 0.1000001 -0.01145088 -0.02772849 0 -0.01145088 -0.02647256 0 -0.01411372 -0.02942973 0.1000001 -0.005821347 -0.02942973 0 -0.005821347 -0.02871739 0 -0.008678019 -0.02871739 0.1000001 -0.008678019 -0.02647256 0.1000001 -0.01411372 -0.0212357 0.1000001 -0.02119058 -0.02985858 0.1000001 -0.002908766 -0.02985858 0 -0.002908766 -0.02317005 0.1000001 0.01905643 -0.02119064 0.1000001 0.02123576 -0.02119064 0 0.02123576 -0.02985239 0.1000001 0.002972245 -0.02985239 0 0.002972245 -0.02999997 0 3.18885e-5 -0.02869892 0.1000001 0.008739054 -0.02869892 0 0.008739054 -0.02941733 0 0.005883932 -0.02941733 0.1000001 0.005883932 -0.02644252 0.1000001 0.01417011 -0.02644252 0 0.01417011 -0.02770411 0 0.01150995 -0.02317005 0 0.01905643 -0.02492636 0 0.01669365 -0.02492636 0.1000001 0.01669365 -0.02770411 0.1000001 0.01150995 -0.02999997 0.1000001 3.18885e-5 -0.0301339 0.1000001 0.009176075 -0.02869892 0.1000001 0.008739054 -0.03088814 0.1000001 0.0061782 -0.02770411 0.1000001 0.01150995 -0.02908939 0.1000001 0.01208543 -0.02941733 0.1000001 0.005883932 -0.03134495 0.1000001 0.003120899 -0.02985239 0.1000001 0.002972245 -0.03149998 0.1000001 3.35574e-5 -0.02999997 0.1000001 3.18885e-5 -0.02119064 0.1000001 0.02123576 -0.02317005 0.1000001 0.01905643 -0.02432852 0.1000001 0.02000927 -0.02225017 0.1000001 0.02229756 -0.02492636 0.1000001 0.01669365 -0.02776467 0.1000001 0.01487857 -0.02644252 0.1000001 0.01417011 -0.02617263 0.1000001 0.01752835 -0.02321052 0.1000001 -0.01900714 -0.0212357 0.1000001 -0.02119058 -0.02437096 0.1000001 -0.01995748 -0.02647256 0.1000001 -0.01411372 -0.0249617 0.1000001 -0.01664048 -0.0277962 0.1000001 -0.01481944 -0.02620989 0.1000001 -0.01747256 -0.0222975 0.1000001 -0.02225011 -0.02772849 0.1000001 -0.01145088 -0.02985858 0.1000001 -0.002908766 -0.02942973 0.1000001 -0.005821347 -0.0313515 0.1000001 -0.003054141 -0.03090125 0.1000001 -0.006112456 -0.02911502 0.1000001 -0.01202344 -0.03015333 0.1000001 -0.009111821 -0.02871739 0.1000001 -0.008678019 -0.0212357 0.1000001 -0.02119058 -0.0212357 0 -0.02119058 -0.0222975 0 -0.02225011 -0.0222975 0.1000001 -0.02225011 + -0.02225017 0.1000001 0.02229756 -0.02225017 0 0.02229756 -0.02119064 0 0.02123576 -0.02119064 0.1000001 0.02123576 -0.03057849 0 -0.01036441 -0.0222975 0 -0.02225011 -0.02335369 0.1000001 -0.02316153 -0.02225017 0 0.02229756 -0.02305364 0.1000001 0.02300173 -0.02959084 0 0.01229381 -0.03191679 0.1000001 0.00111407 -0.03098678 0 0.006198704 -0.02951139 0 0.005902886 -0.02849549 0 0.01351433 -0.03149998 0 3.35574e-5 -0.02995413 0 -0.002917945 -0.02531164 0 0.01881361 -0.02586954 0 0.01554322 -0.02119064 0 0.02123576 -0.02225017 0 0.02229756 -0.02535176 0 -0.01875942 -0.02131593 0 -0.02124392 -0.02852433 0 -0.01345324 -0.02729606 0 -0.01287406 -0.0222975 0 -0.02225011 -0.03099995 0 -0.006132602 -0.02189558 0.1000001 -0.02176904 -0.02237236 0 -0.02216589 -0.03035461 0.1000001 -0.001923561 -0.02232527 0.1000001 0.02221345 -0.02184933 0 0.02181559 -0.03035044 0 0.001988351 -0.03098678 0.1000001 0.006198704 -0.02951139 0.1000001 0.005902886 -0.02849549 0.1000001 0.01351433 -0.03149998 0.1000001 3.35574e-5 -0.02995413 0.1000001 -0.002917945 -0.02119064 0.1000001 0.02123576 -0.02586954 0.1000001 0.01554322 -0.02531164 0.1000001 0.01881361 -0.02225017 0.1000001 0.02229756 -0.02131593 0.1000001 -0.02124392 -0.02535176 0.1000001 -0.01875942 -0.02729606 0.1000001 -0.01287406 -0.02852433 0.1000001 -0.01345324 -0.0222975 0.1000001 -0.02225011 -0.03099995 0.1000001 -0.006132602 -0.0212357 0.1000001 -0.02119058 -0.0212357 0 -0.02119058 -0.0222975 0 -0.02225011 -0.0222975 0.1000001 -0.02225011 - + @@ -223,9 +223,9 @@ - 0.7078629 0 0.7063499 0.7078613 0 0.7063515 0.8038566 0 0.5948232 0.74165 0 0.6707872 0.9044445 0 0.4265913 0.970292 0 0.2419371 0.9418957 0 0.3359057 0.8582708 0 0.5131973 0.8038561 0 0.594824 0.7416493 0 0.6707879 0.9044447 0 0.4265911 0.8582706 0 0.5131977 0.9418957 0 0.3359054 0.970292 0 0.241937 0.9893308 0 0.1456868 0.9893308 0 0.1456868 0.7402355 0 -0.6723477 0.9987429 0 -0.05012679 0.9697702 0 -0.2440202 0.9890206 0 -0.1477779 0.9035387 0 -0.4285064 0.8025718 0 -0.5965555 0.8571788 0 -0.5150191 0.9411873 0 -0.3378854 0.9988471 0 0.04800534 0.9987429 0 -0.05012679 0.9697701 0 -0.2440204 0.7402347 0 -0.6723485 0.7063508 0 -0.707862 0.7063492 0 -0.7078636 -0.8038379 0 -0.5948485 -0.7416594 0 -0.6707768 -0.9044417 0 -0.4265975 -0.9702876 0 -0.2419548 -0.9419032 0 -0.3358846 -0.8582773 0 -0.5131863 -0.8038371 0 -0.5948496 -0.7416586 0 -0.6707775 -0.9044414 0 -0.426598 -0.8582771 0 -0.5131867 -0.9702875 0 -0.2419549 -0.9893332 0 -0.1456704 -0.9893333 0 -0.1456704 -0.7402296 0 0.6723542 -0.9987425 0 0.0501343 -0.9697746 0 0.2440031 -0.9890206 0 0.1477778 -0.9035349 0 0.4285147 -0.8025741 0 0.5965524 -0.8571829 0 0.5150124 -0.9411837 0 0.3378953 -0.9988468 0 -0.04801154 -0.9987425 0 0.05013424 -0.9411839 0 0.3378951 -0.8571826 0 0.5150126 -0.9988469 0 -0.04801154 0 -1 0 0 1 0 0 1 -3.14206e-6 0 1 3.29908e-6 0 1 6.28413e-6 0 1 -6.28435e-6 0 1 -1.64962e-6 0 1 3.29915e-6 0 1 -1.64954e-6 0 1 -6.5985e-6 0 1 -1.31972e-5 0 1 -1.64958e-6 0 1 -4.71285e-6 0 1 3.1421e-6 0 1 -1.64954e-6 0 1 3.14197e-6 0 1 -6.28395e-6 0 1 1.57096e-6 0 1 3.29933e-6 + 0.7078629 0 0.7063499 0.7078613 0 0.7063515 0.9494731 0.01230764 0.313607 0.9199023 -0.005942106 0.3921027 0.9190663 0.005942165 -0.3940584 0.9488044 -0.01230758 -0.3156243 0.7063508 0 -0.707862 0.7063492 0 -0.7078636 -0.8204142 -0.01387488 -0.5716013 -0.9427406 0.02555501 -0.3325465 -0.998883 -0.0183655 0.04353988 -0.9266973 0.02039831 0.375255 -0.8061805 -0.01064342 0.5915739 0 -1 0 0 1 0 -2.38338e-7 1 -6.29416e-6 -4.39831e-6 1 0 2.00943e-6 1 0 1.13958e-6 1 0 0 1 1.53812e-6 -2.84815e-6 1 -6.71692e-6 -2.97303e-6 1 3.61261e-6 0 1 -2.30286e-6 - + @@ -235,26 +235,26 @@ - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    0 0 1 0 2 0 0 1 2 1 3 1 72 2 73 2 74 2 75 3 74 3 76 3 77 4 78 4 79 4 80 5 81 5 82 5 83 6 82 6 78 6 84 7 79 7 73 7 72 8 74 8 75 8 85 9 75 9 76 9 84 10 77 10 79 10 73 11 72 11 84 11 83 12 78 12 77 12 80 13 82 13 83 13 80 14 86 14 87 14 80 15 87 15 81 15 88 16 89 16 90 16 91 17 92 17 93 17 94 18 95 18 96 18 97 19 96 19 92 19 98 20 99 20 100 20 88 21 101 21 102 21 103 22 102 22 99 22 104 23 100 23 95 23 93 24 86 24 105 24 92 19 91 19 97 19 91 25 93 25 105 25 95 23 94 23 104 23 99 22 98 22 103 22 102 21 103 21 88 21 98 20 100 20 104 20 94 26 96 26 97 26 88 27 90 27 101 27 87 24 86 24 93 24 140 28 141 28 142 28 142 29 143 29 140 29

    + 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 1 2 1 3 1 28 2 31 2 27 2 28 3 27 3 26 3 29 4 30 4 31 4 29 5 31 5 28 5 47 6 48 6 49 6 49 7 50 7 47 7

    - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    4 30 5 30 6 30 7 31 4 31 8 31 9 32 10 32 11 32 12 33 13 33 14 33 10 34 12 34 15 34 5 35 9 35 16 35 8 36 4 36 6 36 7 37 8 37 17 37 9 38 11 38 16 38 16 39 6 39 5 39 11 34 10 34 15 34 15 40 12 40 14 40 18 41 19 41 14 41 13 42 18 42 14 42 20 43 21 43 22 43 23 44 24 44 25 44 26 45 27 45 28 45 24 46 26 46 29 46 30 47 31 47 32 47 33 48 34 48 22 48 31 49 33 49 35 49 27 50 30 50 36 50 37 51 19 51 23 51 29 46 25 46 24 46 37 52 23 52 25 52 36 53 28 53 27 53 35 54 32 54 31 54 22 48 35 48 33 48 36 47 30 47 32 47 29 45 26 45 28 45 34 43 20 43 22 43 23 55 19 55 18 55 38 56 39 56 40 56 41 56 40 56 42 56 39 56 42 56 40 56 38 56 43 56 39 56 44 56 45 56 46 56 46 56 43 56 38 56 44 56 47 56 45 56 45 56 43 56 46 56 48 56 49 56 50 56 50 56 51 56 48 56 48 56 52 56 49 56 53 56 54 56 42 56 41 56 42 56 54 56 55 56 54 56 52 56 53 56 52 56 54 56 48 56 55 56 52 56 56 56 57 56 58 56 59 56 60 56 61 56 60 56 56 56 58 56 56 56 60 56 62 56 62 56 60 56 59 56 63 56 57 56 56 56 64 56 59 56 61 56 65 56 66 56 67 56 67 56 44 56 65 56 65 56 68 56 66 56 47 56 44 56 67 56 69 56 70 56 64 56 59 56 64 56 70 56 69 56 71 56 68 56 66 56 68 56 71 56 64 56 71 56 69 56 106 57 107 57 108 57 109 58 106 58 110 58 106 59 109 59 107 59 107 57 111 57 108 57 112 60 113 60 114 60 108 61 111 61 112 61 113 57 115 57 114 57 112 62 111 62 113 62 116 63 117 63 118 63 118 57 119 57 116 57 117 64 120 64 118 64 109 57 121 57 122 57 121 57 109 57 110 57 120 57 121 57 123 57 121 65 120 65 122 65 120 57 123 57 118 57 124 66 125 66 126 66 127 57 128 57 129 57 124 67 126 67 128 67 130 68 128 68 126 68 129 57 128 57 130 57 126 69 125 69 131 69 127 70 129 70 132 70 133 57 134 57 135 57 135 57 114 57 133 57 134 71 136 71 135 71 133 57 114 57 115 57 132 72 137 72 138 72 137 73 132 73 129 73 136 57 139 57 138 57 139 57 136 57 134 57 138 74 139 74 132 74

    + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    5 8 4 8 6 8 6 9 4 9 10 9 4 10 9 10 10 10 8 11 10 11 9 11 9 12 7 12 8 12 13 13 11 13 17 13 12 13 17 13 11 13 14 13 12 13 11 13 14 13 15 13 12 13 16 13 17 13 18 13 18 13 19 13 16 13 16 13 13 13 17 13 23 13 20 13 21 13 20 13 23 13 22 13 24 13 21 13 20 13 15 13 14 13 25 13 25 13 22 13 23 13 15 13 25 13 23 13 38 14 32 14 34 14 32 14 38 14 33 14 32 15 33 15 35 15 33 16 36 16 35 16 37 17 38 17 39 17 39 18 40 18 37 18 38 14 34 14 39 14 41 19 42 19 43 19 44 14 43 14 42 14 42 20 41 20 45 20 46 21 35 21 36 21 43 14 44 14 46 14 43 22 46 22 36 22

    - -0.02119064 0 0.02123576 -0.02225017 0 0.02229756 -0.02225017 0.1000001 0.02229756 -0.02119064 0.1000001 0.02123576 -0.02225017 0 0.02229756 -0.01995748 0 0.02437102 -0.01995748 0.1000001 0.02437102 -0.01747262 0 0.02620989 -0.0148195 0 0.02779626 -0.0148195 0.1000001 0.02779626 -0.01747262 0.1000001 0.02620989 -0.01202356 0 0.02911502 -0.00911194 0 0.03015333 -0.00911194 0.1000001 0.03015333 -0.006112456 0 0.03090125 -0.003054261 0 0.03135156 -0.003054261 0.1000001 0.03135156 -0.006112456 0.1000001 0.03090125 -0.01202356 0.1000001 0.02911502 -0.02225017 0.1000001 0.02229756 3.34978e-5 0 0.03150004 3.34978e-5 0.1000001 0.03150004 0.003120899 0 0.031345 0.00617814 0 0.03088819 0.00617814 0.1000001 0.03088819 0.009176015 0 0.0301339 0.01208537 0 0.02908939 0.01208537 0.1000001 0.02908939 0.009176015 0.1000001 0.0301339 0.01487851 0 0.02776467 0.01752829 0 0.02617263 0.01752829 0.1000001 0.02617263 0.02000921 0 0.02432858 0.0222975 0 0.02225023 0.0222975 0.1000001 0.02225023 0.02000921 0.1000001 0.02432858 0.01487851 0.1000001 0.02776467 0.003120899 0.1000001 0.031345 0.02000921 0 0.02432858 0.01752829 0 0.02617263 0.01669359 0 0.02492648 0.01487851 0 0.02776467 0.0212357 0 0.0211907 0.0222975 0 0.02225023 0.01905637 0 0.02317017 0.01417005 0 0.0264427 0.01150983 0 0.02770411 0.009176015 0 0.0301339 0.01208537 0 0.02908939 0.00617814 0 0.03088819 0.008738994 0 0.02869898 0.003120899 0 0.031345 0.005883932 0 0.02941733 3.34978e-5 0 0.03150004 0.002972245 0 0.02985239 3.18289e-5 0 0.03000003 -0.003054261 0 0.03135156 -0.002908766 0 0.02985858 -0.006112456 0 0.03090125 -0.005821466 0 0.02942985 -0.00911194 0 0.03015333 -0.008678019 0 0.02871739 -0.01202356 0 0.02911502 -0.011451 0 0.02772855 -0.0148195 0 0.02779626 -0.01411378 0 0.02647268 -0.01747262 0 0.02620989 -0.0166406 0 0.02496182 -0.01995748 0 0.02437102 -0.01900714 0 0.02321058 -0.02225017 0 0.02229756 -0.02119064 0 0.02123576 -0.01900714 0.1000001 0.02321058 -0.01900714 0 0.02321058 -0.02119064 0 0.02123576 -0.01411378 0.1000001 0.02647268 -0.01411378 0 0.02647268 -0.0166406 0 0.02496182 -0.0166406 0.1000001 0.02496182 -0.008678019 0.1000001 0.02871739 -0.008678019 0 0.02871739 -0.011451 0 0.02772855 -0.002908766 0.1000001 0.02985858 -0.002908766 0 0.02985858 -0.005821466 0 0.02942985 -0.005821466 0.1000001 0.02942985 -0.011451 0.1000001 0.02772855 -0.02119064 0.1000001 0.02123576 3.18289e-5 0.1000001 0.03000003 3.18289e-5 0 0.03000003 0.005883932 0.1000001 0.02941733 0.005883932 0 0.02941733 0.002972245 0 0.02985239 0.01150983 0.1000001 0.02770411 0.01150983 0 0.02770411 0.008738994 0 0.02869898 0.008738994 0.1000001 0.02869898 0.01669359 0.1000001 0.02492648 0.01669359 0 0.02492648 0.01417005 0 0.0264427 0.0212357 0.1000001 0.0211907 0.0212357 0 0.0211907 0.01905637 0 0.02317017 0.01905637 0.1000001 0.02317017 0.01417005 0.1000001 0.0264427 0.002972245 0.1000001 0.02985239 0.01669359 0.1000001 0.02492648 0.01752829 0.1000001 0.02617263 0.02000921 0.1000001 0.02432858 0.01487851 0.1000001 0.02776467 0.0222975 0.1000001 0.02225023 0.0212357 0.1000001 0.0211907 0.01905637 0.1000001 0.02317017 0.01417005 0.1000001 0.0264427 0.01150983 0.1000001 0.02770411 0.01208537 0.1000001 0.02908939 0.009176015 0.1000001 0.0301339 0.008738994 0.1000001 0.02869898 0.00617814 0.1000001 0.03088819 0.005883932 0.1000001 0.02941733 0.003120899 0.1000001 0.031345 0.002972245 0.1000001 0.02985239 3.34978e-5 0.1000001 0.03150004 3.18289e-5 0.1000001 0.03000003 -0.002908766 0.1000001 0.02985858 -0.003054261 0.1000001 0.03135156 -0.005821466 0.1000001 0.02942985 -0.006112456 0.1000001 0.03090125 -0.008678019 0.1000001 0.02871739 -0.00911194 0.1000001 0.03015333 -0.011451 0.1000001 0.02772855 -0.01202356 0.1000001 0.02911502 -0.0148195 0.1000001 0.02779626 -0.01411378 0.1000001 0.02647268 -0.0166406 0.1000001 0.02496182 -0.01747262 0.1000001 0.02620989 -0.01900714 0.1000001 0.02321058 -0.01995748 0.1000001 0.02437102 -0.02119064 0.1000001 0.02123576 -0.02225017 0.1000001 0.02229756 0.0222975 0.1000001 0.02225023 0.0222975 0 0.02225023 0.0212357 0 0.0211907 0.0212357 0.1000001 0.0211907 + -0.02119064 0 0.02123576 -0.02225017 0 0.02229756 -0.02225017 0.1000001 0.02229756 -0.02119064 0.1000001 0.02123576 -0.02225017 0 0.02229756 -0.01223099 0 0.02961689 -0.02285748 0.1000001 0.0229904 -0.004620313 0.1000001 0.03137987 0.00468713 0 0.03136998 0.02290624 0 0.02294176 0.01229363 0.1000001 0.0295909 0.0222975 0.1000001 0.02225023 0.01632016 0 0.02716308 0.0167461 0 0.02500683 0.0212357 0 0.0211907 0.0222975 0 0.02225023 0.007363557 0 0.02926772 0.006198525 0 0.03098684 3.34978e-5 0 0.03150004 -0.00291866 0 0.02995413 -0.006132483 0 0.03100001 -0.01148849 0 0.02781689 -0.01626229 0 0.02719783 -0.01786684 0 0.02414411 -0.02225017 0 0.02229756 -0.02119064 0 0.02123576 -0.02135479 0.1000001 0.02141928 -0.02140599 0 0.02147692 -0.001994371 0.1000001 0.03111332 -0.007347822 0 0.02946764 0.01175099 0 0.02828329 0.02165067 0.1000001 0.02165794 0.0212357 0 0.0211907 0.0167461 0.1000001 0.02500683 0.01632016 0.1000001 0.02716308 0.0222975 0.1000001 0.02225023 0.0212357 0.1000001 0.0211907 0.007363557 0.1000001 0.02926772 0.006198525 0.1000001 0.03098684 3.34978e-5 0.1000001 0.03150004 -0.00291866 0.1000001 0.02995413 -0.006132483 0.1000001 0.03100001 -0.01148849 0.1000001 0.02781689 -0.01626229 0.1000001 0.02719783 -0.01786684 0.1000001 0.02414411 -0.02119064 0.1000001 0.02123576 -0.02225017 0.1000001 0.02229756 0.0222975 0.1000001 0.02225023 0.0222975 0 0.02225023 0.0212357 0 0.0211907 0.0212357 0.1000001 0.0211907 - + @@ -262,9 +262,9 @@ - -0.7078629 0 -0.7063499 -0.7078613 0 -0.7063515 0.6707769 0 -0.7416592 0.5131873 0 -0.8582767 0.5948559 0 -0.8038324 0.335875 0 -0.9419066 0.1456485 0 -0.9893364 0.2419801 0 -0.9702813 0.4265822 0 -0.9044489 0.6707779 0 -0.7416584 0.5131897 0 -0.8582753 0.4265835 0 -0.9044483 0.2419785 0 -0.9702817 0.145647 0 -0.9893367 0.04802519 0 -0.9988462 -0.1477942 0 -0.9890182 -0.3379036 0 -0.9411808 -0.2440015 0 -0.9697749 -0.5150201 0 -0.8571781 -0.6723582 0 -0.740226 -0.5965554 0 -0.802572 -0.4284719 0 -0.9035551 -0.05013084 0 -0.9987427 -0.4284732 0 -0.9035545 -0.67236 0 -0.7402244 -0.515019 0 -0.8571789 -0.05012929 0 -0.9987428 0.7063492 0 -0.7078636 -0.6707672 0 0.741668 -0.5132013 0 0.8582683 -0.5948461 0 0.8038397 -0.3358861 0 0.9419026 -0.1456919 0 0.9893301 -0.2419464 0 0.9702897 -0.4265881 0 0.9044461 -0.670768 0 0.7416673 -0.3358835 0 0.9419036 -0.4265893 0 0.9044455 -0.241945 0 0.9702901 -0.04801326 0 0.9988467 -0.04801177 0 0.9988468 0.147778 0 0.9890206 0.3378946 0 0.941184 0.2440207 0 0.9697701 0.5150119 0 0.857183 0.6723545 0 0.7402294 0.5965409 0 0.8025828 0.4285151 0 0.9035346 0.05013483 0 0.9987425 0.4285139 0 0.9035352 0.5965399 0 0.8025835 0.6723536 0 0.7402302 0.515013 0 0.8571824 0.337896 0 0.9411835 0.05013632 0 0.9987424 0 -1 0 0 1 0 0 1 -3.14208e-6 0 1 6.59894e-6 0 1 6.59836e-6 0 1 1.31963e-5 0 1 3.86621e-6 0 1 -1.25682e-5 0 1 4.71314e-6 0 1 -3.29913e-6 0 1 2.47455e-6 0 1 -3.29923e-6 0 1 -3.29924e-6 + -0.7078629 0 -0.7063499 -0.7078613 0 -0.7063515 0.494116 -0.01214581 -0.8693112 0.4477241 -7.44772e-4 -0.8941715 -0.5988597 0.006227076 -0.8008298 -0.3711878 -0.02475208 -0.9282279 -0.06187921 0.01973503 -0.9978886 0.7063492 0 -0.7078636 -0.5898678 -0.009177148 0.8074477 -0.4178683 0.01578795 0.9083706 -0.1030645 -0.009691238 0.9946275 0.4198013 -0.0157873 0.9074788 0.1051775 0.00969094 0.9944064 0.5915768 0.00917685 0.8061964 0 -1 0 6.8349e-7 1 6.29971e-6 1.99441e-6 1 2.70977e-6 0 1 0 0 1 7.86873e-6 -1.28077e-6 1 0 2.85343e-7 1 1.29916e-5 9.67283e-7 1 1.4451e-5 0 1 -4.89958e-6 0 1 7.35327e-6 -6.84938e-7 1 0 -4.14944e-6 1 0 - + @@ -274,17 +274,17 @@ - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    0 0 1 0 2 0 0 1 2 1 3 1 72 2 73 2 74 2 75 3 76 3 77 3 78 4 77 4 73 4 79 5 80 5 81 5 82 6 83 6 84 6 85 7 84 7 80 7 86 8 81 8 76 8 72 9 74 9 87 9 75 10 77 10 78 10 72 4 78 4 73 4 86 5 79 5 81 5 76 11 75 11 86 11 85 12 80 12 79 12 82 13 84 13 85 13 82 14 88 14 89 14 82 14 89 14 83 14 90 15 91 15 92 15 93 16 94 16 95 16 96 17 95 17 91 17 97 18 98 18 99 18 100 19 101 19 102 19 103 20 102 20 98 20 104 21 99 21 94 21 92 22 88 22 105 22 91 17 90 17 96 17 90 15 92 15 105 15 94 23 93 23 104 23 98 20 97 20 103 20 102 24 103 24 100 24 97 25 99 25 104 25 93 16 95 16 96 16 89 26 88 26 92 26 140 27 141 27 142 27 142 27 143 27 140 27

    + 3 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 1 2 1 3 1 28 2 29 2 27 2 28 3 27 3 26 3 31 4 32 4 30 4 30 5 28 5 31 5 29 6 28 6 30 6 47 7 48 7 49 7 49 7 50 7 47 7

    - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    4 28 5 28 6 28 7 29 8 29 9 29 5 30 7 30 10 30 11 31 12 31 13 31 14 32 15 32 16 32 12 33 14 33 17 33 8 34 11 34 18 34 19 35 4 35 6 35 10 29 7 29 9 29 5 30 10 30 6 30 11 36 13 36 18 36 18 37 9 37 8 37 13 38 12 38 17 38 17 32 14 32 16 32 20 39 21 39 16 39 15 40 20 40 16 40 22 41 23 41 24 41 25 42 26 42 27 42 23 43 25 43 28 43 29 44 30 44 31 44 32 45 33 45 34 45 30 46 32 46 35 46 26 47 29 47 36 47 37 48 21 48 22 48 28 43 24 43 23 43 37 41 22 41 24 41 36 49 27 49 26 49 35 50 31 50 30 50 34 51 35 51 32 51 36 52 29 52 31 52 28 53 25 53 27 53 22 54 21 54 20 54 38 55 39 55 40 55 39 55 41 55 40 55 42 55 43 55 38 55 38 55 44 55 42 55 41 55 45 55 40 55 38 55 40 55 44 55 46 55 45 55 41 55 47 55 46 55 48 55 41 55 48 55 46 55 49 55 50 55 47 55 46 55 47 55 50 55 51 55 52 55 49 55 50 55 49 55 52 55 53 55 54 55 51 55 52 55 51 55 54 55 55 55 54 55 53 55 53 55 56 55 57 55 56 55 58 55 59 55 59 55 57 55 56 55 55 55 53 55 57 55 58 55 60 55 61 55 62 55 63 55 60 55 61 55 60 55 63 55 59 55 58 55 61 55 62 55 64 55 63 55 65 55 63 55 64 55 64 55 66 55 67 55 67 55 65 55 64 55 68 55 69 55 67 55 70 55 71 55 68 55 69 55 68 55 71 55 66 55 68 55 67 55 106 56 107 56 108 56 106 56 109 56 107 56 108 57 110 57 111 57 111 56 112 56 108 56 106 58 113 58 109 58 112 56 106 56 108 56 109 56 113 56 114 56 115 56 114 56 116 56 114 56 115 56 109 56 116 56 117 56 118 56 117 59 116 59 114 59 118 56 119 56 120 56 119 56 118 56 117 56 120 56 121 56 122 56 121 56 120 56 119 56 122 60 121 60 123 60 124 56 125 56 122 56 126 56 127 56 125 56 125 56 124 56 126 56 124 61 122 61 123 61 128 62 129 62 127 62 129 63 130 63 131 63 130 64 129 64 128 64 128 65 127 65 126 65 130 56 132 56 131 56 132 56 130 56 133 56 134 56 135 56 132 56 132 56 133 56 134 56 134 66 136 66 137 66 137 56 138 56 139 56 138 67 137 67 136 67 134 56 137 56 135 56

    + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    4 8 5 8 6 8 5 9 7 9 6 9 5 10 8 10 7 10 8 11 9 11 10 11 10 12 7 12 8 12 11 13 10 13 9 13 14 14 15 14 12 14 12 14 13 14 14 14 16 14 13 14 12 14 17 14 16 14 12 14 18 14 16 14 17 14 19 14 16 14 18 14 18 14 20 14 19 14 22 14 21 14 20 14 19 14 20 14 21 14 23 14 21 14 22 14 24 14 25 14 22 14 23 14 22 14 25 14 34 15 35 15 36 15 36 16 33 16 34 16 34 17 33 17 37 17 34 18 37 18 38 18 38 19 37 19 39 19 39 20 37 20 40 20 40 21 41 21 39 21 41 22 42 22 43 22 42 23 41 23 40 23 43 17 42 17 44 17 43 24 45 24 46 24 45 25 43 25 44 25

    @@ -292,49 +292,49 @@ - + 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 - + - - - - - - - - 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 - - - - - - - - - - - 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 - - - - - - - - - - - 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 - - - - + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + diff --git a/simulateur/3d/mod_lun_bleu_jaune_old.dae b/simulateur/3d/mod_lun_bleu_jaune_old.dae new file mode 100644 index 0000000..277748c --- /dev/null +++ b/simulateur/3d/mod_lun_bleu_jaune_old.dae @@ -0,0 +1,344 @@ + + + + + Blender User + Blender 2.77.0 commit date:1970-01-01, commit time:00:00, hash:unknown + + 2017-01-21T17:05:57 + 2017-01-21T17:05:57 + + Z_UP + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.5992157 0.5992157 0.5992157 1 + + + 0.075 0.075 0.075 1 + + + 50 + + + 1 + + + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.8 0.8 0.8 1 + + + 0.075 0.075 0.075 1 + + + 50 + + + 1 + + + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.07215687 0.3043137 0.5364706 1 + + + 0.075 0.075 0.075 1 + + + 50 + + + 1 + + + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.774902 0.5678431 0 1 + + + 0.075 0.075 0.075 1 + + + 50 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 0.02225017 0.1000001 -0.02229744 0.02225017 0 -0.02229744 0.02119064 0 -0.02123564 0.02119064 0.1000001 -0.02123564 0.0222975 0 0.02225023 0.02437096 0 0.0199576 0.02437096 0.1000001 0.0199576 0.02620983 0 0.01747268 0.0277962 0 0.01481956 0.0277962 0.1000001 0.01481956 0.02620983 0.1000001 0.01747268 0.02911496 0 0.01202356 0.03015327 0 0.00911194 0.03015327 0.1000001 0.00911194 0.03090119 0 0.006112635 0.0313515 0 0.003054261 0.0313515 0.1000001 0.003054261 0.03090119 0.1000001 0.006112635 0.02911496 0.1000001 0.01202356 0.0222975 0.1000001 0.02225023 0.03149998 0 -3.34382e-5 0.03149998 0.1000001 -3.34382e-5 0.03134495 0 -0.003120779 0.03088814 0 -0.006178081 0.03088814 0.1000001 -0.006178081 0.03013384 0 -0.009175956 0.02908933 0 -0.01208531 0.02908933 0.1000001 -0.01208531 0.03013384 0.1000001 -0.009175956 0.02776461 0 -0.01487845 0.02617257 0 -0.01752823 0.02617257 0.1000001 -0.01752823 0.02432852 0 -0.02000916 0.02225017 0 -0.02229744 0.02225017 0.1000001 -0.02229744 0.02432852 0.1000001 -0.02000916 0.02776461 0.1000001 -0.01487845 0.03134495 0.1000001 -0.003120779 0.02871733 0 0.008678138 0.03090119 0 0.006112635 0.03015327 0 0.00911194 0.02772849 0 0.011451 0.02911496 0 0.01202356 0.02942979 0 0.005821526 0.02985852 0 0.002908885 0.03149998 0 -3.34382e-5 0.0313515 0 0.003054261 0.02999997 0 -3.17693e-5 0.02496176 0 0.0166406 0.02620983 0 0.01747268 0.02437096 0 0.0199576 0.0222975 0 0.02225023 0.0212357 0 0.0211907 0.0277962 0 0.01481956 0.02647262 0 0.01411384 0.02321052 0 0.01900726 0.02492642 0 -0.01669353 0.02617257 0 -0.01752823 0.02776461 0 -0.01487845 0.02644258 0 -0.01416999 0.02908933 0 -0.01208531 0.02770406 0 -0.01150977 0.02432852 0 -0.02000916 0.02119064 0 -0.02123564 0.02225017 0 -0.02229744 0.02317011 0 -0.01905632 0.02941721 0 -0.005883872 0.03134495 0 -0.003120779 0.02985239 0 -0.002972126 0.03088814 0 -0.006178081 0.03013384 0 -0.009175956 0.02869892 0 -0.008738934 0.02321052 0.1000001 0.01900726 0.02321052 0 0.01900726 0.0212357 0 0.0211907 0.02647262 0.1000001 0.01411384 0.02647262 0 0.01411384 0.02496176 0 0.0166406 0.02496176 0.1000001 0.0166406 0.02871733 0.1000001 0.008678138 0.02871733 0 0.008678138 0.02772849 0 0.011451 0.02985852 0.1000001 0.002908885 0.02985852 0 0.002908885 0.02942979 0 0.005821526 0.02942979 0.1000001 0.005821526 0.02772849 0.1000001 0.011451 0.0212357 0.1000001 0.0211907 0.02999997 0.1000001 -3.17693e-5 0.02999997 0 -3.17693e-5 0.02941721 0.1000001 -0.005883872 0.02941721 0 -0.005883872 0.02985239 0 -0.002972126 0.02770406 0.1000001 -0.01150977 0.02770406 0 -0.01150977 0.02869892 0 -0.008738934 0.02869892 0.1000001 -0.008738934 0.02492642 0.1000001 -0.01669353 0.02492642 0 -0.01669353 0.02644258 0 -0.01416999 0.02119064 0.1000001 -0.02123564 0.02119064 0 -0.02123564 0.02317011 0 -0.01905632 0.02317011 0.1000001 -0.01905632 0.02644258 0.1000001 -0.01416999 0.02985239 0.1000001 -0.002972126 0.03015327 0.1000001 0.00911194 0.03090119 0.1000001 0.006112635 0.02871733 0.1000001 0.008678138 0.02772849 0.1000001 0.011451 0.02911496 0.1000001 0.01202356 0.02942979 0.1000001 0.005821526 0.0313515 0.1000001 0.003054261 0.03149998 0.1000001 -3.34382e-5 0.02985852 0.1000001 0.002908885 0.02999997 0.1000001 -3.17693e-5 0.02437096 0.1000001 0.0199576 0.02620983 0.1000001 0.01747268 0.02496176 0.1000001 0.0166406 0.0212357 0.1000001 0.0211907 0.0222975 0.1000001 0.02225023 0.0277962 0.1000001 0.01481956 0.02647262 0.1000001 0.01411384 0.02321052 0.1000001 0.01900726 0.02776461 0.1000001 -0.01487845 0.02617257 0.1000001 -0.01752823 0.02492642 0.1000001 -0.01669353 0.02644258 0.1000001 -0.01416999 0.02770406 0.1000001 -0.01150977 0.02908933 0.1000001 -0.01208531 0.02432852 0.1000001 -0.02000916 0.02225017 0.1000001 -0.02229744 0.02119064 0.1000001 -0.02123564 0.02317011 0.1000001 -0.01905632 0.02985239 0.1000001 -0.002972126 0.03134495 0.1000001 -0.003120779 0.02941721 0.1000001 -0.005883872 0.03088814 0.1000001 -0.006178081 0.03013384 0.1000001 -0.009175956 0.02869892 0.1000001 -0.008738934 0.0212357 0 0.0211907 0.0222975 0 0.02225023 0.0222975 0.1000001 0.02225023 0.0212357 0.1000001 0.0211907 + + + + + + + + + + -0.7078629 0 -0.7063499 -0.74165 0 -0.6707872 -0.8582706 0 -0.5131977 -0.8038469 0 -0.5948362 -0.9419022 0 -0.3358874 -0.9893366 0 -0.1456471 -0.9702824 0 -0.2419753 -0.9044525 0 -0.4265745 -0.8038463 0 -0.594837 -0.9419022 0 -0.3358875 -0.9044523 0 -0.4265748 -0.9893366 0 -0.1456472 -0.9988462 0 -0.04802554 -0.9988462 0 -0.04802554 -0.9890176 0 0.1477984 -0.9411809 0 0.3379031 -0.969775 0 0.2440008 -0.8571789 0 0.5150187 -0.7402247 0 0.6723596 -0.8025718 0 0.5965555 -0.9035546 0 0.4284731 -0.9987429 0 0.05012679 -0.9035543 0 0.4284737 -0.8571788 0 0.5150191 -0.9411808 0 0.3379035 -0.9987429 0 0.05012679 -0.7063492 0 0.7078636 0.7416586 0 0.6707775 0.8582688 0 0.5132005 0.8038466 0 0.5948367 0.9419034 0 0.335884 0.9893304 0 0.1456893 0.9702873 0 0.2419555 0.9044489 0 0.426582 0.8038468 0 0.5948364 0.9419034 0 0.3358841 0.9702875 0 0.2419553 0.9893304 0 0.1456893 0.9988468 0 0.04801154 0.9890206 0 -0.1477778 0.9411839 0 -0.3378948 0.9697698 0 -0.2440217 0.8571829 0 -0.5150124 0.7402296 0 -0.6723542 0.8025833 0 -0.59654 0.9035351 0 -0.4285144 0.9987425 0 -0.05013424 0.9890206 0 -0.1477778 0.9035348 0 -0.428515 0.941184 0 -0.3378947 0 -1 0 0 1 0 0 1 3.29931e-6 0 1 -6.28383e-6 0 1 2.47438e-6 0 1 6.28435e-6 0 1 -6.59845e-6 0 1 1.31972e-5 0 1 -3.29911e-6 0 1 6.28449e-6 0 1 -3.14224e-6 0 1 6.59836e-6 0 1 6.59848e-6 0 1 -4.7131e-6 0 1 6.28411e-6 0 1 -3.14203e-6 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 0 2 0 3 0 72 1 73 1 74 1 75 2 76 2 77 2 78 3 77 3 73 3 79 4 80 4 81 4 82 5 83 5 84 5 85 6 84 6 80 6 86 7 81 7 76 7 72 1 74 1 87 1 75 2 77 2 78 2 72 8 78 8 73 8 86 9 79 9 81 9 76 10 75 10 86 10 85 6 80 6 79 6 82 11 84 11 85 11 82 12 88 12 89 12 82 13 89 13 83 13 90 14 91 14 92 14 93 15 94 15 95 15 96 16 95 16 91 16 97 17 98 17 99 17 100 18 101 18 102 18 103 19 102 19 98 19 104 20 99 20 94 20 92 21 88 21 105 21 91 16 90 16 96 16 90 14 92 14 105 14 94 22 93 22 104 22 98 19 97 19 103 19 102 18 103 18 100 18 97 23 99 23 104 23 93 24 95 24 96 24 89 25 88 25 92 25 140 26 141 26 142 26 142 26 143 26 140 26

    +
    + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    4 27 5 27 6 27 7 28 8 28 9 28 5 29 7 29 10 29 11 30 12 30 13 30 14 31 15 31 16 31 12 32 14 32 17 32 8 33 11 33 18 33 19 27 4 27 6 27 10 28 7 28 9 28 5 34 10 34 6 34 11 35 13 35 18 35 18 33 9 33 8 33 13 36 12 36 17 36 17 37 14 37 16 37 20 38 21 38 16 38 15 38 20 38 16 38 22 39 23 39 24 39 25 40 26 40 27 40 23 41 25 41 28 41 29 42 30 42 31 42 32 43 33 43 34 43 30 44 32 44 35 44 26 45 29 45 36 45 37 46 21 46 22 46 28 41 24 41 23 41 37 47 22 47 24 47 36 48 27 48 26 48 35 44 31 44 30 44 34 43 35 43 32 43 36 42 29 42 31 42 28 49 25 49 27 49 22 46 21 46 20 46 38 50 39 50 40 50 38 50 40 50 41 50 42 50 41 50 40 50 38 50 43 50 39 50 44 50 45 50 46 50 46 50 43 50 44 50 44 50 47 50 45 50 39 50 43 50 46 50 48 50 49 50 50 50 50 50 51 50 52 50 53 50 49 50 48 50 53 50 54 50 41 50 50 50 52 50 55 50 50 50 55 50 48 50 53 50 48 50 54 50 41 50 42 50 53 50 56 50 57 50 58 50 56 50 58 50 59 50 60 50 61 50 58 50 56 50 62 50 57 50 63 50 64 50 62 50 62 50 65 50 63 50 56 50 65 50 62 50 66 50 67 50 68 50 68 50 45 50 47 50 66 50 69 50 67 50 67 50 45 50 68 50 70 50 61 50 60 50 59 50 58 50 61 50 71 50 69 50 66 50 70 50 71 50 61 50 70 50 69 50 71 50 106 51 107 51 108 51 109 51 106 51 108 51 106 51 109 51 110 51 107 52 111 52 108 52 112 53 113 53 114 53 114 51 111 51 112 51 113 54 115 54 114 54 112 51 111 51 107 51 116 51 117 51 118 51 119 51 120 51 116 51 118 55 117 55 121 55 109 56 122 56 121 56 123 57 119 57 116 57 118 58 123 58 116 58 122 51 118 51 121 51 121 51 110 51 109 51 124 59 125 59 126 59 127 51 124 51 126 51 124 51 128 51 129 51 125 60 130 60 126 60 130 51 131 51 132 51 132 51 133 51 130 51 130 61 133 61 126 61 134 62 135 62 136 62 115 51 113 51 134 51 135 51 137 51 136 51 134 63 113 63 135 63 129 64 128 64 138 64 128 51 124 51 127 51 136 51 137 51 139 51 128 51 139 51 138 51 139 65 137 65 138 65

    +
    +
    +
    + + + + 0.02119064 0 -0.02123564 0.02225017 0 -0.02229744 0.02225017 0.1000001 -0.02229744 0.02119064 0.1000001 -0.02123564 0.02225017 0 -0.02229744 0.01995754 0 -0.0243709 0.01995754 0.1000001 -0.0243709 0.01747262 0 -0.02620977 0.0148195 0 -0.02779614 0.0148195 0.1000001 -0.02779614 0.01747262 0.1000001 -0.02620977 0.0120235 0 -0.0291149 0.009111881 0 -0.03015321 0.009111881 0.1000001 -0.03015321 0.006112515 0 -0.03090113 0.003054261 0 -0.03135144 0.003054261 0.1000001 -0.03135144 0.006112515 0.1000001 -0.03090113 0.0120235 0.1000001 -0.0291149 0.02225017 0.1000001 -0.02229744 -3.34382e-5 0 -0.03149992 -3.34382e-5 0.1000001 -0.03149992 -0.003120779 0 -0.03134495 -0.00617814 0 -0.03088814 -0.00617814 0.1000001 -0.03088814 -0.009175956 0 -0.03013378 -0.01208537 0 -0.02908927 -0.01208537 0.1000001 -0.02908927 -0.009175956 0.1000001 -0.03013378 -0.01487851 0 -0.02776455 -0.01752829 0 -0.02617251 -0.01752829 0.1000001 -0.02617251 -0.02000916 0 -0.02432847 -0.0222975 0 -0.02225011 -0.0222975 0.1000001 -0.02225011 -0.02000916 0.1000001 -0.02432847 -0.01487851 0.1000001 -0.02776455 -0.003120779 0.1000001 -0.03134495 0.02119064 0 -0.02123564 0.01995754 0 -0.0243709 0.02225017 0 -0.02229744 0.0190072 0 -0.02321046 0.01664054 0 -0.0249617 0.0148195 0 -0.02779614 0.01747262 0 -0.02620977 0.0120235 0 -0.0291149 0.01145094 0 -0.02772843 0.01411378 0 -0.02647256 0.009111881 0 -0.03015321 0.008678078 0 -0.02871727 0.006112515 0 -0.03090113 0.003054261 0 -0.03135144 0.005821466 0 -0.02942973 -3.34382e-5 0 -0.03149992 0.002908766 0 -0.02985846 -3.18885e-5 0 -0.02999991 -0.002972245 0 -0.02985233 -0.003120779 0 -0.03134495 -0.005883932 0 -0.02941715 -0.00617814 0 -0.03088814 -0.008739054 0 -0.02869886 -0.009175956 0 -0.03013378 -0.01208537 0 -0.02908927 -0.01150995 0 -0.02770406 -0.01487851 0 -0.02776455 -0.01416999 0 -0.02644252 -0.02000916 0 -0.02432847 -0.01669359 0 -0.02492636 -0.01905637 0 -0.02317005 -0.01752829 0 -0.02617251 -0.0222975 0 -0.02225011 -0.0212357 0 -0.02119058 0.0190072 0.1000001 -0.02321046 0.0190072 0 -0.02321046 0.02119064 0 -0.02123564 0.01411378 0.1000001 -0.02647256 0.01411378 0 -0.02647256 0.01664054 0 -0.0249617 0.01664054 0.1000001 -0.0249617 0.008678078 0.1000001 -0.02871727 0.008678078 0 -0.02871727 0.01145094 0 -0.02772843 0.002908766 0.1000001 -0.02985846 0.002908766 0 -0.02985846 0.005821466 0 -0.02942973 0.005821466 0.1000001 -0.02942973 0.01145094 0.1000001 -0.02772843 0.02119064 0.1000001 -0.02123564 -3.18885e-5 0.1000001 -0.02999991 -3.18885e-5 0 -0.02999991 -0.005883932 0.1000001 -0.02941715 -0.005883932 0 -0.02941715 -0.002972245 0 -0.02985233 -0.01150995 0.1000001 -0.02770406 -0.01150995 0 -0.02770406 -0.008739054 0 -0.02869886 -0.008739054 0.1000001 -0.02869886 -0.01669359 0.1000001 -0.02492636 -0.01669359 0 -0.02492636 -0.01416999 0 -0.02644252 -0.0212357 0.1000001 -0.02119058 -0.0212357 0 -0.02119058 -0.01905637 0 -0.02317005 -0.01905637 0.1000001 -0.02317005 -0.01416999 0.1000001 -0.02644252 -0.002972245 0.1000001 -0.02985233 0.02225017 0.1000001 -0.02229744 0.01995754 0.1000001 -0.0243709 0.02119064 0.1000001 -0.02123564 0.0190072 0.1000001 -0.02321046 0.01664054 0.1000001 -0.0249617 0.01747262 0.1000001 -0.02620977 0.0148195 0.1000001 -0.02779614 0.01145094 0.1000001 -0.02772843 0.0120235 0.1000001 -0.0291149 0.01411378 0.1000001 -0.02647256 0.009111881 0.1000001 -0.03015321 0.008678078 0.1000001 -0.02871727 0.006112515 0.1000001 -0.03090113 0.005821466 0.1000001 -0.02942973 0.003054261 0.1000001 -0.03135144 -3.18885e-5 0.1000001 -0.02999991 0.002908766 0.1000001 -0.02985846 -3.34382e-5 0.1000001 -0.03149992 -0.003120779 0.1000001 -0.03134495 -0.002972245 0.1000001 -0.02985233 -0.005883932 0.1000001 -0.02941715 -0.00617814 0.1000001 -0.03088814 -0.009175956 0.1000001 -0.03013378 -0.008739054 0.1000001 -0.02869886 -0.01150995 0.1000001 -0.02770406 -0.01208537 0.1000001 -0.02908927 -0.01416999 0.1000001 -0.02644252 -0.01487851 0.1000001 -0.02776455 -0.01905637 0.1000001 -0.02317005 -0.01669359 0.1000001 -0.02492636 -0.02000916 0.1000001 -0.02432847 -0.01752829 0.1000001 -0.02617251 -0.0212357 0.1000001 -0.02119058 -0.0222975 0.1000001 -0.02225011 -0.0222975 0 -0.02225011 -0.0212357 0 -0.02119058 -0.0212357 0.1000001 -0.02119058 -0.0222975 0.1000001 -0.02225011 + + + + + + + + + + 0.7078629 0 0.7063499 -0.6707879 0 0.7416493 -0.5131974 0 0.8582707 -0.5948366 0 0.8038468 -0.3358863 0 0.9419026 -0.145647 0 0.9893367 -0.2419754 0 0.9702824 -0.4265756 0 0.9044519 -0.3358877 0 0.9419022 -0.4265744 0 0.9044526 -0.04802417 0 0.9988462 -0.04802578 0 0.9988462 0.1477944 0 0.9890182 0.3379008 0 0.9411818 0.2439999 0 0.9697753 0.5150101 0 0.8571842 0.6723591 0 0.7402252 0.5965554 0 0.802572 0.4284916 0 0.9035457 0.05012869 0 0.9987428 0.2440014 0 0.969775 0.1477959 0 0.989018 0.67236 0 0.7402244 0.05012714 0 0.9987428 -0.7063508 0 0.707862 -0.7063492 0 0.7078636 0.6707771 0 -0.7416591 0.5132013 0 -0.8582683 0.5948366 0 -0.8038468 0.3358849 0 -0.9419031 0.1456892 0 -0.9893305 0.241954 0 -0.9702878 0.4265817 0 -0.904449 0.3358836 0 -0.9419035 0.2419555 0 -0.9702875 0.1456907 0 -0.9893303 0.04801273 0 -0.9988468 0.04801124 0 -0.9988469 -0.1477767 0 -0.9890208 -0.3378872 0 -0.9411866 -0.244028 0 -0.9697682 -0.5150119 0 -0.857183 -0.6723449 0 -0.7402381 -0.5965492 0 -0.8025767 -0.4285151 0 -0.9035346 -0.05013179 0 -0.9987426 -0.2440294 0 -0.9697679 -0.1477752 0 -0.9890211 -0.672344 0 -0.7402388 -0.515013 0 -0.8571824 -0.3378898 0 -0.9411857 -0.05012881 0 -0.9987428 0 -1 0 0 1 0 0 1 6.59826e-6 0 1 -1.31969e-5 0 1 1.17824e-6 0 1 -3.92756e-6 0 1 4.12396e-6 0 1 4.71297e-6 0 1 9.42643e-6 0 1 -6.59869e-6 0 1 3.1423e-6 0 1 3.29928e-6 0 1 6.2845e-6 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 0 2 0 3 0 72 1 73 1 74 1 75 2 76 2 77 2 78 3 77 3 73 3 79 4 80 4 81 4 82 5 83 5 84 5 85 6 84 6 80 6 86 7 81 7 76 7 72 1 74 1 87 1 75 2 77 2 78 2 72 3 78 3 73 3 86 8 79 8 81 8 76 9 75 9 86 9 85 6 80 6 79 6 82 5 84 5 85 5 82 10 88 10 89 10 82 11 89 11 83 11 90 12 91 12 92 12 93 13 94 13 95 13 96 14 95 14 91 14 97 15 98 15 99 15 100 16 101 16 102 16 103 17 102 17 98 17 104 18 99 18 94 18 92 19 88 19 105 19 91 20 90 20 96 20 90 21 92 21 105 21 94 18 93 18 104 18 98 17 97 17 103 17 102 22 103 22 100 22 97 15 99 15 104 15 93 13 95 13 96 13 89 23 88 23 92 23 140 24 141 24 142 24 142 25 143 25 140 25

    +
    + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    4 26 5 26 6 26 7 27 8 27 9 27 5 28 7 28 10 28 11 29 12 29 13 29 14 30 15 30 16 30 12 31 14 31 17 31 8 32 11 32 18 32 19 26 4 26 6 26 10 27 7 27 9 27 5 28 10 28 6 28 11 33 13 33 18 33 18 32 9 32 8 32 13 34 12 34 17 34 17 35 14 35 16 35 20 36 21 36 16 36 15 37 20 37 16 37 22 38 23 38 24 38 25 39 26 39 27 39 23 40 25 40 28 40 29 41 30 41 31 41 32 42 33 42 34 42 30 43 32 43 35 43 26 44 29 44 36 44 37 45 21 45 22 45 28 46 24 46 23 46 37 47 22 47 24 47 36 44 27 44 26 44 35 43 31 43 30 43 34 48 35 48 32 48 36 49 29 49 31 49 28 50 25 50 27 50 22 51 21 51 20 51 38 52 39 52 40 52 39 52 38 52 41 52 41 52 42 52 39 52 42 52 43 52 44 52 45 52 43 52 46 52 42 52 47 52 43 52 39 52 42 52 44 52 47 52 46 52 43 52 48 52 45 52 46 52 48 52 46 52 49 52 49 52 50 52 48 52 51 52 50 52 52 52 49 52 52 52 50 52 53 52 54 52 55 52 52 52 54 52 51 52 51 52 54 52 53 52 56 52 57 52 53 52 57 52 56 52 58 52 58 52 59 52 57 52 55 52 56 52 53 52 60 52 61 52 59 52 62 52 61 52 63 52 60 52 63 52 61 52 58 52 60 52 59 52 64 52 63 52 65 52 66 52 67 52 68 52 67 52 64 52 65 52 69 52 67 52 66 52 70 52 66 52 71 52 66 52 68 52 71 52 64 52 67 52 69 52 64 52 62 52 63 52 106 53 107 53 108 53 109 53 108 53 107 53 107 54 110 54 109 54 111 53 112 53 110 53 113 53 112 53 114 53 112 53 115 53 110 53 111 53 110 53 107 53 112 55 113 55 115 55 113 53 114 53 116 53 117 53 113 53 116 53 116 53 118 53 117 53 119 53 118 53 120 53 118 53 119 53 117 53 121 53 122 53 123 53 120 53 122 53 119 53 123 56 122 56 120 56 123 57 124 57 125 57 126 58 125 58 124 58 124 59 127 59 126 59 123 53 125 53 121 53 127 60 128 60 129 60 130 53 128 53 131 53 128 53 130 53 129 53 127 53 129 53 126 53 132 53 130 53 133 53 134 53 135 53 136 53 132 61 133 61 135 61 136 62 135 62 137 62 138 53 136 53 139 53 138 63 134 63 136 63 137 64 135 64 133 64 130 53 131 53 133 53

    +
    +
    +
    + + + + -0.02225017 0.1000001 0.02229756 -0.02225017 0 0.02229756 -0.02119064 0 0.02123576 -0.02119064 0.1000001 0.02123576 -0.02437096 0 -0.01995748 -0.02620989 0 -0.01747256 -0.02620989 0.1000001 -0.01747256 -0.0222975 0 -0.02225011 -0.02437096 0.1000001 -0.01995748 -0.0277962 0 -0.01481944 -0.02911502 0 -0.01202344 -0.02911502 0.1000001 -0.01202344 -0.03015333 0 -0.009111821 -0.03090125 0 -0.006112456 -0.03090125 0.1000001 -0.006112456 -0.03015333 0.1000001 -0.009111821 -0.0277962 0.1000001 -0.01481944 -0.0222975 0.1000001 -0.02225011 -0.0313515 0 -0.003054141 -0.0313515 0.1000001 -0.003054141 -0.02225017 0 0.02229756 -0.02225017 0.1000001 0.02229756 -0.02432852 0.1000001 0.02000927 -0.03149998 0 3.35574e-5 -0.03134495 0 0.003120899 -0.03134495 0.1000001 0.003120899 -0.03088814 0 0.0061782 -0.0301339 0 0.009176075 -0.0301339 0.1000001 0.009176075 -0.03088814 0.1000001 0.0061782 -0.02908939 0 0.01208543 -0.02776467 0 0.01487857 -0.02776467 0.1000001 0.01487857 -0.02617263 0 0.01752835 -0.02432852 0 0.02000927 -0.02617263 0.1000001 0.01752835 -0.02908939 0.1000001 0.01208543 -0.03149998 0.1000001 3.35574e-5 -0.03088814 0 0.0061782 -0.02869892 0 0.008739054 -0.0301339 0 0.009176075 -0.02908939 0 0.01208543 -0.02770411 0 0.01150995 -0.02941733 0 0.005883932 -0.03149998 0 3.35574e-5 -0.02985239 0 0.002972245 -0.03134495 0 0.003120899 -0.02999997 0 3.18885e-5 -0.02432852 0 0.02000927 -0.02317005 0 0.01905643 -0.02119064 0 0.02123576 -0.02225017 0 0.02229756 -0.02492636 0 0.01669365 -0.02644252 0 0.01417011 -0.02776467 0 0.01487857 -0.02617263 0 0.01752835 -0.02437096 0 -0.01995748 -0.0212357 0 -0.02119058 -0.02321052 0 -0.01900714 -0.0277962 0 -0.01481944 -0.0249617 0 -0.01664048 -0.02647256 0 -0.01411372 -0.02620989 0 -0.01747256 -0.0222975 0 -0.02225011 -0.02772849 0 -0.01145088 -0.0313515 0 -0.003054141 -0.02942973 0 -0.005821347 -0.02985858 0 -0.002908766 -0.03090125 0 -0.006112456 -0.03015333 0 -0.009111821 -0.02911502 0 -0.01202344 -0.02871739 0 -0.008678019 -0.0249617 0.1000001 -0.01664048 -0.0249617 0 -0.01664048 -0.02321052 0 -0.01900714 -0.02321052 0.1000001 -0.01900714 -0.0212357 0 -0.02119058 -0.02772849 0.1000001 -0.01145088 -0.02772849 0 -0.01145088 -0.02647256 0 -0.01411372 -0.02942973 0.1000001 -0.005821347 -0.02942973 0 -0.005821347 -0.02871739 0 -0.008678019 -0.02871739 0.1000001 -0.008678019 -0.02647256 0.1000001 -0.01411372 -0.0212357 0.1000001 -0.02119058 -0.02985858 0.1000001 -0.002908766 -0.02985858 0 -0.002908766 -0.02317005 0.1000001 0.01905643 -0.02119064 0.1000001 0.02123576 -0.02119064 0 0.02123576 -0.02985239 0.1000001 0.002972245 -0.02985239 0 0.002972245 -0.02999997 0 3.18885e-5 -0.02869892 0.1000001 0.008739054 -0.02869892 0 0.008739054 -0.02941733 0 0.005883932 -0.02941733 0.1000001 0.005883932 -0.02644252 0.1000001 0.01417011 -0.02644252 0 0.01417011 -0.02770411 0 0.01150995 -0.02317005 0 0.01905643 -0.02492636 0 0.01669365 -0.02492636 0.1000001 0.01669365 -0.02770411 0.1000001 0.01150995 -0.02999997 0.1000001 3.18885e-5 -0.0301339 0.1000001 0.009176075 -0.02869892 0.1000001 0.008739054 -0.03088814 0.1000001 0.0061782 -0.02770411 0.1000001 0.01150995 -0.02908939 0.1000001 0.01208543 -0.02941733 0.1000001 0.005883932 -0.03134495 0.1000001 0.003120899 -0.02985239 0.1000001 0.002972245 -0.03149998 0.1000001 3.35574e-5 -0.02999997 0.1000001 3.18885e-5 -0.02119064 0.1000001 0.02123576 -0.02317005 0.1000001 0.01905643 -0.02432852 0.1000001 0.02000927 -0.02225017 0.1000001 0.02229756 -0.02492636 0.1000001 0.01669365 -0.02776467 0.1000001 0.01487857 -0.02644252 0.1000001 0.01417011 -0.02617263 0.1000001 0.01752835 -0.02321052 0.1000001 -0.01900714 -0.0212357 0.1000001 -0.02119058 -0.02437096 0.1000001 -0.01995748 -0.02647256 0.1000001 -0.01411372 -0.0249617 0.1000001 -0.01664048 -0.0277962 0.1000001 -0.01481944 -0.02620989 0.1000001 -0.01747256 -0.0222975 0.1000001 -0.02225011 -0.02772849 0.1000001 -0.01145088 -0.02985858 0.1000001 -0.002908766 -0.02942973 0.1000001 -0.005821347 -0.0313515 0.1000001 -0.003054141 -0.03090125 0.1000001 -0.006112456 -0.02911502 0.1000001 -0.01202344 -0.03015333 0.1000001 -0.009111821 -0.02871739 0.1000001 -0.008678019 -0.0212357 0.1000001 -0.02119058 -0.0212357 0 -0.02119058 -0.0222975 0 -0.02225011 -0.0222975 0.1000001 -0.02225011 + + + + + + + + + + 0.7078629 0 0.7063499 0.7078613 0 0.7063515 0.8038566 0 0.5948232 0.74165 0 0.6707872 0.9044445 0 0.4265913 0.970292 0 0.2419371 0.9418957 0 0.3359057 0.8582708 0 0.5131973 0.8038561 0 0.594824 0.7416493 0 0.6707879 0.9044447 0 0.4265911 0.8582706 0 0.5131977 0.9418957 0 0.3359054 0.970292 0 0.241937 0.9893308 0 0.1456868 0.9893308 0 0.1456868 0.7402355 0 -0.6723477 0.9987429 0 -0.05012679 0.9697702 0 -0.2440202 0.9890206 0 -0.1477779 0.9035387 0 -0.4285064 0.8025718 0 -0.5965555 0.8571788 0 -0.5150191 0.9411873 0 -0.3378854 0.9988471 0 0.04800534 0.9987429 0 -0.05012679 0.9697701 0 -0.2440204 0.7402347 0 -0.6723485 0.7063508 0 -0.707862 0.7063492 0 -0.7078636 -0.8038379 0 -0.5948485 -0.7416594 0 -0.6707768 -0.9044417 0 -0.4265975 -0.9702876 0 -0.2419548 -0.9419032 0 -0.3358846 -0.8582773 0 -0.5131863 -0.8038371 0 -0.5948496 -0.7416586 0 -0.6707775 -0.9044414 0 -0.426598 -0.8582771 0 -0.5131867 -0.9702875 0 -0.2419549 -0.9893332 0 -0.1456704 -0.9893333 0 -0.1456704 -0.7402296 0 0.6723542 -0.9987425 0 0.0501343 -0.9697746 0 0.2440031 -0.9890206 0 0.1477778 -0.9035349 0 0.4285147 -0.8025741 0 0.5965524 -0.8571829 0 0.5150124 -0.9411837 0 0.3378953 -0.9988468 0 -0.04801154 -0.9987425 0 0.05013424 -0.9411839 0 0.3378951 -0.8571826 0 0.5150126 -0.9988469 0 -0.04801154 0 -1 0 0 1 0 0 1 -3.14206e-6 0 1 3.29908e-6 0 1 6.28413e-6 0 1 -6.28435e-6 0 1 -1.64962e-6 0 1 3.29915e-6 0 1 -1.64954e-6 0 1 -6.5985e-6 0 1 -1.31972e-5 0 1 -1.64958e-6 0 1 -4.71285e-6 0 1 3.1421e-6 0 1 -1.64954e-6 0 1 3.14197e-6 0 1 -6.28395e-6 0 1 1.57096e-6 0 1 3.29933e-6 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 1 2 1 3 1 72 2 73 2 74 2 75 3 74 3 76 3 77 4 78 4 79 4 80 5 81 5 82 5 83 6 82 6 78 6 84 7 79 7 73 7 72 8 74 8 75 8 85 9 75 9 76 9 84 10 77 10 79 10 73 11 72 11 84 11 83 12 78 12 77 12 80 13 82 13 83 13 80 14 86 14 87 14 80 15 87 15 81 15 88 16 89 16 90 16 91 17 92 17 93 17 94 18 95 18 96 18 97 19 96 19 92 19 98 20 99 20 100 20 88 21 101 21 102 21 103 22 102 22 99 22 104 23 100 23 95 23 93 24 86 24 105 24 92 19 91 19 97 19 91 25 93 25 105 25 95 23 94 23 104 23 99 22 98 22 103 22 102 21 103 21 88 21 98 20 100 20 104 20 94 26 96 26 97 26 88 27 90 27 101 27 87 24 86 24 93 24 140 28 141 28 142 28 142 29 143 29 140 29

    +
    + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    4 30 5 30 6 30 7 31 4 31 8 31 9 32 10 32 11 32 12 33 13 33 14 33 10 34 12 34 15 34 5 35 9 35 16 35 8 36 4 36 6 36 7 37 8 37 17 37 9 38 11 38 16 38 16 39 6 39 5 39 11 34 10 34 15 34 15 40 12 40 14 40 18 41 19 41 14 41 13 42 18 42 14 42 20 43 21 43 22 43 23 44 24 44 25 44 26 45 27 45 28 45 24 46 26 46 29 46 30 47 31 47 32 47 33 48 34 48 22 48 31 49 33 49 35 49 27 50 30 50 36 50 37 51 19 51 23 51 29 46 25 46 24 46 37 52 23 52 25 52 36 53 28 53 27 53 35 54 32 54 31 54 22 48 35 48 33 48 36 47 30 47 32 47 29 45 26 45 28 45 34 43 20 43 22 43 23 55 19 55 18 55 38 56 39 56 40 56 41 56 40 56 42 56 39 56 42 56 40 56 38 56 43 56 39 56 44 56 45 56 46 56 46 56 43 56 38 56 44 56 47 56 45 56 45 56 43 56 46 56 48 56 49 56 50 56 50 56 51 56 48 56 48 56 52 56 49 56 53 56 54 56 42 56 41 56 42 56 54 56 55 56 54 56 52 56 53 56 52 56 54 56 48 56 55 56 52 56 56 56 57 56 58 56 59 56 60 56 61 56 60 56 56 56 58 56 56 56 60 56 62 56 62 56 60 56 59 56 63 56 57 56 56 56 64 56 59 56 61 56 65 56 66 56 67 56 67 56 44 56 65 56 65 56 68 56 66 56 47 56 44 56 67 56 69 56 70 56 64 56 59 56 64 56 70 56 69 56 71 56 68 56 66 56 68 56 71 56 64 56 71 56 69 56 106 57 107 57 108 57 109 58 106 58 110 58 106 59 109 59 107 59 107 57 111 57 108 57 112 60 113 60 114 60 108 61 111 61 112 61 113 57 115 57 114 57 112 62 111 62 113 62 116 63 117 63 118 63 118 57 119 57 116 57 117 64 120 64 118 64 109 57 121 57 122 57 121 57 109 57 110 57 120 57 121 57 123 57 121 65 120 65 122 65 120 57 123 57 118 57 124 66 125 66 126 66 127 57 128 57 129 57 124 67 126 67 128 67 130 68 128 68 126 68 129 57 128 57 130 57 126 69 125 69 131 69 127 70 129 70 132 70 133 57 134 57 135 57 135 57 114 57 133 57 134 71 136 71 135 71 133 57 114 57 115 57 132 72 137 72 138 72 137 73 132 73 129 73 136 57 139 57 138 57 139 57 136 57 134 57 138 74 139 74 132 74

    +
    +
    +
    + + + + -0.02119064 0 0.02123576 -0.02225017 0 0.02229756 -0.02225017 0.1000001 0.02229756 -0.02119064 0.1000001 0.02123576 -0.02225017 0 0.02229756 -0.01995748 0 0.02437102 -0.01995748 0.1000001 0.02437102 -0.01747262 0 0.02620989 -0.0148195 0 0.02779626 -0.0148195 0.1000001 0.02779626 -0.01747262 0.1000001 0.02620989 -0.01202356 0 0.02911502 -0.00911194 0 0.03015333 -0.00911194 0.1000001 0.03015333 -0.006112456 0 0.03090125 -0.003054261 0 0.03135156 -0.003054261 0.1000001 0.03135156 -0.006112456 0.1000001 0.03090125 -0.01202356 0.1000001 0.02911502 -0.02225017 0.1000001 0.02229756 3.34978e-5 0 0.03150004 3.34978e-5 0.1000001 0.03150004 0.003120899 0 0.031345 0.00617814 0 0.03088819 0.00617814 0.1000001 0.03088819 0.009176015 0 0.0301339 0.01208537 0 0.02908939 0.01208537 0.1000001 0.02908939 0.009176015 0.1000001 0.0301339 0.01487851 0 0.02776467 0.01752829 0 0.02617263 0.01752829 0.1000001 0.02617263 0.02000921 0 0.02432858 0.0222975 0 0.02225023 0.0222975 0.1000001 0.02225023 0.02000921 0.1000001 0.02432858 0.01487851 0.1000001 0.02776467 0.003120899 0.1000001 0.031345 0.02000921 0 0.02432858 0.01752829 0 0.02617263 0.01669359 0 0.02492648 0.01487851 0 0.02776467 0.0212357 0 0.0211907 0.0222975 0 0.02225023 0.01905637 0 0.02317017 0.01417005 0 0.0264427 0.01150983 0 0.02770411 0.009176015 0 0.0301339 0.01208537 0 0.02908939 0.00617814 0 0.03088819 0.008738994 0 0.02869898 0.003120899 0 0.031345 0.005883932 0 0.02941733 3.34978e-5 0 0.03150004 0.002972245 0 0.02985239 3.18289e-5 0 0.03000003 -0.003054261 0 0.03135156 -0.002908766 0 0.02985858 -0.006112456 0 0.03090125 -0.005821466 0 0.02942985 -0.00911194 0 0.03015333 -0.008678019 0 0.02871739 -0.01202356 0 0.02911502 -0.011451 0 0.02772855 -0.0148195 0 0.02779626 -0.01411378 0 0.02647268 -0.01747262 0 0.02620989 -0.0166406 0 0.02496182 -0.01995748 0 0.02437102 -0.01900714 0 0.02321058 -0.02225017 0 0.02229756 -0.02119064 0 0.02123576 -0.01900714 0.1000001 0.02321058 -0.01900714 0 0.02321058 -0.02119064 0 0.02123576 -0.01411378 0.1000001 0.02647268 -0.01411378 0 0.02647268 -0.0166406 0 0.02496182 -0.0166406 0.1000001 0.02496182 -0.008678019 0.1000001 0.02871739 -0.008678019 0 0.02871739 -0.011451 0 0.02772855 -0.002908766 0.1000001 0.02985858 -0.002908766 0 0.02985858 -0.005821466 0 0.02942985 -0.005821466 0.1000001 0.02942985 -0.011451 0.1000001 0.02772855 -0.02119064 0.1000001 0.02123576 3.18289e-5 0.1000001 0.03000003 3.18289e-5 0 0.03000003 0.005883932 0.1000001 0.02941733 0.005883932 0 0.02941733 0.002972245 0 0.02985239 0.01150983 0.1000001 0.02770411 0.01150983 0 0.02770411 0.008738994 0 0.02869898 0.008738994 0.1000001 0.02869898 0.01669359 0.1000001 0.02492648 0.01669359 0 0.02492648 0.01417005 0 0.0264427 0.0212357 0.1000001 0.0211907 0.0212357 0 0.0211907 0.01905637 0 0.02317017 0.01905637 0.1000001 0.02317017 0.01417005 0.1000001 0.0264427 0.002972245 0.1000001 0.02985239 0.01669359 0.1000001 0.02492648 0.01752829 0.1000001 0.02617263 0.02000921 0.1000001 0.02432858 0.01487851 0.1000001 0.02776467 0.0222975 0.1000001 0.02225023 0.0212357 0.1000001 0.0211907 0.01905637 0.1000001 0.02317017 0.01417005 0.1000001 0.0264427 0.01150983 0.1000001 0.02770411 0.01208537 0.1000001 0.02908939 0.009176015 0.1000001 0.0301339 0.008738994 0.1000001 0.02869898 0.00617814 0.1000001 0.03088819 0.005883932 0.1000001 0.02941733 0.003120899 0.1000001 0.031345 0.002972245 0.1000001 0.02985239 3.34978e-5 0.1000001 0.03150004 3.18289e-5 0.1000001 0.03000003 -0.002908766 0.1000001 0.02985858 -0.003054261 0.1000001 0.03135156 -0.005821466 0.1000001 0.02942985 -0.006112456 0.1000001 0.03090125 -0.008678019 0.1000001 0.02871739 -0.00911194 0.1000001 0.03015333 -0.011451 0.1000001 0.02772855 -0.01202356 0.1000001 0.02911502 -0.0148195 0.1000001 0.02779626 -0.01411378 0.1000001 0.02647268 -0.0166406 0.1000001 0.02496182 -0.01747262 0.1000001 0.02620989 -0.01900714 0.1000001 0.02321058 -0.01995748 0.1000001 0.02437102 -0.02119064 0.1000001 0.02123576 -0.02225017 0.1000001 0.02229756 0.0222975 0.1000001 0.02225023 0.0222975 0 0.02225023 0.0212357 0 0.0211907 0.0212357 0.1000001 0.0211907 + + + + + + + + + + -0.7078629 0 -0.7063499 -0.7078613 0 -0.7063515 0.6707769 0 -0.7416592 0.5131873 0 -0.8582767 0.5948559 0 -0.8038324 0.335875 0 -0.9419066 0.1456485 0 -0.9893364 0.2419801 0 -0.9702813 0.4265822 0 -0.9044489 0.6707779 0 -0.7416584 0.5131897 0 -0.8582753 0.4265835 0 -0.9044483 0.2419785 0 -0.9702817 0.145647 0 -0.9893367 0.04802519 0 -0.9988462 -0.1477942 0 -0.9890182 -0.3379036 0 -0.9411808 -0.2440015 0 -0.9697749 -0.5150201 0 -0.8571781 -0.6723582 0 -0.740226 -0.5965554 0 -0.802572 -0.4284719 0 -0.9035551 -0.05013084 0 -0.9987427 -0.4284732 0 -0.9035545 -0.67236 0 -0.7402244 -0.515019 0 -0.8571789 -0.05012929 0 -0.9987428 0.7063492 0 -0.7078636 -0.6707672 0 0.741668 -0.5132013 0 0.8582683 -0.5948461 0 0.8038397 -0.3358861 0 0.9419026 -0.1456919 0 0.9893301 -0.2419464 0 0.9702897 -0.4265881 0 0.9044461 -0.670768 0 0.7416673 -0.3358835 0 0.9419036 -0.4265893 0 0.9044455 -0.241945 0 0.9702901 -0.04801326 0 0.9988467 -0.04801177 0 0.9988468 0.147778 0 0.9890206 0.3378946 0 0.941184 0.2440207 0 0.9697701 0.5150119 0 0.857183 0.6723545 0 0.7402294 0.5965409 0 0.8025828 0.4285151 0 0.9035346 0.05013483 0 0.9987425 0.4285139 0 0.9035352 0.5965399 0 0.8025835 0.6723536 0 0.7402302 0.515013 0 0.8571824 0.337896 0 0.9411835 0.05013632 0 0.9987424 0 -1 0 0 1 0 0 1 -3.14208e-6 0 1 6.59894e-6 0 1 6.59836e-6 0 1 1.31963e-5 0 1 3.86621e-6 0 1 -1.25682e-5 0 1 4.71314e-6 0 1 -3.29913e-6 0 1 2.47455e-6 0 1 -3.29923e-6 0 1 -3.29924e-6 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    0 0 1 0 2 0 0 1 2 1 3 1 72 2 73 2 74 2 75 3 76 3 77 3 78 4 77 4 73 4 79 5 80 5 81 5 82 6 83 6 84 6 85 7 84 7 80 7 86 8 81 8 76 8 72 9 74 9 87 9 75 10 77 10 78 10 72 4 78 4 73 4 86 5 79 5 81 5 76 11 75 11 86 11 85 12 80 12 79 12 82 13 84 13 85 13 82 14 88 14 89 14 82 14 89 14 83 14 90 15 91 15 92 15 93 16 94 16 95 16 96 17 95 17 91 17 97 18 98 18 99 18 100 19 101 19 102 19 103 20 102 20 98 20 104 21 99 21 94 21 92 22 88 22 105 22 91 17 90 17 96 17 90 15 92 15 105 15 94 23 93 23 104 23 98 20 97 20 103 20 102 24 103 24 100 24 97 25 99 25 104 25 93 16 95 16 96 16 89 26 88 26 92 26 140 27 141 27 142 27 142 27 143 27 140 27

    +
    + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    4 28 5 28 6 28 7 29 8 29 9 29 5 30 7 30 10 30 11 31 12 31 13 31 14 32 15 32 16 32 12 33 14 33 17 33 8 34 11 34 18 34 19 35 4 35 6 35 10 29 7 29 9 29 5 30 10 30 6 30 11 36 13 36 18 36 18 37 9 37 8 37 13 38 12 38 17 38 17 32 14 32 16 32 20 39 21 39 16 39 15 40 20 40 16 40 22 41 23 41 24 41 25 42 26 42 27 42 23 43 25 43 28 43 29 44 30 44 31 44 32 45 33 45 34 45 30 46 32 46 35 46 26 47 29 47 36 47 37 48 21 48 22 48 28 43 24 43 23 43 37 41 22 41 24 41 36 49 27 49 26 49 35 50 31 50 30 50 34 51 35 51 32 51 36 52 29 52 31 52 28 53 25 53 27 53 22 54 21 54 20 54 38 55 39 55 40 55 39 55 41 55 40 55 42 55 43 55 38 55 38 55 44 55 42 55 41 55 45 55 40 55 38 55 40 55 44 55 46 55 45 55 41 55 47 55 46 55 48 55 41 55 48 55 46 55 49 55 50 55 47 55 46 55 47 55 50 55 51 55 52 55 49 55 50 55 49 55 52 55 53 55 54 55 51 55 52 55 51 55 54 55 55 55 54 55 53 55 53 55 56 55 57 55 56 55 58 55 59 55 59 55 57 55 56 55 55 55 53 55 57 55 58 55 60 55 61 55 62 55 63 55 60 55 61 55 60 55 63 55 59 55 58 55 61 55 62 55 64 55 63 55 65 55 63 55 64 55 64 55 66 55 67 55 67 55 65 55 64 55 68 55 69 55 67 55 70 55 71 55 68 55 69 55 68 55 71 55 66 55 68 55 67 55 106 56 107 56 108 56 106 56 109 56 107 56 108 57 110 57 111 57 111 56 112 56 108 56 106 58 113 58 109 58 112 56 106 56 108 56 109 56 113 56 114 56 115 56 114 56 116 56 114 56 115 56 109 56 116 56 117 56 118 56 117 59 116 59 114 59 118 56 119 56 120 56 119 56 118 56 117 56 120 56 121 56 122 56 121 56 120 56 119 56 122 60 121 60 123 60 124 56 125 56 122 56 126 56 127 56 125 56 125 56 124 56 126 56 124 61 122 61 123 61 128 62 129 62 127 62 129 63 130 63 131 63 130 64 129 64 128 64 128 65 127 65 126 65 130 56 132 56 131 56 132 56 130 56 133 56 134 56 135 56 132 56 132 56 133 56 134 56 134 66 136 66 137 66 137 56 138 56 139 56 138 67 137 67 136 67 134 56 137 56 135 56

    +
    +
    +
    +
    + + + + + 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 + + + + + + + + + + + 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 + + + + + + + + + + + 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 + + + + + + + + + + + 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/simulateur/3d/mod_lun_bleu_old.dae b/simulateur/3d/mod_lun_bleu_old.dae new file mode 100644 index 0000000..73708f9 --- /dev/null +++ b/simulateur/3d/mod_lun_bleu_old.dae @@ -0,0 +1,136 @@ + + + + + Blender User + Blender 2.77.0 commit date:1970-01-01, commit time:00:00, hash:unknown + + 2017-01-16T16:14:46 + 2017-01-16T16:14:46 + + Z_UP + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.5992157 0.5992157 0.5992157 1 + + + 0.009374999 0.009374999 0.009374999 1 + + + 50 + + + 1 + + + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.07215687 0.3043137 0.5364706 1 + + + 0.009374999 0.009374999 0.009374999 1 + + + 50 + + + 1 + + + + + + + + + + + + + + + + + + + 0.03150022 0.1000001 0 0.03134822 0.1000001 0.00308758 0.03134822 0 0.00308758 0.03089499 0.1000001 0.006145477 0.03014397 0.1000001 0.009144067 0.03014397 0 0.009144067 0.03089499 0 0.006145477 0.02910232 0.1000001 0.01205468 0.02778077 0.1000001 0.01484882 0.02778077 0 0.01484882 0.02619147 0.1000001 0.01750046 0.02435016 0.1000001 0.01998353 0.02435016 0 0.01998353 0.02619147 0 0.01750046 0.02910232 0 0.01205468 0.02227377 0.1000001 0.02227377 0.01998353 0.1000001 0.02434968 0.01998353 0 0.02434968 0.01750046 0.1000001 0.02619135 0.01484894 0.1000001 0.02778065 0.01484894 0 0.02778065 0.01750046 0 0.02619135 0.01205468 0.1000001 0.02910232 0.009144306 0.1000001 0.03014349 0.009144306 0 0.03014349 0.006145477 0.1000001 0.03089487 0.003087759 0.1000001 0.03134822 0.003087759 0 0.03134822 0.006145477 0 0.03089487 0.01205468 0 0.02910232 0.02227377 0 0.02227377 2.38419e-7 0.1000001 0.0315001 -0.003087282 0.1000001 0.03134822 -0.003087282 0 0.03134822 -0.006145 0.1000001 0.03089487 -0.009143829 0.1000001 0.03014349 -0.009143829 0 0.03014349 -0.006145 0 0.03089487 -0.0120542 0.1000001 0.02910232 -0.01484853 0.1000001 0.02778065 -0.01484853 0 0.02778065 -0.01750016 0.1000001 0.02619135 -0.01998305 0.1000001 0.02434968 -0.01998305 0 0.02434968 -0.01750016 0 0.02619135 -0.0120542 0 0.02910232 -0.02227354 0.1000001 0.02227377 -0.02434957 0.1000001 0.01998353 -0.02434957 0 0.01998353 -0.02619099 0.1000001 0.01750046 -0.02778029 0.1000001 0.01484882 -0.02778029 0 0.01484882 -0.02619099 0 0.01750046 -0.02910161 0.1000001 0.01205468 -0.03014338 0.1000001 0.009144067 -0.03014338 0 0.009144067 -0.03089427 0.1000001 0.006145477 -0.03134799 0.1000001 0.00308758 -0.03134799 0 0.00308758 -0.03089427 0 0.006145477 -0.02910161 0 0.01205468 -0.02227354 0 0.02227377 2.38419e-7 0 0.0315001 0.03150022 0 0 -0.03149986 0.1000001 0 0.03134822 0 -0.003087401 -0.03134799 0.1000001 -0.003087401 -0.03134799 0 -0.003087401 -0.03089427 0.1000001 -0.006145179 -0.03014338 0.1000001 -0.009143829 -0.03014338 0 -0.009143829 -0.03089427 0 -0.006145179 -0.02910161 0.1000001 -0.01205444 -0.02778029 0.1000001 -0.01484858 -0.02778029 0 -0.01484858 -0.02619099 0.1000001 -0.0175004 -0.02434957 0.1000001 -0.01998329 -0.02434957 0 -0.01998329 -0.02619099 0 -0.0175004 -0.02910161 0 -0.01205444 -0.02227354 0.1000001 -0.0222736 -0.01998305 0.1000001 -0.02434957 -0.01998305 0 -0.02434957 -0.01750016 0.1000001 -0.02619111 -0.01484853 0.1000001 -0.02778041 -0.01484853 0 -0.02778041 -0.01750016 0 -0.02619111 -0.0120542 0.1000001 -0.02910184 -0.009143829 0.1000001 -0.03014338 -0.009143829 0 -0.03014338 -0.006145 0.1000001 -0.03089439 -0.003087282 0.1000001 -0.03134799 -0.003087282 0 -0.03134799 -0.006145 0 -0.03089439 -0.0120542 0 -0.02910184 -0.02227354 0 -0.0222736 2.38419e-7 0.1000001 -0.03149986 0.003087759 0.1000001 -0.03134799 0.003087759 0 -0.03134799 0.006145477 0.1000001 -0.03089439 0.009144306 0.1000001 -0.03014338 0.009144306 0 -0.03014338 0.006145477 0 -0.03089439 0.01205468 0.1000001 -0.02910184 0.01484894 0.1000001 -0.02778041 0.01484894 0 -0.02778041 0.01750046 0.1000001 -0.02619111 0.01998353 0.1000001 -0.02434957 0.01998353 0 -0.02434957 0.01750046 0 -0.02619111 0.01205468 0 -0.02910184 0.02227377 0.1000001 -0.0222736 0.02435016 0.1000001 -0.01998329 0.02435016 0 -0.01998329 0.02619147 0.1000001 -0.0175004 0.02778077 0.1000001 -0.01484858 0.02778077 0 -0.01484858 0.02619147 0 -0.0175004 0.02910232 0.1000001 -0.01205444 0.03014397 0.1000001 -0.009143829 0.03014397 0 -0.009143829 0.03089499 0.1000001 -0.006145179 0.03134822 0.1000001 -0.003087401 0.03089499 0 -0.006145179 0.02910232 0 -0.01205444 0.02227377 0 -0.0222736 2.38419e-7 0 -0.03149986 -0.03149986 0 0 -0.01414144 0.1000001 0.02645754 -0.01666671 0.1000001 0.02494418 -0.01750016 0.1000001 0.02619135 -0.01998305 0.1000001 0.02434968 -0.01148033 0.1000001 0.02771627 -0.01484853 0.1000001 0.02778065 -0.01903152 0.1000001 0.0231902 -0.02121305 0.1000001 0.02121329 -0.02227354 0.1000001 0.02227377 -0.02319002 0.1000001 0.01903188 -0.006145 0.1000001 0.03089487 -0.003087282 0.1000001 0.03134822 -0.005852401 0.1000001 0.02942371 2.38419e-7 0.1000001 0.03000009 -0.002940118 0.1000001 0.02985543 -0.009143829 0.1000001 0.03014349 -0.008708238 0.1000001 0.0287081 -0.0120542 0.1000001 0.02910232 -0.02942299 0.1000001 0.005852818 -0.03089427 0.1000001 0.006145477 -0.03014338 0.1000001 0.009144067 -0.02870798 0.1000001 0.008708715 -0.02910161 0.1000001 0.01205468 -0.0277161 0.1000001 0.01148051 -0.03134799 0.1000001 0.00308758 -0.02999973 0.1000001 0 -0.03149986 0.1000001 0 -0.02985525 0.1000001 0.002940595 -0.03134799 0.1000001 -0.003087401 -0.02434957 0.1000001 0.01998353 -0.02494359 0.1000001 0.016667 -0.02619099 0.1000001 0.01750046 -0.02645725 0.1000001 0.01414179 -0.02778029 0.1000001 0.01484882 0.003087759 0.1000001 0.03134822 0.006145477 0.1000001 0.03089487 0.005852878 0.1000001 0.02942371 0.009144306 0.1000001 0.03014349 2.38419e-7 0.1000001 0.0315001 0.002940595 0.1000001 0.02985543 0.008708715 0.1000001 0.0287081 0.01148056 0.1000001 0.02771627 0.01484894 0.1000001 0.02778065 0.01205468 0.1000001 0.02910232 0.01750046 0.1000001 0.02619135 0.01414179 0.1000001 0.02645754 0.01998353 0.1000001 0.02434968 0.01666736 0.1000001 0.02494418 0.02227377 0.1000001 0.02227377 0.019032 0.1000001 0.0231902 0.02319025 0.1000001 0.01903188 0.02121353 0.1000001 0.02121329 0.0249443 0.1000001 0.016667 0.02435016 0.1000001 0.01998353 0.02645754 0.1000001 0.01414179 0.02619147 0.1000001 0.01750046 0.02778077 0.1000001 0.01484882 0.02771639 0.1000001 0.01148051 0.02910232 0.1000001 0.01205468 0.03014397 0.1000001 0.009144067 0.02870821 0.1000001 0.008708715 0.02942371 0.1000001 0.005852818 0.03134822 0.1000001 0.00308758 0.02985548 0.1000001 0.002940595 0.03089499 0.1000001 0.006145477 0.03000015 0.1000001 0 -0.02942299 0.1000001 -0.00585258 -0.03089427 0.1000001 -0.006145179 -0.02985525 0.1000001 -0.002940416 -0.03014338 0.1000001 -0.009143829 -0.0277161 0.1000001 -0.01148033 -0.02870798 0.1000001 -0.008708477 -0.02778029 0.1000001 -0.01484858 -0.02910161 0.1000001 -0.01205444 -0.02645725 0.1000001 -0.01414155 -0.02434957 0.1000001 -0.01998329 -0.02619099 0.1000001 -0.0175004 -0.02494359 0.1000001 -0.01666676 -0.02227354 0.1000001 -0.0222736 -0.02319002 0.1000001 -0.01903164 -0.01903152 0.1000001 -0.02319014 -0.02121305 0.1000001 -0.02121305 -0.01666671 0.1000001 -0.0249437 -0.01998305 0.1000001 -0.02434957 -0.01414144 0.1000001 -0.0264573 -0.01750016 0.1000001 -0.02619111 -0.01148033 0.1000001 -0.0277161 -0.01484853 0.1000001 -0.02778041 -0.009143829 0.1000001 -0.03014338 -0.0120542 0.1000001 -0.02910184 -0.008708238 0.1000001 -0.0287081 -0.005852401 0.1000001 -0.02942347 -0.003087282 0.1000001 -0.03134799 -0.002940118 0.1000001 -0.02985537 2.38419e-7 0.1000001 -0.02999985 -0.006145 0.1000001 -0.03089439 2.38419e-7 0.1000001 -0.03149986 0.003087759 0.1000001 -0.03134799 0.02778077 0.1000001 -0.01484858 0.02645754 0.1000001 -0.01414155 0.02771639 0.1000001 -0.01148033 0.02910232 0.1000001 -0.01205444 0.02870821 0.1000001 -0.008708477 0.03014397 0.1000001 -0.009143829 0.02619147 0.1000001 -0.0175004 0.0249443 0.1000001 -0.01666676 0.02435016 0.1000001 -0.01998329 0.02319025 0.1000001 -0.01903164 0.02227377 0.1000001 -0.0222736 0.03134822 0.1000001 -0.003087401 0.02985548 0.1000001 -0.002940416 0.03150022 0.1000001 0 0.02942371 0.1000001 -0.00585258 0.03089499 0.1000001 -0.006145179 0.008708715 0.1000001 -0.0287081 0.01148056 0.1000001 -0.0277161 0.009144306 0.1000001 -0.03014338 0.01484894 0.1000001 -0.02778041 0.01205468 0.1000001 -0.02910184 0.005852878 0.1000001 -0.02942347 0.006145477 0.1000001 -0.03089439 0.002940595 0.1000001 -0.02985537 0.01998353 0.1000001 -0.02434957 0.019032 0.1000001 -0.02319014 0.01666736 0.1000001 -0.0249437 0.02121353 0.1000001 -0.02121305 0.01750046 0.1000001 -0.02619111 0.01414179 0.1000001 -0.0264573 0.02985548 0 0.002940595 0.02985548 0.1000001 0.002940595 0.03000015 0.1000001 0 0.02870821 0 0.008708715 0.02870821 0.1000001 0.008708715 0.02942371 0.1000001 0.005852818 0.02942371 0 0.005852818 0.02645754 0 0.01414179 0.02645754 0.1000001 0.01414179 0.02771639 0.1000001 0.01148051 0.02319025 0 0.01903188 0.02319025 0.1000001 0.01903188 0.0249443 0.1000001 0.016667 0.0249443 0 0.016667 0.02771639 0 0.01148051 0.019032 0 0.0231902 0.019032 0.1000001 0.0231902 0.02121353 0.1000001 0.02121329 0.01414179 0 0.02645754 0.01414179 0.1000001 0.02645754 0.01666736 0.1000001 0.02494418 0.01666736 0 0.02494418 0.008708715 0 0.0287081 0.008708715 0.1000001 0.0287081 0.01148056 0.1000001 0.02771627 0.002940595 0 0.02985543 0.002940595 0.1000001 0.02985543 0.005852878 0.1000001 0.02942371 0.005852878 0 0.02942371 0.01148056 0 0.02771627 0.02121353 0 0.02121329 -0.002940118 0 0.02985543 -0.002940118 0.1000001 0.02985543 2.38419e-7 0.1000001 0.03000009 -0.008708238 0 0.0287081 -0.008708238 0.1000001 0.0287081 -0.005852401 0.1000001 0.02942371 -0.005852401 0 0.02942371 -0.01414144 0 0.02645754 -0.01414144 0.1000001 0.02645754 -0.01148033 0.1000001 0.02771627 -0.01903152 0 0.0231902 -0.01903152 0.1000001 0.0231902 -0.01666671 0.1000001 0.02494418 -0.01666671 0 0.02494418 -0.01148033 0 0.02771627 -0.02319002 0 0.01903188 -0.02319002 0.1000001 0.01903188 -0.02121305 0.1000001 0.02121329 -0.02645725 0 0.01414179 -0.02645725 0.1000001 0.01414179 -0.02494359 0.1000001 0.016667 -0.02494359 0 0.016667 -0.02870798 0 0.008708715 -0.02870798 0.1000001 0.008708715 -0.0277161 0.1000001 0.01148051 -0.02985525 0 0.002940595 -0.02985525 0.1000001 0.002940595 -0.02942299 0.1000001 0.005852818 -0.02942299 0 0.005852818 -0.0277161 0 0.01148051 -0.02121305 0 0.02121329 2.38419e-7 0 0.03000009 0.03000015 0 0 -0.02999973 0.1000001 0 0.02985548 0 -0.002940416 -0.02985525 0 -0.002940416 -0.02985525 0.1000001 -0.002940416 -0.02870798 0 -0.008708477 -0.02870798 0.1000001 -0.008708477 -0.02942299 0.1000001 -0.00585258 -0.02942299 0 -0.00585258 -0.02645725 0 -0.01414155 -0.02645725 0.1000001 -0.01414155 -0.0277161 0.1000001 -0.01148033 -0.02319002 0 -0.01903164 -0.02319002 0.1000001 -0.01903164 -0.02494359 0.1000001 -0.01666676 -0.02494359 0 -0.01666676 -0.0277161 0 -0.01148033 -0.01903152 0 -0.02319014 -0.01903152 0.1000001 -0.02319014 -0.02121305 0.1000001 -0.02121305 -0.01414144 0 -0.0264573 -0.01414144 0.1000001 -0.0264573 -0.01666671 0.1000001 -0.0249437 -0.01666671 0 -0.0249437 -0.008708238 0 -0.0287081 -0.008708238 0.1000001 -0.0287081 -0.01148033 0.1000001 -0.0277161 -0.002940118 0 -0.02985537 -0.002940118 0.1000001 -0.02985537 -0.005852401 0.1000001 -0.02942347 -0.005852401 0 -0.02942347 -0.01148033 0 -0.0277161 -0.02121305 0 -0.02121305 0.002940595 0 -0.02985537 0.002940595 0.1000001 -0.02985537 2.38419e-7 0.1000001 -0.02999985 0.008708715 0 -0.0287081 0.008708715 0.1000001 -0.0287081 0.005852878 0.1000001 -0.02942347 0.005852878 0 -0.02942347 0.01414179 0 -0.0264573 0.01414179 0.1000001 -0.0264573 0.01148056 0.1000001 -0.0277161 0.019032 0 -0.02319014 0.019032 0.1000001 -0.02319014 0.01666736 0.1000001 -0.0249437 0.01666736 0 -0.0249437 0.01148056 0 -0.0277161 0.02319025 0 -0.01903164 0.02319025 0.1000001 -0.01903164 0.02121353 0.1000001 -0.02121305 0.02645754 0 -0.01414155 0.02645754 0.1000001 -0.01414155 0.0249443 0.1000001 -0.01666676 0.0249443 0 -0.01666676 0.02870821 0 -0.008708477 0.02870821 0.1000001 -0.008708477 0.02771639 0.1000001 -0.01148033 0.02985548 0.1000001 -0.002940416 0.02942371 0.1000001 -0.00585258 0.02942371 0 -0.00585258 0.02771639 0 -0.01148033 0.02121353 0 -0.02121305 2.38419e-7 0 -0.02999985 -0.02999973 0 0 -0.01750016 0 0.02619135 -0.01666671 0 0.02494418 -0.01414144 0 0.02645754 -0.01998305 0 0.02434968 -0.01484853 0 0.02778065 -0.01148033 0 0.02771627 -0.02227354 0 0.02227377 -0.02121305 0 0.02121329 -0.01903152 0 0.0231902 -0.02319002 0 0.01903188 -0.005852401 0 0.02942371 -0.003087282 0 0.03134822 -0.006145 0 0.03089487 -0.002940118 0 0.02985543 2.38419e-7 0 0.03000009 -0.009143829 0 0.03014349 -0.008708238 0 0.0287081 -0.0120542 0 0.02910232 -0.03014338 0 0.009144067 -0.03089427 0 0.006145477 -0.02942299 0 0.005852818 -0.02870798 0 0.008708715 -0.0277161 0 0.01148051 -0.02910161 0 0.01205468 -0.03134799 0 0.00308758 -0.03149986 0 0 -0.02999973 0 0 -0.02985525 0 0.002940595 -0.03134799 0 -0.003087401 -0.02619099 0 0.01750046 -0.02494359 0 0.016667 -0.02434957 0 0.01998353 -0.02645725 0 0.01414179 -0.02778029 0 0.01484882 0.005852878 0 0.02942371 0.006145477 0 0.03089487 0.003087759 0 0.03134822 0.009144306 0 0.03014349 2.38419e-7 0 0.0315001 0.002940595 0 0.02985543 0.008708715 0 0.0287081 0.01148056 0 0.02771627 0.01205468 0 0.02910232 0.01484894 0 0.02778065 0.01414179 0 0.02645754 0.01750046 0 0.02619135 0.01666736 0 0.02494418 0.01998353 0 0.02434968 0.019032 0 0.0231902 0.02227377 0 0.02227377 0.02121353 0 0.02121329 0.02319025 0 0.01903188 0.02435016 0 0.01998353 0.0249443 0 0.016667 0.02619147 0 0.01750046 0.02645754 0 0.01414179 0.02778077 0 0.01484882 0.02771639 0 0.01148051 0.02910232 0 0.01205468 0.02870821 0 0.008708715 0.03014397 0 0.009144067 0.02942371 0 0.005852818 0.02985548 0 0.002940595 0.03134822 0 0.00308758 0.03089499 0 0.006145477 0.03000015 0 0 -0.03089427 0 -0.006145179 -0.02942299 0 -0.00585258 -0.02985525 0 -0.002940416 -0.03014338 0 -0.009143829 -0.02870798 0 -0.008708477 -0.0277161 0 -0.01148033 -0.02910161 0 -0.01205444 -0.02778029 0 -0.01484858 -0.02645725 0 -0.01414155 -0.02494359 0 -0.01666676 -0.02619099 0 -0.0175004 -0.02434957 0 -0.01998329 -0.02319002 0 -0.01903164 -0.02227354 0 -0.0222736 -0.02121305 0 -0.02121305 -0.01903152 0 -0.02319014 -0.01998305 0 -0.02434957 -0.01666671 0 -0.0249437 -0.01750016 0 -0.02619111 -0.01414144 0 -0.0264573 -0.01484853 0 -0.02778041 -0.01148033 0 -0.0277161 -0.0120542 0 -0.02910184 -0.009143829 0 -0.03014338 -0.005852401 0 -0.02942347 -0.008708238 0 -0.0287081 2.38419e-7 0 -0.02999985 -0.002940118 0 -0.02985537 -0.003087282 0 -0.03134799 -0.006145 0 -0.03089439 2.38419e-7 0 -0.03149986 0.003087759 0 -0.03134799 0.02771639 0 -0.01148033 0.02645754 0 -0.01414155 0.02778077 0 -0.01484858 0.02910232 0 -0.01205444 0.03014397 0 -0.009143829 0.02870821 0 -0.008708477 0.02619147 0 -0.0175004 0.02319025 0 -0.01903164 0.02435016 0 -0.01998329 0.0249443 0 -0.01666676 0.02227377 0 -0.0222736 0.02985548 0 -0.002940416 0.03134822 0 -0.003087401 0.03150022 0 0 0.02942371 0 -0.00585258 0.03089499 0 -0.006145179 0.009144306 0 -0.03014338 0.01148056 0 -0.0277161 0.008708715 0 -0.0287081 0.01205468 0 -0.02910184 0.01484894 0 -0.02778041 0.005852878 0 -0.02942347 0.006145477 0 -0.03089439 0.002940595 0 -0.02985537 0.019032 0 -0.02319014 0.01998353 0 -0.02434957 0.01666736 0 -0.0249437 0.02121353 0 -0.02121305 0.01414179 0 -0.0264573 0.01750046 0 -0.02619111 + + + + + + + + + + -0.998793 0 -0.0491178 -0.9700253 0 -0.2430042 -0.9891843 0 -0.1466781 -0.9039723 0 -0.4275912 -0.803188 0 -0.5957257 -0.8577665 0 -0.5140396 -0.9415382 0 -0.3369065 -0.6715008 0 -0.7410038 -0.5140249 0 -0.8577754 -0.5957541 0 -0.8031669 -0.3368949 0 -0.9415423 -0.1466382 0 -0.9891903 -0.2430481 0 -0.9700143 -0.4275717 0 -0.9039815 -0.7410078 0 -0.6714964 0.04913944 0 -0.998792 0.2430466 0 -0.9700147 0.1466382 0 -0.9891903 0.4275888 0 -0.9039734 0.5957245 0 -0.8031889 0.5140596 0 -0.8577545 0.3368748 0 -0.9415495 0.7409747 0 -0.6715331 0.85772 0 -0.5141173 0.8032482 0 -0.5956445 0.9415318 0 -0.3369242 0.9891661 0 -0.1468007 0.9700548 0 -0.2428864 0.9039723 0 -0.4275912 0.6715008 0 -0.7410038 -0.04913783 0 -0.9987921 -0.9700253 0 -0.2430043 -0.9891843 0 -0.1466782 -0.8031883 0 -0.5957254 -0.8577663 0 -0.5140399 -0.9415382 0 -0.3369063 -0.5140237 0 -0.857776 -0.5957521 0 -0.8031684 -0.2430466 0 -0.9700147 -0.427573 0 -0.9039809 -0.7410068 0 -0.6714976 0.04913783 0 -0.9987921 0.2430481 0 -0.9700143 0.4275875 0 -0.903974 0.5957266 0 -0.8031874 0.5140608 0 -0.8577539 0.7409757 0 -0.6715319 0.8577201 0 -0.5141168 0.8032479 0 -0.5956448 0.9415317 0 -0.3369244 0.9891662 0 -0.1468007 0.9700549 0 -0.2428864 -0.04913938 0 -0.9987919 0.9987952 0 -0.04907363 -0.998793 0 0.04912078 0.998795 0 0.04907661 0.9700549 0 0.2428864 0.9891657 0 0.1468036 0.9039685 0 0.4275991 0.8032482 0 0.5956445 0.8577201 0 0.5141168 0.9415339 0 0.3369182 0.6715347 0 0.7409732 0.5141061 0 0.8577266 0.595646 0 0.8032472 0.3369281 0 0.9415305 0.1467001 0 0.9891811 0.242987 0 0.9700295 0.42759 0 0.9039728 0.740975 0 0.6715326 -0.04907786 0 0.998795 -0.2429856 0 0.97003 -0.1466985 0 0.9891813 -0.4275755 0 0.9039796 -0.5956745 0 0.8032259 -0.5140691 0 0.8577488 -0.3369495 0 0.9415228 -0.7410078 0 0.6714964 -0.8577665 0 0.5140396 -0.8031877 0 0.5957261 -0.9415404 0 0.3369002 -0.9891839 0 0.146681 -0.9700253 0 0.2430042 -0.9039685 0 0.4275991 -0.6715338 0 0.7409739 0.04907631 0 0.9987951 0.9891657 0 0.1468036 0.8032477 0 0.5956453 0.6715338 0 0.7409739 0.514105 0 0.8577274 0.595647 0 0.8032464 0.3369295 0 0.94153 0.1466985 0 0.9891813 0.2429856 0 0.97003 0.4275913 0 0.9039722 0.7409757 0 0.6715319 -0.04907625 0 0.998795 -0.242987 0 0.9700295 -0.1467002 0 0.9891811 -0.4275743 0 0.9039803 -0.5956735 0 0.8032268 -0.5140702 0 0.8577481 -0.3369481 0 0.9415233 -0.7410071 0 0.6714972 -0.8031883 0 0.5957254 -0.9891839 0 0.1466811 -0.6715347 0 0.7409732 0.04907786 0 0.998795 0.9987915 0 0.04915046 0.9700381 0 0.242953 0.9891909 0 0.146634 0.9039903 0 0.4275531 0.8032479 0 0.5956448 0.857728 0 0.5141038 0.9415218 0 0.336952 0.6715776 0 0.7409342 0.5141209 0 0.8577178 0.5957075 0 0.8032016 0.3368564 0 0.9415561 0.1466797 0 0.9891841 0.2430267 0 0.9700197 0.4275687 0 0.9039828 0.7408663 0 0.6716527 -0.04911255 0 0.9987933 -0.2430267 0 0.9700196 -0.1466797 0 0.989184 -0.4275687 0 0.9039829 -0.5957355 0 0.8031808 -0.5140967 0 0.8577322 -0.3368566 0 0.941556 -0.7409155 0 0.6715983 -0.8577283 0 0.5141035 -0.8032307 0 0.5956682 -0.9415148 0 0.3369719 -0.9891735 0 0.1467508 -0.9700433 0 0.242932 -0.9040129 0 0.4275053 -0.6715468 0 0.7409622 0.0491141 0 0.9987932 0.8577283 0 0.5141035 0.9415219 0 0.3369522 0.4275701 0 0.9039824 0.740867 0 0.6716519 -0.0491141 0 0.9987932 -0.4275675 0 0.9039835 -0.7409148 0 0.671599 -0.857728 0 0.5141038 -0.9415149 0 0.3369718 0.04911255 0 0.9987933 -0.9987926 0 0.04912763 0.9987913 0 -0.04915332 -0.9987924 0 -0.04913043 -0.9700444 0 -0.2429275 -0.9891727 0 -0.1467564 -0.9040129 0 -0.4275053 -0.8032098 0 -0.5956963 -0.8577432 0 -0.5140786 -0.9415147 0 -0.336972 -0.6715576 0 -0.7409525 -0.5140967 0 -0.8577322 -0.5957209 0 -0.8031916 -0.3369274 0 -0.9415307 -0.1467372 0 -0.9891756 -0.2429502 0 -0.9700388 -0.4275207 0 -0.9040056 -0.7409169 0 -0.6715968 0.04911255 0 -0.9987933 0.2429502 0 -0.9700389 0.1467357 0 -0.9891758 0.427522 0 -0.904005 0.5956929 0 -0.8032124 0.5141209 0 -0.8577178 0.3369285 0 -0.9415303 0.7408683 0 -0.6716504 0.8577437 0 -0.5140776 0.8032276 0 -0.5956723 0.9415219 0 -0.3369522 0.98919 0 -0.1466396 0.9700392 0 -0.2429484 0.9039903 0 -0.4275531 0.6715875 0 -0.7409252 -0.0491141 0 -0.9987932 -0.9891728 0 -0.1467563 -0.8032103 0 -0.5956956 -0.8577437 0 -0.5140776 -0.9415148 0 -0.3369719 -0.6715567 0 -0.7409532 -0.3369287 0 -0.9415302 -0.1467357 0 -0.9891757 0.0491141 0 -0.9987932 0.1467372 0 -0.9891755 0.3369271 0 -0.9415307 0.8577432 0 -0.5140786 0.8032271 0 -0.595673 0.9415218 0 -0.3369523 0.98919 0 -0.1466396 0.6715884 0 -0.7409245 -0.04911255 0 -0.9987933 0 1 -3.29915e-6 0 1 3.14197e-6 0 1 0 0 1 -3.29896e-6 0 1 3.14214e-6 0 1 -1.2569e-5 0 1 -6.59831e-6 0 1 1.31958e-5 0 1 3.14202e-6 0 1 3.14191e-6 0 1 -4.71262e-6 0 1 -1.57088e-6 0 1 3.71156e-6 0 1 1.57097e-6 0 1 6.59762e-6 0 1 6.59883e-6 0 1 2.35668e-6 0 1 1.25675e-5 0 1 -1.31961e-5 0 1 -1.31956e-5 0 1 4.94871e-6 0 1 -4.7128e-6 0 1 -1.57098e-6 0 1 -6.28337e-6 0 1 6.59794e-6 0 1 -6.28449e-6 0 1 6.59866e-6 0 1 9.42688e-6 0 1 3.29911e-6 0 1 -3.3002e-6 0 1 -3.29997e-6 0 1 6.28408e-6 0 1 1.57074e-6 0 1 6.59763e-6 0 1 -3.29849e-6 0 1 -3.29924e-6 0 1 -1.57091e-6 0 1 3.71155e-6 0 1 4.71283e-6 0 1 -3.14188e-6 0 1 -6.59872e-6 0 1 -2.06186e-7 0 1 -6.59722e-6 0 1 3.29941e-6 0 1 -3.14228e-6 0 1 3.2987e-6 0 1 -3.1417e-6 0 1 -3.14237e-6 0 1 -3.14245e-6 0 1 1.31983e-5 0 1 -1.31971e-5 0 1 1.25703e-5 0 1 -1.31965e-5 0 1 -6.59752e-6 0 1 -1.57067e-6 0 1 -6.28394e-6 0 1 -3.71178e-6 0 1 3.92758e-6 0 1 3.29931e-6 0 1 -6.28378e-6 0 1 6.59699e-6 0 1 -6.59866e-6 0 1 4.71344e-6 0 1 1.31974e-5 0 1 -6.59915e-6 0 1 -1.25692e-5 0 1 1.31971e-5 0 1 -9.42728e-6 0 1 -3.29957e-6 0 1 3.30019e-6 0 1 3.2998e-6 0 1 6.28337e-6 0 1 -6.59792e-6 0 1 6.28396e-6 0 1 -6.59775e-6 0 -1 0 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    256 0 257 0 258 0 259 1 260 1 261 1 262 2 261 2 257 2 263 3 264 3 265 3 266 4 267 4 268 4 269 5 268 5 264 5 270 6 265 6 260 6 271 7 272 7 273 7 274 8 275 8 276 8 277 9 276 9 272 9 278 10 279 10 280 10 281 11 282 11 283 11 284 12 283 12 279 12 285 13 280 13 275 13 286 14 273 14 267 14 287 15 288 15 289 15 290 16 291 16 292 16 293 17 292 17 288 17 294 18 295 18 296 18 297 19 298 19 299 19 300 20 299 20 295 20 301 21 296 21 291 21 302 22 303 22 304 22 305 23 306 23 307 23 308 24 307 24 303 24 309 25 310 25 311 25 312 26 313 26 314 26 315 27 314 27 310 27 316 28 311 28 306 28 317 29 304 29 298 29 318 30 289 30 282 30 258 0 319 0 256 0 261 31 262 31 259 31 262 32 257 32 256 32 265 3 270 3 263 3 268 33 269 33 266 33 269 34 264 34 263 34 270 35 260 35 259 35 273 7 286 7 271 7 276 36 277 36 274 36 277 37 272 37 271 37 280 10 285 10 278 10 283 11 284 11 281 11 284 38 279 38 278 38 285 39 275 39 274 39 286 40 267 40 266 40 289 41 318 41 287 41 292 42 293 42 290 42 293 17 288 17 287 17 296 43 301 43 294 43 299 44 300 44 297 44 300 45 295 45 294 45 301 21 291 21 290 21 304 46 317 46 302 46 307 47 308 47 305 47 308 48 303 48 302 48 311 49 316 49 309 49 314 50 315 50 312 50 315 51 310 51 309 51 316 28 306 28 305 28 317 29 298 29 297 29 318 52 282 52 281 52 312 53 320 53 313 53 321 54 319 54 258 54 322 55 323 55 320 55 324 56 325 56 326 56 327 57 326 57 323 57 328 58 329 58 330 58 331 59 332 59 333 59 334 60 333 60 329 60 335 61 330 61 325 61 336 62 337 62 338 62 339 63 340 63 341 63 342 64 341 64 337 64 343 65 344 65 345 65 346 66 347 66 348 66 349 67 348 67 344 67 350 68 345 68 340 68 351 69 338 69 332 69 352 70 353 70 354 70 355 71 356 71 357 71 358 72 357 72 353 72 359 73 360 73 361 73 362 74 363 74 364 74 365 75 364 75 360 75 366 76 361 76 356 76 367 77 368 77 369 77 370 78 371 78 372 78 373 79 372 79 368 79 374 80 375 80 376 80 321 81 377 81 378 81 379 82 378 82 375 82 380 83 376 83 371 83 381 84 369 84 363 84 382 85 354 85 347 85 320 55 383 55 322 55 326 56 327 56 324 56 327 86 323 86 322 86 330 58 335 58 328 58 333 87 334 87 331 87 334 60 329 60 328 60 335 61 325 61 324 61 338 88 351 88 336 88 341 89 342 89 339 89 342 90 337 90 336 90 345 91 350 91 343 91 348 92 349 92 346 92 349 93 344 93 343 93 350 94 340 94 339 94 351 95 332 95 331 95 354 96 382 96 352 96 357 97 358 97 355 97 358 98 353 98 352 98 361 99 366 99 359 99 364 100 365 100 362 100 365 101 360 101 359 101 366 102 356 102 355 102 369 103 381 103 367 103 372 78 373 78 370 78 373 104 368 104 367 104 376 80 380 80 374 80 378 105 379 105 321 105 379 82 375 82 374 82 380 83 371 83 370 83 381 106 363 106 362 106 382 107 347 107 346 107 321 54 258 54 377 54 312 53 383 53 320 53

    +
    + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    0 108 1 108 2 108 3 109 4 109 5 109 1 110 3 110 6 110 7 111 8 111 9 111 10 112 11 112 12 112 8 113 10 113 13 113 4 114 7 114 14 114 15 115 16 115 17 115 18 116 19 116 20 116 16 117 18 117 21 117 22 118 23 118 24 118 25 119 26 119 27 119 23 120 25 120 28 120 19 121 22 121 29 121 11 122 15 122 30 122 31 123 32 123 33 123 34 124 35 124 36 124 32 125 34 125 37 125 38 126 39 126 40 126 41 127 42 127 43 127 39 128 41 128 44 128 35 129 38 129 45 129 46 130 47 130 48 130 49 131 50 131 51 131 47 132 49 132 52 132 53 133 54 133 55 133 56 134 57 134 58 134 54 135 56 135 59 135 50 136 53 136 60 136 42 137 46 137 61 137 26 138 31 138 62 138 0 108 2 108 63 108 5 109 6 109 3 109 2 110 1 110 6 110 9 111 14 111 7 111 12 112 13 112 10 112 9 139 8 139 13 139 5 140 4 140 14 140 17 115 30 115 15 115 20 116 21 116 18 116 17 117 16 117 21 117 24 118 29 118 22 118 27 119 28 119 25 119 24 120 23 120 28 120 20 141 19 141 29 141 12 142 11 142 30 142 33 143 62 143 31 143 36 124 37 124 34 124 33 125 32 125 37 125 40 144 45 144 38 144 43 127 44 127 41 127 40 128 39 128 44 128 36 129 35 129 45 129 48 145 61 145 46 145 51 146 52 146 49 146 48 132 47 132 52 132 55 147 60 147 53 147 58 134 59 134 56 134 55 135 54 135 59 135 51 136 50 136 60 136 43 137 42 137 61 137 27 148 26 148 62 148 57 149 64 149 58 149 0 150 63 150 65 150 64 151 66 151 67 151 68 152 69 152 70 152 66 153 68 153 71 153 72 154 73 154 74 154 75 155 76 155 77 155 73 156 75 156 78 156 69 157 72 157 79 157 80 158 81 158 82 158 83 159 84 159 85 159 81 160 83 160 86 160 87 161 88 161 89 161 90 162 91 162 92 162 88 163 90 163 93 163 84 164 87 164 94 164 76 165 80 165 95 165 96 166 97 166 98 166 99 167 100 167 101 167 97 168 99 168 102 168 103 169 104 169 105 169 106 170 107 170 108 170 104 171 106 171 109 171 100 172 103 172 110 172 111 173 112 173 113 173 114 174 115 174 116 174 112 175 114 175 117 175 118 176 119 176 120 176 121 177 122 177 65 177 119 178 121 178 123 178 115 179 118 179 124 179 107 180 111 180 125 180 91 181 96 181 126 181 67 151 127 151 64 151 70 152 71 152 68 152 67 182 66 182 71 182 74 154 79 154 72 154 77 183 78 183 75 183 74 184 73 184 78 184 70 185 69 185 79 185 82 186 95 186 80 186 85 159 86 159 83 159 82 160 81 160 86 160 89 187 94 187 87 187 92 188 93 188 90 188 89 163 88 163 93 163 85 164 84 164 94 164 77 165 76 165 95 165 98 189 126 189 96 189 101 167 102 167 99 167 98 190 97 190 102 190 105 169 110 169 103 169 108 170 109 170 106 170 105 171 104 171 109 171 101 191 100 191 110 191 113 173 125 173 111 173 116 192 117 192 114 192 113 193 112 193 117 193 120 194 124 194 118 194 65 195 123 195 121 195 120 178 119 178 123 178 116 179 115 179 124 179 108 196 107 196 125 196 92 197 91 197 126 197 122 150 0 150 65 150 64 149 127 149 58 149 128 198 129 198 130 198 131 199 130 199 129 199 132 200 128 200 133 200 130 200 133 200 128 200 134 200 135 200 136 200 137 200 136 200 135 200 129 201 134 201 131 201 136 202 131 202 134 202 138 203 139 203 140 203 141 204 142 204 139 204 139 200 142 200 140 200 140 200 143 200 138 200 143 205 144 205 132 205 133 206 145 206 132 206 144 200 143 200 140 200 132 200 145 200 143 200 146 207 147 207 148 207 146 200 148 200 149 200 150 200 151 200 148 200 146 208 152 208 147 208 153 209 154 209 152 209 152 210 155 210 153 210 153 211 156 211 154 211 146 200 155 200 152 200 157 200 158 200 159 200 160 212 159 212 158 212 136 200 137 200 157 200 158 200 157 200 137 200 161 200 151 200 150 200 149 213 148 213 151 213 161 200 160 200 151 200 159 200 160 200 161 200 162 214 163 214 164 214 163 215 165 215 164 215 141 200 166 200 162 200 162 200 167 200 141 200 165 216 168 216 164 216 162 217 164 217 167 217 141 200 139 200 166 200 169 218 168 218 165 218 170 219 169 219 171 219 165 220 171 220 169 220 172 221 173 221 170 221 169 222 170 222 173 222 174 223 175 223 172 223 173 224 172 224 175 224 176 225 177 225 174 225 175 226 174 226 177 226 178 227 179 227 176 227 177 228 176 228 179 228 180 200 178 200 181 200 176 200 181 200 178 200 182 200 180 200 183 200 181 229 183 229 180 229 184 230 182 230 183 230 185 200 182 200 184 200 184 200 186 200 185 200 187 231 188 231 185 231 187 200 185 200 186 200 187 232 189 232 188 232 190 233 191 233 189 233 189 234 192 234 190 234 190 235 193 235 191 235 187 200 192 200 189 200 194 236 195 236 156 236 156 200 196 200 194 200 194 237 197 237 195 237 153 238 196 238 156 238 198 200 197 200 199 200 200 200 201 200 198 200 198 200 201 200 197 200 194 200 199 200 197 200 202 239 200 239 198 239 203 200 204 200 205 200 202 240 205 240 204 240 202 200 204 200 200 200 206 200 203 200 207 200 205 200 207 200 203 200 208 200 206 200 209 200 207 200 209 200 206 200 210 241 211 241 208 241 206 242 208 242 211 242 212 243 213 243 210 243 211 244 210 244 213 244 214 200 215 200 212 200 213 200 212 200 215 200 216 245 217 245 214 245 215 246 214 246 217 246 216 200 218 200 219 200 220 247 221 247 222 247 221 248 220 248 219 248 219 249 220 249 223 249 220 200 222 200 224 200 223 200 216 200 219 200 216 250 214 250 218 250 225 200 224 200 222 200 226 200 227 200 228 200 226 200 228 200 229 200 230 251 231 251 228 251 226 252 232 252 227 252 233 200 234 200 235 200 236 200 235 200 234 200 227 200 232 200 233 200 234 253 233 253 232 253 237 254 238 254 193 254 193 255 239 255 237 255 237 256 240 256 238 256 190 257 239 257 193 257 240 258 231 258 230 258 229 200 228 200 231 200 240 237 241 237 231 237 237 200 241 200 240 200 242 259 243 259 244 259 245 260 246 260 243 260 243 200 246 200 244 200 244 261 247 261 242 261 247 200 248 200 225 200 222 262 249 262 225 262 248 263 247 263 244 263 225 264 249 264 247 264 236 265 250 265 251 265 252 266 251 266 250 266 235 267 236 267 253 267 251 268 253 268 236 268 254 269 245 269 255 269 243 270 255 270 245 270 250 271 254 271 252 271 255 272 252 272 254 272 384 273 385 273 386 273 385 273 384 273 387 273 388 273 386 273 389 273 386 273 388 273 384 273 390 273 391 273 392 273 391 273 390 273 393 273 387 273 392 273 385 273 392 273 387 273 390 273 394 273 395 273 396 273 395 273 397 273 398 273 394 273 397 273 395 273 396 273 399 273 394 273 389 273 400 273 399 273 389 273 401 273 388 273 394 273 399 273 400 273 399 273 401 273 389 273 402 273 403 273 404 273 405 273 402 273 404 273 402 273 406 273 407 273 403 273 408 273 404 273 408 273 409 273 410 273 410 273 411 273 408 273 409 273 412 273 410 273 408 273 411 273 404 273 413 273 414 273 415 273 414 273 413 273 416 273 415 273 393 273 390 273 393 273 415 273 414 273 407 273 406 273 417 273 406 273 402 273 405 273 406 273 416 273 417 273 417 273 416 273 413 273 418 273 419 273 420 273 418 273 421 273 419 273 420 273 422 273 398 273 398 273 423 273 420 273 418 273 424 273 421 273 423 273 418 273 420 273 422 273 395 273 398 273 421 273 424 273 425 273 426 273 425 273 427 273 425 273 426 273 421 273 427 273 428 273 429 273 428 273 427 273 425 273 429 273 430 273 431 273 430 273 429 273 428 273 431 273 432 273 433 273 432 273 431 273 430 273 433 273 434 273 435 273 434 273 433 273 432 273 436 273 435 273 437 273 435 273 436 273 433 273 438 273 437 273 439 273 437 273 438 273 436 273 438 273 439 273 440 273 440 273 439 273 441 273 441 273 442 273 440 273 441 273 443 273 444 273 442 273 441 273 444 273 443 273 445 273 444 273 445 273 446 273 447 273 447 273 448 273 445 273 446 273 449 273 447 273 445 273 448 273 444 273 412 273 450 273 451 273 451 273 452 273 412 273 450 273 453 273 451 273 412 273 452 273 410 273 454 273 453 273 455 273 455 273 456 273 457 273 453 273 456 273 455 273 453 273 454 273 451 273 455 273 457 273 458 273 459 273 460 273 461 273 460 273 459 273 458 273 457 273 460 273 458 273 462 273 461 273 463 273 461 273 462 273 459 273 464 273 463 273 465 273 463 273 464 273 462 273 465 273 466 273 467 273 466 273 465 273 463 273 467 273 468 273 469 273 468 273 467 273 466 273 469 273 470 273 471 273 470 273 469 273 468 273 471 273 472 273 473 273 472 273 471 273 470 273 474 273 475 273 473 273 476 273 477 273 478 273 474 273 478 273 477 273 479 273 478 273 474 273 480 273 476 273 478 273 474 273 473 273 479 273 475 273 471 273 473 273 476 273 480 273 481 273 482 273 483 273 484 273 485 273 482 273 484 273 482 273 486 273 487 273 483 273 488 273 484 273 489 273 490 273 491 273 490 273 489 273 492 273 491 273 488 273 483 273 488 273 491 273 490 273 449 273 493 273 494 273 494 273 495 273 449 273 493 273 496 273 494 273 449 273 495 273 447 273 487 273 486 273 496 273 486 273 482 273 485 273 486 273 497 273 496 273 496 273 497 273 494 273 498 273 499 273 500 273 499 273 501 273 502 273 498 273 501 273 499 273 500 273 503 273 498 273 481 273 504 273 503 273 481 273 505 273 476 273 498 273 503 273 504 273 503 273 505 273 481 273 506 273 507 273 492 273 507 273 506 273 508 273 509 273 492 273 489 273 492 273 509 273 506 273 510 273 502 273 511 273 502 273 510 273 499 273 508 273 511 273 507 273 511 273 508 273 510 273

    +
    +
    +
    +
    + + + + + 1 2.22045e-16 2.22045e-16 0 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 0 0 0 0 1 + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/simulateur/3d/mod_lun_jaune.dae b/simulateur/3d/mod_lun_jaune.dae index d666506..bf5be50 100644 --- a/simulateur/3d/mod_lun_jaune.dae +++ b/simulateur/3d/mod_lun_jaune.dae @@ -3,10 +3,10 @@ Blender User - Blender 2.77.0 commit date:1970-01-01, commit time:00:00, hash:unknown + Blender 2.78.0 - 2017-01-21T17:02:53 - 2017-01-21T17:02:53 + 2017-05-06T19:34:01 + 2017-05-06T19:34:01 Z_UP @@ -26,7 +26,7 @@ 0.5992157 0.5992157 0.5992157 1 - 0.075 0.075 0.075 1 + 0.0375 0.0375 0.0375 1 50 @@ -52,7 +52,7 @@ 0.774902 0.5678431 0 1 - 0.075 0.075 0.075 1 + 0.0375 0.0375 0.0375 1 50 @@ -77,9 +77,9 @@ - -0.01978415 0 -0.02451205 -0.02209138 0 -0.02245479 -0.02209138 0.1 -0.02245479 -0.02418607 0 -0.02018123 -0.0260477 0 -0.01771348 -0.0260477 0.1 -0.01771348 -0.02418607 0.1 -0.02018123 -0.02765852 0 -0.01507502 -0.02900296 0 -0.01229155 -0.02900296 0.1 -0.01229155 -0.03006803 0 -0.009389519 -0.03084361 0 -0.006397128 -0.03084361 0.1 -0.006397128 -0.03006803 0.1 -0.009389519 -0.02765852 0.1 -0.01507502 -0.03132212 0 -0.003343105 -0.03149896 0 -2.56896e-4 -0.03149896 0.1 -2.56896e-4 -0.03137248 0 0.002831697 -0.03094387 0 0.005893111 -0.03094387 0.1 0.005893111 -0.03137248 0.1 0.002831697 -0.03021723 0 0.008897781 -0.0291996 0 0.01181674 -0.0291996 0.1 0.01181674 -0.02790081 0 0.01462185 -0.02633327 0 0.01728618 -0.02633327 0.1 0.01728618 -0.02790081 0.1 0.01462185 -0.03021723 0.1 0.008897781 -0.03132212 0.1 -0.003343105 -0.02451211 0 0.01978409 -0.02245479 0 0.02209144 -0.02245479 0.1 0.02209144 -0.02018135 0 0.02418601 -0.0177136 0 0.0260477 -0.0177136 0.1 0.0260477 -0.02018135 0.1 0.02418601 -0.01507514 0 0.02765846 -0.01229161 0 0.0290029 -0.01229161 0.1 0.0290029 -0.009389638 0 0.03006798 -0.006397247 0 0.03084361 -0.006397247 0.1 0.03084361 -0.009389638 0.1 0.03006798 -0.01507514 0.1 0.02765846 -0.003343164 0 0.03132212 -2.57015e-4 0 0.03149896 -2.57015e-4 0.1 0.03149896 0.002831578 0 0.03137236 0.005892992 0 0.03094387 0.005892992 0.1 0.03094387 0.002831578 0.1 0.03137236 0.008897721 0 0.03021723 0.01181668 0 0.0291996 0.01181668 0.1 0.0291996 0.01462179 0 0.02790081 0.01728618 0 0.02633321 0.01728618 0.1 0.02633321 0.01462179 0.1 0.02790081 0.008897721 0.1 0.03021723 -0.003343164 0.1 0.03132212 -0.02451211 0.1 0.01978409 -0.01978415 0.1 -0.02451205 0.01978403 0 0.02451205 -0.0172863 0.1 -0.02633321 0.02209126 0 0.02245479 0.02209126 0.1 0.02245479 0.02418595 0 0.02018135 0.02604752 0 0.01771348 0.02604752 0.1 0.01771348 0.02418595 0.1 0.02018135 0.0276584 0 0.01507514 0.02900284 0 0.01229155 0.02900284 0.1 0.01229155 0.03006798 0 0.009389638 0.03084349 0 0.006397247 0.03084349 0.1 0.006397247 0.03006798 0.1 0.009389638 0.0276584 0.1 0.01507514 0.031322 0 0.003343164 0.03149884 0 2.57015e-4 0.03149884 0.1 2.57015e-4 0.03137236 0 -0.002831697 0.03094375 0 -0.005893111 0.03094375 0.1 -0.005893111 0.03137236 0.1 -0.002831697 0.03021717 0 -0.008897662 0.02919954 0 -0.01181662 0.02919954 0.1 -0.01181662 0.02790069 0 -0.01462185 0.02633315 0 -0.01728618 0.02633315 0.1 -0.01728618 0.02790069 0.1 -0.01462185 0.03021717 0.1 -0.008897662 0.031322 0.1 0.003343164 0.02451199 0 -0.01978409 0.02245467 0 -0.02209132 0.02245467 0.1 -0.02209132 0.02018123 0 -0.02418601 0.01771342 0 -0.02604752 0.01771342 0.1 -0.02604752 0.02018123 0.1 -0.02418601 0.01507502 0 -0.02765846 0.01229149 0 -0.0290029 0.01229149 0.1 -0.0290029 0.009389519 0 -0.03006798 0.006397128 0 -0.03084349 0.006397128 0.1 -0.03084349 0.009389519 0.1 -0.03006798 0.01507502 0.1 -0.02765846 0.003343105 0 -0.03132212 2.56896e-4 0 -0.03149884 2.56896e-4 0.1 -0.03149884 -0.002831757 0 -0.03137236 -0.005893111 0 -0.03094375 -0.005893111 0.1 -0.03094375 -0.002831757 0.1 -0.03137236 -0.00889784 0 -0.03021717 -0.01181674 0 -0.0291996 -0.01181674 0.1 -0.0291996 -0.01462191 0 -0.02790069 -0.0172863 0 -0.02633321 -0.01462191 0.1 -0.02790069 -0.00889784 0.1 -0.03021717 0.003343105 0.1 -0.03132212 0.02451199 0.1 -0.01978409 0.01978403 0.1 0.02451205 -0.01170629 0 0.02762186 -0.008942484 0 0.02863615 -0.009389638 0 0.03006798 -0.006397247 0 0.03084361 -0.01435726 0 0.02634137 -0.01229161 0 0.0290029 -0.006092548 0 0.02937477 -0.00318402 0 0.02983057 -0.003343164 0 0.03132212 -2.44796e-4 0 0.02999895 -0.02018135 0 0.02418601 -0.02245479 0 0.02209144 -0.01922041 0 0.02303433 -0.02334487 0 0.01884198 -0.02138561 0 0.02103948 -0.0177136 0 0.0260477 -0.01687008 0 0.02480733 -0.01507514 0 0.02765846 0.01392555 0 0.02657204 0.01462179 0 0.02790081 0.01181668 0 0.0291996 0.01125395 0 0.02780914 0.008897721 0 0.03021723 0.008473992 0 0.02877831 0.01728618 0 0.02633321 0.01884192 0 0.02334487 0.01978403 0 0.02451205 0.01646298 0 0.02507925 0.02209126 0 0.02245479 -2.57015e-4 0 0.03149896 0.002696812 0 0.02987861 0.002831578 0 0.03137236 0.005612373 0 0.02947032 0.005892992 0 0.03094387 -0.02633327 0 0.01728618 -0.02790081 0 0.01462185 -0.0265721 0 0.01392567 -0.0291996 0 0.01181674 -0.02451211 0 0.01978409 -0.02507925 0 0.01646304 -0.0278092 0 0.01125407 -0.02877837 0 0.008474111 -0.03094387 0 0.005893111 -0.03021723 0 0.008897781 -0.03137248 0 0.002831697 -0.02947038 0 0.005612432 -0.03149896 0 -2.56896e-4 -0.02987861 0 0.002696812 -0.03132212 0 -0.003343105 -0.02999901 0 -2.44737e-4 -0.02937483 0 -0.006092548 -0.02983063 0 -0.003183901 -0.02863621 0 -0.008942484 -0.03084361 0 -0.006397128 -0.02762186 0 -0.01170623 -0.03006803 0 -0.009389519 -0.02900296 0 -0.01229155 -0.02634137 0 -0.01435714 -0.02765852 0 -0.01507502 -0.0260477 0 -0.01771348 -0.02480733 0 -0.01687002 -0.02303433 0 -0.01922035 -0.02209138 0 -0.02245479 -0.02103948 0 -0.02138555 -0.02418607 0 -0.02018123 -0.01884204 0 -0.02334475 0.02303421 0 0.01922035 0.02418595 0 0.02018135 0.0210393 0 0.02138555 0.02604752 0 0.01771348 0.02634125 0 0.01435726 0.02480721 0 0.01687014 0.02900284 0 0.01229155 0.0276584 0 0.01507514 0.02762174 0 0.01170623 0.03084349 0 0.006397247 0.03006798 0 0.009389638 0.02863609 0 0.008942484 0.031322 0 0.003343164 0.02937471 0 0.006092548 0.02999889 0 2.44737e-4 0.02983051 0 0.003183901 0.02987843 0 -0.002696812 0.03149884 0 2.57015e-4 0.02947026 0 -0.005612432 0.03137236 0 -0.002831697 0.02877825 0 -0.008473992 0.03094375 0 -0.005893111 0.02919954 0 -0.01181662 0.03021717 0 -0.008897662 0.02780908 0 -0.01125395 0.02657198 0 -0.01392555 0.02633315 0 -0.01728618 0.02507919 0 -0.01646304 0.02334475 0 -0.01884198 0.02790069 0 -0.01462185 0.02451199 0 -0.01978409 0.02245467 0 -0.02209132 -0.005893111 0 -0.03094375 -0.005612552 0 -0.02947032 -0.008474111 0 -0.02877831 -0.00889784 0 -0.03021717 -0.01125407 0 -0.02780914 -0.01181674 0 -0.0291996 -0.002831757 0 -0.03137236 -0.002696931 0 -0.02987843 2.56896e-4 0 -0.03149884 2.44677e-4 0 -0.02999895 0.003343105 0 -0.03132212 -0.0172863 0 -0.02633321 -0.0164631 0 -0.02507925 -0.01978415 0 -0.02451205 -0.01392567 0 -0.02657204 -0.01462191 0 -0.02790069 0.01686996 0 -0.02480721 0.01435714 0 -0.02634125 0.01771342 0 -0.02604752 0.01229149 0 -0.0290029 0.01507502 0 -0.02765846 0.01922029 0 -0.02303421 0.02018123 0 -0.02418601 0.02138549 0 -0.0210393 0.006397128 0 -0.03084349 0.006092429 0 -0.02937477 0.008942365 0 -0.02863615 0.003183901 0 -0.02983057 0.009389519 0 -0.03006798 0.01170617 0 -0.02762174 -0.02103948 0.1 -0.02138555 -0.02103948 0 -0.02138555 -0.01884204 0 -0.02334475 -0.02480733 0.1 -0.01687002 -0.02480733 0 -0.01687002 -0.02303433 0 -0.01922035 -0.02303433 0.1 -0.01922035 -0.02762186 0.1 -0.01170623 -0.02762186 0 -0.01170623 -0.02634137 0 -0.01435714 -0.02937483 0.1 -0.006092548 -0.02937483 0 -0.006092548 -0.02863621 0 -0.008942484 -0.02863621 0.1 -0.008942484 -0.02634137 0.1 -0.01435714 -0.02999901 0.1 -2.44737e-4 -0.02999901 0 -2.44737e-4 -0.02983063 0 -0.003183901 -0.02947038 0.1 0.005612432 -0.02947038 0 0.005612432 -0.02987861 0 0.002696812 -0.02987861 0.1 0.002696812 -0.0278092 0.1 0.01125407 -0.0278092 0 0.01125407 -0.02877837 0 0.008474111 -0.02507925 0.1 0.01646304 -0.02507925 0 0.01646304 -0.0265721 0 0.01392567 -0.0265721 0.1 0.01392567 -0.02877837 0.1 0.008474111 -0.02983063 0.1 -0.003183901 -0.02138561 0.1 0.02103948 -0.02138561 0 0.02103948 -0.02334487 0 0.01884198 -0.01687008 0.1 0.02480733 -0.01687008 0 0.02480733 -0.01922041 0 0.02303433 -0.01922041 0.1 0.02303433 -0.01170629 0.1 0.02762186 -0.01170629 0 0.02762186 -0.01435726 0 0.02634137 -0.006092548 0.1 0.02937477 -0.006092548 0 0.02937477 -0.008942484 0 0.02863615 -0.008942484 0.1 0.02863615 -0.01435726 0.1 0.02634137 -2.44796e-4 0.1 0.02999895 -2.44796e-4 0 0.02999895 -0.00318402 0 0.02983057 0.005612373 0.1 0.02947032 0.005612373 0 0.02947032 0.002696812 0 0.02987861 0.002696812 0.1 0.02987861 0.01125395 0.1 0.02780914 0.01125395 0 0.02780914 0.008473992 0 0.02877831 0.01646298 0.1 0.02507925 0.01646298 0 0.02507925 0.01392555 0 0.02657204 0.01392555 0.1 0.02657204 0.008473992 0.1 0.02877831 -0.00318402 0.1 0.02983057 -0.02334487 0.1 0.01884198 -0.01884204 0.1 -0.02334475 0.01884192 0 0.02334487 -0.0164631 0.1 -0.02507925 0.0210393 0.1 0.02138555 0.0210393 0 0.02138555 0.02480721 0.1 0.01687014 0.02480721 0 0.01687014 0.02303421 0 0.01922035 0.02303421 0.1 0.01922035 0.02762174 0.1 0.01170623 0.02762174 0 0.01170623 0.02634125 0 0.01435726 0.02937471 0.1 0.006092548 0.02937471 0 0.006092548 0.02863609 0 0.008942484 0.02863609 0.1 0.008942484 0.02634125 0.1 0.01435726 0.02999889 0.1 2.44737e-4 0.02999889 0 2.44737e-4 0.02983051 0 0.003183901 0.02947026 0.1 -0.005612432 0.02947026 0 -0.005612432 0.02987843 0 -0.002696812 0.02987843 0.1 -0.002696812 0.02780908 0.1 -0.01125395 0.02780908 0 -0.01125395 0.02877825 0 -0.008473992 0.02507919 0.1 -0.01646304 0.02507919 0 -0.01646304 0.02657198 0 -0.01392555 0.02657198 0.1 -0.01392555 0.02877825 0.1 -0.008473992 0.02983051 0.1 0.003183901 0.02138549 0.1 -0.0210393 0.02138549 0 -0.0210393 0.02334475 0 -0.01884198 0.01686996 0.1 -0.02480721 0.01686996 0 -0.02480721 0.01922029 0 -0.02303421 0.01922029 0.1 -0.02303421 0.01170617 0.1 -0.02762174 0.01170617 0 -0.02762174 0.01435714 0 -0.02634125 0.006092429 0.1 -0.02937477 0.006092429 0 -0.02937477 0.008942365 0 -0.02863615 0.008942365 0.1 -0.02863615 0.01435714 0.1 -0.02634125 2.44677e-4 0.1 -0.02999895 2.44677e-4 0 -0.02999895 0.003183901 0 -0.02983057 -0.005612552 0.1 -0.02947032 -0.005612552 0 -0.02947032 -0.002696931 0 -0.02987843 -0.002696931 0.1 -0.02987843 -0.01125407 0.1 -0.02780914 -0.01125407 0 -0.02780914 -0.008474111 0 -0.02877831 -0.0164631 0 -0.02507925 -0.01392567 0 -0.02657204 -0.01392567 0.1 -0.02657204 -0.008474111 0.1 -0.02877831 0.003183901 0.1 -0.02983057 0.02334475 0.1 -0.01884198 0.01884192 0.1 0.02334487 -0.009389638 0.1 0.03006798 -0.008942484 0.1 0.02863615 -0.01170629 0.1 0.02762186 -0.006397247 0.1 0.03084361 -0.01229161 0.1 0.0290029 -0.01435726 0.1 0.02634137 -0.003343164 0.1 0.03132212 -0.00318402 0.1 0.02983057 -0.006092548 0.1 0.02937477 -2.44796e-4 0.1 0.02999895 -0.01922041 0.1 0.02303433 -0.02245479 0.1 0.02209144 -0.02018135 0.1 0.02418601 -0.02138561 0.1 0.02103948 -0.02334487 0.1 0.01884198 -0.0177136 0.1 0.0260477 -0.01687008 0.1 0.02480733 -0.01507514 0.1 0.02765846 0.01181668 0.1 0.0291996 0.01462179 0.1 0.02790081 0.01392555 0.1 0.02657204 0.01125395 0.1 0.02780914 0.008473992 0.1 0.02877831 0.008897721 0.1 0.03021723 0.01728618 0.1 0.02633321 0.01978403 0.1 0.02451205 0.01884192 0.1 0.02334487 0.01646298 0.1 0.02507925 0.02209126 0.1 0.02245479 0.002831578 0.1 0.03137236 0.002696812 0.1 0.02987861 -2.57015e-4 0.1 0.03149896 0.005612373 0.1 0.02947032 0.005892992 0.1 0.03094387 -0.0265721 0.1 0.01392567 -0.02790081 0.1 0.01462185 -0.02633327 0.1 0.01728618 -0.0291996 0.1 0.01181674 -0.02451211 0.1 0.01978409 -0.02507925 0.1 0.01646304 -0.0278092 0.1 0.01125407 -0.02877837 0.1 0.008474111 -0.03021723 0.1 0.008897781 -0.03094387 0.1 0.005893111 -0.02947038 0.1 0.005612432 -0.03137248 0.1 0.002831697 -0.02987861 0.1 0.002696812 -0.03149896 0.1 -2.56896e-4 -0.02999901 0.1 -2.44737e-4 -0.03132212 0.1 -0.003343105 -0.02983063 0.1 -0.003183901 -0.02937483 0.1 -0.006092548 -0.03084361 0.1 -0.006397128 -0.02863621 0.1 -0.008942484 -0.03006803 0.1 -0.009389519 -0.02762186 0.1 -0.01170623 -0.02900296 0.1 -0.01229155 -0.02634137 0.1 -0.01435714 -0.02765852 0.1 -0.01507502 -0.02480733 0.1 -0.01687002 -0.0260477 0.1 -0.01771348 -0.02303433 0.1 -0.01922035 -0.02103948 0.1 -0.02138555 -0.02209138 0.1 -0.02245479 -0.02418607 0.1 -0.02018123 -0.01884204 0.1 -0.02334475 0.02418595 0.1 0.02018135 0.02303421 0.1 0.01922035 0.0210393 0.1 0.02138555 0.02604752 0.1 0.01771348 0.02480721 0.1 0.01687014 0.02634125 0.1 0.01435726 0.0276584 0.1 0.01507514 0.02900284 0.1 0.01229155 0.02762174 0.1 0.01170623 0.02863609 0.1 0.008942484 0.03006798 0.1 0.009389638 0.03084349 0.1 0.006397247 0.02937471 0.1 0.006092548 0.031322 0.1 0.003343164 0.02983051 0.1 0.003183901 0.02999889 0.1 2.44737e-4 0.03149884 0.1 2.57015e-4 0.02987843 0.1 -0.002696812 0.03137236 0.1 -0.002831697 0.02947026 0.1 -0.005612432 0.03094375 0.1 -0.005893111 0.02877825 0.1 -0.008473992 0.03021717 0.1 -0.008897662 0.02919954 0.1 -0.01181662 0.02657198 0.1 -0.01392555 0.02780908 0.1 -0.01125395 0.02334475 0.1 -0.01884198 0.02507919 0.1 -0.01646304 0.02633315 0.1 -0.01728618 0.02790069 0.1 -0.01462185 0.02451199 0.1 -0.01978409 0.02245467 0.1 -0.02209132 -0.008474111 0.1 -0.02877831 -0.005612552 0.1 -0.02947032 -0.005893111 0.1 -0.03094375 -0.00889784 0.1 -0.03021717 -0.01181674 0.1 -0.0291996 -0.01125407 0.1 -0.02780914 -0.002831757 0.1 -0.03137236 2.44677e-4 0.1 -0.02999895 2.56896e-4 0.1 -0.03149884 -0.002696931 0.1 -0.02987843 0.003343105 0.1 -0.03132212 -0.0164631 0.1 -0.02507925 -0.0172863 0.1 -0.02633321 -0.01978415 0.1 -0.02451205 -0.01392567 0.1 -0.02657204 -0.01462191 0.1 -0.02790069 0.01771342 0.1 -0.02604752 0.01435714 0.1 -0.02634125 0.01686996 0.1 -0.02480721 0.01507502 0.1 -0.02765846 0.01229149 0.1 -0.0290029 0.01922029 0.1 -0.02303421 0.02018123 0.1 -0.02418601 0.02138549 0.1 -0.0210393 0.006092429 0.1 -0.02937477 0.006397128 0.1 -0.03084349 0.008942365 0.1 -0.02863615 0.003183901 0.1 -0.02983057 0.01170617 0.1 -0.02762174 0.009389519 0.1 -0.03006798 + -0.01920592 0 -0.02551585 -0.02792781 0 -0.01477825 -0.02545744 0.1 -0.01920384 -0.03190815 0 -0.001340389 -0.03185236 0.1 -0.002313256 -0.02856391 0 0.01371252 -0.02710521 0.1 0.01719546 -0.01884156 0 0.0257861 -0.01417714 0.1 0.02833616 -0.004467308 0 0.03136837 -0.002254486 0.1 0.03160452 0.007876574 0 0.03069019 0.01194399 0.1 0.02951508 0.0203346 0 0.02444618 -0.01467812 0.1 -0.02800798 0.02750223 0.1 0.01679015 0.02872079 0 0.01338064 0.03165501 0 0.001371622 0.02977037 0 -0.01084661 0.03169155 0.1 -0.003945112 0.02335339 0 -0.02141362 0.02586048 0.1 -0.01830738 0.01054489 0 -0.03014516 0.01432675 0.1 -0.02854233 -0.004830777 0 -0.03131431 -0.00238955 0.1 -0.031708 -0.008972227 0 0.02872741 -0.01086741 0 0.02960628 -0.004882216 0 0.03115767 -0.015652 0 0.02563542 -2.45279e-4 0 0.03009498 -0.02252703 0 0.02216166 -0.02035182 0 0.02209001 -0.02515918 0 0.01651608 -0.01643455 0 0.02691727 0.01599216 0 0.0271824 0.008925557 0 0.03031408 0.008501887 0 0.0288701 0.01651674 0 0.02515876 0.02098721 0 0.02354067 0.001289069 0 0.03151136 -0.0271824 0 0.01599222 -0.02977991 0 0.01038211 -0.02887028 0 0.008501768 -0.0314728 0 0.002840936 -0.03009498 0 -2.45643e-4 -0.03094238 0 -0.006417095 -0.02872753 0 -0.008971929 -0.02774715 0 -0.01512295 -0.02488607 0 -0.01692479 -0.02319467 0 -0.02136898 -0.01998901 0 -0.02241873 0.02310866 0 0.01928085 0.02418595 0 0.02018129 0.02691817 0 0.01643276 0.02704691 0 0.01306211 0.03016418 0 0.00941962 0.02907514 0 0.007535755 0.03159958 0 2.57825e-4 0.03009486 0 2.46139e-4 0.02887022 0 -0.00850135 0.03031384 0 -0.008926093 0.02588713 0 -0.01523184 0.02718228 0 -0.01599222 0.02241957 0 -0.01998788 0.02354085 0 -0.02098691 -0.008926868 0 -0.03031367 -0.008501231 0 -0.0288704 -0.001291155 0 -0.03151118 2.46633e-4 0 -0.03009492 0.006416499 0 -0.03094244 -0.01734232 0 -0.02641695 -0.0152319 0 -0.02588725 0.01692473 0 -0.02488601 0.01512217 0 -0.02774751 0.02018117 0 -0.02418601 0.008971691 0 -0.02872753 -0.02322351 0.1 -0.01937836 -0.02529078 0 -0.01665794 -0.03034406 0.1 -0.003717362 -0.03015702 0 -0.002768516 -0.02702862 0.1 0.01365888 -0.02875983 0 0.008855462 -0.02328169 0 0.01936686 -0.01504653 0.1 0.02661168 -0.01004296 0 0.02870959 0.002276062 0.1 0.03019821 0.004599988 0 0.02982336 0.01566368 0 0.02579224 0.01397877 0.1 0.02667433 -0.01397925 0.1 -0.02667415 0.02322357 0.1 0.01937812 0.02706682 0 0.01421129 0.02997344 0.1 0.005166351 0.03005373 0 -0.004676759 0.02729523 0.1 -0.0137676 0.02239072 0 -0.02058529 0.01364463 0.1 -0.02718305 0.005742132 0 -0.03002667 -0.002276122 0.1 -0.03019815 -0.01319891 0 -0.0274024 -0.01086741 0.1 0.02960628 -0.008972227 0.1 0.02872741 -0.004882216 0.1 0.03115767 -0.015652 0.1 0.02563542 -2.45279e-4 0.1 0.03009498 -0.02035182 0.1 0.02209001 -0.02252703 0.1 0.02216166 -0.02515918 0.1 0.01651608 -0.01643455 0.1 0.02691727 0.008925557 0.1 0.03031408 0.01599216 0.1 0.0271824 0.008501887 0.1 0.0288701 0.02098721 0.1 0.02354067 0.01651674 0.1 0.02515876 0.001289069 0.1 0.03151136 -0.0271824 0.1 0.01599222 -0.02977991 0.1 0.01038211 -0.02887028 0.1 0.008501768 -0.0314728 0.1 0.002840936 -0.03009498 0.1 -2.45643e-4 -0.03094238 0.1 -0.006417095 -0.02872753 0.1 -0.008971929 -0.02774715 0.1 -0.01512295 -0.02488607 0.1 -0.01692479 -0.01998901 0.1 -0.02241873 -0.02319467 0.1 -0.02136898 0.02418595 0.1 0.02018129 0.02310866 0.1 0.01928085 0.02691817 0.1 0.01643276 0.02704691 0.1 0.01306211 0.03016418 0.1 0.00941962 0.02907514 0.1 0.007535755 0.03159958 0.1 2.57825e-4 0.03009486 0.1 2.46139e-4 0.02887022 0.1 -0.00850135 0.03031384 0.1 -0.008926093 0.02588713 0.1 -0.01523184 0.02241957 0.1 -0.01998788 0.02718228 0.1 -0.01599222 0.02354085 0.1 -0.02098691 -0.008501231 0.1 -0.0288704 -0.008926868 0.1 -0.03031367 -0.001291155 0.1 -0.03151118 2.46633e-4 0.1 -0.03009492 0.003343105 0.1 -0.03132212 -0.0152319 0.1 -0.02588725 -0.01734232 0.1 -0.02641695 0.01512217 0.1 -0.02774751 0.01692473 0.1 -0.02488601 0.02018117 0.1 -0.02418601 0.008971691 0.1 -0.02872753 0.007912874 0.1 -0.03052884 - + @@ -87,9 +87,9 @@ - 0.6654863 0 0.7464101 0.7983253 0 0.6022264 0.735446 0 0.6775833 0.9004651 0 0.4349284 0.9680176 0 0.2508822 0.9387626 0 0.3445649 0.8535105 0 0.5210757 0.998362 0 0.05721408 0.9903397 0 -0.1386623 0.9991626 0 -0.04091578 0.9442619 0 -0.3291953 0.8618913 0 -0.5070932 0.9074425 0 -0.4201765 0.9719834 0 -0.2350495 0.987946 0 0.1547986 0.7464084 0 -0.6654882 0.6022255 0 -0.798326 0.6775838 0 -0.7354456 0.4349215 0 -0.9004684 0.2508876 0 -0.9680163 0.3445418 0 -0.9387711 0.5210857 0 -0.8535044 0.05721497 0 -0.998362 -0.1386828 0 -0.9903368 -0.04089462 0 -0.9991635 -0.329196 0 -0.9442617 -0.5070816 0 -0.8618981 -0.4201759 0 -0.9074427 -0.2350541 0 -0.9719823 0.1547984 0 -0.9879462 0.8080421 0 -0.5891247 0.7354456 0 0.6775838 0.9004648 0 0.434929 0.9680177 0 0.250882 0.9387626 0 0.3445648 0.9442618 0 -0.3291954 0.987946 0 0.1547986 0.7464091 0 -0.6654874 0.6022265 0 -0.7983253 0.4349202 0 -0.9004691 0.2508861 0 -0.9680166 0.3445391 0 -0.9387721 0.5210846 0 -0.8535051 0.05721342 0 -0.9983621 -0.04089617 0 -0.9991634 -0.3291947 0 -0.9442622 -0.5070828 0 -0.8618974 0.8080424 0 -0.5891244 -0.5891133 0 -0.8080504 0.5891405 0 0.8080307 -0.6655095 0 -0.7463894 -0.7983107 0 -0.6022458 -0.735446 0 -0.6775833 -0.9004727 0 -0.4349126 -0.9680179 0 -0.2508816 -0.9387626 0 -0.3445649 -0.85351 0 -0.5210765 -0.998362 0 -0.05721408 -0.9903397 0 0.1386623 -0.9991626 0 0.04091638 -0.9442618 0 0.3291956 -0.8619033 0 0.5070728 -0.9074425 0 0.4201765 -0.9719812 0 0.2350587 -0.987946 0 -0.1547993 -0.7463902 0 0.6655086 -0.6022255 0 0.798326 -0.6775841 0 0.7354453 -0.4349202 0 0.9004691 -0.2508876 0 0.9680163 -0.3445767 0 0.9387582 -0.5210856 0 0.8535045 -0.05721497 0 0.998362 0.1386409 0 0.9903427 0.04093569 0 0.9991618 0.3291959 0 0.9442617 0.5070815 0 0.8618981 0.4201759 0 0.9074427 0.2350541 0 0.9719824 -0.1547984 0 0.9879462 -0.8080403 0 0.5891273 -0.7354456 0 -0.6775838 -0.9004727 0 -0.4349129 -0.9680179 0 -0.2508814 -0.9387626 0 -0.3445648 -0.8535103 0 -0.5210762 -0.9442618 0 0.3291954 -0.8619035 0 0.5070724 -0.987946 0 -0.1547992 -0.7463909 0 0.6655078 -0.6022265 0 0.7983253 -0.2508861 0 0.9680166 -0.05721342 0 0.9983621 0.138644 0 0.9903424 0.04093724 0 0.9991618 0.3291946 0 0.9442622 0.5070827 0 0.8618975 -0.8080406 0 0.5891268 -0.665498 0 -0.7463997 -0.798317 0 -0.6022376 -0.7354544 0 -0.6775743 -0.9004675 0 -0.4349234 -0.9680194 0 -0.2508757 -0.9387662 0 -0.3445551 -0.8535082 0 -0.5210795 -0.9983614 0 -0.05722528 -0.9903387 0 0.1386705 -0.9991626 0 0.04091668 -0.9442617 0 0.3291957 -0.8618938 0 0.5070889 -0.9074449 0 0.4201712 -0.9719844 0 0.2350454 -0.9879468 0 -0.1547939 -0.7464076 0 0.6654891 -0.6022416 0 0.798314 -0.6775727 0 0.7354559 -0.434916 0 0.900471 -0.2508946 0 0.9680145 -0.3445609 0 0.938764 -0.5210741 0 0.8535116 -0.05722558 0 0.9983614 0.1386335 0 0.9903438 0.04095411 0 0.9991611 0.3292114 0 0.9442563 0.5070955 0 0.8618898 0.4201564 0 0.9074518 0.2350469 0 0.9719841 -0.1547945 0 0.9879468 -0.8080436 0 0.5891228 -0.6654971 0 -0.7464004 -0.7983173 0 -0.6022372 -0.9004672 0 -0.434924 -0.9680194 0 -0.2508756 -0.9387662 0 -0.3445549 -0.9903386 0 0.1386704 -0.9442617 0 0.3291958 -0.8618936 0 0.5070892 -0.9074448 0 0.4201714 -0.9879469 0 -0.1547939 -0.7464083 0 0.6654884 -0.6022406 0 0.7983147 -0.6775718 0 0.7354566 -0.2508932 0 0.9680148 0.138632 0 0.990344 0.0409556 0 0.999161 0.3292087 0 0.9442573 0.4201589 0 0.9074506 0.235044 0 0.9719848 -0.154793 0 0.9879469 -0.8080433 0 0.5891232 0.5891321 0 0.8080368 -0.5891312 0 -0.8080375 0.6654977 0 0.7463999 0.7983312 0 0.6022187 0.7354364 0 0.6775938 0.9004748 0 0.4349083 0.96802 0 0.2508729 0.9387606 0 0.3445702 0.8534972 0 0.5210977 0.9983612 0 0.05722647 0.9903385 0 -0.1386711 0.9991626 0 -0.04091513 0.9442616 0 -0.3291962 0.8618936 0 -0.5070893 0.9074505 0 -0.420159 0.9719831 0 -0.2350509 0.987947 0 0.1547927 0.7463909 0 -0.6655078 0.6022163 0 -0.7983331 0.6775934 0 -0.7354369 0.434916 0 -0.900471 0.2508578 0 -0.968024 0.3445609 0 -0.938764 0.5211027 0 -0.853494 0.05718654 0 -0.9983635 -0.1386719 0 -0.9903385 -0.0409165 0 -0.9991626 -0.32918 0 -0.9442672 -0.5070675 0 -0.8619065 -0.4201887 0 -0.9074367 -0.2350426 0 -0.9719851 0.1548327 0 -0.9879407 0.8080436 0 -0.5891228 0.6654968 0 0.7464007 0.7983315 0 0.6022183 0.7354371 0 0.6775931 0.9387607 0 0.34457 0.8534975 0 0.521097 0.9903386 0 -0.138671 0.9442617 0 -0.3291958 0.8618933 0 -0.5070896 0.9074507 0 -0.4201587 0.9719832 0 -0.2350507 0.7463903 0 -0.6655086 0.6022153 0 -0.7983338 0.6775941 0 -0.7354361 -0.1386705 0 -0.9903386 -0.04091501 0 -0.9991627 -0.3291787 0 -0.9442677 -0.5070652 0 -0.8619077 -0.2350412 0 -0.9719855 0.1548298 0 -0.9879412 0.8080433 0 -0.5891232 -0.5891321 0 -0.8080368 0.5891312 0 0.8080375 0 -1 0 0 1 0 0 1 1.31965e-5 0 1 6.28445e-6 0 1 3.29915e-6 0 1 -3.29915e-6 0 1 -3.29912e-6 0 1 3.14216e-6 0 1 6.5982e-6 0 1 -3.14193e-6 0 1 -1.25674e-5 0 1 6.28435e-6 0 1 -3.29913e-6 0 1 -1.25688e-5 0 1 1.31977e-5 0 1 -5.77346e-6 0 1 -1.2568e-5 0 1 -6.28425e-6 0 1 -3.14202e-6 0 1 6.59836e-6 0 1 4.12411e-6 0 1 -3.14197e-6 0 1 -3.1421e-6 0 1 6.59835e-6 0 1 6.28415e-6 0 1 3.29925e-6 0 1 -6.59855e-6 0 1 -3.29921e-6 0 1 1.57106e-6 0 1 -3.29925e-6 0 1 3.14211e-6 0 1 -6.59844e-6 0 1 6.28413e-6 0 1 -6.59821e-6 0 1 -1.57098e-6 0 1 -1.31969e-5 0 1 -6.28441e-6 0 1 3.29915e-6 0 1 1.25678e-5 0 1 6.59823e-6 0 1 -6.28393e-6 0 1 -6.59879e-6 0 1 -3.14204e-6 0 1 3.29914e-6 0 1 1.57103e-6 0 1 -3.29914e-6 0 1 1.64962e-6 0 1 -6.59835e-6 0 1 6.28437e-6 0 1 -6.59842e-6 0 1 3.92747e-6 0 1 -6.28381e-6 0 1 1.6496e-6 0 1 -2.47454e-6 0 1 -3.29916e-6 0 1 -1.25689e-5 0 1 1.25684e-5 0 1 -3.29906e-6 0 1 -3.14196e-6 0 1 6.28401e-6 0 1 -6.59822e-6 0 1 3.14219e-6 0 1 1.31966e-5 0 1 -3.14189e-6 0 1 6.59824e-6 0 1 -3.14195e-6 0 1 3.14202e-6 0 1 3.29915e-6 0 1 1.25688e-5 0 1 -1.31975e-5 + 0.6642173 0.006604194 0.7475104 0.9437419 0.004902243 0.330647 0.9928531 7.24432e-4 -0.1193418 0.8867743 0.006847381 -0.4621522 0.5765504 0.01170879 -0.8169776 0.07584238 0.005500018 -0.9971047 -0.3423416 0.002520024 -0.9395723 0.9102982 -0.007559061 0.4138842 0.9822484 -0.008002281 -0.1874144 0.7340313 -0.01125454 -0.6790224 -0.2883251 -0.003111362 -0.9575275 0.2027319 -0.01039838 -0.9791791 0.6195261 -8.8203e-4 0.7849756 -0.7125281 0.008865833 -0.7015876 -0.9008317 0.01459753 0.4339231 -0.9876211 0.01457995 -0.1561794 -0.4932476 0.01424562 0.8697723 0.1372272 0.01270145 0.9904583 -0.9032253 -0.01254796 -0.4289833 -0.9900383 -0.01457935 0.1400414 -0.7008668 -0.01424658 0.71315 0.2883217 -0.004723072 0.957522 -0.1860554 -0.01323413 0.9824502 -0.6195207 -0.003513813 -0.7849726 -0.7761688 -0.008727252 -0.6304649 -0.9588207 -0.002228379 -0.2840035 -0.9761772 0.006686389 0.2168717 -0.3620045 -0.00688517 0.932151 0.0548582 -0.003572046 0.9984878 0.4480611 -0.007719516 0.8939697 -0.7788234 -0.01048249 0.6271557 -0.9351885 0.007433116 -0.3540725 -0.9716428 0.002842009 0.2364364 -0.6527593 0.01113092 0.7574836 -0.264376 0.003572583 0.9644132 0.1455903 0.005703747 0.9893286 -0.6325508 0.009340167 -0.7744626 0.7969345 -0.01088124 0.6039679 0.9714165 0.003744542 0.237352 0.9882766 -0.008466005 -0.1524394 0.8547279 -0.005306243 -0.5190495 0.5632523 -0.008058249 -0.8262457 0.0758183 -0.005776762 -0.997105 -0.3740719 -0.006174087 -0.9273791 0.926517 0.008160829 -0.3761644 0.9801441 0.01017051 0.1980258 0.6637246 0.006592571 -0.7479481 -0.2883101 0.003268063 -0.9575316 0.1860616 0.00871092 -0.9824995 0.6330422 0.01388305 0.7739928 0 -1 0 0 1 0 0 1 4.66812e-6 0 1 -5.39899e-6 0 1 -1.65382e-6 0 1 8.62247e-6 0 1 7.10035e-6 0 1 -8.15881e-6 0 1 4.07948e-6 0 1 -1.30879e-6 0 1 -3.67656e-6 4.88341e-6 1 -2.23906e-6 3.26543e-6 1 0 0 1 -1.45824e-7 0 1 4.58998e-6 0 1 -1.32519e-6 0 1 -2.64988e-6 0 1 -1.00965e-5 1.68225e-6 1 0 0 1 -2.95773e-6 0 1 1.05987e-5 0 1 -2.29497e-6 3.60162e-6 1 0 2.64625e-6 1 7.22485e-6 0 1 3.9753e-6 -1.81566e-6 1 7.87456e-6 6.81848e-7 1 0 - + @@ -99,17 +99,17 @@ - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    256 0 257 0 258 0 259 1 260 1 261 1 262 2 261 2 257 2 263 3 264 3 265 3 266 4 267 4 268 4 269 5 268 5 264 5 270 6 265 6 260 6 271 7 272 7 273 7 274 8 275 8 276 8 277 9 276 9 272 9 278 10 279 10 280 10 281 11 282 11 283 11 284 12 283 12 279 12 285 13 280 13 275 13 286 14 273 14 267 14 287 15 288 15 289 15 290 16 291 16 292 16 293 17 292 17 288 17 294 18 295 18 296 18 297 19 298 19 299 19 300 20 299 20 295 20 301 21 296 21 291 21 302 22 303 22 304 22 305 23 306 23 307 23 308 24 307 24 303 24 309 25 310 25 311 25 312 26 313 26 314 26 315 27 314 27 310 27 316 28 311 28 306 28 317 29 304 29 298 29 318 30 289 30 282 30 258 0 319 0 256 0 261 1 262 1 259 1 262 31 257 31 256 31 265 32 270 32 263 32 268 33 269 33 266 33 269 34 264 34 263 34 270 6 260 6 259 6 273 7 286 7 271 7 276 8 277 8 274 8 277 9 272 9 271 9 280 35 285 35 278 35 283 11 284 11 281 11 284 12 279 12 278 12 285 13 275 13 274 13 286 36 267 36 266 36 289 37 318 37 287 37 292 38 293 38 290 38 293 17 288 17 287 17 296 39 301 39 294 39 299 40 300 40 297 40 300 41 295 41 294 41 301 42 291 42 290 42 304 43 317 43 302 43 307 23 308 23 305 23 308 44 303 44 302 44 311 45 316 45 309 45 314 46 315 46 312 46 315 27 310 27 309 27 316 28 306 28 305 28 317 29 298 29 297 29 318 47 282 47 281 47 312 48 320 48 313 48 321 49 319 49 258 49 322 50 323 50 320 50 324 51 325 51 326 51 327 52 326 52 323 52 328 53 329 53 330 53 331 54 332 54 333 54 334 55 333 55 329 55 335 56 330 56 325 56 336 57 337 57 338 57 339 58 340 58 341 58 342 59 341 59 337 59 343 60 344 60 345 60 346 61 347 61 348 61 349 62 348 62 344 62 350 63 345 63 340 63 351 64 338 64 332 64 352 65 353 65 354 65 355 66 356 66 357 66 358 67 357 67 353 67 359 68 360 68 361 68 362 69 363 69 364 69 365 70 364 70 360 70 366 71 361 71 356 71 367 72 368 72 369 72 370 73 371 73 372 73 373 74 372 74 368 74 374 75 375 75 376 75 321 76 377 76 378 76 379 77 378 77 375 77 380 78 376 78 371 78 381 79 369 79 363 79 382 80 354 80 347 80 320 50 383 50 322 50 326 51 327 51 324 51 327 81 323 81 322 81 330 82 335 82 328 82 333 83 334 83 331 83 334 84 329 84 328 84 335 85 325 85 324 85 338 57 351 57 336 57 341 58 342 58 339 58 342 59 337 59 336 59 345 86 350 86 343 86 348 87 349 87 346 87 349 62 344 62 343 62 350 63 340 63 339 63 351 88 332 88 331 88 354 89 382 89 352 89 357 90 358 90 355 90 358 67 353 67 352 67 361 68 366 68 359 68 364 91 365 91 362 91 365 70 360 70 359 70 366 71 356 71 355 71 369 92 381 92 367 92 372 93 373 93 370 93 373 94 368 94 367 94 376 95 380 95 374 95 378 96 379 96 321 96 379 77 375 77 374 77 380 78 371 78 370 78 381 79 363 79 362 79 382 97 347 97 346 97 321 49 258 49 377 49 312 48 383 48 320 48

    + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    77 0 78 0 100 0 79 1 80 1 78 1 79 2 82 2 80 2 81 3 83 3 82 3 84 4 85 4 83 4 86 5 87 5 85 5 89 6 88 6 87 6 78 7 77 7 79 7 81 8 82 8 79 8 83 9 81 9 84 9 87 10 86 10 89 10 86 11 85 11 84 11 90 12 77 12 100 12 91 13 92 13 88 13 95 14 96 14 94 14 93 15 94 15 92 15 97 16 98 16 96 16 99 17 100 17 98 17 92 18 91 18 93 18 94 19 93 19 95 19 97 20 96 20 95 20 100 21 99 21 90 21 99 22 98 22 97 22 89 23 91 23 88 23

    - + - 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -

    0 98 1 98 2 98 3 99 4 99 5 99 1 100 3 100 6 100 7 101 8 101 9 101 10 102 11 102 12 102 8 103 10 103 13 103 4 104 7 104 14 104 15 105 16 105 17 105 18 106 19 106 20 106 16 107 18 107 21 107 22 108 23 108 24 108 25 109 26 109 27 109 23 110 25 110 28 110 19 111 22 111 29 111 11 112 15 112 30 112 31 113 32 113 33 113 34 114 35 114 36 114 32 115 34 115 37 115 38 116 39 116 40 116 41 117 42 117 43 117 39 118 41 118 44 118 35 119 38 119 45 119 46 120 47 120 48 120 49 121 50 121 51 121 47 122 49 122 52 122 53 123 54 123 55 123 56 124 57 124 58 124 54 125 56 125 59 125 50 126 53 126 60 126 42 127 46 127 61 127 26 128 31 128 62 128 0 129 2 129 63 129 5 130 6 130 3 130 2 100 1 100 6 100 9 131 14 131 7 131 12 132 13 132 10 132 9 133 8 133 13 133 5 104 4 104 14 104 17 105 30 105 15 105 20 134 21 134 18 134 17 107 16 107 21 107 24 135 29 135 22 135 27 136 28 136 25 136 24 137 23 137 28 137 20 111 19 111 29 111 12 138 11 138 30 138 33 139 62 139 31 139 36 140 37 140 34 140 33 141 32 141 37 141 40 116 45 116 38 116 43 142 44 142 41 142 40 118 39 118 44 118 36 119 35 119 45 119 48 120 61 120 46 120 51 143 52 143 49 143 48 144 47 144 52 144 55 145 60 145 53 145 58 124 59 124 56 124 55 146 54 146 59 146 51 147 50 147 60 147 43 148 42 148 61 148 27 149 26 149 62 149 57 150 64 150 58 150 0 151 63 151 65 151 64 152 66 152 67 152 68 153 69 153 70 153 66 154 68 154 71 154 72 155 73 155 74 155 75 156 76 156 77 156 73 157 75 157 78 157 69 158 72 158 79 158 80 159 81 159 82 159 83 160 84 160 85 160 81 161 83 161 86 161 87 162 88 162 89 162 90 163 91 163 92 163 88 164 90 164 93 164 84 165 87 165 94 165 76 166 80 166 95 166 96 167 97 167 98 167 99 168 100 168 101 168 97 169 99 169 102 169 103 170 104 170 105 170 106 171 107 171 108 171 104 172 106 172 109 172 100 173 103 173 110 173 111 174 112 174 113 174 114 175 115 175 116 175 112 176 114 176 117 176 118 177 119 177 120 177 121 178 122 178 65 178 119 179 121 179 123 179 115 180 118 180 124 180 107 181 111 181 125 181 91 182 96 182 126 182 67 183 127 183 64 183 70 184 71 184 68 184 67 185 66 185 71 185 74 155 79 155 72 155 77 156 78 156 75 156 74 186 73 186 78 186 70 187 69 187 79 187 82 159 95 159 80 159 85 188 86 188 83 188 82 161 81 161 86 161 89 189 94 189 87 189 92 190 93 190 90 190 89 191 88 191 93 191 85 192 84 192 94 192 77 166 76 166 95 166 98 193 126 193 96 193 101 194 102 194 99 194 98 195 97 195 102 195 105 170 110 170 103 170 108 171 109 171 106 171 105 172 104 172 109 172 101 173 100 173 110 173 113 174 125 174 111 174 116 196 117 196 114 196 113 197 112 197 117 197 120 198 124 198 118 198 65 199 123 199 121 199 120 179 119 179 123 179 116 200 115 200 124 200 108 201 107 201 125 201 92 202 91 202 126 202 122 203 0 203 65 203 64 204 127 204 58 204 128 205 129 205 130 205 131 205 130 205 129 205 132 205 128 205 133 205 130 205 133 205 128 205 134 205 135 205 136 205 137 205 136 205 135 205 129 205 134 205 131 205 136 205 131 205 134 205 138 205 139 205 140 205 141 205 142 205 139 205 139 205 142 205 140 205 140 205 143 205 138 205 143 205 144 205 132 205 133 205 145 205 132 205 144 205 143 205 140 205 132 205 145 205 143 205 146 205 147 205 148 205 146 205 148 205 149 205 150 205 151 205 148 205 146 205 152 205 147 205 153 205 154 205 152 205 152 205 155 205 153 205 153 205 156 205 154 205 146 205 155 205 152 205 157 205 158 205 159 205 160 205 159 205 158 205 136 205 137 205 157 205 158 205 157 205 137 205 161 205 151 205 150 205 149 205 148 205 151 205 161 205 160 205 151 205 159 205 160 205 161 205 162 205 163 205 164 205 163 205 165 205 164 205 141 205 166 205 162 205 162 205 167 205 141 205 165 205 168 205 164 205 162 205 164 205 167 205 141 205 139 205 166 205 169 205 168 205 165 205 170 205 169 205 171 205 165 205 171 205 169 205 172 205 173 205 170 205 169 205 170 205 173 205 174 205 175 205 172 205 173 205 172 205 175 205 176 205 177 205 174 205 175 205 174 205 177 205 178 205 179 205 176 205 177 205 176 205 179 205 180 205 178 205 181 205 176 205 181 205 178 205 182 205 180 205 183 205 181 205 183 205 180 205 184 205 182 205 183 205 185 205 182 205 184 205 184 205 186 205 185 205 187 205 188 205 185 205 187 205 185 205 186 205 187 205 189 205 188 205 190 205 191 205 189 205 189 205 192 205 190 205 190 205 193 205 191 205 187 205 192 205 189 205 194 205 195 205 156 205 156 205 196 205 194 205 194 205 197 205 195 205 153 205 196 205 156 205 198 205 197 205 199 205 200 205 201 205 198 205 198 205 201 205 197 205 194 205 199 205 197 205 202 205 200 205 198 205 203 205 204 205 205 205 202 205 205 205 204 205 202 205 204 205 200 205 206 205 203 205 207 205 205 205 207 205 203 205 208 205 206 205 209 205 207 205 209 205 206 205 210 205 211 205 208 205 206 205 208 205 211 205 212 205 213 205 210 205 211 205 210 205 213 205 214 205 215 205 212 205 213 205 212 205 215 205 216 205 217 205 214 205 215 205 214 205 217 205 216 205 218 205 219 205 220 205 221 205 222 205 221 205 220 205 219 205 219 205 220 205 223 205 220 205 222 205 224 205 223 205 216 205 219 205 216 205 214 205 218 205 225 205 224 205 222 205 226 205 227 205 228 205 226 205 228 205 229 205 230 205 231 205 228 205 226 205 232 205 227 205 233 205 234 205 235 205 236 205 235 205 234 205 227 205 232 205 233 205 234 205 233 205 232 205 237 205 238 205 193 205 193 205 239 205 237 205 237 205 240 205 238 205 190 205 239 205 193 205 240 205 231 205 230 205 229 205 228 205 231 205 240 205 241 205 231 205 237 205 241 205 240 205 242 205 243 205 244 205 245 205 246 205 243 205 243 205 246 205 244 205 244 205 247 205 242 205 247 205 248 205 225 205 222 205 249 205 225 205 248 205 247 205 244 205 225 205 249 205 247 205 236 205 250 205 251 205 252 205 251 205 250 205 235 205 236 205 253 205 251 205 253 205 236 205 254 205 245 205 255 205 243 205 255 205 245 205 250 205 254 205 252 205 255 205 252 205 254 205 384 206 385 206 386 206 385 206 384 206 387 206 388 206 386 206 389 206 386 206 388 206 384 206 390 206 391 206 392 206 391 206 390 206 393 206 387 207 392 207 385 207 392 206 387 206 390 206 394 208 395 208 396 208 395 206 397 206 398 206 394 209 397 209 395 209 396 206 399 206 394 206 389 210 400 210 399 210 389 206 401 206 388 206 394 211 399 211 400 211 399 212 401 212 389 212 402 206 403 206 404 206 405 213 402 213 404 213 402 214 406 214 407 214 403 215 408 215 404 215 408 216 409 216 410 216 410 217 411 217 408 217 409 218 412 218 410 218 408 206 411 206 404 206 413 206 414 206 415 206 414 219 413 219 416 219 415 206 393 206 390 206 393 206 415 206 414 206 407 206 406 206 417 206 406 209 402 209 405 209 406 220 416 220 417 220 417 221 416 221 413 221 418 206 419 206 420 206 418 222 421 222 419 222 420 223 422 223 398 223 398 206 423 206 420 206 418 224 424 224 421 224 423 225 418 225 420 225 422 226 395 226 398 226 421 206 424 206 425 206 426 206 425 206 427 206 425 227 426 227 421 227 427 206 428 206 429 206 428 206 427 206 425 206 429 206 430 206 431 206 430 228 429 228 428 228 431 229 432 229 433 229 432 206 431 206 430 206 433 230 434 230 435 230 434 231 433 231 432 231 436 232 435 232 437 232 435 233 436 233 433 233 438 234 437 234 439 234 437 235 438 235 436 235 438 206 439 206 440 206 440 236 439 236 441 236 441 237 442 237 440 237 441 238 443 238 444 238 442 239 441 239 444 239 443 207 445 207 444 207 445 206 446 206 447 206 447 206 448 206 445 206 446 240 449 240 447 240 445 241 448 241 444 241 412 206 450 206 451 206 451 242 452 242 412 242 450 243 453 243 451 243 412 244 452 244 410 244 454 206 453 206 455 206 455 245 456 245 457 245 453 206 456 206 455 206 453 246 454 246 451 246 455 213 457 213 458 213 459 247 460 247 461 247 460 248 459 248 458 248 457 206 460 206 458 206 462 249 461 249 463 249 461 250 462 250 459 250 464 206 463 206 465 206 463 251 464 251 462 251 465 206 466 206 467 206 466 206 465 206 463 206 467 252 468 252 469 252 468 206 467 206 466 206 469 206 470 206 471 206 470 206 469 206 468 206 471 206 472 206 473 206 472 253 471 253 470 253 474 206 475 206 473 206 476 206 477 206 478 206 474 254 478 254 477 254 479 255 478 255 474 255 480 206 476 206 478 206 474 256 473 256 479 256 475 257 471 257 473 257 476 237 480 237 481 237 482 258 483 258 484 258 485 206 482 206 484 206 482 259 486 259 487 259 483 260 488 260 484 260 489 206 490 206 491 206 490 206 489 206 492 206 491 206 488 206 483 206 488 261 491 261 490 261 449 262 493 262 494 262 494 263 495 263 449 263 493 206 496 206 494 206 449 264 495 264 447 264 487 265 486 265 496 265 486 266 482 266 485 266 486 206 497 206 496 206 496 206 497 206 494 206 498 267 499 267 500 267 499 206 501 206 502 206 498 268 501 268 499 268 500 269 503 269 498 269 481 270 504 270 503 270 481 206 505 206 476 206 498 271 503 271 504 271 503 272 505 272 481 272 506 273 507 273 492 273 507 274 506 274 508 274 509 206 492 206 489 206 492 206 509 206 506 206 510 206 502 206 511 206 502 206 510 206 499 206 508 206 511 206 507 206 511 206 508 206 510 206

    + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    0 24 1 24 2 24 1 25 3 25 4 25 3 26 5 26 6 26 7 27 9 27 8 27 9 28 11 28 10 28 11 29 13 29 12 29 5 30 7 30 6 30 2 31 1 31 4 31 4 32 3 32 6 32 8 33 6 33 7 33 10 34 8 34 9 34 12 35 10 35 11 35 0 36 2 36 14 36 13 37 16 37 15 37 16 38 17 38 15 38 17 39 18 39 19 39 18 40 20 40 21 40 20 41 22 41 23 41 22 42 24 42 25 42 24 43 0 43 14 43 19 44 18 44 21 44 15 45 17 45 19 45 21 46 20 46 23 46 14 47 25 47 24 47 23 48 22 48 25 48 13 49 15 49 12 49 28 50 27 50 26 50 29 50 26 50 27 50 26 50 30 50 28 50 33 50 32 50 31 50 32 50 34 50 31 50 27 50 34 50 29 50 29 50 34 50 32 50 38 50 35 50 36 50 38 50 36 50 37 50 38 50 39 50 35 50 37 50 40 50 30 50 28 50 30 50 40 50 40 50 37 50 36 50 41 50 42 50 33 50 33 50 31 50 41 50 42 50 43 50 33 50 44 50 43 50 42 50 43 50 44 50 45 50 46 50 45 50 44 50 47 50 45 50 46 50 48 50 47 50 46 50 49 50 47 50 48 50 50 50 51 50 49 50 48 50 50 50 49 50 52 50 53 50 39 50 52 50 54 50 53 50 38 50 52 50 39 50 55 50 54 50 52 50 56 50 54 50 55 50 55 50 57 50 56 50 58 50 56 50 57 50 57 50 59 50 58 50 60 50 58 50 59 50 58 50 60 50 61 50 61 50 60 50 62 50 63 50 62 50 64 50 63 50 64 50 65 50 63 50 61 50 62 50 66 50 68 50 67 50 70 50 69 50 68 50 67 50 68 50 69 50 71 50 72 50 51 50 50 50 71 50 51 50 72 50 66 50 67 50 72 50 71 50 66 50 73 50 75 50 65 50 75 50 73 50 74 50 65 50 64 50 73 50 76 50 69 50 70 50 70 50 74 50 76 50 73 50 76 50 74 50 102 51 101 51 103 51 101 51 102 51 104 51 103 51 105 51 102 51 107 52 106 52 108 52 107 53 109 53 106 53 104 51 109 51 101 51 106 54 109 54 104 54 110 55 111 55 114 55 112 51 110 51 114 51 111 56 113 56 114 56 105 57 115 57 112 57 115 51 105 51 103 51 110 51 112 51 115 51 108 51 117 51 116 51 116 51 107 51 108 51 108 58 118 58 117 58 117 51 118 51 119 51 120 51 119 51 118 51 119 51 120 51 121 51 121 51 120 51 122 51 121 59 122 59 123 59 123 60 122 60 124 60 124 51 125 51 126 51 124 51 126 51 123 51 113 61 127 61 128 61 127 62 129 62 128 62 113 51 128 51 114 51 128 63 129 63 130 63 130 51 129 51 131 51 131 51 132 51 130 51 132 64 131 64 133 64 133 65 134 65 132 65 134 51 133 51 135 51 136 51 135 51 133 51 137 66 135 66 136 66 138 51 137 51 139 51 140 51 138 51 139 51 137 51 136 51 139 51 141 67 143 67 142 67 143 68 144 68 145 68 144 51 143 51 141 51 125 69 146 69 147 69 125 51 147 51 126 51 141 70 142 70 146 70 142 71 147 71 146 71 140 72 150 72 149 72 148 73 149 73 150 73 149 74 138 74 140 74 151 75 152 75 145 75 145 76 144 76 151 76 151 51 148 51 152 51 148 51 151 51 149 51

    diff --git a/simulateur/3d/mod_lun_jaune_old.dae b/simulateur/3d/mod_lun_jaune_old.dae new file mode 100644 index 0000000..d666506 --- /dev/null +++ b/simulateur/3d/mod_lun_jaune_old.dae @@ -0,0 +1,136 @@ + + + + + Blender User + Blender 2.77.0 commit date:1970-01-01, commit time:00:00, hash:unknown + + 2017-01-21T17:02:53 + 2017-01-21T17:02:53 + + Z_UP + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.5992157 0.5992157 0.5992157 1 + + + 0.075 0.075 0.075 1 + + + 50 + + + 1 + + + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.774902 0.5678431 0 1 + + + 0.075 0.075 0.075 1 + + + 50 + + + 1 + + + + + + + + + + + + + + + + + + + -0.01978415 0 -0.02451205 -0.02209138 0 -0.02245479 -0.02209138 0.1 -0.02245479 -0.02418607 0 -0.02018123 -0.0260477 0 -0.01771348 -0.0260477 0.1 -0.01771348 -0.02418607 0.1 -0.02018123 -0.02765852 0 -0.01507502 -0.02900296 0 -0.01229155 -0.02900296 0.1 -0.01229155 -0.03006803 0 -0.009389519 -0.03084361 0 -0.006397128 -0.03084361 0.1 -0.006397128 -0.03006803 0.1 -0.009389519 -0.02765852 0.1 -0.01507502 -0.03132212 0 -0.003343105 -0.03149896 0 -2.56896e-4 -0.03149896 0.1 -2.56896e-4 -0.03137248 0 0.002831697 -0.03094387 0 0.005893111 -0.03094387 0.1 0.005893111 -0.03137248 0.1 0.002831697 -0.03021723 0 0.008897781 -0.0291996 0 0.01181674 -0.0291996 0.1 0.01181674 -0.02790081 0 0.01462185 -0.02633327 0 0.01728618 -0.02633327 0.1 0.01728618 -0.02790081 0.1 0.01462185 -0.03021723 0.1 0.008897781 -0.03132212 0.1 -0.003343105 -0.02451211 0 0.01978409 -0.02245479 0 0.02209144 -0.02245479 0.1 0.02209144 -0.02018135 0 0.02418601 -0.0177136 0 0.0260477 -0.0177136 0.1 0.0260477 -0.02018135 0.1 0.02418601 -0.01507514 0 0.02765846 -0.01229161 0 0.0290029 -0.01229161 0.1 0.0290029 -0.009389638 0 0.03006798 -0.006397247 0 0.03084361 -0.006397247 0.1 0.03084361 -0.009389638 0.1 0.03006798 -0.01507514 0.1 0.02765846 -0.003343164 0 0.03132212 -2.57015e-4 0 0.03149896 -2.57015e-4 0.1 0.03149896 0.002831578 0 0.03137236 0.005892992 0 0.03094387 0.005892992 0.1 0.03094387 0.002831578 0.1 0.03137236 0.008897721 0 0.03021723 0.01181668 0 0.0291996 0.01181668 0.1 0.0291996 0.01462179 0 0.02790081 0.01728618 0 0.02633321 0.01728618 0.1 0.02633321 0.01462179 0.1 0.02790081 0.008897721 0.1 0.03021723 -0.003343164 0.1 0.03132212 -0.02451211 0.1 0.01978409 -0.01978415 0.1 -0.02451205 0.01978403 0 0.02451205 -0.0172863 0.1 -0.02633321 0.02209126 0 0.02245479 0.02209126 0.1 0.02245479 0.02418595 0 0.02018135 0.02604752 0 0.01771348 0.02604752 0.1 0.01771348 0.02418595 0.1 0.02018135 0.0276584 0 0.01507514 0.02900284 0 0.01229155 0.02900284 0.1 0.01229155 0.03006798 0 0.009389638 0.03084349 0 0.006397247 0.03084349 0.1 0.006397247 0.03006798 0.1 0.009389638 0.0276584 0.1 0.01507514 0.031322 0 0.003343164 0.03149884 0 2.57015e-4 0.03149884 0.1 2.57015e-4 0.03137236 0 -0.002831697 0.03094375 0 -0.005893111 0.03094375 0.1 -0.005893111 0.03137236 0.1 -0.002831697 0.03021717 0 -0.008897662 0.02919954 0 -0.01181662 0.02919954 0.1 -0.01181662 0.02790069 0 -0.01462185 0.02633315 0 -0.01728618 0.02633315 0.1 -0.01728618 0.02790069 0.1 -0.01462185 0.03021717 0.1 -0.008897662 0.031322 0.1 0.003343164 0.02451199 0 -0.01978409 0.02245467 0 -0.02209132 0.02245467 0.1 -0.02209132 0.02018123 0 -0.02418601 0.01771342 0 -0.02604752 0.01771342 0.1 -0.02604752 0.02018123 0.1 -0.02418601 0.01507502 0 -0.02765846 0.01229149 0 -0.0290029 0.01229149 0.1 -0.0290029 0.009389519 0 -0.03006798 0.006397128 0 -0.03084349 0.006397128 0.1 -0.03084349 0.009389519 0.1 -0.03006798 0.01507502 0.1 -0.02765846 0.003343105 0 -0.03132212 2.56896e-4 0 -0.03149884 2.56896e-4 0.1 -0.03149884 -0.002831757 0 -0.03137236 -0.005893111 0 -0.03094375 -0.005893111 0.1 -0.03094375 -0.002831757 0.1 -0.03137236 -0.00889784 0 -0.03021717 -0.01181674 0 -0.0291996 -0.01181674 0.1 -0.0291996 -0.01462191 0 -0.02790069 -0.0172863 0 -0.02633321 -0.01462191 0.1 -0.02790069 -0.00889784 0.1 -0.03021717 0.003343105 0.1 -0.03132212 0.02451199 0.1 -0.01978409 0.01978403 0.1 0.02451205 -0.01170629 0 0.02762186 -0.008942484 0 0.02863615 -0.009389638 0 0.03006798 -0.006397247 0 0.03084361 -0.01435726 0 0.02634137 -0.01229161 0 0.0290029 -0.006092548 0 0.02937477 -0.00318402 0 0.02983057 -0.003343164 0 0.03132212 -2.44796e-4 0 0.02999895 -0.02018135 0 0.02418601 -0.02245479 0 0.02209144 -0.01922041 0 0.02303433 -0.02334487 0 0.01884198 -0.02138561 0 0.02103948 -0.0177136 0 0.0260477 -0.01687008 0 0.02480733 -0.01507514 0 0.02765846 0.01392555 0 0.02657204 0.01462179 0 0.02790081 0.01181668 0 0.0291996 0.01125395 0 0.02780914 0.008897721 0 0.03021723 0.008473992 0 0.02877831 0.01728618 0 0.02633321 0.01884192 0 0.02334487 0.01978403 0 0.02451205 0.01646298 0 0.02507925 0.02209126 0 0.02245479 -2.57015e-4 0 0.03149896 0.002696812 0 0.02987861 0.002831578 0 0.03137236 0.005612373 0 0.02947032 0.005892992 0 0.03094387 -0.02633327 0 0.01728618 -0.02790081 0 0.01462185 -0.0265721 0 0.01392567 -0.0291996 0 0.01181674 -0.02451211 0 0.01978409 -0.02507925 0 0.01646304 -0.0278092 0 0.01125407 -0.02877837 0 0.008474111 -0.03094387 0 0.005893111 -0.03021723 0 0.008897781 -0.03137248 0 0.002831697 -0.02947038 0 0.005612432 -0.03149896 0 -2.56896e-4 -0.02987861 0 0.002696812 -0.03132212 0 -0.003343105 -0.02999901 0 -2.44737e-4 -0.02937483 0 -0.006092548 -0.02983063 0 -0.003183901 -0.02863621 0 -0.008942484 -0.03084361 0 -0.006397128 -0.02762186 0 -0.01170623 -0.03006803 0 -0.009389519 -0.02900296 0 -0.01229155 -0.02634137 0 -0.01435714 -0.02765852 0 -0.01507502 -0.0260477 0 -0.01771348 -0.02480733 0 -0.01687002 -0.02303433 0 -0.01922035 -0.02209138 0 -0.02245479 -0.02103948 0 -0.02138555 -0.02418607 0 -0.02018123 -0.01884204 0 -0.02334475 0.02303421 0 0.01922035 0.02418595 0 0.02018135 0.0210393 0 0.02138555 0.02604752 0 0.01771348 0.02634125 0 0.01435726 0.02480721 0 0.01687014 0.02900284 0 0.01229155 0.0276584 0 0.01507514 0.02762174 0 0.01170623 0.03084349 0 0.006397247 0.03006798 0 0.009389638 0.02863609 0 0.008942484 0.031322 0 0.003343164 0.02937471 0 0.006092548 0.02999889 0 2.44737e-4 0.02983051 0 0.003183901 0.02987843 0 -0.002696812 0.03149884 0 2.57015e-4 0.02947026 0 -0.005612432 0.03137236 0 -0.002831697 0.02877825 0 -0.008473992 0.03094375 0 -0.005893111 0.02919954 0 -0.01181662 0.03021717 0 -0.008897662 0.02780908 0 -0.01125395 0.02657198 0 -0.01392555 0.02633315 0 -0.01728618 0.02507919 0 -0.01646304 0.02334475 0 -0.01884198 0.02790069 0 -0.01462185 0.02451199 0 -0.01978409 0.02245467 0 -0.02209132 -0.005893111 0 -0.03094375 -0.005612552 0 -0.02947032 -0.008474111 0 -0.02877831 -0.00889784 0 -0.03021717 -0.01125407 0 -0.02780914 -0.01181674 0 -0.0291996 -0.002831757 0 -0.03137236 -0.002696931 0 -0.02987843 2.56896e-4 0 -0.03149884 2.44677e-4 0 -0.02999895 0.003343105 0 -0.03132212 -0.0172863 0 -0.02633321 -0.0164631 0 -0.02507925 -0.01978415 0 -0.02451205 -0.01392567 0 -0.02657204 -0.01462191 0 -0.02790069 0.01686996 0 -0.02480721 0.01435714 0 -0.02634125 0.01771342 0 -0.02604752 0.01229149 0 -0.0290029 0.01507502 0 -0.02765846 0.01922029 0 -0.02303421 0.02018123 0 -0.02418601 0.02138549 0 -0.0210393 0.006397128 0 -0.03084349 0.006092429 0 -0.02937477 0.008942365 0 -0.02863615 0.003183901 0 -0.02983057 0.009389519 0 -0.03006798 0.01170617 0 -0.02762174 -0.02103948 0.1 -0.02138555 -0.02103948 0 -0.02138555 -0.01884204 0 -0.02334475 -0.02480733 0.1 -0.01687002 -0.02480733 0 -0.01687002 -0.02303433 0 -0.01922035 -0.02303433 0.1 -0.01922035 -0.02762186 0.1 -0.01170623 -0.02762186 0 -0.01170623 -0.02634137 0 -0.01435714 -0.02937483 0.1 -0.006092548 -0.02937483 0 -0.006092548 -0.02863621 0 -0.008942484 -0.02863621 0.1 -0.008942484 -0.02634137 0.1 -0.01435714 -0.02999901 0.1 -2.44737e-4 -0.02999901 0 -2.44737e-4 -0.02983063 0 -0.003183901 -0.02947038 0.1 0.005612432 -0.02947038 0 0.005612432 -0.02987861 0 0.002696812 -0.02987861 0.1 0.002696812 -0.0278092 0.1 0.01125407 -0.0278092 0 0.01125407 -0.02877837 0 0.008474111 -0.02507925 0.1 0.01646304 -0.02507925 0 0.01646304 -0.0265721 0 0.01392567 -0.0265721 0.1 0.01392567 -0.02877837 0.1 0.008474111 -0.02983063 0.1 -0.003183901 -0.02138561 0.1 0.02103948 -0.02138561 0 0.02103948 -0.02334487 0 0.01884198 -0.01687008 0.1 0.02480733 -0.01687008 0 0.02480733 -0.01922041 0 0.02303433 -0.01922041 0.1 0.02303433 -0.01170629 0.1 0.02762186 -0.01170629 0 0.02762186 -0.01435726 0 0.02634137 -0.006092548 0.1 0.02937477 -0.006092548 0 0.02937477 -0.008942484 0 0.02863615 -0.008942484 0.1 0.02863615 -0.01435726 0.1 0.02634137 -2.44796e-4 0.1 0.02999895 -2.44796e-4 0 0.02999895 -0.00318402 0 0.02983057 0.005612373 0.1 0.02947032 0.005612373 0 0.02947032 0.002696812 0 0.02987861 0.002696812 0.1 0.02987861 0.01125395 0.1 0.02780914 0.01125395 0 0.02780914 0.008473992 0 0.02877831 0.01646298 0.1 0.02507925 0.01646298 0 0.02507925 0.01392555 0 0.02657204 0.01392555 0.1 0.02657204 0.008473992 0.1 0.02877831 -0.00318402 0.1 0.02983057 -0.02334487 0.1 0.01884198 -0.01884204 0.1 -0.02334475 0.01884192 0 0.02334487 -0.0164631 0.1 -0.02507925 0.0210393 0.1 0.02138555 0.0210393 0 0.02138555 0.02480721 0.1 0.01687014 0.02480721 0 0.01687014 0.02303421 0 0.01922035 0.02303421 0.1 0.01922035 0.02762174 0.1 0.01170623 0.02762174 0 0.01170623 0.02634125 0 0.01435726 0.02937471 0.1 0.006092548 0.02937471 0 0.006092548 0.02863609 0 0.008942484 0.02863609 0.1 0.008942484 0.02634125 0.1 0.01435726 0.02999889 0.1 2.44737e-4 0.02999889 0 2.44737e-4 0.02983051 0 0.003183901 0.02947026 0.1 -0.005612432 0.02947026 0 -0.005612432 0.02987843 0 -0.002696812 0.02987843 0.1 -0.002696812 0.02780908 0.1 -0.01125395 0.02780908 0 -0.01125395 0.02877825 0 -0.008473992 0.02507919 0.1 -0.01646304 0.02507919 0 -0.01646304 0.02657198 0 -0.01392555 0.02657198 0.1 -0.01392555 0.02877825 0.1 -0.008473992 0.02983051 0.1 0.003183901 0.02138549 0.1 -0.0210393 0.02138549 0 -0.0210393 0.02334475 0 -0.01884198 0.01686996 0.1 -0.02480721 0.01686996 0 -0.02480721 0.01922029 0 -0.02303421 0.01922029 0.1 -0.02303421 0.01170617 0.1 -0.02762174 0.01170617 0 -0.02762174 0.01435714 0 -0.02634125 0.006092429 0.1 -0.02937477 0.006092429 0 -0.02937477 0.008942365 0 -0.02863615 0.008942365 0.1 -0.02863615 0.01435714 0.1 -0.02634125 2.44677e-4 0.1 -0.02999895 2.44677e-4 0 -0.02999895 0.003183901 0 -0.02983057 -0.005612552 0.1 -0.02947032 -0.005612552 0 -0.02947032 -0.002696931 0 -0.02987843 -0.002696931 0.1 -0.02987843 -0.01125407 0.1 -0.02780914 -0.01125407 0 -0.02780914 -0.008474111 0 -0.02877831 -0.0164631 0 -0.02507925 -0.01392567 0 -0.02657204 -0.01392567 0.1 -0.02657204 -0.008474111 0.1 -0.02877831 0.003183901 0.1 -0.02983057 0.02334475 0.1 -0.01884198 0.01884192 0.1 0.02334487 -0.009389638 0.1 0.03006798 -0.008942484 0.1 0.02863615 -0.01170629 0.1 0.02762186 -0.006397247 0.1 0.03084361 -0.01229161 0.1 0.0290029 -0.01435726 0.1 0.02634137 -0.003343164 0.1 0.03132212 -0.00318402 0.1 0.02983057 -0.006092548 0.1 0.02937477 -2.44796e-4 0.1 0.02999895 -0.01922041 0.1 0.02303433 -0.02245479 0.1 0.02209144 -0.02018135 0.1 0.02418601 -0.02138561 0.1 0.02103948 -0.02334487 0.1 0.01884198 -0.0177136 0.1 0.0260477 -0.01687008 0.1 0.02480733 -0.01507514 0.1 0.02765846 0.01181668 0.1 0.0291996 0.01462179 0.1 0.02790081 0.01392555 0.1 0.02657204 0.01125395 0.1 0.02780914 0.008473992 0.1 0.02877831 0.008897721 0.1 0.03021723 0.01728618 0.1 0.02633321 0.01978403 0.1 0.02451205 0.01884192 0.1 0.02334487 0.01646298 0.1 0.02507925 0.02209126 0.1 0.02245479 0.002831578 0.1 0.03137236 0.002696812 0.1 0.02987861 -2.57015e-4 0.1 0.03149896 0.005612373 0.1 0.02947032 0.005892992 0.1 0.03094387 -0.0265721 0.1 0.01392567 -0.02790081 0.1 0.01462185 -0.02633327 0.1 0.01728618 -0.0291996 0.1 0.01181674 -0.02451211 0.1 0.01978409 -0.02507925 0.1 0.01646304 -0.0278092 0.1 0.01125407 -0.02877837 0.1 0.008474111 -0.03021723 0.1 0.008897781 -0.03094387 0.1 0.005893111 -0.02947038 0.1 0.005612432 -0.03137248 0.1 0.002831697 -0.02987861 0.1 0.002696812 -0.03149896 0.1 -2.56896e-4 -0.02999901 0.1 -2.44737e-4 -0.03132212 0.1 -0.003343105 -0.02983063 0.1 -0.003183901 -0.02937483 0.1 -0.006092548 -0.03084361 0.1 -0.006397128 -0.02863621 0.1 -0.008942484 -0.03006803 0.1 -0.009389519 -0.02762186 0.1 -0.01170623 -0.02900296 0.1 -0.01229155 -0.02634137 0.1 -0.01435714 -0.02765852 0.1 -0.01507502 -0.02480733 0.1 -0.01687002 -0.0260477 0.1 -0.01771348 -0.02303433 0.1 -0.01922035 -0.02103948 0.1 -0.02138555 -0.02209138 0.1 -0.02245479 -0.02418607 0.1 -0.02018123 -0.01884204 0.1 -0.02334475 0.02418595 0.1 0.02018135 0.02303421 0.1 0.01922035 0.0210393 0.1 0.02138555 0.02604752 0.1 0.01771348 0.02480721 0.1 0.01687014 0.02634125 0.1 0.01435726 0.0276584 0.1 0.01507514 0.02900284 0.1 0.01229155 0.02762174 0.1 0.01170623 0.02863609 0.1 0.008942484 0.03006798 0.1 0.009389638 0.03084349 0.1 0.006397247 0.02937471 0.1 0.006092548 0.031322 0.1 0.003343164 0.02983051 0.1 0.003183901 0.02999889 0.1 2.44737e-4 0.03149884 0.1 2.57015e-4 0.02987843 0.1 -0.002696812 0.03137236 0.1 -0.002831697 0.02947026 0.1 -0.005612432 0.03094375 0.1 -0.005893111 0.02877825 0.1 -0.008473992 0.03021717 0.1 -0.008897662 0.02919954 0.1 -0.01181662 0.02657198 0.1 -0.01392555 0.02780908 0.1 -0.01125395 0.02334475 0.1 -0.01884198 0.02507919 0.1 -0.01646304 0.02633315 0.1 -0.01728618 0.02790069 0.1 -0.01462185 0.02451199 0.1 -0.01978409 0.02245467 0.1 -0.02209132 -0.008474111 0.1 -0.02877831 -0.005612552 0.1 -0.02947032 -0.005893111 0.1 -0.03094375 -0.00889784 0.1 -0.03021717 -0.01181674 0.1 -0.0291996 -0.01125407 0.1 -0.02780914 -0.002831757 0.1 -0.03137236 2.44677e-4 0.1 -0.02999895 2.56896e-4 0.1 -0.03149884 -0.002696931 0.1 -0.02987843 0.003343105 0.1 -0.03132212 -0.0164631 0.1 -0.02507925 -0.0172863 0.1 -0.02633321 -0.01978415 0.1 -0.02451205 -0.01392567 0.1 -0.02657204 -0.01462191 0.1 -0.02790069 0.01771342 0.1 -0.02604752 0.01435714 0.1 -0.02634125 0.01686996 0.1 -0.02480721 0.01507502 0.1 -0.02765846 0.01229149 0.1 -0.0290029 0.01922029 0.1 -0.02303421 0.02018123 0.1 -0.02418601 0.02138549 0.1 -0.0210393 0.006092429 0.1 -0.02937477 0.006397128 0.1 -0.03084349 0.008942365 0.1 -0.02863615 0.003183901 0.1 -0.02983057 0.01170617 0.1 -0.02762174 0.009389519 0.1 -0.03006798 + + + + + + + + + + 0.6654863 0 0.7464101 0.7983253 0 0.6022264 0.735446 0 0.6775833 0.9004651 0 0.4349284 0.9680176 0 0.2508822 0.9387626 0 0.3445649 0.8535105 0 0.5210757 0.998362 0 0.05721408 0.9903397 0 -0.1386623 0.9991626 0 -0.04091578 0.9442619 0 -0.3291953 0.8618913 0 -0.5070932 0.9074425 0 -0.4201765 0.9719834 0 -0.2350495 0.987946 0 0.1547986 0.7464084 0 -0.6654882 0.6022255 0 -0.798326 0.6775838 0 -0.7354456 0.4349215 0 -0.9004684 0.2508876 0 -0.9680163 0.3445418 0 -0.9387711 0.5210857 0 -0.8535044 0.05721497 0 -0.998362 -0.1386828 0 -0.9903368 -0.04089462 0 -0.9991635 -0.329196 0 -0.9442617 -0.5070816 0 -0.8618981 -0.4201759 0 -0.9074427 -0.2350541 0 -0.9719823 0.1547984 0 -0.9879462 0.8080421 0 -0.5891247 0.7354456 0 0.6775838 0.9004648 0 0.434929 0.9680177 0 0.250882 0.9387626 0 0.3445648 0.9442618 0 -0.3291954 0.987946 0 0.1547986 0.7464091 0 -0.6654874 0.6022265 0 -0.7983253 0.4349202 0 -0.9004691 0.2508861 0 -0.9680166 0.3445391 0 -0.9387721 0.5210846 0 -0.8535051 0.05721342 0 -0.9983621 -0.04089617 0 -0.9991634 -0.3291947 0 -0.9442622 -0.5070828 0 -0.8618974 0.8080424 0 -0.5891244 -0.5891133 0 -0.8080504 0.5891405 0 0.8080307 -0.6655095 0 -0.7463894 -0.7983107 0 -0.6022458 -0.735446 0 -0.6775833 -0.9004727 0 -0.4349126 -0.9680179 0 -0.2508816 -0.9387626 0 -0.3445649 -0.85351 0 -0.5210765 -0.998362 0 -0.05721408 -0.9903397 0 0.1386623 -0.9991626 0 0.04091638 -0.9442618 0 0.3291956 -0.8619033 0 0.5070728 -0.9074425 0 0.4201765 -0.9719812 0 0.2350587 -0.987946 0 -0.1547993 -0.7463902 0 0.6655086 -0.6022255 0 0.798326 -0.6775841 0 0.7354453 -0.4349202 0 0.9004691 -0.2508876 0 0.9680163 -0.3445767 0 0.9387582 -0.5210856 0 0.8535045 -0.05721497 0 0.998362 0.1386409 0 0.9903427 0.04093569 0 0.9991618 0.3291959 0 0.9442617 0.5070815 0 0.8618981 0.4201759 0 0.9074427 0.2350541 0 0.9719824 -0.1547984 0 0.9879462 -0.8080403 0 0.5891273 -0.7354456 0 -0.6775838 -0.9004727 0 -0.4349129 -0.9680179 0 -0.2508814 -0.9387626 0 -0.3445648 -0.8535103 0 -0.5210762 -0.9442618 0 0.3291954 -0.8619035 0 0.5070724 -0.987946 0 -0.1547992 -0.7463909 0 0.6655078 -0.6022265 0 0.7983253 -0.2508861 0 0.9680166 -0.05721342 0 0.9983621 0.138644 0 0.9903424 0.04093724 0 0.9991618 0.3291946 0 0.9442622 0.5070827 0 0.8618975 -0.8080406 0 0.5891268 -0.665498 0 -0.7463997 -0.798317 0 -0.6022376 -0.7354544 0 -0.6775743 -0.9004675 0 -0.4349234 -0.9680194 0 -0.2508757 -0.9387662 0 -0.3445551 -0.8535082 0 -0.5210795 -0.9983614 0 -0.05722528 -0.9903387 0 0.1386705 -0.9991626 0 0.04091668 -0.9442617 0 0.3291957 -0.8618938 0 0.5070889 -0.9074449 0 0.4201712 -0.9719844 0 0.2350454 -0.9879468 0 -0.1547939 -0.7464076 0 0.6654891 -0.6022416 0 0.798314 -0.6775727 0 0.7354559 -0.434916 0 0.900471 -0.2508946 0 0.9680145 -0.3445609 0 0.938764 -0.5210741 0 0.8535116 -0.05722558 0 0.9983614 0.1386335 0 0.9903438 0.04095411 0 0.9991611 0.3292114 0 0.9442563 0.5070955 0 0.8618898 0.4201564 0 0.9074518 0.2350469 0 0.9719841 -0.1547945 0 0.9879468 -0.8080436 0 0.5891228 -0.6654971 0 -0.7464004 -0.7983173 0 -0.6022372 -0.9004672 0 -0.434924 -0.9680194 0 -0.2508756 -0.9387662 0 -0.3445549 -0.9903386 0 0.1386704 -0.9442617 0 0.3291958 -0.8618936 0 0.5070892 -0.9074448 0 0.4201714 -0.9879469 0 -0.1547939 -0.7464083 0 0.6654884 -0.6022406 0 0.7983147 -0.6775718 0 0.7354566 -0.2508932 0 0.9680148 0.138632 0 0.990344 0.0409556 0 0.999161 0.3292087 0 0.9442573 0.4201589 0 0.9074506 0.235044 0 0.9719848 -0.154793 0 0.9879469 -0.8080433 0 0.5891232 0.5891321 0 0.8080368 -0.5891312 0 -0.8080375 0.6654977 0 0.7463999 0.7983312 0 0.6022187 0.7354364 0 0.6775938 0.9004748 0 0.4349083 0.96802 0 0.2508729 0.9387606 0 0.3445702 0.8534972 0 0.5210977 0.9983612 0 0.05722647 0.9903385 0 -0.1386711 0.9991626 0 -0.04091513 0.9442616 0 -0.3291962 0.8618936 0 -0.5070893 0.9074505 0 -0.420159 0.9719831 0 -0.2350509 0.987947 0 0.1547927 0.7463909 0 -0.6655078 0.6022163 0 -0.7983331 0.6775934 0 -0.7354369 0.434916 0 -0.900471 0.2508578 0 -0.968024 0.3445609 0 -0.938764 0.5211027 0 -0.853494 0.05718654 0 -0.9983635 -0.1386719 0 -0.9903385 -0.0409165 0 -0.9991626 -0.32918 0 -0.9442672 -0.5070675 0 -0.8619065 -0.4201887 0 -0.9074367 -0.2350426 0 -0.9719851 0.1548327 0 -0.9879407 0.8080436 0 -0.5891228 0.6654968 0 0.7464007 0.7983315 0 0.6022183 0.7354371 0 0.6775931 0.9387607 0 0.34457 0.8534975 0 0.521097 0.9903386 0 -0.138671 0.9442617 0 -0.3291958 0.8618933 0 -0.5070896 0.9074507 0 -0.4201587 0.9719832 0 -0.2350507 0.7463903 0 -0.6655086 0.6022153 0 -0.7983338 0.6775941 0 -0.7354361 -0.1386705 0 -0.9903386 -0.04091501 0 -0.9991627 -0.3291787 0 -0.9442677 -0.5070652 0 -0.8619077 -0.2350412 0 -0.9719855 0.1548298 0 -0.9879412 0.8080433 0 -0.5891232 -0.5891321 0 -0.8080368 0.5891312 0 0.8080375 0 -1 0 0 1 0 0 1 1.31965e-5 0 1 6.28445e-6 0 1 3.29915e-6 0 1 -3.29915e-6 0 1 -3.29912e-6 0 1 3.14216e-6 0 1 6.5982e-6 0 1 -3.14193e-6 0 1 -1.25674e-5 0 1 6.28435e-6 0 1 -3.29913e-6 0 1 -1.25688e-5 0 1 1.31977e-5 0 1 -5.77346e-6 0 1 -1.2568e-5 0 1 -6.28425e-6 0 1 -3.14202e-6 0 1 6.59836e-6 0 1 4.12411e-6 0 1 -3.14197e-6 0 1 -3.1421e-6 0 1 6.59835e-6 0 1 6.28415e-6 0 1 3.29925e-6 0 1 -6.59855e-6 0 1 -3.29921e-6 0 1 1.57106e-6 0 1 -3.29925e-6 0 1 3.14211e-6 0 1 -6.59844e-6 0 1 6.28413e-6 0 1 -6.59821e-6 0 1 -1.57098e-6 0 1 -1.31969e-5 0 1 -6.28441e-6 0 1 3.29915e-6 0 1 1.25678e-5 0 1 6.59823e-6 0 1 -6.28393e-6 0 1 -6.59879e-6 0 1 -3.14204e-6 0 1 3.29914e-6 0 1 1.57103e-6 0 1 -3.29914e-6 0 1 1.64962e-6 0 1 -6.59835e-6 0 1 6.28437e-6 0 1 -6.59842e-6 0 1 3.92747e-6 0 1 -6.28381e-6 0 1 1.6496e-6 0 1 -2.47454e-6 0 1 -3.29916e-6 0 1 -1.25689e-5 0 1 1.25684e-5 0 1 -3.29906e-6 0 1 -3.14196e-6 0 1 6.28401e-6 0 1 -6.59822e-6 0 1 3.14219e-6 0 1 1.31966e-5 0 1 -3.14189e-6 0 1 6.59824e-6 0 1 -3.14195e-6 0 1 3.14202e-6 0 1 3.29915e-6 0 1 1.25688e-5 0 1 -1.31975e-5 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    256 0 257 0 258 0 259 1 260 1 261 1 262 2 261 2 257 2 263 3 264 3 265 3 266 4 267 4 268 4 269 5 268 5 264 5 270 6 265 6 260 6 271 7 272 7 273 7 274 8 275 8 276 8 277 9 276 9 272 9 278 10 279 10 280 10 281 11 282 11 283 11 284 12 283 12 279 12 285 13 280 13 275 13 286 14 273 14 267 14 287 15 288 15 289 15 290 16 291 16 292 16 293 17 292 17 288 17 294 18 295 18 296 18 297 19 298 19 299 19 300 20 299 20 295 20 301 21 296 21 291 21 302 22 303 22 304 22 305 23 306 23 307 23 308 24 307 24 303 24 309 25 310 25 311 25 312 26 313 26 314 26 315 27 314 27 310 27 316 28 311 28 306 28 317 29 304 29 298 29 318 30 289 30 282 30 258 0 319 0 256 0 261 1 262 1 259 1 262 31 257 31 256 31 265 32 270 32 263 32 268 33 269 33 266 33 269 34 264 34 263 34 270 6 260 6 259 6 273 7 286 7 271 7 276 8 277 8 274 8 277 9 272 9 271 9 280 35 285 35 278 35 283 11 284 11 281 11 284 12 279 12 278 12 285 13 275 13 274 13 286 36 267 36 266 36 289 37 318 37 287 37 292 38 293 38 290 38 293 17 288 17 287 17 296 39 301 39 294 39 299 40 300 40 297 40 300 41 295 41 294 41 301 42 291 42 290 42 304 43 317 43 302 43 307 23 308 23 305 23 308 44 303 44 302 44 311 45 316 45 309 45 314 46 315 46 312 46 315 27 310 27 309 27 316 28 306 28 305 28 317 29 298 29 297 29 318 47 282 47 281 47 312 48 320 48 313 48 321 49 319 49 258 49 322 50 323 50 320 50 324 51 325 51 326 51 327 52 326 52 323 52 328 53 329 53 330 53 331 54 332 54 333 54 334 55 333 55 329 55 335 56 330 56 325 56 336 57 337 57 338 57 339 58 340 58 341 58 342 59 341 59 337 59 343 60 344 60 345 60 346 61 347 61 348 61 349 62 348 62 344 62 350 63 345 63 340 63 351 64 338 64 332 64 352 65 353 65 354 65 355 66 356 66 357 66 358 67 357 67 353 67 359 68 360 68 361 68 362 69 363 69 364 69 365 70 364 70 360 70 366 71 361 71 356 71 367 72 368 72 369 72 370 73 371 73 372 73 373 74 372 74 368 74 374 75 375 75 376 75 321 76 377 76 378 76 379 77 378 77 375 77 380 78 376 78 371 78 381 79 369 79 363 79 382 80 354 80 347 80 320 50 383 50 322 50 326 51 327 51 324 51 327 81 323 81 322 81 330 82 335 82 328 82 333 83 334 83 331 83 334 84 329 84 328 84 335 85 325 85 324 85 338 57 351 57 336 57 341 58 342 58 339 58 342 59 337 59 336 59 345 86 350 86 343 86 348 87 349 87 346 87 349 62 344 62 343 62 350 63 340 63 339 63 351 88 332 88 331 88 354 89 382 89 352 89 357 90 358 90 355 90 358 67 353 67 352 67 361 68 366 68 359 68 364 91 365 91 362 91 365 70 360 70 359 70 366 71 356 71 355 71 369 92 381 92 367 92 372 93 373 93 370 93 373 94 368 94 367 94 376 95 380 95 374 95 378 96 379 96 321 96 379 77 375 77 374 77 380 78 371 78 370 78 381 79 363 79 362 79 382 97 347 97 346 97 321 49 258 49 377 49 312 48 383 48 320 48

    +
    + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

    0 98 1 98 2 98 3 99 4 99 5 99 1 100 3 100 6 100 7 101 8 101 9 101 10 102 11 102 12 102 8 103 10 103 13 103 4 104 7 104 14 104 15 105 16 105 17 105 18 106 19 106 20 106 16 107 18 107 21 107 22 108 23 108 24 108 25 109 26 109 27 109 23 110 25 110 28 110 19 111 22 111 29 111 11 112 15 112 30 112 31 113 32 113 33 113 34 114 35 114 36 114 32 115 34 115 37 115 38 116 39 116 40 116 41 117 42 117 43 117 39 118 41 118 44 118 35 119 38 119 45 119 46 120 47 120 48 120 49 121 50 121 51 121 47 122 49 122 52 122 53 123 54 123 55 123 56 124 57 124 58 124 54 125 56 125 59 125 50 126 53 126 60 126 42 127 46 127 61 127 26 128 31 128 62 128 0 129 2 129 63 129 5 130 6 130 3 130 2 100 1 100 6 100 9 131 14 131 7 131 12 132 13 132 10 132 9 133 8 133 13 133 5 104 4 104 14 104 17 105 30 105 15 105 20 134 21 134 18 134 17 107 16 107 21 107 24 135 29 135 22 135 27 136 28 136 25 136 24 137 23 137 28 137 20 111 19 111 29 111 12 138 11 138 30 138 33 139 62 139 31 139 36 140 37 140 34 140 33 141 32 141 37 141 40 116 45 116 38 116 43 142 44 142 41 142 40 118 39 118 44 118 36 119 35 119 45 119 48 120 61 120 46 120 51 143 52 143 49 143 48 144 47 144 52 144 55 145 60 145 53 145 58 124 59 124 56 124 55 146 54 146 59 146 51 147 50 147 60 147 43 148 42 148 61 148 27 149 26 149 62 149 57 150 64 150 58 150 0 151 63 151 65 151 64 152 66 152 67 152 68 153 69 153 70 153 66 154 68 154 71 154 72 155 73 155 74 155 75 156 76 156 77 156 73 157 75 157 78 157 69 158 72 158 79 158 80 159 81 159 82 159 83 160 84 160 85 160 81 161 83 161 86 161 87 162 88 162 89 162 90 163 91 163 92 163 88 164 90 164 93 164 84 165 87 165 94 165 76 166 80 166 95 166 96 167 97 167 98 167 99 168 100 168 101 168 97 169 99 169 102 169 103 170 104 170 105 170 106 171 107 171 108 171 104 172 106 172 109 172 100 173 103 173 110 173 111 174 112 174 113 174 114 175 115 175 116 175 112 176 114 176 117 176 118 177 119 177 120 177 121 178 122 178 65 178 119 179 121 179 123 179 115 180 118 180 124 180 107 181 111 181 125 181 91 182 96 182 126 182 67 183 127 183 64 183 70 184 71 184 68 184 67 185 66 185 71 185 74 155 79 155 72 155 77 156 78 156 75 156 74 186 73 186 78 186 70 187 69 187 79 187 82 159 95 159 80 159 85 188 86 188 83 188 82 161 81 161 86 161 89 189 94 189 87 189 92 190 93 190 90 190 89 191 88 191 93 191 85 192 84 192 94 192 77 166 76 166 95 166 98 193 126 193 96 193 101 194 102 194 99 194 98 195 97 195 102 195 105 170 110 170 103 170 108 171 109 171 106 171 105 172 104 172 109 172 101 173 100 173 110 173 113 174 125 174 111 174 116 196 117 196 114 196 113 197 112 197 117 197 120 198 124 198 118 198 65 199 123 199 121 199 120 179 119 179 123 179 116 200 115 200 124 200 108 201 107 201 125 201 92 202 91 202 126 202 122 203 0 203 65 203 64 204 127 204 58 204 128 205 129 205 130 205 131 205 130 205 129 205 132 205 128 205 133 205 130 205 133 205 128 205 134 205 135 205 136 205 137 205 136 205 135 205 129 205 134 205 131 205 136 205 131 205 134 205 138 205 139 205 140 205 141 205 142 205 139 205 139 205 142 205 140 205 140 205 143 205 138 205 143 205 144 205 132 205 133 205 145 205 132 205 144 205 143 205 140 205 132 205 145 205 143 205 146 205 147 205 148 205 146 205 148 205 149 205 150 205 151 205 148 205 146 205 152 205 147 205 153 205 154 205 152 205 152 205 155 205 153 205 153 205 156 205 154 205 146 205 155 205 152 205 157 205 158 205 159 205 160 205 159 205 158 205 136 205 137 205 157 205 158 205 157 205 137 205 161 205 151 205 150 205 149 205 148 205 151 205 161 205 160 205 151 205 159 205 160 205 161 205 162 205 163 205 164 205 163 205 165 205 164 205 141 205 166 205 162 205 162 205 167 205 141 205 165 205 168 205 164 205 162 205 164 205 167 205 141 205 139 205 166 205 169 205 168 205 165 205 170 205 169 205 171 205 165 205 171 205 169 205 172 205 173 205 170 205 169 205 170 205 173 205 174 205 175 205 172 205 173 205 172 205 175 205 176 205 177 205 174 205 175 205 174 205 177 205 178 205 179 205 176 205 177 205 176 205 179 205 180 205 178 205 181 205 176 205 181 205 178 205 182 205 180 205 183 205 181 205 183 205 180 205 184 205 182 205 183 205 185 205 182 205 184 205 184 205 186 205 185 205 187 205 188 205 185 205 187 205 185 205 186 205 187 205 189 205 188 205 190 205 191 205 189 205 189 205 192 205 190 205 190 205 193 205 191 205 187 205 192 205 189 205 194 205 195 205 156 205 156 205 196 205 194 205 194 205 197 205 195 205 153 205 196 205 156 205 198 205 197 205 199 205 200 205 201 205 198 205 198 205 201 205 197 205 194 205 199 205 197 205 202 205 200 205 198 205 203 205 204 205 205 205 202 205 205 205 204 205 202 205 204 205 200 205 206 205 203 205 207 205 205 205 207 205 203 205 208 205 206 205 209 205 207 205 209 205 206 205 210 205 211 205 208 205 206 205 208 205 211 205 212 205 213 205 210 205 211 205 210 205 213 205 214 205 215 205 212 205 213 205 212 205 215 205 216 205 217 205 214 205 215 205 214 205 217 205 216 205 218 205 219 205 220 205 221 205 222 205 221 205 220 205 219 205 219 205 220 205 223 205 220 205 222 205 224 205 223 205 216 205 219 205 216 205 214 205 218 205 225 205 224 205 222 205 226 205 227 205 228 205 226 205 228 205 229 205 230 205 231 205 228 205 226 205 232 205 227 205 233 205 234 205 235 205 236 205 235 205 234 205 227 205 232 205 233 205 234 205 233 205 232 205 237 205 238 205 193 205 193 205 239 205 237 205 237 205 240 205 238 205 190 205 239 205 193 205 240 205 231 205 230 205 229 205 228 205 231 205 240 205 241 205 231 205 237 205 241 205 240 205 242 205 243 205 244 205 245 205 246 205 243 205 243 205 246 205 244 205 244 205 247 205 242 205 247 205 248 205 225 205 222 205 249 205 225 205 248 205 247 205 244 205 225 205 249 205 247 205 236 205 250 205 251 205 252 205 251 205 250 205 235 205 236 205 253 205 251 205 253 205 236 205 254 205 245 205 255 205 243 205 255 205 245 205 250 205 254 205 252 205 255 205 252 205 254 205 384 206 385 206 386 206 385 206 384 206 387 206 388 206 386 206 389 206 386 206 388 206 384 206 390 206 391 206 392 206 391 206 390 206 393 206 387 207 392 207 385 207 392 206 387 206 390 206 394 208 395 208 396 208 395 206 397 206 398 206 394 209 397 209 395 209 396 206 399 206 394 206 389 210 400 210 399 210 389 206 401 206 388 206 394 211 399 211 400 211 399 212 401 212 389 212 402 206 403 206 404 206 405 213 402 213 404 213 402 214 406 214 407 214 403 215 408 215 404 215 408 216 409 216 410 216 410 217 411 217 408 217 409 218 412 218 410 218 408 206 411 206 404 206 413 206 414 206 415 206 414 219 413 219 416 219 415 206 393 206 390 206 393 206 415 206 414 206 407 206 406 206 417 206 406 209 402 209 405 209 406 220 416 220 417 220 417 221 416 221 413 221 418 206 419 206 420 206 418 222 421 222 419 222 420 223 422 223 398 223 398 206 423 206 420 206 418 224 424 224 421 224 423 225 418 225 420 225 422 226 395 226 398 226 421 206 424 206 425 206 426 206 425 206 427 206 425 227 426 227 421 227 427 206 428 206 429 206 428 206 427 206 425 206 429 206 430 206 431 206 430 228 429 228 428 228 431 229 432 229 433 229 432 206 431 206 430 206 433 230 434 230 435 230 434 231 433 231 432 231 436 232 435 232 437 232 435 233 436 233 433 233 438 234 437 234 439 234 437 235 438 235 436 235 438 206 439 206 440 206 440 236 439 236 441 236 441 237 442 237 440 237 441 238 443 238 444 238 442 239 441 239 444 239 443 207 445 207 444 207 445 206 446 206 447 206 447 206 448 206 445 206 446 240 449 240 447 240 445 241 448 241 444 241 412 206 450 206 451 206 451 242 452 242 412 242 450 243 453 243 451 243 412 244 452 244 410 244 454 206 453 206 455 206 455 245 456 245 457 245 453 206 456 206 455 206 453 246 454 246 451 246 455 213 457 213 458 213 459 247 460 247 461 247 460 248 459 248 458 248 457 206 460 206 458 206 462 249 461 249 463 249 461 250 462 250 459 250 464 206 463 206 465 206 463 251 464 251 462 251 465 206 466 206 467 206 466 206 465 206 463 206 467 252 468 252 469 252 468 206 467 206 466 206 469 206 470 206 471 206 470 206 469 206 468 206 471 206 472 206 473 206 472 253 471 253 470 253 474 206 475 206 473 206 476 206 477 206 478 206 474 254 478 254 477 254 479 255 478 255 474 255 480 206 476 206 478 206 474 256 473 256 479 256 475 257 471 257 473 257 476 237 480 237 481 237 482 258 483 258 484 258 485 206 482 206 484 206 482 259 486 259 487 259 483 260 488 260 484 260 489 206 490 206 491 206 490 206 489 206 492 206 491 206 488 206 483 206 488 261 491 261 490 261 449 262 493 262 494 262 494 263 495 263 449 263 493 206 496 206 494 206 449 264 495 264 447 264 487 265 486 265 496 265 486 266 482 266 485 266 486 206 497 206 496 206 496 206 497 206 494 206 498 267 499 267 500 267 499 206 501 206 502 206 498 268 501 268 499 268 500 269 503 269 498 269 481 270 504 270 503 270 481 206 505 206 476 206 498 271 503 271 504 271 503 272 505 272 481 272 506 273 507 273 492 273 507 274 506 274 508 274 509 206 492 206 489 206 492 206 509 206 506 206 510 206 502 206 511 206 502 206 510 206 499 206 508 206 511 206 507 206 511 206 508 206 510 206

    +
    +
    +
    +
    + + + + + 1 2.22045e-16 2.22045e-16 5.96046e-8 2.22045e-16 -4.37114e-8 -1 0 -2.22045e-16 1 -4.37114e-8 1.42109e-14 0 0 0 1 + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/simulateur/3d/titane.dae b/simulateur/3d/titane.dae index 866c748..8548854 100644 --- a/simulateur/3d/titane.dae +++ b/simulateur/3d/titane.dae @@ -5,8 +5,8 @@ Blender User Blender 2.78.0 - 2017-04-29T14:20:23 - 2017-04-29T14:20:23 + 2017-05-06T19:07:42 + 2017-05-06T19:07:42 Z_UP @@ -26,7 +26,7 @@ 0.8 0.8 0.8 1 - 0.0375 0.0375 0.0375 1 + 0.01875 0.01875 0.01875 1 50 @@ -48,7 +48,7 @@ - -1.17977e-4 0.02897077 0.03000307 -8.68192e-4 0.03109383 0.02998763 -0.003326892 0.03107124 0.02982193 -0.006239235 0.0318973 0.0293076 -0.008925855 0.03273344 0.02854222 -0.01408743 0.03113049 0.02653318 -0.01186335 0.0331462 0.02741849 -0.006680071 0.03527605 0.02881342 -0.009807229 0.03682476 0.0275551 -0.005933463 0.03738808 0.02848982 -0.01669764 0.0301063 0.02498126 -0.0146867 0.0349586 0.02574074 -0.01808786 0.03325456 0.0237478 -0.01702976 0.03688359 0.02376329 -0.0201534 0.03088086 0.02229177 -0.02272248 0.03161692 0.01957589 -0.01993244 0.03562045 0.02175033 -0.0218237 0.03657448 0.01958996 -0.01327264 0.03861016 0.0255599 -0.008703649 0.04012626 0.02690935 -0.0126245 0.04103702 0.02492666 -0.01776212 0.03947579 0.02231085 -0.02025634 0.04120075 0.01914876 -0.01808452 0.04207223 0.02070379 -0.01486068 0.04280519 0.02273839 -0.01886475 0.044622 0.01826566 -0.003270983 0.03389 0.02959704 -2.87458e-4 0.03297162 0.02987009 -0.003228664 0.03789675 0.02880281 -0.005958855 0.04016494 0.02763593 -6.52716e-4 0.03511017 0.02957445 4.36761e-4 0.03799843 0.02894365 -0.001159846 0.04068285 0.02805244 -0.003092825 0.04365056 0.02657914 -0.01008814 0.04247796 0.02538186 -0.01135814 0.04457277 0.02367174 -0.00608319 0.04426342 0.02575576 -0.008099555 0.04572606 0.02427488 -0.01464158 0.04563724 0.0210824 -0.01146805 0.04727661 0.0217095 -0.00861597 0.04879301 0.02181714 -0.01316249 0.04910326 0.01908242 -0.003993272 0.04725211 0.02427661 3.83178e-5 0.04343682 0.02686095 -2.15524e-4 0.04670113 0.02497059 -0.00549519 0.04995578 0.02174913 -0.002057313 0.04940509 0.02283316 -0.002521216 0.05198371 0.02031457 -0.02203059 0.02727317 0.02024519 -0.02519994 0.03266048 0.0162087 -0.02449995 0.02913773 0.01735228 -0.02342832 0.03710579 0.01738482 -0.02575004 0.0344749 0.01481902 -0.02438199 0.03941231 0.0148195 -0.02641999 0.02840083 0.01419454 -0.02805358 0.02996712 0.01079118 -0.02705973 0.03470134 0.01218849 -0.02823936 0.03486281 0.009069383 -0.02229821 0.04125374 0.01670688 -0.02539288 0.04019469 0.01244539 -0.02701854 0.03943049 0.009116709 -0.02219426 0.04434329 0.01429152 -0.01885515 0.04820454 0.01472342 -0.01621246 0.04769599 0.01804786 -0.02329486 0.04508078 0.01151627 -0.02625262 0.04230046 0.007950246 -0.02010011 0.04910641 0.01159298 -0.02257794 0.04786759 0.008603811 -0.02926146 0.03100311 0.006773412 -0.02999597 0.03021425 0.00200653 -0.02968186 0.033508 0.002946257 -0.02859085 0.03723645 0.005816221 -0.02782744 0.04073655 0.003686666 -0.02982705 0.02995645 -0.00372374 -0.02978336 0.0336731 -7.33336e-4 -0.02923446 0.03671985 0.001477301 -0.02835321 0.03983575 9.59042e-4 -0.02922427 0.03655582 -0.00233519 -0.02974331 0.02758407 0.003544211 -0.02472835 0.04551982 0.007163047 -0.02559006 0.04536062 0.003401517 -0.02206695 0.05005639 0.003854691 -0.01965093 0.05143588 0.007502436 -0.02692192 0.04334717 -6.47864e-4 -0.0276857 0.04109817 -0.00378102 -0.02559584 0.04569381 4.14139e-4 -0.02356338 0.04838705 0.002946197 -0.02470731 0.04702007 -0.001731455 -0.02784049 0.0262897 0.01066881 -0.01572668 0.05102837 0.0146386 -0.01079076 0.05129075 0.01822757 -0.01251536 0.0520761 0.01608073 -0.01621466 0.05320334 0.01012891 -0.01264101 0.05437898 0.01224094 -0.009231448 0.05442029 0.01490527 -0.006979823 0.05201464 0.01922768 -0.003786742 0.05457198 0.01689255 6.44237e-4 0.05333739 0.0189166 -0.005946934 0.05590927 0.01400119 -0.01041918 0.05702614 0.008017957 -0.007233321 0.05701375 0.01096671 -0.001088857 0.05619895 0.01462471 -0.002025127 0.05745512 0.01204192 -0.01957571 0.05269694 0.002213358 -0.01722007 0.05391031 0.005814671 -0.01354634 0.05583822 0.007179975 -0.01365768 0.05660063 0.003124833 -0.02174729 0.0507043 -7.34614e-4 -0.01773256 0.05420339 -0.001533448 -0.01723855 0.05447494 0.002212524 -0.01472079 0.05613481 -0.001529157 -0.01092135 0.05801153 1.38688e-4 -0.006563186 0.05826324 0.007799625 -0.008585691 0.05843329 0.004505455 -0.002732157 0.05840355 0.009357452 -0.006168067 0.05920743 0.003481864 -0.001465499 0.05946886 0.005733072 -0.002535939 0.05984461 0.002341389 -0.005135416 0.05960273 -7.34726e-4 0.001569628 0.05068886 0.02171534 0.002777457 0.04035335 0.02805286 0.003678798 0.04292917 0.02686822 0.001486063 0.03042358 0.02997159 0.002161502 0.03505152 0.02953201 0.002892613 0.03179132 0.0298295 0.004664242 0.03717499 0.02879947 0.005507171 0.03349328 0.02931654 0.005284786 0.04089409 0.02747935 0.008212447 0.03895461 0.02747279 0.003109574 0.04572063 0.02539372 0.006178498 0.04484468 0.02536195 0.002873241 0.04836291 0.02359396 0.006883561 0.04702925 0.02376353 0.005620718 0.04993218 0.02175039 0.004920125 0.053061 0.01864588 0.008652269 0.04278939 0.02577036 0.01141154 0.04061067 0.02571141 0.01157605 0.04512768 0.02326649 0.009700596 0.04861426 0.02149814 0.007092118 0.05159437 0.01962172 0.01160877 0.04283064 0.0245462 0.01353877 0.04716044 0.02063828 0.008410751 0.03659129 0.02806115 0.01024979 0.03340947 0.02802628 0.01205253 0.03706574 0.02659696 0.00500077 0.02968704 0.02960693 0.007547914 0.0332036 0.02890348 0.008068919 0.02963119 0.02891474 0.01311755 0.03342849 0.02678817 0.01076924 0.03016263 0.02802187 0.01322454 0.03017127 0.02696359 0.01457321 0.04135859 0.02367126 0.01396608 0.03678274 0.02571791 0.01632481 0.03842699 0.02374839 0.01697438 0.04246598 0.02144145 0.01826494 0.04425114 0.01913267 0.01915127 0.03919857 0.021241 0.01623827 0.03350269 0.02503317 0.01823377 0.03576165 0.02316308 0.01669812 0.03043097 0.02496737 0.02075845 0.03635156 0.02073884 0.01987957 0.03232622 0.02241432 0.02212595 0.03167927 0.02026784 0.001912713 0.05481952 0.01680636 0.003206431 0.05593842 0.01481896 0.007909476 0.05479639 0.01499396 0.008999466 0.05313998 0.01689988 0.002078652 0.05734133 0.01221752 0.001925349 0.05863404 0.008947074 0.00613147 0.05677181 0.01218789 0.006514668 0.05791938 0.008942008 0.01110178 0.05124586 0.01810956 0.01227712 0.0530458 0.01487284 0.01404237 0.04951 0.01801252 0.01710402 0.0470457 0.01788425 0.0163446 0.04993593 0.01539653 0.01112836 0.05510526 0.01218682 0.01517641 0.0526207 0.01266449 0.0192005 0.04883551 0.01342904 0.01852446 0.05121368 0.01046347 0.004238069 0.05897945 0.006654083 0.009342968 0.05734205 0.008242011 0.007777214 0.05867159 0.00440973 0.003649294 0.05960267 0.003686547 4.68907e-4 0.06003236 -1.17633e-4 0.004317224 0.0597403 -7.13725e-4 0.01089751 0.05783069 0.002946376 0.00723797 0.05913811 8.1408e-4 0.01257383 0.05664199 0.005866169 0.01218771 0.05577862 0.009424448 0.01629751 0.05367255 0.008764207 0.01524484 0.05539536 0.005125343 0.02051687 0.05074793 0.00719583 0.01821285 0.05346119 0.004467964 0.01391875 0.05659139 0.001365005 0.009568035 0.05846327 -0.001060128 0.02085137 0.0514208 0.002906203 0.01619464 0.05530798 -9.05288e-4 0.01892256 0.05332118 1.72213e-4 0.02032899 0.04576659 0.01549112 0.02143073 0.04018628 0.01845085 0.02207577 0.04251444 0.01608186 0.02248686 0.04478347 0.0133149 0.02223765 0.04743719 0.01020032 0.02478754 0.04084312 0.01308953 0.02411109 0.03802919 0.01602077 0.02444475 0.04358518 0.01096576 0.02310383 0.03517878 0.01848626 0.02496784 0.03270369 0.01652753 0.0236423 0.02884638 0.01847362 0.02618229 0.03587281 0.01351988 0.02750557 0.03760302 0.009428441 0.02642017 0.03159826 0.01419413 0.02790147 0.03438448 0.01024186 0.02780711 0.0298767 0.01136159 0.02411139 0.04696547 0.005870878 0.02287602 0.04923516 0.003025889 0.02520501 0.04420894 0.008110702 0.02649581 0.04342061 0.004467427 0.02685713 0.04028117 0.008665263 0.02547866 0.04591858 9.14555e-4 0.02283602 0.0495212 -4.65153e-4 0.0281068 0.03935402 0.005057036 0.02770745 0.04152637 0.001383483 0.02914011 0.03068023 0.007342875 0.02885657 0.03501039 0.006579279 0.02974355 0.03241521 0.003542542 0.02882409 0.03852188 6.79882e-4 0.02947384 0.03495979 0.002946794 0.02982789 0.0297842 0.003451049 0.0297088 0.03428947 -0.001311838 0.03004634 0.02979075 -9.46857e-4 -0.002308785 0.0597949 -0.003148913 -0.02947622 0.03359895 -0.004667043 -0.02890753 0.03229176 -0.007846117 -0.029486 0.02759224 -0.005270361 -0.02822053 0.03851103 -0.005792856 -0.02776634 0.03762102 -0.00863415 -0.0285328 0.02838826 -0.009206354 -0.02773171 0.03030556 -0.01152449 -0.02731668 0.03336864 -0.01206314 -0.02706402 0.03599774 -0.01154464 -0.02568143 0.0391013 -0.01264238 -0.02628546 0.04156923 -0.008774518 -0.02554661 0.04469233 -0.005807459 -0.02300935 0.04866951 -0.005089998 -0.02049124 0.05152338 -0.00440514 -0.0244621 0.04359632 -0.01098138 -0.02275621 0.04752635 -0.008829772 -0.01980292 0.0506072 -0.00927776 -0.02245384 0.04573845 -0.01221078 -0.01993072 0.04856437 -0.01267647 -0.02575808 0.03169947 -0.01536428 -0.02447509 0.02910566 -0.01737713 -0.0236296 0.03523516 -0.01778966 -0.02484035 0.03684717 -0.01545816 -0.02254003 0.03240031 -0.01973265 -0.02328926 0.04178792 -0.01487421 -0.02224487 0.02944749 -0.02016407 -0.01989376 0.02990591 -0.02252942 -0.0207017 0.03509664 -0.02115207 -0.02052277 0.03816723 -0.02037185 -0.02184075 0.04048186 -0.01778233 -0.01820027 0.03738039 -0.02271705 -0.02063322 0.04590076 -0.01494783 -0.01945227 0.04484325 -0.01741433 -0.01717877 0.04809731 -0.01671797 -0.01882606 0.04084706 -0.02076679 -0.01771348 0.04438328 -0.01954025 -0.01502639 0.04328548 -0.02237522 -0.02645963 0.02691471 -0.01392728 -0.01684278 0.05429285 -0.005375385 -0.01677978 0.05342739 -0.00855714 -0.01337969 0.05624169 -0.005854249 -0.0103479 0.05804687 -0.003065049 -0.01040858 0.05719631 -0.007349848 -0.01614749 0.05178272 -0.01292163 -0.01389753 0.05468297 -0.01004737 -0.0122931 0.05398398 -0.01329147 -0.009385347 0.05642312 -0.0107398 -0.006467342 0.05907541 -0.003729701 -0.007238984 0.05826461 -0.007141768 -0.002030134 0.05916339 -0.007007718 -0.004863619 0.05809682 -0.009425759 -0.007486224 0.05532228 -0.01437276 0.001985967 0.05952972 -0.005230844 -0.005343914 0.05693799 -0.01219213 -4.36567e-4 0.05781376 -0.0113576 0.002344429 0.05812686 -0.01031023 -0.01543027 0.05085796 -0.01517182 -0.0131666 0.05017507 -0.01797378 -0.009941697 0.05246955 -0.01729822 -0.01400631 0.04704016 -0.02040612 -0.006589353 0.05361384 -0.0173518 -0.009356617 0.04872137 -0.02157133 -0.005963861 0.05194669 -0.01961421 -0.002578198 0.05636906 -0.01414859 5.80217e-4 0.05616396 -0.01474738 -0.001390337 0.0546624 -0.01711773 -0.005273461 0.05015462 -0.02163541 -0.002076148 0.05222451 -0.02008813 0.002298772 0.05334198 -0.01876592 0.001338303 0.05178046 -0.02062535 -0.01694148 0.03032481 -0.02481544 -0.01735347 0.03429448 -0.02414077 -0.01427698 0.03160041 -0.02637237 -0.01071876 0.02986776 -0.02805244 -0.01145851 0.03397893 -0.02748495 -0.01402878 0.03511166 -0.02604573 -0.01550465 0.03868204 -0.02422922 -0.01335847 0.04096186 -0.02455568 -0.01165479 0.0391131 -0.02615791 -0.01110839 0.04312855 -0.02460384 -0.009508013 0.03753381 -0.0274713 -0.005142986 0.02971953 -0.02956664 -0.00889486 0.03278732 -0.02854019 -0.006154298 0.03239226 -0.02927953 -0.001633942 0.02873665 -0.0299499 -0.003422319 0.03136903 -0.02978533 -6.7909e-4 0.0305736 -0.02999562 -0.007386445 0.03570806 -0.02853226 -0.005464434 0.0384683 -0.02830433 -0.00477004 0.03456538 -0.02927953 -0.001695632 0.03314846 -0.02980399 -0.01128607 0.04604417 -0.02273195 -0.008512675 0.04505223 -0.02454036 -0.005827128 0.04670143 -0.02427011 -0.008069813 0.04164808 -0.02647763 -0.005986392 0.04353767 -0.02611339 -0.00369358 0.04081982 -0.02778166 -0.003208935 0.04884696 -0.02319276 -0.00300306 0.04570919 -0.02540433 4.25106e-4 0.04681986 -0.02489608 -0.002163589 0.04352337 -0.02672743 9.08838e-4 0.04190933 -0.02756309 -0.002357125 0.03674697 -0.02916842 4.56593e-4 0.03925776 -0.02855283 -6.54618e-6 0.03650891 -0.02929884 3.90645e-4 0.03355652 -0.02980726 9.61526e-4 0.03117144 -0.0299701 0.005114436 0.05901885 -0.005792081 0.007847607 0.05864059 -0.004465878 0.01214593 0.05727738 -0.00342971 0.01162368 0.05696761 -0.006337642 0.005480468 0.05778664 -0.01001197 0.004617094 0.0561434 -0.0140838 0.008429467 0.0574724 -0.008746385 0.0080114 0.05585318 -0.01300579 0.0127716 0.05527311 -0.01006978 0.01082289 0.05500108 -0.01266986 0.01713228 0.05426985 -0.004601001 0.02085286 0.05142128 -0.002885639 0.01732611 0.05340778 -0.007363736 0.02086752 0.05053669 -0.006798565 0.01426237 0.0551697 -0.008002996 0.0171929 0.05232584 -0.01043248 0.01728117 0.05083811 -0.01299339 0.01967412 0.04938107 -0.01179397 0.00455594 0.05453389 -0.01671695 0.009140193 0.05367338 -0.01607429 0.005079269 0.05099469 -0.02088755 0.001394867 0.04952889 -0.02276247 0.008590936 0.05210429 -0.01842808 0.007678329 0.04980319 -0.02125573 0.01359677 0.05274266 -0.01414251 0.01313048 0.05075097 -0.01729768 0.01588356 0.05031675 -0.0154193 0.01921486 0.04661309 -0.01608425 0.01215881 0.04921865 -0.01961523 0.01661354 0.04739356 -0.01800149 0.01198178 0.04687142 -0.02178102 0.01535493 0.04526203 -0.02084547 0.0232985 0.04829603 -0.005075454 0.0250135 0.04618036 -0.003907918 0.02729368 0.0422005 -0.003148734 0.02680391 0.04188394 -0.006587207 0.02210825 0.04765474 -0.01008141 0.02436256 0.04524534 -0.008712887 0.02608025 0.04156643 -0.0094316 0.02218145 0.0455898 -0.01296418 0.02474516 0.04149049 -0.01259273 0.02910137 0.03653764 -0.003680706 0.02803593 0.03791648 -0.007294595 0.0294122 0.0317595 -0.005824804 0.02703571 0.0363757 -0.01144433 0.02853763 0.03495734 -0.008011162 0.02853262 0.0316115 -0.009206712 0.02645987 0.03308451 -0.01392662 0.02933537 0.02906292 -0.006444811 0.02773177 0.02969449 -0.01152431 0.02244871 0.04269129 -0.01542079 0.02098661 0.04198515 -0.01785159 0.01832485 0.04297232 -0.0199567 0.02326244 0.03773927 -0.01735168 0.01904356 0.03858518 -0.0216186 0.02170437 0.03726476 -0.01943898 0.02497577 0.03821074 -0.01454889 0.02420759 0.0308758 -0.01776117 0.02610826 0.0293526 -0.01479148 0.02068424 0.03490519 -0.02121192 0.02335596 0.0332567 -0.01864588 0.02066868 0.03070652 -0.02181112 0.0047369 0.04775637 -0.02373486 0.007687389 0.0473991 -0.02323365 0.004967808 0.045237 -0.02539736 0.003234088 0.04355311 -0.02662235 0.01030313 0.04453641 -0.02419638 0.007547736 0.04346239 -0.02577501 0.01241427 0.04363709 -0.02370321 0.005526423 0.04058504 -0.02754491 0.009439229 0.04036986 -0.02656435 0.007717072 0.03737664 -0.02806264 0.002577185 0.0381726 -0.02878868 0.00196284 0.03475171 -0.02956902 0.005267024 0.0377137 -0.02853804 0.004565417 0.03476983 -0.02927953 0.003275752 0.03165364 -0.02979409 0.01604402 0.04128676 -0.02273178 0.01310324 0.04108905 -0.02462768 0.01744151 0.03769159 -0.02321004 0.01505225 0.03851342 -0.02454012 0.01164805 0.0380696 -0.02647769 0.01498425 0.03569853 -0.0253877 0.01234441 0.03548616 -0.02680331 0.008788704 0.03483337 -0.0283156 0.01802664 0.03405946 -0.02366346 0.01570916 0.03300309 -0.02540445 0.01686817 0.03064489 -0.02483606 0.01924669 0.02741956 -0.02294307 0.01352363 0.03216314 -0.02672737 0.009922504 0.0313217 -0.02832388 0.01222872 0.02916133 -0.02741986 0.01468461 0.02826422 -0.02613002 0.006220579 0.03243899 -0.02926588 0.006368994 0.02871745 -0.02932679 0.003534138 0.02818274 -0.02976518 -0.02977091 0.02603095 -9.18628e-4 0.002957165 0.02797788 0.02981495 0.005957186 0.02740079 0.02931475 0.01163041 0.02665746 0.02748847 0.001083135 0.02660614 0.02981418 0.00563544 0.02442455 0.02897107 0.003334403 0.02390813 0.02922916 0.008713126 0.02638703 0.02852207 0.009177327 0.02314686 0.02778208 0.01457959 0.02744007 0.02612847 0.01747328 0.02669876 0.02421134 0.01284295 0.02320402 0.02631038 0.01639294 0.02335029 0.02428632 0.01962059 0.02846461 0.02268081 0.02092611 0.02676296 0.02132081 0.01994544 0.02268177 0.0212413 0.02328723 0.02506351 0.01835244 0.008627533 0.01968616 0.02686804 0.01266634 0.01923662 0.02503794 0.0169962 0.02039146 0.02285283 0.01486146 0.01719576 0.02273857 0.01878523 0.01817137 0.02027279 0.005665123 0.02099376 0.02807796 0.004670381 0.01741605 0.02687114 1.80623e-4 0.02352154 0.0293138 0.001115739 0.02002066 0.02832144 0.00348407 0.0198096 0.02803224 0.0113579 0.01542657 0.02367162 0.008717536 0.0164088 0.02533078 0.008263289 0.01293468 0.02330499 0.01240366 0.01356339 0.02187323 0.01645714 0.01425826 0.01962643 0.01308697 0.01140081 0.01962226 0.00991249 0.01030629 0.02039897 0.003992795 0.01274716 0.02427649 0.004134535 0.01532316 0.02590805 4.30832e-4 0.01330131 0.02496719 0.005836784 0.009001016 0.02071267 0.002057552 0.01059412 0.02283281 0.001645386 0.008351624 0.02075231 0.02559012 0.02850586 0.01565444 0.02189105 0.02128648 0.01862323 0.0260728 0.02572625 0.01432913 0.0236786 0.02087378 0.01608175 0.02779489 0.02657562 0.01080745 0.02720093 0.02339601 0.01092839 0.02503782 0.02034896 0.01351904 0.02593404 0.01965469 0.01108199 0.02025699 0.01679021 0.01784652 0.02335155 0.01675808 0.01351273 0.02001082 0.0143935 0.01608079 0.02213007 0.01432168 0.01289647 0.02037721 0.01203578 0.0128163 0.02445602 0.01533699 0.009423911 0.01736319 0.01045411 0.01484256 0.02246761 0.01246184 0.009418964 0.02882701 0.02633726 0.007644355 0.02806884 0.0222004 0.007404386 0.02950179 0.02512377 0.003124475 0.02800208 0.02008032 0.00444293 0.02635818 0.01771587 0.007503032 0.0295794 0.02488434 -0.00163573 0.02892315 0.02186733 7.42995e-4 0.02831268 0.02019703 -0.00194925 0.02667939 0.01664376 0.003594696 0.02461338 0.01403641 0.006474435 0.01973819 0.009708464 0.01007103 0.02397108 0.01229697 0.003753006 0.02185136 0.0102325 0.005847752 0.02680242 0.01639884 3.78436e-4 0.02377367 0.0116226 2.26345e-4 0.02531355 0.01419466 -0.00359261 0.02168244 0.009358406 0.002213001 0.01415932 0.009985685 0.0173583 0.01560306 0.008675932 0.01429241 0.01049709 0.007805109 0.01729136 0.007516562 0.008080482 0.01912271 0.01310729 0.00701946 0.01421099 0.01584708 0.00698924 0.01103818 0.01040101 0.005358994 0.01369959 0.0126599 0.004996538 0.01074963 0.006648421 0.005987226 0.01679825 0.00316298 0.006179928 0.01801508 -0.001214027 0.005823671 0.01783311 0.001613378 0.004194319 0.01530027 0.005946397 0.004090011 0.01400077 0.01041859 0.002973258 0.008017957 0.007233142 0.002985894 0.01096689 0.002025127 0.002544462 0.01204186 0.01930749 0.007935643 0.006616652 0.01697027 0.006071448 0.006525039 0.01368057 0.004276931 0.00735712 0.01365739 0.003398895 0.003125071 0.01844078 0.006372034 0.002217054 0.02174395 0.009334266 -0.00170958 0.01886981 0.006653547 -5.85183e-4 0.01532876 0.004212915 -0.002000093 0.01092165 0.001988232 1.38683e-4 0.006562769 0.001736402 0.007799923 0.008585274 0.001566171 0.004505217 0.002732276 0.001596033 0.009357511 0.006168842 7.92404e-4 0.003481924 0.001465201 5.30864e-4 0.005733132 0.007120788 8.52842e-4 -0.00153321 0.00253576 1.55076e-4 0.002340912 0.003673076 2.16541e-4 -7.33119e-4 -0.002034068 0.0222817 0.02894359 -0.003112077 0.01978433 0.02806293 -5.29139e-4 0.01720857 0.02718448 -0.00545597 0.01851862 0.02722972 -0.001992583 0.02540844 0.02959972 -0.004564523 0.02537584 0.02932214 -0.005643725 0.02240204 0.02850127 -0.007588624 0.02453595 0.02854442 -0.009220659 0.02121084 0.02721238 -0.002926111 0.01474052 0.02570933 -0.005290627 0.01502501 0.02548241 -0.002365112 0.01102679 0.02319192 -0.006784617 0.01354026 0.02420562 -0.003075599 0.008090496 0.02033841 -0.005812227 0.0102089 0.02183634 -0.00889784 0.01128774 0.02176934 -0.008426189 0.01712036 0.02580636 -0.00968182 0.01876622 0.02611309 -0.01043313 0.01470649 0.02365022 -0.01151609 0.01284408 0.02179992 -0.00760436 0.007624328 0.01857703 -0.01247519 0.01788216 0.02447348 -0.013094 0.01141119 0.01961958 -0.01420038 0.0164662 0.02273857 -0.002734959 0.02783638 0.02983355 -0.007503509 0.02721923 0.02894335 -0.006385207 0.02909547 0.02932232 -0.01049971 0.02395993 0.02747631 -0.01025754 0.02870219 0.02821934 -0.0127294 0.02589493 0.02690631 -0.01280486 0.02135872 0.02576124 -0.01549971 0.02085775 0.02406913 -0.01569366 0.01473337 0.02059584 -0.01811337 0.01888412 0.02124005 -0.0175991 0.02132397 0.02272611 -0.01506435 0.02543616 0.02559357 -0.01726168 0.02524507 0.02413713 -0.02136015 0.02219557 0.01966166 -0.01954752 0.02560812 0.02240318 -0.004110753 0.006194233 0.01786577 -0.003206789 0.004061102 0.01481884 -0.007909297 0.005203187 0.01499408 -0.002078652 0.002658188 0.0122174 -0.001950323 0.001352131 0.008897721 -0.006130993 0.003227829 0.01218825 -0.006117224 0.001697242 0.008064389 -0.01089781 0.008455693 0.01789337 -0.01122188 0.00645107 0.01486718 -0.01538664 0.009937524 0.01625669 -0.01690757 0.01268696 0.01780277 -0.01112806 0.004894554 0.01218765 -0.01565182 0.007011711 0.01139593 -0.0143789 0.007598042 0.01394098 -0.018462 0.0109083 0.01405382 -0.01911479 0.008829712 0.009486377 -0.002684116 4.07454e-4 0.004404902 -0.009080231 0.002753794 0.008780181 -0.009975135 0.002142906 0.00514239 -0.00653398 8.97442e-4 0.003686785 -2.42721e-4 -1.77494e-5 5.58992e-4 -0.00434643 2.92324e-4 8.14427e-4 -0.008004605 0.001078069 7.40191e-4 -0.01127666 0.002182662 0.001250028 -0.01317918 0.003808557 0.006595075 -0.01267671 0.004368245 0.009221076 -0.01671725 0.006124377 0.00723797 -0.01915884 0.007250189 0.004291415 -0.02104407 0.01039886 0.008671164 -0.01469981 0.004046797 0.003687262 -0.01473599 0.003832697 6.78012e-5 -0.0177505 0.005756676 1.70875e-4 -0.02071446 0.008205592 7.12566e-4 -0.01867854 0.0154699 0.01848536 -0.02032887 0.01423227 0.01549082 -0.02059441 0.01854431 0.01861989 -0.02207595 0.01748389 0.01608067 -0.02109485 0.01272439 0.01264697 -0.02312755 0.01382225 0.01032239 -0.02341967 0.01702612 0.01362973 -0.02411109 0.02196919 0.01602029 -0.02508121 0.01880204 0.01224738 -0.02310389 0.0248211 0.01848638 -0.02500462 0.02560287 0.01601696 -0.02618283 0.02412658 0.01351904 -0.02750533 0.0223965 0.009429275 -0.02251482 0.01102197 0.005994379 -0.02520531 0.01579099 0.008110702 -0.02478545 0.01378291 0.004925966 -0.02649533 0.01657819 0.004468262 -0.02685683 0.01971799 0.008666098 -0.02323323 0.01111549 0.002267599 -0.02547818 0.01408004 9.14833e-4 -0.02283567 0.01047784 -4.66812e-4 -0.02810686 0.02064639 0.005058944 -0.02775442 0.01856911 0.001267373 -0.02876025 0.0262922 0.007852673 -0.02914136 0.02488386 0.005078077 -0.02924424 0.02343374 0.002217531 -0.02878379 0.02150422 -8.81935e-4 -4.23504e-4 4.66197e-5 -0.002293646 0.02935296 0.02520495 -0.004294693 0.02868372 0.02515256 -0.007567107 0.02796345 0.02069675 -0.005834877 0.02682447 0.01722764 -0.004440486 0.02761977 0.02521294 -0.01081919 0.02643966 0.02541911 -0.01351177 0.02678322 0.01964163 -0.008869767 0.02553278 0.02189874 -0.01364672 0.02383124 0.01224821 -0.004389882 0.02450639 0.01448172 -0.007851481 0.02049124 0.008476316 -0.004405379 0.02092564 0.009830474 -0.007617354 0.02499735 0.01780539 -0.0113334 0.02328199 0.01518654 -0.01189166 0.02128571 0.0118162 -0.01092588 0.01838058 0.008356153 -0.009829401 0.02505487 0.02671396 -0.01623225 0.02254027 0.02759957 -0.01973229 0.0233193 0.02363801 -0.01784437 0.02328914 0.01821285 -0.01487517 0.02085995 0.02327913 -0.02056854 0.02184081 0.01951748 -0.01778197 0.01820015 0.02261978 -0.02271723 0.02063363 0.01410037 -0.01494872 0.0180884 0.01069092 -0.01423114 0.01945209 0.01515638 -0.01741439 0.01717865 0.01190251 -0.01671832 0.0191527 0.0177676 -0.01966345 0.01781761 0.01939272 -0.02170318 0.01606315 0.01390671 -0.01962274 0.01506525 0.01606041 -0.02195602 0.01832193 0.006733596 -0.005206584 0.01444882 0.004486978 -0.006587982 0.0106917 0.002269625 -0.004516422 0.01059412 0.002937436 -0.007554709 0.01537215 0.007579684 -0.01283627 0.0138629 0.005319595 -0.01012325 0.01081335 0.006174325 -0.01478725 0.009615957 0.003754913 -0.01095497 0.006484389 0.001233339 -0.005655705 0.007736086 0.002337038 -0.008769512 0.0033378 4.96898e-4 -0.004635095 0.00416851 0.001535654 -0.008644342 0.008716404 0.005084931 -0.01432275 0.005942404 0.003800272 -0.01347517 -4.02596e-4 0.001205027 -0.008562386 -0.00120747 4.75058e-4 -0.005308985 0.003710985 0.003101766 -0.01283371 0.001267135 0.002274036 -0.01147317 0.01334309 0.01130777 -0.01939499 0.01354378 0.008496701 -0.01601392 0.01046025 0.00884509 -0.0185728 0.006588816 0.006385564 -0.01735168 0.009356081 0.01127785 -0.02157121 0.005963921 0.008053004 -0.01961427 -5.8045e-4 0.003835141 -0.01474642 0.001864314 0.005092024 -0.01669973 0.00566256 0.01018208 -0.02183294 0.00148791 0.006880342 -0.01914012 0.001971721 0.009562551 -0.0219326 0.01684975 0.02652603 -0.02463459 0.01544612 0.02256333 -0.02464091 0.01339656 0.02505987 -0.02642506 0.009515166 0.02706837 -0.02833944 0.01452559 0.01964807 -0.02417719 0.01180571 0.01673907 -0.02422374 0.01165425 0.02088671 -0.02615815 0.009952485 0.02297347 -0.02744024 0.007717072 0.02474766 -0.02853864 0.007253468 0.02115142 -0.02777647 0.00388056 0.02477991 -0.02932459 0.0112859 0.01395541 -0.02273201 0.008513033 0.01494777 -0.02454048 0.004931151 0.01268553 -0.02406555 0.007279753 0.01712071 -0.02615827 0.003532707 0.01904845 -0.02775526 0.003002882 0.01429051 -0.02540439 -4.25277e-4 0.0131796 -0.02489596 0.001848042 0.01668119 -0.02686131 -0.001142501 0.01984083 -0.02824491 0.004441678 0.02182328 -0.02854335 0.00114721 0.02810078 -0.02993309 7.50306e-4 0.02210366 -0.028957 6.42511e-4 0.02496242 -0.02958691 -0.001112937 0.0266056 -0.02980595 -0.005018353 4.89276e-4 -0.00272715 -0.006490707 0.001110792 -0.005141317 -0.01018518 0.00186181 -0.002681732 -0.01121073 0.00292766 -0.006579637 -0.003347039 0.001466751 -0.008772552 -0.006893754 0.001837611 -0.00782442 -0.003300964 0.002768874 -0.01225471 -0.01026344 0.003379881 -0.009432137 -0.007482528 0.003535926 -0.01214206 -0.01462221 0.003934383 -0.003275334 -0.01506221 0.004865646 -0.006578683 -0.01828277 0.006723046 -0.005195736 -0.02078312 0.008850872 -0.004948675 -0.01388478 0.005342125 -0.01005822 -0.01119577 0.005271017 -0.01285386 -0.01761806 0.007527947 -0.009349763 -0.01630908 0.008313655 -0.01294606 -0.02033579 0.01071673 -0.01086628 -0.005033016 0.004392266 -0.01485049 -0.003532409 0.005932152 -0.01765447 -0.00914067 0.006326198 -0.016074 -0.001491129 0.009352028 -0.02179032 -0.006968796 0.008852481 -0.02019315 -0.004354953 0.01050812 -0.02243047 -0.008590936 0.007895529 -0.01842844 -0.007380604 0.01179897 -0.02271658 -0.01397627 0.007914602 -0.01481223 -0.01313012 0.009248971 -0.01729846 -0.01774775 0.01141309 -0.01556992 -0.01215845 0.01078081 -0.01961541 -0.01019805 0.01170426 -0.02150642 -0.01661455 0.0126065 -0.01800101 -0.01422411 0.01445037 -0.0214138 -0.01728898 0.01522469 -0.01961475 -0.02445948 0.01295673 -0.003910005 -0.02262932 0.01159745 -0.007186055 -0.02729403 0.01779955 -0.003148257 -0.02680361 0.01811516 -0.006588101 -0.02222895 0.01400381 -0.01239573 -0.02436304 0.01475524 -0.008713662 -0.02608096 0.01843404 -0.009430825 -0.02474486 0.01850962 -0.01259392 -0.02910184 0.02346241 -0.003678917 -0.02803623 0.02208209 -0.007292687 -0.02703571 0.02362352 -0.01144456 -0.02853763 0.02504181 -0.0080114 -0.02023744 0.01558381 -0.01689487 -0.02244949 0.01730763 -0.01541924 -0.02028113 0.01863485 -0.01902759 -0.02326208 0.02225971 -0.01735204 -0.0169354 0.0177716 -0.02156484 -0.01960599 0.02100718 -0.02088516 -0.02170509 0.02273446 -0.0194382 -0.02497541 0.02178865 -0.01454967 -0.02414053 0.02574563 -0.01732009 -0.02032291 0.02455627 -0.02143496 -0.02196252 0.02676713 -0.02023291 -0.005801975 0.01402878 -0.02479261 -0.002047538 0.01605945 -0.02651083 -0.005111873 0.01597112 -0.02604579 -0.004620194 0.01895391 -0.02755737 -0.01029843 0.01545894 -0.02419418 -0.01165282 0.01491022 -0.02321082 -0.01399445 0.01792681 -0.0236628 -0.007930159 0.01750153 -0.02611374 -0.00943911 0.01962965 -0.02656435 -0.01260417 0.0201475 -0.02541488 -0.007871448 0.02267622 -0.02803087 -0.004342198 0.02174997 -0.02853709 -0.00239253 0.02384579 -0.02927953 -0.006387472 0.02512788 -0.02894562 -0.003675043 0.02670598 -0.02961182 -0.01733589 0.02063047 -0.02266621 -0.01505225 0.02148711 -0.02454048 -0.01772737 0.02509415 -0.02375757 -0.01174813 0.02332812 -0.0268352 -0.01509922 0.02534347 -0.02555966 -0.009949684 0.02578449 -0.02802044 -0.01331889 0.02815186 -0.02686113 -0.006043314 0.02733957 -0.02927953 -0.007972896 0.02930527 -0.0289362 + -1.17977e-4 0.02897071 0.03000307 -8.68192e-4 0.03109383 0.02998763 -0.003326833 0.03107124 0.02982193 -0.006239235 0.03189724 0.0293076 -0.008925855 0.03273344 0.02854222 -0.01408737 0.03113049 0.02653312 -0.01186335 0.0331462 0.02741849 -0.006680071 0.03527605 0.02881342 -0.009807229 0.03682476 0.02755504 -0.005933403 0.03738802 0.02848976 -0.01669764 0.0301063 0.02498126 -0.0146867 0.0349586 0.02574074 -0.01808786 0.03325456 0.0237478 -0.01702976 0.03688359 0.02376323 -0.0201534 0.0308808 0.02229171 -0.02272248 0.03161686 0.01957589 -0.01993238 0.03562045 0.02175033 -0.0218237 0.03657448 0.01958996 -0.01327264 0.03861016 0.0255599 -0.008703649 0.04012626 0.02690935 -0.0126245 0.04103702 0.02492666 -0.01776212 0.03947573 0.02231085 -0.02025634 0.04120069 0.0191487 -0.01808452 0.04207217 0.02070379 -0.01486063 0.04280519 0.02273833 -0.01886475 0.044622 0.01826566 -0.003270924 0.03388994 0.02959704 -2.87458e-4 0.03297162 0.02987009 -0.003228664 0.03789675 0.02880281 -0.005958855 0.04016488 0.02763593 -6.52716e-4 0.03511011 0.02957445 4.36761e-4 0.03799837 0.02894359 -0.001159787 0.04068285 0.02805238 -0.003092825 0.0436505 0.02657914 -0.01008808 0.0424779 0.02538186 -0.01135814 0.04457277 0.02367174 -0.00608319 0.04426342 0.02575576 -0.008099555 0.04572606 0.02427488 -0.01464158 0.04563719 0.0210824 -0.01146805 0.04727655 0.0217095 -0.00861597 0.04879295 0.02181708 -0.01316249 0.04910326 0.01908236 -0.003993213 0.04725205 0.02427661 3.83178e-5 0.04343682 0.02686095 -2.15524e-4 0.04670113 0.02497059 -0.00549519 0.04995578 0.02174907 -0.002057254 0.04940503 0.0228331 -0.002521157 0.05198371 0.02031457 -0.02203059 0.02727311 0.02024519 -0.02519989 0.03266048 0.01620864 -0.02449995 0.02913773 0.01735228 -0.02342832 0.03710573 0.01738476 -0.02575004 0.03447484 0.01481896 -0.02438199 0.03941226 0.0148195 -0.02641993 0.02840077 0.01419448 -0.02805358 0.02996706 0.01079118 -0.02705973 0.03470128 0.01218849 -0.0282393 0.03486275 0.009069383 -0.02229815 0.04125368 0.01670688 -0.02539283 0.04019469 0.01244539 -0.02701848 0.03943043 0.009116709 -0.02219426 0.04434329 0.01429152 -0.01885515 0.04820454 0.01472342 -0.01621246 0.04769599 0.0180478 -0.02329486 0.04508078 0.01151627 -0.02625256 0.04230046 0.007950246 -0.02010005 0.04910635 0.01159298 -0.02257794 0.04786753 0.008603811 -0.02926141 0.03100305 0.006773412 -0.02999591 0.03021425 0.002006471 -0.02968186 0.033508 0.002946197 -0.02859079 0.03723645 0.005816221 -0.02782744 0.04073649 0.003686606 -0.02982699 0.0299564 -0.00372368 -0.0297833 0.03367304 -7.33336e-4 -0.0292344 0.03671979 0.001477301 -0.02835321 0.03983575 9.59042e-4 -0.02922421 0.03655576 -0.002335131 -0.02974331 0.02758407 0.003544211 -0.02472829 0.04551976 0.007162988 -0.02559006 0.04536062 0.003401458 -0.02206695 0.05005633 0.003854632 -0.01965093 0.05143582 0.007502377 -0.02692186 0.04334712 -6.47864e-4 -0.0276857 0.04109811 -0.003780961 -0.02559584 0.04569381 4.14139e-4 -0.02356338 0.04838705 0.002946138 -0.02470725 0.04702001 -0.001731455 -0.02784049 0.0262897 0.01066881 -0.01572668 0.05102837 0.0146386 -0.0107907 0.05129075 0.01822751 -0.0125153 0.0520761 0.01608067 -0.0162146 0.05320334 0.01012885 -0.01264101 0.05437892 0.01224088 -0.009231448 0.05442029 0.01490527 -0.006979823 0.05201458 0.01922768 -0.003786683 0.05457192 0.01689255 6.44237e-4 0.05333739 0.01891654 -0.005946934 0.05590921 0.01400119 -0.01041913 0.05702608 0.008017957 -0.007233262 0.05701375 0.01096665 -0.001088798 0.05619895 0.01462471 -0.002025127 0.05745512 0.01204186 -0.01957571 0.05269694 0.002213299 -0.01722002 0.05391031 0.005814671 -0.01354628 0.05583816 0.007179915 -0.01365762 0.05660063 0.003124833 -0.02174729 0.0507043 -7.34614e-4 -0.01773256 0.05420339 -0.001533389 -0.01723849 0.05447489 0.002212524 -0.01472073 0.05613476 -0.001529157 -0.01092129 0.05801153 1.38688e-4 -0.006563127 0.05826324 0.007799625 -0.008585691 0.05843329 0.004505455 -0.002732098 0.05840355 0.009357452 -0.006168067 0.05920737 0.003481805 -0.001465499 0.0594688 0.005733013 -0.002535939 0.05984461 0.00234133 -0.005135357 0.05960267 -7.34726e-4 0.001569569 0.05068886 0.02171534 0.002777457 0.04035329 0.0280528 0.003678739 0.04292917 0.02686822 0.001486063 0.03042358 0.02997153 0.002161443 0.03505152 0.02953201 0.002892613 0.03179126 0.0298295 0.004664242 0.03717494 0.02879947 0.005507171 0.03349328 0.02931654 0.005284786 0.04089409 0.02747935 0.008212447 0.03895455 0.02747279 0.003109574 0.04572057 0.02539372 0.006178498 0.04484462 0.02536195 0.002873182 0.04836291 0.02359396 0.006883502 0.04702919 0.02376347 0.005620718 0.04993218 0.02175039 0.004920125 0.05306094 0.01864588 0.008652269 0.04278934 0.02577036 0.01141148 0.04061067 0.02571135 0.01157599 0.04512763 0.02326649 0.009700596 0.04861426 0.02149814 0.007092118 0.05159431 0.01962167 0.01160871 0.04283058 0.0245462 0.01353871 0.04716038 0.02063822 0.008410751 0.03659129 0.02806115 0.01024979 0.03340941 0.02802628 0.01205247 0.03706574 0.02659696 0.00500077 0.02968698 0.02960687 0.007547855 0.0332036 0.02890348 0.008068919 0.02963113 0.02891469 0.01311755 0.03342849 0.02678817 0.01076918 0.03016263 0.02802187 0.01322454 0.03017127 0.02696359 0.01457315 0.04135859 0.0236712 0.01396608 0.03678274 0.02571791 0.01632475 0.03842699 0.02374833 0.01697432 0.04246598 0.0214414 0.01826488 0.04425114 0.01913267 0.01915127 0.03919851 0.02124094 0.01623827 0.03350263 0.02503317 0.01823377 0.03576165 0.02316308 0.01669812 0.03043097 0.02496737 0.02075845 0.03635156 0.02073884 0.01987951 0.03232622 0.02241426 0.02212589 0.03167927 0.02026784 0.001912713 0.05481952 0.01680636 0.003206372 0.05593842 0.0148189 0.007909476 0.05479633 0.0149939 0.008999466 0.05313998 0.01689988 0.002078652 0.05734127 0.01221752 0.001925349 0.05863404 0.008947074 0.00613147 0.05677181 0.01218783 0.006514668 0.05791938 0.008942008 0.01110178 0.0512458 0.01810956 0.01227706 0.05304574 0.01487278 0.01404231 0.04951 0.01801252 0.01710397 0.04704564 0.01788425 0.01634454 0.04993587 0.01539647 0.0111283 0.0551052 0.01218676 0.01517635 0.05262064 0.01266443 0.0192005 0.04883545 0.01342898 0.0185244 0.05121368 0.01046341 0.004238069 0.05897945 0.006654024 0.009342968 0.05734205 0.008242011 0.007777214 0.05867159 0.00440973 0.003649294 0.05960261 0.003686547 4.68907e-4 0.0600323 -1.17633e-4 0.004317224 0.0597403 -7.13725e-4 0.01089745 0.05783069 0.002946317 0.007237911 0.05913805 8.1408e-4 0.01257377 0.05664193 0.00586611 0.01218765 0.05577862 0.009424448 0.01629745 0.05367255 0.008764207 0.01524484 0.05539536 0.005125284 0.02051687 0.05074793 0.00719583 0.01821285 0.05346119 0.004467964 0.01391869 0.05659139 0.001364946 0.009568035 0.05846321 -0.001060128 0.02085137 0.05142074 0.002906203 0.01619464 0.05530798 -9.05288e-4 0.0189225 0.05332118 1.72213e-4 0.02032893 0.04576659 0.01549106 0.02143073 0.04018622 0.01845085 0.02207577 0.04251444 0.0160818 0.02248686 0.04478347 0.0133149 0.02223759 0.04743719 0.01020032 0.02478754 0.04084306 0.01308947 0.02411109 0.03802919 0.01602077 0.02444469 0.04358518 0.01096576 0.02310383 0.03517878 0.01848626 0.02496778 0.03270363 0.01652753 0.0236423 0.02884638 0.01847362 0.02618229 0.03587275 0.01351988 0.02750551 0.03760302 0.009428441 0.02642017 0.03159821 0.01419413 0.02790147 0.03438442 0.0102418 0.02780705 0.02987664 0.01136153 0.02411139 0.04696542 0.005870819 0.02287602 0.04923516 0.003025889 0.02520501 0.04420894 0.008110702 0.02649581 0.04342061 0.004467368 0.02685707 0.04028111 0.008665263 0.02547866 0.04591858 9.14555e-4 0.02283596 0.04952114 -4.65153e-4 0.02810674 0.03935396 0.005056977 0.02770739 0.04152631 0.001383483 0.02914011 0.03068017 0.007342875 0.02885657 0.03501033 0.00657922 0.02974355 0.03241521 0.003542542 0.02882409 0.03852182 6.79882e-4 0.02947384 0.03495979 0.002946794 0.02982789 0.0297842 0.003451049 0.0297088 0.03428941 -0.001311779 0.03004634 0.02979069 -9.46857e-4 -0.002308726 0.0597949 -0.003148913 -0.02947622 0.03359889 -0.004666984 -0.02890747 0.03229171 -0.007846117 -0.029486 0.02759224 -0.005270302 -0.02822053 0.03851097 -0.005792856 -0.02776628 0.03762102 -0.00863415 -0.0285328 0.02838826 -0.009206354 -0.02773165 0.03030556 -0.01152443 -0.02731662 0.03336858 -0.01206308 -0.02706402 0.03599768 -0.01154464 -0.02568143 0.0391013 -0.01264238 -0.0262854 0.04156923 -0.008774518 -0.02554661 0.04469227 -0.005807459 -0.0230093 0.04866945 -0.005089998 -0.02049124 0.05152332 -0.004405081 -0.0244621 0.04359626 -0.01098138 -0.02275615 0.04752629 -0.008829772 -0.01980286 0.0506072 -0.00927776 -0.02245384 0.04573839 -0.01221072 -0.01993072 0.04856437 -0.01267641 -0.02575802 0.03169941 -0.01536422 -0.02447503 0.02910566 -0.01737707 -0.0236296 0.0352351 -0.01778966 -0.02484035 0.03684717 -0.0154581 -0.02254003 0.03240031 -0.01973265 -0.02328926 0.04178792 -0.01487416 -0.02224487 0.02944749 -0.02016407 -0.01989376 0.02990591 -0.02252942 -0.0207017 0.03509664 -0.02115201 -0.02052277 0.03816717 -0.02037185 -0.02184075 0.0404818 -0.01778233 -0.01820021 0.03738033 -0.02271699 -0.02063322 0.04590076 -0.01494783 -0.01945227 0.04484319 -0.01741433 -0.01717877 0.04809731 -0.01671797 -0.018826 0.04084706 -0.02076679 -0.01771342 0.04438322 -0.01954025 -0.01502639 0.04328542 -0.02237522 -0.02645963 0.02691471 -0.01392728 -0.01684278 0.05429279 -0.005375385 -0.01677978 0.05342733 -0.00855714 -0.01337969 0.05624169 -0.005854249 -0.0103479 0.05804681 -0.00306499 -0.01040858 0.05719625 -0.007349789 -0.01614749 0.05178266 -0.01292163 -0.01389747 0.05468297 -0.01004731 -0.0122931 0.05398392 -0.01329141 -0.009385347 0.05642306 -0.0107398 -0.006467342 0.05907541 -0.003729701 -0.007238984 0.05826461 -0.007141709 -0.002030134 0.05916339 -0.007007718 -0.00486356 0.05809676 -0.009425759 -0.007486224 0.05532222 -0.0143727 0.001985967 0.05952972 -0.005230844 -0.005343914 0.05693799 -0.01219213 -4.36567e-4 0.05781376 -0.01135754 0.002344429 0.0581268 -0.01031023 -0.01543027 0.05085796 -0.01517176 -0.01316654 0.05017507 -0.01797378 -0.009941697 0.05246955 -0.01729822 -0.01400625 0.04704016 -0.02040606 -0.006589353 0.05361384 -0.0173518 -0.009356617 0.04872137 -0.02157127 -0.005963802 0.05194664 -0.01961416 -0.002578139 0.056369 -0.01414859 5.80217e-4 0.0561639 -0.01474738 -0.001390278 0.05466234 -0.01711767 -0.005273461 0.05015456 -0.02163541 -0.002076089 0.05222445 -0.02008813 0.002298772 0.05334198 -0.01876592 0.001338303 0.05178046 -0.02062535 -0.01694142 0.03032475 -0.02481544 -0.01735347 0.03429442 -0.02414077 -0.01427698 0.03160035 -0.02637237 -0.01071876 0.0298677 -0.02805238 -0.01145845 0.03397887 -0.02748495 -0.01402872 0.0351116 -0.02604568 -0.01550459 0.03868204 -0.02422916 -0.01335847 0.04096186 -0.02455568 -0.01165479 0.0391131 -0.02615791 -0.01110833 0.04312855 -0.02460384 -0.009508013 0.03753376 -0.0274713 -0.005142927 0.02971953 -0.02956664 -0.00889486 0.03278732 -0.02854019 -0.006154239 0.03239226 -0.02927953 -0.001633942 0.02873665 -0.0299499 -0.00342226 0.03136903 -0.02978533 -6.7909e-4 0.0305736 -0.02999562 -0.007386386 0.03570801 -0.0285322 -0.005464375 0.0384683 -0.02830427 -0.00477004 0.03456532 -0.02927953 -0.001695573 0.0331484 -0.02980399 -0.01128602 0.04604417 -0.0227319 -0.008512675 0.04505223 -0.02454036 -0.005827069 0.04670143 -0.02427005 -0.008069813 0.04164803 -0.02647763 -0.005986392 0.04353761 -0.02611339 -0.003693521 0.04081982 -0.02778166 -0.003208935 0.04884696 -0.02319276 -0.003003001 0.04570919 -0.02540433 4.25106e-4 0.0468198 -0.02489608 -0.002163589 0.04352337 -0.02672737 9.08838e-4 0.04190927 -0.02756309 -0.002357125 0.03674691 -0.02916836 4.56593e-4 0.03925776 -0.02855283 -6.54618e-6 0.03650885 -0.02929884 3.90645e-4 0.03355652 -0.0298072 9.61526e-4 0.03117144 -0.02997004 0.005114436 0.05901885 -0.005792081 0.007847607 0.05864053 -0.004465878 0.01214587 0.05727738 -0.003429651 0.01162368 0.05696755 -0.006337583 0.005480468 0.05778664 -0.01001197 0.004617035 0.0561434 -0.0140838 0.008429467 0.05747234 -0.008746385 0.0080114 0.05585312 -0.01300579 0.01277154 0.05527305 -0.01006972 0.01082289 0.05500108 -0.01266986 0.01713228 0.05426985 -0.004600942 0.02085286 0.05142128 -0.00288558 0.01732605 0.05340772 -0.007363677 0.02086746 0.05053669 -0.006798565 0.01426231 0.0551697 -0.008002996 0.0171929 0.05232584 -0.01043248 0.01728117 0.05083811 -0.01299333 0.01967412 0.04938101 -0.01179397 0.00455594 0.05453383 -0.01671689 0.009140193 0.05367332 -0.01607424 0.005079269 0.05099469 -0.02088755 0.001394808 0.04952883 -0.02276241 0.008590936 0.05210429 -0.01842802 0.00767827 0.04980313 -0.02125573 0.01359677 0.05274266 -0.01414251 0.01313042 0.05075097 -0.01729768 0.01588356 0.05031675 -0.0154193 0.0192148 0.04661303 -0.01608425 0.01215881 0.04921865 -0.01961523 0.01661354 0.04739356 -0.01800143 0.01198172 0.04687142 -0.02178096 0.01535493 0.04526197 -0.02084547 0.0232985 0.04829603 -0.005075395 0.0250135 0.0461803 -0.003907859 0.02729368 0.0422005 -0.003148674 0.02680391 0.04188388 -0.006587207 0.02210819 0.04765468 -0.01008141 0.02436256 0.04524528 -0.008712887 0.02608025 0.04156643 -0.0094316 0.02218145 0.0455898 -0.01296412 0.02474516 0.04149049 -0.01259273 0.02910137 0.03653758 -0.003680706 0.02803587 0.03791648 -0.007294595 0.02941215 0.0317595 -0.005824804 0.02703571 0.0363757 -0.01144433 0.02853763 0.03495728 -0.008011162 0.02853262 0.0316115 -0.009206712 0.02645987 0.03308451 -0.01392656 0.02933531 0.02906286 -0.006444752 0.02773177 0.02969443 -0.01152426 0.02244865 0.04269129 -0.01542079 0.02098655 0.04198515 -0.01785159 0.01832485 0.04297226 -0.01995664 0.02326244 0.03773921 -0.01735162 0.01904356 0.03858512 -0.0216186 0.02170437 0.03726476 -0.01943898 0.02497571 0.03821069 -0.01454883 0.02420759 0.0308758 -0.01776117 0.02610826 0.0293526 -0.01479142 0.02068424 0.03490519 -0.02121192 0.02335596 0.03325664 -0.01864588 0.02066868 0.03070652 -0.02181106 0.0047369 0.04775637 -0.0237348 0.00768733 0.0473991 -0.02323365 0.004967749 0.045237 -0.02539736 0.003234088 0.04355311 -0.02662235 0.01030308 0.04453641 -0.02419638 0.007547736 0.04346233 -0.02577501 0.01241421 0.04363703 -0.02370315 0.005526423 0.04058504 -0.02754491 0.009439229 0.0403698 -0.0265643 0.007717013 0.03737664 -0.02806264 0.002577126 0.0381726 -0.02878868 0.00196284 0.03475171 -0.02956897 0.005267024 0.03771364 -0.02853798 0.004565358 0.03476983 -0.02927953 0.003275752 0.03165364 -0.02979403 0.01604402 0.0412867 -0.02273178 0.01310318 0.04108899 -0.02462768 0.01744151 0.03769159 -0.02320998 0.01505219 0.03851342 -0.02454012 0.01164799 0.0380696 -0.02647769 0.01498425 0.03569853 -0.0253877 0.01234436 0.03548616 -0.02680331 0.008788704 0.03483337 -0.0283156 0.01802659 0.03405946 -0.02366346 0.01570916 0.03300309 -0.02540445 0.01686817 0.03064489 -0.02483606 0.01924663 0.0274195 -0.02294301 0.01352357 0.03216314 -0.02672731 0.009922504 0.0313217 -0.02832382 0.01222866 0.02916133 -0.02741986 0.01468455 0.02826422 -0.02613002 0.006220579 0.03243899 -0.02926588 0.006368935 0.02871739 -0.02932673 0.003534138 0.02818274 -0.02976512 -0.02977091 0.02603089 -9.18628e-4 0.002957165 0.02797788 0.02981489 0.005957186 0.02740079 0.02931469 0.01163035 0.02665746 0.02748847 0.001083076 0.02660614 0.02981418 0.00563544 0.02442455 0.02897107 0.003334403 0.02390807 0.02922916 0.008713126 0.02638703 0.02852207 0.009177327 0.0231468 0.02778208 0.01457959 0.02744007 0.02612847 0.01747328 0.0266987 0.02421128 0.01284295 0.02320396 0.02631038 0.01639294 0.02335023 0.02428627 0.01962053 0.02846461 0.02268075 0.02092605 0.02676296 0.02132076 0.01994544 0.02268177 0.02124124 0.02328717 0.02506351 0.01835238 0.008627533 0.01968616 0.02686804 0.01266634 0.01923662 0.02503794 0.0169962 0.02039146 0.02285277 0.01486146 0.01719576 0.02273857 0.01878517 0.01817137 0.02027279 0.005665123 0.0209937 0.02807796 0.004670381 0.017416 0.02687114 1.80623e-4 0.02352154 0.0293138 0.001115739 0.02002066 0.02832144 0.00348407 0.0198096 0.02803224 0.0113579 0.01542651 0.02367156 0.008717536 0.0164088 0.02533078 0.008263289 0.01293468 0.02330493 0.0124036 0.01356339 0.02187323 0.01645714 0.0142582 0.01962637 0.01308697 0.01140075 0.01962226 0.00991249 0.01030623 0.02039897 0.003992736 0.0127471 0.02427649 0.004134476 0.01532316 0.02590805 4.30832e-4 0.01330131 0.02496719 0.005836725 0.009001016 0.02071267 0.002057552 0.01059406 0.02283281 0.001645386 0.008351624 0.02075231 0.02559012 0.02850586 0.01565444 0.02189099 0.02128642 0.01862323 0.0260728 0.02572619 0.01432907 0.0236786 0.02087378 0.01608175 0.02779483 0.02657562 0.01080745 0.02720087 0.02339601 0.01092839 0.02503782 0.02034896 0.01351898 0.02593404 0.01965469 0.01108199 0.02025699 0.01679021 0.01784652 0.02335155 0.01675808 0.01351273 0.02001076 0.01439344 0.01608073 0.02213007 0.01432168 0.01289641 0.02037715 0.01203572 0.01281625 0.02445602 0.01533699 0.009423911 0.01736319 0.01045405 0.01484251 0.02246761 0.01246184 0.009418964 0.02882701 0.02633726 0.007644355 0.02806884 0.0222004 0.007404327 0.02950179 0.02512377 0.003124475 0.02800208 0.02008026 0.00444293 0.02635812 0.01771587 0.007502973 0.0295794 0.02488434 -0.00163573 0.02892315 0.02186733 7.42995e-4 0.02831268 0.02019703 -0.001949191 0.02667933 0.01664376 0.003594636 0.02461338 0.01403635 0.006474435 0.01973813 0.009708464 0.01007097 0.02397108 0.01229697 0.003753006 0.02185136 0.01023244 0.005847752 0.02680242 0.01639878 3.78436e-4 0.02377367 0.01162254 2.26345e-4 0.02531355 0.0141946 -0.00359261 0.02168244 0.009358406 0.002213001 0.01415932 0.009985685 0.0173583 0.015603 0.008675932 0.01429235 0.01049709 0.007805109 0.0172913 0.007516503 0.008080482 0.01912266 0.01310724 0.00701946 0.01421093 0.01584702 0.00698924 0.01103818 0.01040101 0.005358994 0.01369959 0.01265984 0.004996538 0.01074957 0.006648421 0.005987167 0.01679819 0.00316298 0.006179869 0.01801502 -0.001214027 0.005823612 0.01783311 0.001613318 0.004194319 0.01530027 0.005946338 0.004090011 0.01400077 0.01041859 0.002973258 0.008017957 0.007233083 0.002985835 0.01096683 0.002025127 0.002544403 0.0120418 0.01930749 0.007935643 0.006616652 0.01697021 0.006071448 0.00652498 0.01368051 0.004276931 0.00735712 0.01365739 0.003398895 0.003125011 0.01844078 0.006371974 0.002217054 0.02174395 0.009334266 -0.00170958 0.01886975 0.006653547 -5.85183e-4 0.01532876 0.004212856 -0.002000093 0.01092159 0.001988232 1.38683e-4 0.006562769 0.001736342 0.007799923 0.008585274 0.001566112 0.004505217 0.002732217 0.001595973 0.009357511 0.006168842 7.92404e-4 0.003481864 0.001465201 5.30864e-4 0.005733132 0.007120788 8.52842e-4 -0.00153321 0.00253576 1.55076e-4 0.002340853 0.003673017 2.16541e-4 -7.33119e-4 -0.002034068 0.0222817 0.02894353 -0.003112018 0.01978433 0.02806288 -5.29139e-4 0.01720857 0.02718442 -0.005455911 0.01851856 0.02722972 -0.001992583 0.02540838 0.02959972 -0.004564464 0.02537584 0.02932208 -0.005643725 0.02240198 0.02850127 -0.007588565 0.02453595 0.02854442 -0.009220659 0.02121078 0.02721238 -0.002926111 0.01474046 0.02570933 -0.005290627 0.01502496 0.02548241 -0.002365112 0.01102674 0.02319186 -0.006784558 0.0135402 0.02420562 -0.00307554 0.008090496 0.02033841 -0.005812168 0.0102089 0.02183634 -0.00889784 0.01128768 0.02176934 -0.008426189 0.01712036 0.0258063 -0.00968182 0.01876622 0.02611309 -0.01043307 0.01470649 0.02365016 -0.01151609 0.01284402 0.02179992 -0.00760436 0.007624328 0.01857697 -0.01247519 0.0178821 0.02447342 -0.01309394 0.01141119 0.01961958 -0.01420032 0.0164662 0.02273857 -0.002734959 0.02783638 0.02983355 -0.007503449 0.02721923 0.0289433 -0.006385207 0.02909547 0.02932232 -0.01049965 0.02395993 0.02747631 -0.01025754 0.02870213 0.02821934 -0.01272934 0.02589488 0.02690631 -0.0128048 0.02135866 0.02576118 -0.01549971 0.02085775 0.02406913 -0.01569366 0.01473337 0.02059578 -0.01811337 0.01888412 0.02124005 -0.0175991 0.02132391 0.02272605 -0.01506429 0.02543616 0.02559351 -0.01726168 0.02524507 0.02413707 -0.02136009 0.02219551 0.01966166 -0.01954752 0.02560812 0.02240318 -0.004110753 0.006194174 0.01786571 -0.003206729 0.004061043 0.01481878 -0.007909297 0.005203187 0.01499408 -0.002078652 0.002658188 0.0122174 -0.001950263 0.001352131 0.008897721 -0.006130993 0.00322777 0.01218819 -0.006117165 0.001697242 0.008064389 -0.01089775 0.008455693 0.01789337 -0.01122182 0.00645107 0.01486712 -0.01538664 0.009937524 0.01625669 -0.01690757 0.0126869 0.01780277 -0.011128 0.004894495 0.0121876 -0.01565182 0.007011651 0.01139593 -0.01437884 0.007597982 0.01394093 -0.018462 0.01090824 0.01405382 -0.01911479 0.008829712 0.009486377 -0.002684116 4.07454e-4 0.004404902 -0.009080231 0.002753794 0.008780181 -0.009975135 0.002142906 0.005142331 -0.00653398 8.97442e-4 0.003686726 -2.42721e-4 -1.77494e-5 5.58992e-4 -0.00434643 2.92324e-4 8.14427e-4 -0.008004605 0.001078069 7.40191e-4 -0.01127666 0.002182662 0.001249969 -0.01317918 0.003808498 0.006595075 -0.01267665 0.004368185 0.009221076 -0.01671725 0.006124377 0.007237911 -0.01915884 0.00725013 0.004291415 -0.02104407 0.01039886 0.008671164 -0.01469975 0.004046738 0.003687202 -0.01473593 0.003832638 6.78012e-5 -0.0177505 0.005756676 1.70875e-4 -0.02071446 0.008205592 7.12566e-4 -0.01867854 0.01546984 0.0184853 -0.02032881 0.01423221 0.01549077 -0.02059435 0.01854431 0.01861989 -0.02207595 0.01748389 0.01608061 -0.02109479 0.01272433 0.01264697 -0.02312755 0.01382219 0.01032239 -0.02341961 0.01702612 0.01362973 -0.02411109 0.02196913 0.01602023 -0.02508115 0.01880198 0.01224738 -0.02310389 0.0248211 0.01848638 -0.02500462 0.02560281 0.01601696 -0.02618283 0.02412652 0.01351898 -0.02750527 0.0223965 0.009429275 -0.02251482 0.01102197 0.005994379 -0.02520531 0.01579093 0.008110702 -0.02478539 0.01378285 0.004925966 -0.02649527 0.01657813 0.004468262 -0.02685678 0.01971799 0.008666098 -0.02323323 0.01111549 0.002267599 -0.02547818 0.01407998 9.14833e-4 -0.02283567 0.01047784 -4.66812e-4 -0.0281068 0.02064639 0.005058944 -0.02775442 0.01856911 0.001267313 -0.02876025 0.0262922 0.007852673 -0.0291413 0.02488386 0.005078077 -0.02924424 0.02343374 0.002217531 -0.02878373 0.02150422 -8.81935e-4 -4.23504e-4 4.66197e-5 -0.002293646 0.02935296 0.02520489 -0.004294693 0.02868372 0.02515256 -0.007567048 0.02796339 0.02069669 -0.005834877 0.02682447 0.01722759 -0.004440486 0.02761971 0.02521294 -0.01081913 0.0264396 0.02541911 -0.01351171 0.02678316 0.01964157 -0.008869767 0.02553278 0.02189868 -0.01364672 0.02383118 0.01224815 -0.004389882 0.02450639 0.01448172 -0.007851481 0.02049124 0.008476316 -0.004405379 0.02092564 0.009830474 -0.007617354 0.02499735 0.01780533 -0.01133334 0.02328199 0.01518648 -0.01189166 0.02128571 0.0118162 -0.01092582 0.01838058 0.008356153 -0.009829401 0.02505487 0.0267139 -0.01623225 0.02254027 0.02759957 -0.01973223 0.0233193 0.02363801 -0.01784431 0.02328914 0.01821285 -0.01487517 0.02085989 0.02327913 -0.02056849 0.02184081 0.01951748 -0.01778197 0.01820009 0.02261978 -0.02271717 0.02063357 0.01410037 -0.01494866 0.0180884 0.01069086 -0.01423108 0.01945209 0.01515632 -0.01741439 0.01717865 0.01190251 -0.01671826 0.0191527 0.01776754 -0.01966345 0.01781755 0.01939266 -0.02170318 0.01606315 0.01390665 -0.01962274 0.01506525 0.01606041 -0.02195596 0.01832193 0.006733596 -0.005206525 0.01444882 0.004486978 -0.006587982 0.0106917 0.002269566 -0.004516363 0.01059406 0.002937436 -0.00755465 0.01537209 0.007579684 -0.01283621 0.01386284 0.005319595 -0.01012325 0.01081329 0.006174266 -0.01478719 0.009615957 0.003754854 -0.01095491 0.006484389 0.001233339 -0.005655646 0.007736027 0.002336978 -0.008769512 0.0033378 4.96898e-4 -0.004635035 0.00416851 0.001535654 -0.008644342 0.008716404 0.005084872 -0.01432269 0.005942404 0.003800213 -0.01347512 -4.02596e-4 0.001205027 -0.008562386 -0.001207411 4.75058e-4 -0.005308926 0.003710985 0.003101766 -0.01283371 0.001267135 0.002274036 -0.01147311 0.01334303 0.01130771 -0.01939499 0.01354378 0.008496701 -0.01601392 0.01046019 0.00884509 -0.01857274 0.006588757 0.006385505 -0.01735162 0.009356081 0.01127785 -0.02157115 0.005963861 0.008053004 -0.01961421 -5.8045e-4 0.003835082 -0.01474636 0.001864314 0.005091965 -0.01669973 0.00566256 0.01018208 -0.02183294 0.001487851 0.006880283 -0.01914012 0.001971662 0.009562551 -0.0219326 0.01684975 0.02652603 -0.02463454 0.01544606 0.02256327 -0.02464085 0.01339656 0.02505981 -0.02642506 0.009515166 0.02706831 -0.02833944 0.01452559 0.01964807 -0.02417719 0.01180571 0.01673907 -0.02422374 0.01165419 0.02088665 -0.02615815 0.009952485 0.02297341 -0.02744019 0.007717013 0.02474761 -0.02853864 0.007253468 0.02115142 -0.02777642 0.00388056 0.02477991 -0.02932459 0.0112859 0.01395541 -0.02273195 0.008513033 0.01494777 -0.02454048 0.004931092 0.01268547 -0.02406555 0.007279694 0.01712065 -0.02615827 0.003532648 0.01904845 -0.02775526 0.003002882 0.01429051 -0.02540439 -4.25277e-4 0.0131796 -0.02489596 0.001848042 0.01668119 -0.02686131 -0.001142442 0.01984077 -0.02824491 0.004441678 0.02182322 -0.02854335 0.00114715 0.02810072 -0.02993309 7.50306e-4 0.0221036 -0.02895694 6.42511e-4 0.02496242 -0.02958691 -0.001112878 0.0266056 -0.02980589 -0.005018353 4.89276e-4 -0.002727091 -0.006490707 0.001110792 -0.005141258 -0.01018518 0.001861751 -0.002681732 -0.01121068 0.002927601 -0.006579577 -0.003347039 0.001466751 -0.008772552 -0.006893754 0.001837611 -0.00782442 -0.003300905 0.002768874 -0.01225471 -0.01026344 0.003379881 -0.009432137 -0.007482469 0.003535926 -0.01214206 -0.01462221 0.003934383 -0.003275275 -0.01506221 0.004865646 -0.006578624 -0.01828277 0.006723046 -0.005195677 -0.02078312 0.008850872 -0.004948616 -0.01388478 0.005342066 -0.01005822 -0.01119571 0.005270957 -0.01285386 -0.01761806 0.007527947 -0.009349763 -0.01630908 0.008313655 -0.012946 -0.02033579 0.01071667 -0.01086628 -0.005033016 0.004392266 -0.01485043 -0.00353235 0.005932152 -0.01765441 -0.00914067 0.006326138 -0.016074 -0.001491129 0.009352028 -0.02179032 -0.006968796 0.008852481 -0.02019309 -0.004354894 0.01050812 -0.02243041 -0.008590936 0.007895529 -0.01842844 -0.007380545 0.01179891 -0.02271658 -0.01397621 0.007914602 -0.01481223 -0.01313006 0.009248971 -0.01729846 -0.0177477 0.01141303 -0.01556986 -0.01215845 0.01078081 -0.01961541 -0.01019799 0.0117042 -0.02150636 -0.01661455 0.0126065 -0.01800096 -0.01422411 0.01445037 -0.0214138 -0.01728898 0.01522463 -0.01961475 -0.02445948 0.01295667 -0.003910005 -0.02262932 0.01159745 -0.007186055 -0.02729398 0.01779955 -0.003148198 -0.02680361 0.01811516 -0.006588101 -0.02222895 0.01400381 -0.01239567 -0.02436304 0.01475518 -0.008713662 -0.02608096 0.01843398 -0.009430825 -0.0247448 0.01850962 -0.01259392 -0.02910178 0.02346241 -0.003678858 -0.02803617 0.02208209 -0.007292628 -0.02703571 0.02362352 -0.0114445 -0.02853763 0.02504175 -0.0080114 -0.02023744 0.01558381 -0.01689481 -0.02244949 0.01730757 -0.01541924 -0.02028113 0.01863485 -0.01902759 -0.02326208 0.02225971 -0.01735204 -0.01693534 0.0177716 -0.02156484 -0.01960599 0.02100718 -0.0208851 -0.02170509 0.02273446 -0.01943814 -0.02497535 0.02178859 -0.01454967 -0.02414047 0.02574563 -0.01732003 -0.02032285 0.02455621 -0.02143496 -0.02196252 0.02676713 -0.02023291 -0.005801916 0.01402872 -0.02479261 -0.002047479 0.01605939 -0.02651083 -0.005111873 0.01597112 -0.02604573 -0.004620194 0.01895385 -0.02755737 -0.01029843 0.01545894 -0.02419418 -0.01165276 0.01491022 -0.02321082 -0.01399439 0.01792681 -0.0236628 -0.007930159 0.01750153 -0.02611368 -0.00943911 0.01962959 -0.0265643 -0.01260411 0.0201475 -0.02541488 -0.007871448 0.02267616 -0.02803087 -0.004342198 0.02174997 -0.02853709 -0.00239253 0.02384579 -0.02927953 -0.006387472 0.02512782 -0.02894562 -0.003674983 0.02670598 -0.02961182 -0.01733589 0.02063041 -0.02266621 -0.01505219 0.02148705 -0.02454048 -0.01772737 0.02509415 -0.02375751 -0.01174807 0.02332812 -0.0268352 -0.01509916 0.02534341 -0.02555966 -0.009949684 0.02578449 -0.02802044 -0.01331883 0.02815181 -0.02686113 -0.006043255 0.02733951 -0.02927953 -0.007972896 0.02930521 -0.02893614 @@ -58,7 +58,7 @@ - -0.17004 0.01403695 0.9853373 -0.2757072 0.01941359 0.9610457 -0.2704367 0.01223504 0.96266 -0.3519141 0.0413559 0.9351183 -0.1508532 0.08158934 0.9851835 -0.1758249 0.119964 0.9770846 -0.2406153 0.1096555 0.9644066 -0.2978817 0.162773 0.940623 -0.3343746 0.1523587 0.9300433 -0.2601983 0.2354426 0.93641 -0.3893639 0.02523273 0.9207383 -0.4534923 0.112042 0.8841897 -0.5371186 0.09135252 0.8385454 -0.5348722 0.09017729 0.8401071 -0.6077056 0.0423516 0.7930323 -0.5572142 0.1589911 0.8150057 -0.6113442 0.1749579 0.7717824 -0.6576766 0.1156874 0.7443642 -0.7227702 0.1115996 0.6820182 -0.4083253 0.2022139 0.8901574 -0.4061884 0.1938741 0.8929859 -0.5055707 0.2368744 0.8296318 -0.359026 0.2933057 0.886043 -0.3655012 0.3251812 0.8721618 -0.6217878 0.2417218 0.7449501 -0.5203852 0.300769 0.7992104 -0.6618059 0.2709281 0.699007 -0.5068076 0.341839 0.7913864 -0.5066768 0.3398097 0.7923434 -0.5533998 0.3876044 0.7372323 -0.5646672 0.4735476 0.6759465 -0.5471088 0.4536669 0.7034618 -0.06776624 0.08318656 0.9942273 -0.06618779 0.08065688 0.994542 -0.1498621 0.2012777 0.9680025 -0.250188 0.2657222 0.9310197 -0.2635639 0.2813334 0.9227056 -0.1442323 0.1938723 0.9703663 -0.1634377 0.2886117 0.9433937 -0.08225512 0.1946164 0.9774245 -0.0511834 0.1281846 0.9904287 -0.1204265 0.3773961 0.9181883 -0.1175828 0.338721 0.9335108 -0.04371613 0.2288737 0.9724741 -0.04478889 0.2906655 0.955776 -0.3557238 0.352727 0.8654735 -0.3899016 0.4288694 0.8148914 -0.2399124 0.3987649 0.8851152 -0.2646242 0.4108809 0.8724397 -0.28378 0.4604073 0.8411266 -0.4302552 0.4348627 0.7910594 -0.4432325 0.4777917 0.7584591 -0.3198996 0.4752056 0.8196609 -0.3350253 0.5444499 0.7689815 -0.3251976 0.5574009 0.7639051 -0.4169508 0.5226992 0.7435978 -0.1639449 0.407209 0.8985005 -0.2027245 0.5445469 0.813862 -0.05330455 0.4159654 0.9078169 -0.1292706 0.5109764 0.849819 -0.04393488 0.4980881 0.8660128 -0.07967752 0.522711 0.8487784 -0.2186799 0.5875181 0.779103 -0.2081742 0.6037402 0.7695202 -0.1382483 0.634283 0.7606396 -0.06097263 0.5930837 0.8028288 -0.7996429 0.03570204 0.5994136 -0.7765861 0.1390423 0.6144765 -0.781564 0.1513631 0.6051834 -0.8134099 0.1776215 0.5539088 -0.7035055 0.125552 0.6995118 -0.8926979 0.04359632 0.4485418 -0.8901339 0.07444947 0.4495764 -0.8947479 0.05710572 0.4429054 -0.929988 0.09003883 0.3563921 -0.8269913 0.22909 0.5134231 -0.772611 0.3017855 0.5585675 -0.8625401 0.2389455 0.4460156 -0.8605958 0.2401171 0.449131 -0.8910173 0.2527143 0.3771258 -0.8543419 -0.001040458 0.5197106 -0.6673288 0.2914568 0.6853652 -0.7356156 0.299703 0.6074931 -0.6340866 0.348515 0.6902692 -0.7273051 0.3050462 0.614796 -0.6335076 0.424623 0.6468103 -0.697842 0.4555664 0.5526988 -0.6877579 0.4305922 0.5844479 -0.783711 0.3987039 0.4762691 -0.7884098 0.3998458 0.4674755 -0.7975912 0.4240531 0.4289842 -0.8313164 0.4250561 0.3581067 -0.6715288 0.5218904 0.5260034 -0.7028635 0.5585572 0.4404507 -0.7112213 0.5562282 0.429854 -0.603955 0.5612017 0.5659427 -0.9500696 0.07081282 0.3038967 -0.9695999 0.1355913 0.2036938 -0.9596318 -0.03825926 0.2786455 -0.9043117 0.2380334 0.3543451 -0.9283737 0.2452437 0.279245 -0.9716063 0.1344282 0.1947058 -0.9882203 0.05332159 0.1434481 -0.9876118 0.1531639 0.03411257 -0.9957997 0.0860328 0.03132694 -0.9553334 0.2746932 0.1090038 -0.9739556 0.1913149 0.1216934 -0.9178382 0.332303 0.2171354 -0.9543447 0.2848649 0.08987921 -0.9627737 0.2699356 -0.01419794 -0.9827348 0.1847169 -0.01058524 -0.917915 0.3327892 0.2160637 -0.9881871 -0.005381941 0.1531585 -0.8658778 0.3685661 0.3382528 -0.8242126 0.4681351 0.3186271 -0.8712362 0.4565662 0.1802634 -0.7794264 0.596634 0.1911088 -0.7882039 0.5298755 0.3129964 -0.8836573 0.437783 0.1658189 -0.8956477 0.4380931 0.07674604 -0.9174404 0.3951658 0.04634016 -0.930859 0.3637744 -0.03420341 -0.8796561 0.4724909 0.05438268 -0.8086238 0.5657834 0.1612972 -0.78017 0.5960906 0.1897657 -0.8246815 0.5619362 0.06425249 -0.8098931 0.5859639 0.02682572 -0.7806302 0.6249384 0.008280038 -0.7547156 0.6548385 0.03988933 -0.7176944 0.6585636 0.2262938 -0.7315337 0.5735118 0.3687041 -0.4890591 0.5830511 0.648747 -0.4956814 0.6553443 0.5699332 -0.3646438 0.637654 0.6785517 -0.3584672 0.6503631 0.6697233 -0.43629 0.5821124 0.686146 -0.421774 0.6880452 0.5905088 -0.4741662 0.674537 0.5658324 -0.3038212 0.6858385 0.6613005 -0.5562959 0.6324968 0.5389644 -0.5977287 0.6751946 0.4322417 -0.5883055 0.7016121 0.4020414 -0.4570361 0.7561051 0.4684261 -0.4977884 0.75889 0.4198721 -0.3873075 0.785009 0.4834808 -0.2378619 0.6790282 0.6945088 -0.2960832 0.7607236 0.5776111 -0.3434928 0.7587313 0.5534794 -0.1179283 0.6829261 0.7209057 -0.1606155 0.7160848 0.679283 -0.1485075 0.7615131 0.6309068 -0.06313604 0.7845937 0.6167872 -0.2270229 0.7959204 0.5612231 -0.2723755 0.8612788 0.4289646 -0.3233506 0.857342 0.4005112 -0.3361846 0.8674066 0.3668593 -0.2197191 0.8125133 0.5399495 -0.1122633 0.8769786 0.4672318 -0.1140437 0.8665053 0.4859657 -0.6208113 0.7086096 0.3353593 -0.6644418 0.7290404 0.1643694 -0.5925639 0.7614294 0.262856 -0.6430413 0.7469636 0.1689481 -0.4101331 0.8541725 0.3196564 -0.4617382 0.8268868 0.3210235 -0.5219426 0.8139705 0.2550064 -0.5072643 0.8443182 0.1726555 -0.7109317 0.7015148 0.0495277 -0.530856 0.8368152 0.133911 -0.6005564 0.789458 0.1268384 -0.5114103 0.8593214 0.00513941 -0.6053204 0.795674 0.02214145 -0.4472869 0.8943009 0.01267039 -0.539455 0.8411087 0.03904718 -0.6903556 0.658666 0.2992796 -0.2757104 0.9126621 0.3017146 -0.3911631 0.9024667 0.1804035 -0.2862148 0.9316568 0.2238229 -0.1584581 0.9043276 0.3963366 -0.1684857 0.9285817 0.3306794 -0.1531416 0.918399 0.3648166 -0.2263119 0.9556838 0.1882861 -0.1487569 0.968797 0.1982517 -0.1316051 0.9625719 0.2369295 -0.3753356 0.9113233 0.1691544 -0.363059 0.9258581 0.1047616 -0.2819672 0.9576503 0.0583142 -0.1255142 0.9809476 0.1482838 -0.1559718 0.9862701 0.05426067 -0.2613688 0.9648767 0.02644515 -0.5559346 0.5253121 0.6441924 -0.02530324 0.6961841 0.7174173 -0.7278166 -0.01027911 0.6856949 0.01783657 0.139913 0.9900032 0.0190491 0.2064645 0.9782688 0.02748703 0.3296454 0.9437046 0.03402471 0.4077497 0.9124597 0.08644127 0.2761582 0.9572171 0.07971578 0.2398303 0.9675365 0.1285334 0.3769027 0.9172915 0.0280556 0.07474941 0.9968076 0.009860515 0.01076507 0.9998935 0.05053859 0.1019775 0.9935022 0.03223675 0.05250179 0.9981004 0.1483167 0.3087313 0.9395144 0.1995404 0.2980377 0.9334651 0.224864 0.2531187 0.9409395 0.1417201 0.1694297 0.9752994 0.05084198 0.3778579 0.9244666 0.03845381 0.5029995 0.8634309 0.06467282 0.476369 0.8768637 0.1474325 0.4853036 0.8618261 0.06216025 0.5656492 0.8222999 0.0144152 0.6331477 0.7738968 0.01165467 0.6249564 0.7805728 0.153843 0.5656086 0.8101971 0.1703224 0.6104982 0.7734872 0.1174433 0.6629926 0.7393564 0.164691 0.5472662 0.8205954 0.1271803 0.7128245 0.6897148 0.2063267 0.4271875 0.8803069 0.2065736 0.4238681 0.8818522 0.2467498 0.3694275 0.8959007 0.3014068 0.3577942 0.8838197 0.2883704 0.5083285 0.8114461 0.2469925 0.6224691 0.7426487 0.2898868 0.5024453 0.8145639 0.3073552 0.5567484 0.7717279 0.2585399 0.6665362 0.6992043 0.3336857 0.4624124 0.8214795 0.3796924 0.5727252 0.726512 0.3436048 0.412323 0.8437569 0.1177131 0.1163756 0.9862051 0.2201299 0.1849232 0.957782 0.2174509 0.183003 0.9587622 0.2938349 0.1594945 0.9424557 0.3449594 0.1892991 0.9193307 0.1581491 0.0541734 0.9859281 0.204635 0.04736047 0.977692 0.1029613 -0.002042412 0.9946833 0.2205417 0.03524714 0.9747405 0.3051462 0.04751056 0.9511196 0.3051754 0.04754132 0.9511087 0.3444872 0.2856875 0.8942658 0.4329785 0.3884545 0.8134081 0.4345745 0.2914614 0.8521709 0.4694687 0.3146994 0.8249627 0.3321267 0.2540143 0.908388 0.4481532 0.4399341 0.7782139 0.47986 0.4616913 0.7460399 0.4838901 0.4793949 0.7321414 0.5277974 0.5033224 0.6841759 0.4659924 0.30032 0.8322614 0.5472425 0.3470095 0.7616496 0.5722972 0.3353719 0.7483325 0.4321622 0.1730707 0.8850325 0.3902272 0.161913 0.9063702 0.4815919 0.1534882 0.8628504 0.5381751 0.2019937 0.8182702 0.395241 0.06233197 0.9164602 0.4880686 0.06290882 0.8705352 0.4943853 0.0554223 0.8674743 0.5990821 0.2630122 0.7562575 0.5384483 0.2062407 0.8170301 0.644043 0.2351746 0.7279434 0.597649 0.07235753 0.7984861 0.6046423 0.1179785 0.7877112 0.39488 0.06194132 0.9166423 -0.006151914 0.7252991 0.6884065 -0.02744847 0.8274051 0.5609346 -0.02733516 0.8256816 0.5634739 0.1764595 0.7129167 0.6786839 0.08948057 0.7889526 0.607904 0.1410577 0.8205957 0.553828 0.09004098 0.7380756 0.6686831 0.02949142 0.8626776 0.5048938 0.03275775 0.8855598 0.463369 0.006322979 0.9001588 0.4355162 0.01007825 0.9301006 0.3671666 0.1798651 0.8232442 0.5384401 0.1897788 0.8554098 0.4819318 0.1289075 0.8950961 0.4268323 0.2253596 0.7954958 0.5624942 0.1324583 0.9238978 0.3589816 0.3083788 0.6853103 0.6597366 0.297052 0.7258995 0.6203468 0.3908802 0.6416387 0.6599336 0.2429996 0.7605184 0.602132 0.4011443 0.6430631 0.6523444 0.5039185 0.5934177 0.6276319 0.5300092 0.6288952 0.568842 0.3617544 0.7527716 0.5499716 0.3383252 0.8110679 0.4771845 0.3336453 0.7976441 0.5024389 0.4369748 0.7093061 0.5531166 0.4376503 0.7941173 0.4217107 0.286716 0.8594126 0.4233248 0.4850894 0.7184191 0.4985604 0.4711652 0.7054193 0.5295159 0.5746315 0.6974116 0.4282707 0.5699936 0.6946213 0.438872 -0.01688855 0.9413407 0.337035 -0.02339857 0.9613374 0.2743775 0.1475202 0.9452267 0.2911774 0.2943627 0.8823764 0.3671 0.2695943 0.8974601 0.3491197 0.1448 0.9273793 0.3449649 0.2481082 0.9421253 0.2254824 0.2218271 0.9500645 0.2194775 0.05250149 0.9793476 0.1952485 0.05173152 0.9785153 0.1995791 0.01769202 0.9950673 0.09761226 -0.07476395 0.9970852 -0.01521497 0.08232116 0.9956497 0.04364496 0.01603597 0.9943325 0.1050993 0.1892699 0.9678444 0.1656936 0.1729111 0.983286 0.0570119 0.2029746 0.9744666 0.09600061 0.2939705 0.9525026 0.07950001 0.3351588 0.9240884 0.1836556 0.4534639 0.8102078 0.3713943 0.4709736 0.8082813 0.3533632 0.4731293 0.8413066 0.2614426 0.4662547 0.8467799 0.2560676 0.3813011 0.8880496 0.2568605 0.5530644 0.750663 0.3614206 0.6141954 0.7419826 0.2687485 0.611244 0.7556484 0.2353217 0.3352912 0.9240334 0.1836906 0.4476797 0.8855823 0.1238015 0.4291714 0.8954612 0.1181588 0.3120579 0.9489358 0.04626965 0.5661321 0.796263 0.2132128 0.5446152 0.8354441 0.07367241 0.5561122 0.8276622 0.07559502 0.6391769 0.7648164 0.08067834 0.5698388 0.818983 0.06745743 0.3386958 0.8759865 0.3434136 0.5326974 0.5196743 0.6679612 0.5957575 0.6081288 0.5246452 0.632447 0.5194221 0.5746404 0.6422684 0.3894886 0.660144 0.6421049 0.387197 0.6616494 0.6757741 0.4253334 0.602014 0.672605 0.465731 0.5750628 0.6208038 0.5815401 0.5257508 0.6777215 0.6412972 0.359766 0.7094439 0.5634637 0.4233179 0.7018327 0.5566965 0.4444321 0.7219864 0.4785672 0.499709 0.7689625 0.5156829 0.3778463 0.7882458 0.4353638 0.4348875 0.7758759 0.4264206 0.4649538 0.7831291 0.3483415 0.5151378 0.694624 0.2748693 0.664789 0.7327708 0.2493095 0.6331601 0.754285 0.2562945 0.6044561 0.7218435 0.1430224 0.6771163 0.7046217 0.1360356 0.6964213 0.790885 0.03641688 0.6108803 0.7794548 0.09726631 0.6188616 0.6642245 0.1590086 0.7304259 0.8726367 0.2795482 0.4004474 0.8436275 0.2765833 0.4602112 0.8290015 0.1836396 0.5282359 0.9003269 0.1162571 0.4193994 0.8677418 0.124199 0.4812471 0.8174127 0.1834709 0.5460541 0.7670615 0.3406616 0.5436602 0.6855353 0.6513924 0.3251604 0.7439609 0.6177907 0.2546705 0.7440119 0.6410688 0.1883535 0.791662 0.5179862 0.323978 0.7903733 0.543415 0.2828607 0.8574524 0.4054021 0.3168982 0.7194799 0.6753452 0.1620419 0.7314977 0.6801974 0.04735815 0.8478447 0.4936546 0.1935577 0.8867837 0.4572166 0.06758499 0.8453567 0.5197513 0.1234132 0.8133962 0.5724343 0.1034692 0.7982972 0.6009275 0.04009705 0.8860236 0.4046345 0.2263476 0.6628999 0.7300269 0.1662067 0.8739879 0.3166512 0.3686153 0.8555735 0.3795862 0.3520063 0.92413 0.2934724 0.2446587 0.9135674 0.0799328 0.3987549 0.9436695 0.06103456 0.3252117 0.957018 0.10999 0.2683632 0.9425057 0.1860893 0.2775855 0.9747685 0.09909933 0.2000145 0.9019389 0.2067694 0.3791474 0.9402309 0.3279517 0.09172499 0.9628334 0.2462512 0.1109601 0.9159373 0.381097 0.1257941 0.9762242 0.1418339 0.1639192 0.9617283 0.2221969 0.1603346 0.9807353 0.1939123 0.02358627 0.9928147 0.1138454 0.03685498 0.9433149 0.2423138 0.2268059 0.8977437 0.3863388 0.2116568 0.6913654 0.003493368 0.7224969 -0.07545113 0.997109 -0.008984446 -0.985931 0.1469048 -0.07974505 -0.9940266 0.07527333 -0.07902634 -0.9988398 0.03676831 -0.0311017 -0.9800935 0.04427087 -0.1935377 -0.9508 0.3053106 -0.05258405 -0.9514192 0.2857846 -0.1145802 -0.9643804 0.2095189 -0.1614695 -0.9570099 0.1955423 -0.2142319 -0.9495074 0.01800376 -0.3132277 -0.939083 0.06800532 -0.3368953 -0.9368115 0.1541649 -0.3140345 -0.955801 0.1691027 -0.2405179 -0.8916461 0.2681966 -0.3647437 -0.909579 0.3322983 -0.2494872 -0.9382896 0.1514875 -0.3109087 -0.9761554 0.001182436 -0.2170701 -0.8611948 0.5064018 -0.04359924 -0.9069525 0.3589323 -0.2204655 -0.8807747 0.4593551 -0.115018 -0.8649447 0.491295 -0.1024692 -0.8220348 0.5506176 -0.1451855 -0.7673273 0.6368329 -0.07518476 -0.7338175 0.6717644 -0.101215 -0.8876396 0.4097416 -0.2102568 -0.8160138 0.5065944 -0.2783594 -0.8441639 0.4604804 -0.274491 -0.8540763 0.3676499 -0.3679501 -0.8838469 0.3193652 -0.3417903 -0.803014 0.5525665 -0.223246 -0.7171417 0.6514403 -0.2476558 -0.775282 0.5270673 -0.3480488 -0.7016325 0.6220524 -0.3475092 -0.8882205 -0.007726967 -0.4593526 -0.8948413 0.04312521 -0.4442965 -0.8642949 0.1453086 -0.4815391 -0.8667916 0.2295515 -0.4426947 -0.8361092 0.1393897 -0.5305584 -0.8116722 0.3130974 -0.4931111 -0.8719266 0.1740515 -0.4576573 -0.8086829 0.08783298 -0.5816506 -0.7814901 0.0130288 -0.6237816 -0.8081033 0.05536502 -0.5864331 -0.7119215 0.03134667 -0.7015591 -0.7696556 0.2632281 -0.5816712 -0.7493578 0.2563481 -0.6105315 -0.7335448 0.2072275 -0.647278 -0.654621 0.2217895 -0.7226901 -0.7408854 0.1619772 -0.651807 -0.8221461 0.3797426 -0.4241125 -0.7663426 0.462593 -0.4457876 -0.7879889 0.3102376 -0.5318142 -0.7218267 0.5830406 -0.3728671 -0.7057152 0.5581973 -0.4363277 -0.71387 0.4514172 -0.5353618 -0.7460884 0.4734272 -0.4682082 -0.6827443 0.3367031 -0.6484531 -0.6646386 0.4163359 -0.6204192 -0.630887 0.5564715 -0.5406672 -0.5901122 0.5405951 -0.5996037 -0.6542995 0.4232344 -0.6267096 -0.7118031 0.4362627 -0.5504646 -0.7028729 0.6744258 -0.2260963 -0.6626191 0.7465363 -0.0601626 -0.6593795 0.7514819 -0.02222114 -0.6261405 0.7491469 -0.2161644 -0.6208167 0.7738018 -0.1257678 -0.5367473 0.8372066 -0.1048216 -0.4188487 0.9057288 -0.0649721 -0.4307262 0.8955773 -0.1114283 -0.5000106 0.855605 -0.1339014 -0.6344189 0.738455 -0.2284667 -0.5241446 0.7690895 -0.3657509 -0.5897981 0.7237705 -0.3581823 -0.4155426 0.8681396 -0.2714 -0.4921987 0.834035 -0.2492511 -0.5011504 0.8324586 -0.2363497 -0.3831524 0.8455967 -0.3716996 -0.3799003 0.9083364 -0.1749314 -0.2641795 0.963066 -0.05208885 -0.2702805 0.9620409 -0.03776115 -0.303379 0.9354444 -0.1813975 -0.2786419 0.9466447 -0.1619344 -0.1449023 0.9747361 -0.1699796 -0.1619986 0.9676728 -0.1933028 -0.01798254 0.9865053 -0.1627386 -0.1554598 0.9823693 -0.1038407 -0.2877802 0.9112299 -0.2946909 -0.2449557 0.9145274 -0.3219259 -0.2380344 0.9098725 -0.3398115 -0.1593277 0.958575 -0.2361122 -0.3831897 0.8687339 -0.3137949 -0.08022469 0.9433112 -0.3220685 0.003583669 0.9554496 -0.2951326 -0.1020535 0.9237203 -0.3692234 -0.5922822 0.6611683 -0.4604977 -0.6109757 0.6884499 -0.3908266 -0.594726 0.6452519 -0.479532 -0.6324303 0.5923971 -0.4990969 -0.4823042 0.7763351 -0.4058161 -0.4732731 0.7514723 -0.459676 -0.4238104 0.7397279 -0.5226734 -0.3347854 0.7995315 -0.4986667 -0.5114407 0.6431286 -0.5699247 -0.5448933 0.5556439 -0.6279739 -0.5064722 0.6091518 -0.6102622 -0.417506 0.7414722 -0.5252693 -0.3490042 0.6802996 -0.6445065 -0.3949672 0.6268696 -0.6715917 -0.2884332 0.6999032 -0.6534078 -0.2559886 0.8798479 -0.4004219 -0.3304622 0.8413551 -0.4276872 -0.09484088 0.9119216 -0.3992547 -0.02595466 0.8957726 -0.4437543 -0.04093074 0.8590926 -0.510181 -0.1619975 0.862312 -0.4797655 -0.152316 0.8293126 -0.5376249 -0.2497063 0.6806218 -0.6887676 -0.1299467 0.7807176 -0.6112233 -0.2626959 0.7406554 -0.6184016 -0.1345594 0.7181752 -0.6827285 -0.001461565 0.7661521 -0.6426577 -0.006134569 0.7736757 -0.6335521 -0.1302833 0.7809488 -0.6108562 -0.1455292 0.8386868 -0.5248104 -0.2796766 0.7940955 -0.5396233 -0.6168915 0.06922817 -0.7839977 -0.6493314 0.09900718 -0.7540335 -0.6319983 0.1748813 -0.75498 -0.6845079 0.08555281 -0.723968 -0.5553983 0.2178448 -0.8025438 -0.5335043 0.08761245 -0.8412474 -0.4225361 0.01106011 -0.9062786 -0.4051109 0.05309736 -0.9127244 -0.5150406 0.1154178 -0.8493597 -0.523979 0.2041147 -0.8269119 -0.4466205 0.1141212 -0.8874157 -0.6288213 0.2919191 -0.7206712 -0.5762147 0.3192471 -0.7523683 -0.5501931 0.3605103 -0.7532066 -0.5215213 0.5030997 -0.6891345 -0.5080603 0.3666728 -0.7793753 -0.569882 0.4235398 -0.7041652 -0.4535276 0.3071359 -0.8366482 -0.4560085 0.2465717 -0.8551366 -0.4035387 0.2144815 -0.8894684 -0.3823159 0.3783014 -0.8430438 -0.3885702 0.2166363 -0.8955903 -0.3008967 0.02873128 -0.9532239 -0.353782 0.06513959 -0.9330569 -0.2544999 0.04248589 -0.9661391 -0.1663396 0.04290765 -0.9851346 -0.07266438 0.0129804 -0.997272 -0.1125293 -0.01433712 -0.9935451 -0.2203882 0.02138662 -0.9751778 -0.3058269 0.1713948 -0.9365329 -0.321137 0.1683828 -0.9319434 -0.241202 0.1271839 -0.962105 -0.2507569 0.2517866 -0.9347323 -0.2159931 0.1375768 -0.9666539 -0.1472033 0.09375846 -0.9846526 -0.1196458 0.1057755 -0.9871659 -0.06197971 0.04971659 -0.9968384 -0.4448696 0.5077673 -0.7377422 -0.4328035 0.4318813 -0.7913027 -0.4216578 0.4715434 -0.7745009 -0.3902071 0.5882745 -0.7082878 -0.3055789 0.5554848 -0.7733423 -0.3451313 0.4920741 -0.7992168 -0.2701253 0.5673403 -0.7779186 -0.3058427 0.4405391 -0.8440293 -0.3447431 0.3792403 -0.8586787 -0.3088139 0.3239422 -0.8942569 -0.260297 0.3117091 -0.9138287 -0.2222513 0.4991523 -0.8375269 -0.2605085 0.4517056 -0.8532863 -0.1948577 0.388449 -0.900632 -0.2272001 0.6134866 -0.7563164 -0.1884925 0.6146358 -0.7659591 -0.1015492 0.6914761 -0.7152262 -0.02648192 0.6812927 -0.731532 -0.01915401 0.6228436 -0.782112 -0.06412053 0.5721042 -0.8176707 -0.1642187 0.502736 -0.8486983 -0.1379542 0.4735723 -0.869884 -0.1417522 0.4282414 -0.8924773 -0.03664106 0.5071505 -0.8610783 -0.1283901 0.5656958 -0.8145578 -0.1838535 0.2073566 -0.9608336 -0.204221 0.3564475 -0.9117231 -0.1495375 0.214553 -0.9651972 -0.09579223 0.1560233 -0.9830974 -0.1040138 0.2898091 -0.9514157 -0.03977566 0.3553742 -0.9338775 -0.04767459 0.3861936 -0.921185 -0.02653175 0.2659748 -0.9636149 -0.0625602 0.3032243 -0.9508635 -0.03801548 0.1646121 -0.9856256 -0.03434443 0.1676983 -0.9852399 -0.01010489 0.07024317 -0.9974787 0.01637649 0.9955306 -0.09300917 0.063259 0.9948629 -0.07903271 0.1394281 0.9832003 -0.1178003 0.2316552 0.9705234 -0.06648594 0.1880317 0.9760782 -0.1091584 0.3330674 0.9294318 -0.1588169 0.3255017 0.9384528 -0.1155638 0.2320778 0.9707812 -0.06102323 0.02896142 0.9640305 -0.2642093 0.1078083 0.9567977 -0.2700288 0.1282638 0.9582362 -0.2556012 0.06251955 0.8984557 -0.4345901 0.3062879 0.9281098 -0.2116605 0.2108277 0.9431087 -0.2570946 0.2522795 0.8960212 -0.3653783 0.239903 0.9443361 -0.2251133 0.4582988 0.8877844 -0.04244124 0.4925733 0.8623337 -0.1172695 0.6050526 0.7931637 -0.06930226 0.6960499 0.7179623 -0.006691038 0.6971538 0.7168925 0.006467163 0.6465651 0.7445976 -0.1659159 0.6295517 0.772557 -0.08258658 0.4768931 0.8614801 -0.1744276 0.4773969 0.8605928 -0.1774043 0.3382542 0.8754876 -0.3451167 0.5212239 0.784183 -0.3367235 0.4244852 0.8664487 -0.2628292 0.5204315 0.8248498 -0.2208484 0.3599812 0.8862051 -0.2916404 0.6364497 0.7478827 -0.1886886 0.5106656 0.8036631 -0.3055266 0.6309434 0.7226852 -0.2821997 0.4038164 0.9146539 -0.01845568 0.3871082 0.9218758 0.01709651 0.07340598 0.9052225 -0.4185495 0.136152 0.9083459 -0.3954368 0.05597901 0.8217483 -0.5670945 0.08994877 0.8488397 -0.5209418 0.05489528 0.8356145 -0.5465666 0.2043437 0.8919659 -0.4032873 0.3097313 0.878278 -0.3642725 0.306818 0.8255664 -0.4736064 0.231566 0.8312712 -0.5053369 0.1070076 0.7334761 -0.6712393 0.09368586 0.6866369 -0.7209388 0.2272666 0.8285459 -0.5117241 0.1944236 0.7598158 -0.6203867 0.2280989 0.7847246 -0.576349 0.1657451 0.7620815 -0.6259077 0.2347902 0.7154672 -0.6580125 0.4350556 0.8016686 -0.4099441 0.48939 0.7817181 -0.3865412 0.3772405 0.7843953 -0.4923552 0.3878857 0.7524647 -0.5322985 0.5167855 0.7259817 -0.4537439 0.5166068 0.7479773 -0.4167102 0.6126376 0.6924059 -0.3811158 0.605388 0.6314935 -0.4844807 0.4676397 0.7146338 -0.5202035 0.3619058 0.7344802 -0.5740758 0.3619765 0.7005513 -0.6149806 0.3292014 0.6775816 -0.6576547 0.4992636 0.6403017 -0.5837377 0.4630733 0.5819268 -0.668524 0.4774639 0.5885416 -0.6524163 0.4793108 0.6261485 -0.614979 0.7954386 0.6007499 -0.07985681 0.7252612 0.6721055 -0.1492331 0.7487969 0.655357 -0.09904813 0.8139482 0.5790275 -0.04706984 0.8922789 0.4512568 -0.0143494 0.8689284 0.4660283 -0.166677 0.8709433 0.488007 -0.05750828 0.747018 0.613456 -0.2561948 0.6865544 0.6550351 -0.3155505 0.7742679 0.577831 -0.2581095 0.6489066 0.6925001 -0.3152205 0.8493787 0.48449 -0.2093447 0.8133305 0.5404773 -0.2153551 0.8521561 0.4500224 -0.2670393 0.7747245 0.523177 -0.3550885 0.8180219 0.4515275 -0.3563191 0.9343509 0.3548666 -0.03252804 0.9472974 0.3099943 -0.08081597 0.9365568 0.31367 -0.156437 0.9742522 0.2220479 -0.03908306 0.996809 0.07660293 0.02244931 0.9925482 0.06616085 -0.1023273 0.9831368 0.1241861 -0.1342375 0.933768 0.3189265 -0.1623677 0.9228143 0.2310971 -0.3082336 0.899573 0.2916609 -0.3251193 0.905779 0.3289197 -0.2671638 0.9732736 0.1436924 -0.1791399 0.9629645 0.08945047 -0.2543582 0.9221454 0.1289424 -0.3647215 0.9670258 0.03057348 -0.252837 0.9564992 0.2109627 -0.2015047 0.7009526 0.5881106 -0.4034742 0.7048703 0.4953311 -0.507745 0.6748241 0.585109 -0.4497333 0.618872 0.6282047 -0.4715467 0.8013884 0.467366 -0.3732905 0.7942087 0.3514838 -0.4956731 0.7779386 0.4464629 -0.4421339 0.687239 0.4734896 -0.5509176 0.6049404 0.5060366 -0.6147959 0.5811514 0.5065978 -0.6368845 0.6474262 0.475356 -0.5957148 0.7584511 0.3411571 -0.5553053 0.6904506 0.3227081 -0.6474084 0.6572488 0.3587501 -0.662814 0.5786129 0.6163324 -0.5341739 0.8670463 0.2987713 -0.3987059 0.8740915 0.3069042 -0.376529 0.9214563 0.07570475 -0.3810343 0.9264751 0.1094819 -0.3600802 0.8664389 0.1950489 -0.4596084 0.8256619 0.1738871 -0.5366989 0.735802 0.1736792 -0.6545464 0.7646443 0.1934425 -0.614735 0.724406 0.3161636 -0.6125982 0.8332552 0.09568375 -0.544546 0.8274374 0.1716399 -0.5346844 0.8509995 0.04114061 -0.5235525 0.7777259 0.3351588 -0.5318 0.08493977 0.5975534 -0.7973176 0.1863878 0.6375457 -0.747526 0.1248106 0.6476671 -0.7516314 0.1020289 0.5544028 -0.8259708 0.2037287 0.6224759 -0.7556577 0.2041656 0.5521446 -0.8083643 0.0144093 0.4812254 -0.8764786 0.01447933 0.4768787 -0.8788499 0.0892145 0.524247 -0.8468801 0.2382082 0.5207639 -0.8197938 0.3211987 0.6023985 -0.7307171 0.339174 0.6239933 -0.703984 0.2652913 0.5162611 -0.8143065 0.3268616 0.555738 -0.7644062 0.3951538 0.5077852 -0.7655116 0.4448724 0.500765 -0.7425113 0.1835459 0.418259 -0.88959 0.1812664 0.4496489 -0.874619 0.3650987 0.4016221 -0.8398824 0.3247954 0.4155148 -0.8496208 0.244576 0.3775508 -0.8931058 0.06886649 0.3385418 -0.9384279 0.1045572 0.3517869 -0.9302224 0.1102175 0.3716409 -0.9218108 0.05577421 0.2125099 -0.975566 0.02458542 0.2579664 -0.9658411 0.01841998 0.1720812 -0.9849106 -0.01422739 0.0647335 -0.9978013 0.1408194 0.3122425 -0.9395076 0.2213911 0.3008522 -0.9276174 0.2469296 0.3164025 -0.9159232 0.1267364 0.2137691 -0.9686283 0.1089628 0.1178858 -0.987031 0.07225447 0.1026965 -0.992085 0.05859506 0.08196622 -0.9949112 0.1068524 0.2028349 -0.9733656 0.5485516 0.4341636 -0.7145581 0.3676103 0.4034171 -0.8379245 0.474357 0.410765 -0.7786254 0.4876204 0.4418414 -0.7529957 0.5705932 0.3222801 -0.7553536 0.5962203 0.3679643 -0.713529 0.5419974 0.3143568 -0.7793707 0.4920452 0.345162 -0.7992214 0.4407877 0.3048425 -0.8442614 0.3867432 0.3390607 -0.8575941 0.3183532 0.2714775 -0.9082682 0.4548871 0.2466719 -0.8557049 0.4456284 0.2292011 -0.8653798 0.3498933 0.2094094 -0.9130841 0.6298874 0.1978266 -0.7510703 0.6821112 0.2273049 -0.6950228 0.6340939 0.1955483 -0.7481216 0.5598024 0.1908491 -0.8063487 0.6562231 0.1042326 -0.7473332 0.7195494 0.09550791 -0.6878423 0.6227495 2.3406e-5 -0.7824214 0.6211414 0.05767297 -0.7815735 0.5732678 0.08536124 -0.8149095 0.4752629 0.1332119 -0.869701 0.3802711 0.1139695 -0.9178262 0.4588088 0.1427724 -0.8769895 0.5058464 0.04095906 -0.8616507 0.4974021 0.01521539 -0.8673866 0.5482093 0.1525367 -0.8223134 0.5328535 0.23215 -0.8137405 0.2157647 0.1898277 -0.9578158 0.2116346 0.1846281 -0.9597517 0.2179049 0.1490826 -0.9645165 0.328853 0.229671 -0.9160279 0.1496356 0.100491 -0.9836212 0.3695093 0.1214768 -0.9212526 0.2709618 0.0897479 -0.9583972 0.3970921 0.04021465 -0.9168973 0.2538688 0.0259577 -0.9668903 0.1705811 0.02293395 -0.9850767 0.1522457 0.003100693 -0.9883378 -0.03405123 0.6875776 -0.7253121 -0.9990242 -0.03423017 -0.02791291 0.1025211 -0.002049922 0.9947288 0.3382871 -0.0598008 0.939141 0.3224694 -0.05037891 0.9452384 0.3955942 -0.0424211 0.9174452 0.2531207 -0.06655979 0.9651424 0.2193823 -0.03283131 0.9750865 0.05016195 -0.03376936 0.9981701 0.1524715 -0.06225925 0.9863449 0.04220777 -0.0582512 0.9974094 0.1390019 -0.1284554 0.9819255 0.2273535 -0.1359385 0.9642776 0.3428671 -0.1621955 0.9252756 0.2538144 -0.1806526 0.9502331 0.1389557 -0.1284217 0.9819365 0.4991619 -0.01723116 0.8663374 0.5411053 -0.05756014 0.8389827 0.4313206 -0.06121808 0.9001194 0.4457749 -0.1448245 0.8833519 0.4936006 -0.165703 0.853757 0.5194085 -0.1487336 0.8414827 0.6213139 0.01239955 0.7834637 0.6001228 -0.03721141 0.7990419 0.7076983 -0.02147567 0.7061884 0.6197545 -0.1828621 0.7631945 0.6347026 -0.1672008 0.7544512 0.604163 -0.2442957 0.7584897 0.6387366 -0.1176845 0.7603723 0.3688305 -0.1814799 0.911608 0.4833884 -0.2867898 0.8270958 0.3603303 -0.291303 0.8861742 0.3660581 -0.2989422 0.881269 0.4921132 -0.296249 0.8185726 0.6315376 -0.3146216 0.7086421 0.4950477 -0.3589786 0.791241 0.5570216 -0.3981432 0.7288408 0.5531666 -0.4453859 0.7040157 0.096924 -0.1329946 0.9863662 0.228617 -0.2434002 0.9425979 0.2522444 -0.2843704 0.9249358 0.1626265 -0.2472526 0.9552062 0.1751741 -0.358069 0.9171155 0.04766768 -0.1735098 0.9836779 0.05751293 -0.2580089 0.9644293 0.09223991 -0.2760288 0.9567131 0.128598 -0.2736712 0.9531877 0.0752201 -0.4047914 0.9113101 0.3433938 -0.3910951 0.8538883 0.364227 -0.4226748 0.8298704 0.2097393 -0.3643763 0.9073254 0.23448 -0.4075384 0.8825711 0.429322 -0.4318778 0.7931988 0.4440774 -0.4806274 0.7561697 0.4840228 -0.4987951 0.7189753 0.3145074 -0.5085121 0.8015615 0.3468779 -0.5432688 0.7645487 0.3422166 -0.5920156 0.7296612 0.3800073 -0.6066905 0.6982272 0.2163006 -0.4532884 0.8647218 0.2257727 -0.5125758 0.8284279 0.071419 -0.4319888 0.8990468 0.07115226 -0.4093846 0.9095833 0.04293286 -0.4850932 0.873408 0.07944548 -0.5365036 0.8401502 0.2100273 -0.5313654 0.8206945 0.1995478 -0.6220505 0.757122 0.1518789 -0.6409935 0.7523698 0.06302237 -0.5942649 0.8017964 0.7531195 -0.09154832 0.6514829 0.7356678 -0.03467142 0.6764546 0.8229396 0.003825962 0.5681161 0.8136424 -0.09473341 0.5735955 0.7230322 -0.2203425 0.6547317 0.7148023 -0.1848888 0.6744434 0.7740567 -0.2442677 0.5840973 0.825383 -0.1197249 0.5517327 0.8915398 -0.02576458 0.4522089 0.9018279 -0.1530948 0.404065 0.9028223 -0.07444345 0.4235212 0.8943138 -0.05633312 0.4438799 0.8194812 -0.2120299 0.5324414 0.837802 -0.235462 0.4925907 0.8637526 -0.2335209 0.4465418 0.8727738 -0.2791044 0.4004583 0.8526065 0.01776254 0.5222516 0.6727508 -0.3166431 0.6686878 0.6927785 -0.3597369 0.6250179 0.7324208 -0.365413 0.5744851 0.7466343 -0.393931 0.5360556 0.6111518 -0.4689227 0.6376559 0.6187162 -0.5061774 0.6008117 0.7870272 -0.3704561 0.4933056 0.8257476 -0.425046 0.3707788 0.8239123 -0.3876364 0.4134086 0.6913403 -0.5466848 0.4724242 0.7223874 -0.456705 0.5192081 0.7838695 -0.4895919 0.3819012 0.6408123 -0.5864197 0.495451 0.7222537 -0.4864588 0.4916375 0.9508751 -0.04731136 0.3059381 0.9479137 -0.05615007 0.3135395 0.9848119 -0.05967956 0.1630462 0.93436 -0.1624786 0.3171314 0.9367397 -0.1887733 0.2947599 0.900985 -0.2919212 0.3209491 0.9628448 -0.1877195 0.1941424 0.9780373 -0.08185935 0.1916826 0.9808448 -0.1930877 0.02570319 0.994996 -0.09765481 0.02113366 0.9960981 -0.07315295 0.04936951 0.9983085 0.030276 0.04963332 0.9574066 -0.2445656 0.1534937 0.9599407 -0.2551966 0.1157092 0.9275951 -0.3699149 0.05225217 0.9120218 -0.3429493 0.2249488 0.9854148 0.02573674 0.1682127 0.8490705 -0.4157891 0.3258816 0.9018775 -0.3919502 0.1816372 0.8448942 -0.4713683 0.2529144 0.8629603 -0.4646936 0.1983925 0.7674506 -0.5313795 0.3586855 0.7886692 -0.5459224 0.2827893 0.7043881 -0.6138399 0.3564239 0.7143344 -0.6423401 0.2777152 0.7663757 -0.5959632 0.2397841 0.9290469 -0.364508 0.0632919 0.9319582 -0.362316 0.01346099 0.8476892 -0.5255239 0.07244008 0.8432949 -0.5205538 0.1337072 0.7773299 -0.5970625 0.1981783 0.8424239 -0.5359674 0.05532866 0.8446352 -0.5349783 -0.01973861 0.7659481 -0.6380153 0.07912164 0.8967878 -0.3357477 0.2881758 0.7286966 -0.5719697 0.3766326 0.508718 -0.6008978 0.6165451 0.473201 -0.5591009 0.6807989 0.5454912 -0.6026033 0.582502 0.5148336 -0.6736494 0.5302292 0.5889673 -0.5745006 0.5683894 0.3869384 -0.6814242 0.6212406 0.3954242 -0.682956 0.614175 0.3215678 -0.7071813 0.6296736 0.6255549 -0.6608721 0.4146437 0.5826062 -0.7029194 0.4080129 0.5894446 -0.7002093 0.4028178 0.4594175 -0.7178925 0.5230355 0.3755545 -0.7706731 0.5148027 0.4895076 -0.7586529 0.4299165 0.4585268 -0.7918065 0.4034796 0.416369 -0.8073918 0.4180375 0.4222736 -0.7258629 0.5429623 0.2705228 -0.6812353 0.680247 0.26012 -0.6380606 0.7247181 0.2859544 -0.7627276 0.5800662 0.1132192 -0.6868583 0.7179186 0.121454 -0.7437046 0.657383 0.1754207 -0.7621499 0.6231814 0.171581 -0.7630855 0.6231056 0.04269915 -0.8178769 0.5738067 0.3055735 -0.7907809 0.5303683 0.2689917 -0.8271407 0.4934387 0.3378418 -0.8674286 0.3652816 0.2741611 -0.8604781 0.4294337 0.3350692 -0.8683449 0.3656582 0.139394 -0.8354489 0.5315962 0.1392984 -0.8354926 0.5315527 0.1168775 -0.880003 0.4603636 0.6891971 -0.6759462 0.2609677 0.5952458 -0.7426259 0.3069027 0.5878069 -0.7516609 0.2991469 0.5138711 -0.8066669 0.2919333 0.4817171 -0.8165416 0.3181329 0.4060611 -0.8614804 0.3049035 0.5049892 -0.8456736 0.1726914 0.686513 -0.7135719 0.139697 0.7513866 -0.64866 0.121072 0.6123082 -0.7752931 0.1549177 0.6721721 -0.7294507 0.1268327 0.7413712 -0.6709101 0.01576411 0.6774914 -0.7353746 0.01515913 0.6884995 -0.7245028 0.03262269 0.5408693 -0.8315233 0.1266081 0.5664346 -0.8240975 0.003927052 0.5328814 -0.8452664 0.03952616 0.4529911 -0.891494 0.006130993 0.2757087 -0.9126586 0.3017268 0.3967308 -0.8992237 0.1843948 0.2862073 -0.9316567 0.2238333 0.1584613 -0.9043336 0.3963215 0.1684913 -0.9285731 0.3307005 0.1531502 -0.9183977 0.3648161 0.2262867 -0.9556884 0.1882924 0.1487457 -0.9688025 0.1982336 0.1315965 -0.96258 0.2369012 0.3753281 -0.9113225 0.1691752 0.3630521 -0.9258615 0.1047558 0.2819652 -0.9576519 0.05829685 0.1255116 -0.9809489 0.1482777 0.1667238 -0.9858055 0.01976627 0.2699545 -0.9620566 0.03964698 0.1928496 -0.9798625 0.0517562 -0.006895422 -0.6794314 0.7337067 -0.02459627 -0.09203064 0.9954524 -0.007293045 -0.1580329 0.987407 -0.02861452 -0.1044811 0.9941152 -0.04894018 -0.204516 0.977639 -0.007100939 -0.2744579 0.9615729 -0.03721606 -0.3557958 0.9338225 -0.04024058 -0.3167932 0.9476407 -0.1048352 -0.1270384 0.9863422 -0.1259512 -0.2811129 0.9513736 -0.1258779 -0.2212769 0.9670529 -0.1025196 -0.2029991 0.9737973 -0.1628575 -0.3141164 0.935312 -0.1930222 -0.1953897 0.9615433 -0.02154386 -0.4974318 0.8672356 -0.06111431 -0.5663537 0.8218932 -0.1065906 -0.431811 0.8956438 -0.1007339 -0.4101522 0.9064369 -0.1386768 -0.448244 0.883089 -0.1454731 -0.5568514 0.8177739 0.003396213 -0.6178604 0.7862805 -0.02475255 -0.6936232 0.7199126 -0.1253784 -0.6756554 0.7264779 -0.1383596 -0.5699329 0.8099587 -0.1639158 -0.603059 0.7806738 -0.228981 -0.6076751 0.7604596 -0.2076705 -0.4454154 0.8709065 -0.237208 -0.4850975 0.8416726 -0.2582078 -0.3552691 0.8983945 -0.2280239 -0.3129098 0.9220046 -0.2578425 -0.3635463 0.8951824 -0.2836542 -0.4967947 0.8202044 -0.2965793 -0.5591358 0.7742143 -0.2542781 -0.6848399 0.6828888 -0.3263508 -0.5639217 0.7586091 -0.3544058 -0.4415867 0.8242559 -0.4187628 -0.5057994 0.7541915 -0.4450283 -0.5189491 0.7298231 -0.3541813 -0.4254168 0.8328123 -0.2108098 -0.137191 0.9678522 -0.2534888 -0.249953 0.9344876 -0.1821716 -0.08920329 0.9792121 -0.2956453 -0.2266693 0.9280167 -0.05880784 -0.01351219 0.9981779 -0.165632 -0.0811063 0.9828469 -0.06715661 -0.00870639 0.9977046 -0.1465304 -0.02326202 0.9889326 -0.3185747 -0.1308213 0.9388269 -0.316803 -0.1296271 0.9395918 -0.34826 -0.1277122 0.9286575 -0.270688 -0.03298938 0.9621018 -0.3665583 -0.3231693 0.8724659 -0.3883341 -0.3522421 0.8515411 -0.413818 -0.2163277 0.8842834 -0.4853593 -0.2343183 0.8423309 -0.3716549 -0.2585431 0.8916435 -0.407617 -0.4657417 0.7854508 -0.4808468 -0.3814557 0.7894797 -0.5415701 -0.4279953 0.7235481 -0.5590945 -0.3421518 0.7552123 -0.5280026 -0.3854803 0.7567155 -0.4515368 -0.3472577 0.8219043 -0.4469607 -0.2119398 0.8690845 -0.4269981 -0.04640322 0.9030611 -0.4798249 -0.06209266 0.8751644 -0.4930697 -0.05863988 0.8680114 -0.5603331 -0.2373396 0.7935343 -0.5249156 -0.2235451 0.8212742 -0.6114574 -0.2208148 0.7598426 -0.6460362 -0.2391799 0.7248657 -0.5457064 -0.08150666 0.8340031 -0.6096946 -0.0664153 0.7898491 -0.6208849 -0.05481731 0.7819827 -0.6782289 -0.06245863 0.7321916 0.03655701 -0.7728981 0.6334763 -0.09156131 -0.771312 0.6298368 -0.01685661 -0.7476224 0.6639102 -0.1873805 -0.7168967 0.6715264 -0.1738115 -0.7449631 0.6440648 -0.09980648 -0.8287771 0.5506063 -0.02815556 -0.8546829 0.5183864 -0.02222174 -0.8839412 0.4670699 -0.005437016 -0.8924119 0.4511889 -0.01015096 -0.9306582 0.365749 -0.1819454 -0.8300706 0.5271419 -0.189784 -0.8554101 0.4819291 -0.1289034 -0.8950999 0.4268256 -0.2139299 -0.8008421 0.5593624 -0.1324893 -0.9241037 0.3584396 -0.3097807 -0.6844597 0.6599629 -0.3099506 -0.7753162 0.5502869 -0.3596206 -0.6552399 0.6643295 -0.4391248 -0.6735596 0.5945477 -0.4528895 -0.5586026 0.6948772 -0.500279 -0.580327 0.6426054 -0.4969971 -0.6176562 0.6095037 -0.3678951 -0.6323004 0.6817987 -0.3274934 -0.8219429 0.4660021 -0.3132812 -0.7759243 0.5475367 -0.422633 -0.7340742 0.5315227 -0.4347249 -0.7211725 0.5393742 -0.4182636 -0.7917057 0.4452614 -0.4446853 -0.7982218 0.4063213 -0.2866936 -0.8594181 0.4233289 -0.5578275 -0.7031018 0.4409947 -0.5506256 -0.6949493 0.4624467 0.01596188 -0.9414346 0.3368177 0.02312117 -0.9613226 0.274453 -0.2932192 -0.8790005 0.3760062 -0.2430058 -0.9096708 0.3368192 -0.1455932 -0.9276775 0.3438273 -0.1247847 -0.9666502 0.2236429 -0.278491 -0.9336387 0.2253032 -0.03871387 -0.9765737 0.211672 -0.006151676 -0.994344 0.106029 0.06052553 -0.9981638 0.00243479 -0.07116955 -0.9953529 0.06486713 -0.1436263 -0.9847605 0.09807419 -0.005164444 -0.9940838 0.1084939 -0.1590795 -0.9683992 0.1920858 -0.2587352 -0.9455627 0.1974012 -0.3052121 -0.9476123 0.09421569 -0.2106823 -0.976506 0.0452668 -0.3599134 -0.9016014 0.2399526 -0.4459185 -0.8118932 0.3768108 -0.3685837 -0.8922859 0.2607143 -0.5006356 -0.8114746 0.3014515 -0.5896409 -0.7000256 0.4028497 -0.4923391 -0.8272905 0.2705416 -0.6241286 -0.7460443 0.2321237 -0.5699436 -0.761549 0.3085571 -0.4065928 -0.9030297 0.1386353 -0.4456945 -0.89335 0.0572924 -0.4038822 -0.9061218 0.1257884 -0.3042363 -0.9481399 0.09203839 -0.5623372 -0.8121219 0.1556754 -0.5111815 -0.8361631 0.1988082 -0.5358346 -0.8425175 0.0551871 -0.5715767 -0.8144519 0.09984165 -0.6283307 -0.7751256 0.06618934 -0.3506329 -0.8733984 0.3379821 -0.6547969 -0.6482517 0.3886012 -0.5748337 -0.5206343 0.6312735 -0.5770749 -0.6188748 0.5328964 -0.6252591 -0.5368258 0.5664532 -0.5873476 -0.4470886 0.6746366 -0.6437359 -0.2945202 0.7063016 -0.6634917 -0.3306389 0.6711608 -0.6780225 -0.4480342 0.58271 -0.67833 -0.4673324 0.5669823 -0.753187 -0.3216684 0.5737934 -0.6305468 -0.4214693 0.6517472 -0.6198307 -0.57771 0.5310942 -0.6571913 -0.578149 0.4835736 -0.6753908 -0.640292 0.3658873 -0.7314212 -0.5009786 0.4626483 -0.7283411 -0.4800478 0.4889514 -0.7540443 -0.5037903 0.421441 -0.7913447 -0.3523259 0.4996399 -0.7094296 -0.172205 0.6834143 -0.7666317 -0.24313 0.5942758 -0.7156355 -0.1722757 0.676895 -0.7678502 -0.02366614 0.6401923 -0.7862886 -0.09386199 0.6106883 -0.8741033 -0.2762641 0.3995268 -0.8442639 -0.2833193 0.4549164 -0.8331969 -0.204418 0.5138057 -0.7917036 -0.3521586 0.4991892 -0.8432476 -0.0803864 0.5314806 -0.8039288 -0.106275 0.5851531 -0.8946555 -0.117751 0.4309597 -0.8670482 -0.1243566 0.4824552 -0.8060539 -0.1977026 0.5578448 -0.7433926 -0.3294585 0.5820863 -0.7192828 -0.6036347 0.3438859 -0.6810348 -0.7012032 0.2109637 -0.6699084 -0.7087363 0.221169 -0.755645 -0.5935133 0.2770246 -0.7923517 -0.5572269 0.2483485 -0.8141294 -0.4575869 0.3575019 -0.8044259 -0.4606049 0.3751564 -0.7931485 -0.556885 0.2465662 -0.8560348 -0.4053692 0.3207498 -0.7124201 -0.6904692 0.125339 -0.7904545 -0.5969107 0.1374024 -0.7175822 -0.685861 0.121122 -0.742424 -0.6682177 0.04787367 -0.8504972 -0.4882152 0.1957051 -0.887848 -0.4553802 0.06599199 -0.8557848 -0.5054253 0.110352 -0.8144292 -0.5718784 0.09828722 -0.8019484 -0.5969656 0.02260369 -0.8860238 -0.4046316 0.2263519 -0.8800274 -0.3144696 0.3558944 -0.9241193 -0.2934621 0.2447111 -0.9111096 -0.06632065 0.4067936 -0.9485729 -0.06526494 0.3097578 -0.935489 -0.1777664 0.3053843 -0.9051311 -0.1977458 0.3763436 -0.9486478 -0.2097731 0.2367756 -0.9526357 -0.3006665 0.04566013 -0.9486848 -0.3060659 0.07950341 -0.9597722 -0.235011 0.1536464 -0.9163258 -0.3809085 0.1235147 -0.9769281 -0.05676925 0.2058857 -0.9756864 -0.1097413 0.1897184 -0.9892573 -0.1360579 0.05346304 -0.9814778 -0.1543192 0.1135203 -0.9467132 -0.2321372 0.2232636 -0.8977397 -0.3863441 0.211664 0.0512287 -0.9983544 -0.02577406 0.992228 -0.08118391 -0.09430253 0.9908316 -0.06229799 -0.1198828 0.9745681 -0.1056874 -0.1976038 0.9917201 0.001264452 -0.128412 0.9646551 -0.256719 -0.05946636 0.9605157 -0.2516379 -0.1186935 0.9597351 -0.257278 -0.1127681 0.9544602 -0.2287478 -0.1915211 0.9256486 -0.3557349 -0.1289471 0.9521104 -0.02988421 -0.3042906 0.9478154 -0.06858271 -0.311356 0.9485054 -0.07222855 -0.3084164 0.9100031 -0.08653569 -0.4054698 0.9277405 -0.255675 -0.2718967 0.9200912 -0.2450794 -0.3055623 0.8970196 -0.2598113 -0.3575667 0.9129226 -0.4029043 -0.06511813 0.8839758 -0.4614264 -0.07531565 0.8984215 -0.3820154 -0.2165715 0.8071489 -0.586256 -0.06938856 0.7766931 -0.6253897 -0.07507103 0.7374381 -0.6522823 -0.1752508 0.7419996 -0.6564831 -0.1358922 0.8552158 -0.4804059 -0.1944637 0.8687927 -0.4313485 -0.2431828 0.8516733 -0.4338263 -0.2940191 0.864033 -0.3285758 -0.3814249 0.8203608 -0.4669706 -0.3300707 0.7637634 -0.5999606 -0.2381445 0.817075 -0.5437952 -0.1915077 0.7550927 -0.5951423 -0.2750285 0.7683101 -0.5492607 -0.3286525 0.8945577 0.01919043 -0.4465404 0.8713459 -0.08386141 -0.4834496 0.8962862 -0.06709647 -0.4383713 0.8341935 -0.03240823 -0.5505189 0.8886862 -0.2133772 -0.4058411 0.8334855 -0.1948975 -0.5170271 0.8313337 -0.1966171 -0.5198329 0.7526913 0.01297533 -0.6582459 0.804499 -0.05352371 -0.5915374 0.6985147 -0.05653607 -0.7133589 0.7522938 0.02443033 -0.6583747 0.7318125 -0.2720464 -0.624853 0.7891794 -0.1307751 -0.6000782 0.7428958 -0.1632817 -0.649188 0.6955071 -0.1338663 -0.705939 0.7871648 -0.2994672 -0.539158 0.8250398 -0.3559441 -0.4388774 0.7938603 -0.4278616 -0.4321115 0.7963942 -0.2937615 -0.5286402 0.7186348 -0.5482428 -0.427778 0.7138654 -0.4513784 -0.5354006 0.6698122 -0.5938448 -0.4457579 0.7426542 -0.4710295 -0.476021 0.6738672 -0.3182337 -0.6668061 0.6883262 -0.4264824 -0.5867878 0.6309031 -0.5564669 -0.5406531 0.5960172 -0.4837014 -0.6409341 0.57283 -0.4655027 -0.6746652 0.5900865 -0.5405688 -0.5996527 0.7118009 -0.4362782 -0.5504551 0.6649689 -0.7433487 -0.07245081 0.6436504 -0.760071 -0.08947718 0.5879582 -0.8045551 -0.08364468 0.4199397 -0.9044135 -0.07541185 0.5360124 -0.8303397 -0.1524038 0.4457005 -0.8844323 -0.1383137 0.6586664 -0.7210903 -0.2149125 0.5533278 -0.7881252 -0.2696054 0.6378227 -0.7292118 -0.2478556 0.6390472 -0.6611357 -0.3930882 0.5395808 -0.7697496 -0.3410841 0.6701588 -0.6663098 -0.3269839 0.5483999 -0.7890956 -0.2767412 0.4169877 -0.8668576 -0.2732752 0.4093241 -0.888271 -0.2083952 0.3147183 -0.946393 -0.07275235 0.2701179 -0.9540417 -0.129772 0.2880475 -0.9331772 -0.2149628 0.1894556 -0.9746248 -0.1192189 0.07078516 -0.9944737 -0.07753449 0.1549865 -0.9636601 -0.2175737 0.02660471 -0.9887192 -0.1474 0.1618317 -0.98319 -0.08454608 0.2035363 -0.9457125 -0.2533789 0.2872661 -0.9335417 -0.2144256 0.3189713 -0.8965649 -0.3072928 0.3820016 -0.8675615 -0.3184522 0.03587907 -0.9769711 -0.2103335 0.06584739 -0.9691612 -0.2374675 0.06297892 -0.9479852 -0.312022 0.1927062 -0.9137756 -0.3576014 0.1140435 -0.9264327 -0.3587707 0.3848608 -0.8299852 -0.4037411 0.5886898 -0.6972972 -0.4089267 0.5277295 -0.685574 -0.5014878 0.5281186 -0.6712155 -0.5201544 0.6321331 -0.5800318 -0.513781 0.4280189 -0.797107 -0.4259347 0.4380252 -0.7646521 -0.4726956 0.4995842 -0.6513087 -0.5711503 0.5192897 -0.5970572 -0.6114418 0.4617374 -0.5445948 -0.7001537 0.4167158 -0.6866939 -0.5956504 0.3786126 -0.7392724 -0.5568921 0.3063871 -0.7641114 -0.5676803 0.3672246 -0.6515215 -0.6638268 0.2762582 -0.6940386 -0.6648247 0.2745109 -0.867057 -0.4157596 0.3422461 -0.8391048 -0.4228129 0.2437911 -0.8958532 -0.371501 0.2260994 -0.827396 -0.5140962 0.04957342 -0.8903299 -0.4526095 0.06503862 -0.8742302 -0.4811358 0.1243488 -0.8567719 -0.5004792 -0.02687567 -0.9080838 -0.4179252 0.1822597 -0.9143102 -0.3616882 0.2508281 -0.6812146 -0.6877732 0.1391065 -0.7784465 -0.6121034 0.2730603 -0.7368577 -0.6184488 0.13348 -0.7894667 -0.5991039 0.1185616 -0.7262963 -0.6770797 -0.02162325 -0.8080119 -0.5887693 0.1550958 -0.8336331 -0.5300955 0.2896612 -0.788772 -0.5421579 0.5439271 -0.04342502 -0.8380081 0.5865291 -0.0421884 -0.8088286 0.644621 -0.1755617 -0.7440712 0.6096293 -0.1693579 -0.7743836 0.5639642 -0.1984985 -0.8015878 0.4658713 0.00315082 -0.8848469 0.4968058 -0.1205633 -0.8594467 0.511936 -0.1800082 -0.8399516 0.4361516 -0.0929014 -0.895065 0.3936254 -0.1092996 -0.91275 0.6434838 -0.297852 -0.7051331 0.6585497 -0.3161357 -0.6829133 0.5507229 -0.2979091 -0.7797144 0.5560812 -0.308433 -0.7717791 0.5351948 -0.3850072 -0.7518884 0.4591028 -0.4167002 -0.7845928 0.5709167 -0.4179425 -0.706667 0.46066 -0.279448 -0.8424376 0.4511516 -0.2432729 -0.8586504 0.3973799 -0.2228407 -0.8901861 0.4127129 -0.372582 -0.8311744 0.340962 -0.02921503 -0.9396231 0.2878413 -0.02406334 -0.9573758 0.0194934 -0.01088446 -0.9997507 0.0763846 -0.002619981 -0.997075 0.07042402 -0.007777094 -0.9974869 0.3226003 -0.1700212 -0.9311401 0.3679087 -0.1617878 -0.915679 0.2458264 -0.1077731 -0.9633039 0.2735885 -0.233044 -0.933188 0.1980881 -0.1257281 -0.9720873 0.1719969 -0.1092424 -0.9790216 0.448759 -0.5444661 -0.708641 0.4278824 -0.4876935 -0.7609677 0.390759 -0.5884829 -0.7078102 0.3055644 -0.5554912 -0.7733434 0.3448311 -0.4925832 -0.7990327 0.2575226 -0.5713258 -0.7792747 0.3208692 -0.4416771 -0.8378332 0.3343117 -0.3883066 -0.8587512 0.3041021 -0.3532144 -0.8847382 0.3135925 -0.2981459 -0.9015369 0.2081463 -0.5053545 -0.8374317 0.200473 -0.3638784 -0.9096171 0.2341478 -0.6080862 -0.7585552 0.1277533 -0.6390807 -0.7584558 0.006501495 -0.6311513 -0.7756326 0.06712639 -0.6053217 -0.7931455 0.07079559 -0.5874329 -0.8061704 0.1371736 -0.7053328 -0.6954776 0.177974 -0.495416 -0.8502284 0.1504877 -0.4604346 -0.8748449 0.1502104 -0.4410433 -0.8848265 0.03660929 -0.507083 -0.8611195 0.1942177 -0.2159843 -0.9568858 0.2050703 -0.228152 -0.951784 0.176717 -0.3220534 -0.9300822 0.0733872 -0.1206992 -0.9899728 0.07378083 -0.1210519 -0.9899004 0.08394837 -0.297602 -0.9509919 0.0902366 -0.238382 -0.9669702 0.03368264 -0.3739755 -0.9268268 0.04241621 -0.3320149 -0.9423201 0.01858705 -0.1125691 -0.9934701 0.06700253 -0.2122954 -0.9749058 3.35938e-4 -0.02502954 -0.9996867 -0.07642424 -0.9969192 -0.01765185 -0.0922876 -0.9950137 -0.03782498 -0.0841118 -0.9893607 -0.1187049 -0.2097143 -0.977654 -0.01458179 -0.2567949 -0.9647648 -0.05731797 -0.321498 -0.9468346 -0.01197999 -0.2564228 -0.9622387 -0.09134495 -0.3067582 -0.9355414 -0.175105 -0.06943911 -0.9695772 -0.2347304 -0.1233255 -0.9715862 -0.2020173 -0.1630275 -0.9582071 -0.2350772 -0.1231141 -0.976599 -0.1763445 -0.0580998 -0.934821 -0.3503343 -0.03856211 -0.9306393 -0.3639004 -0.2954646 -0.9323935 -0.2081901 -0.4034219 -0.9040745 -0.1410679 -0.3035255 -0.9203293 -0.2467111 -0.178262 -0.9208773 -0.3467101 -0.2627026 -0.9095774 -0.321957 -0.1866797 -0.9226425 -0.3374635 -0.4184613 -0.9072713 -0.04182112 -0.538544 -0.8414527 -0.04390603 -0.6431686 -0.762193 -0.07345807 -0.5733236 -0.8143947 -0.08978551 -0.6505792 -0.7554003 -0.07821273 -0.7104347 -0.7001533 -0.07118999 -0.4414694 -0.8772482 -0.1885218 -0.4335184 -0.8614093 -0.2646433 -0.4204064 -0.8641414 -0.2766196 -0.5608296 -0.791439 -0.2430936 -0.6424186 -0.7266108 -0.2435879 -0.5437819 -0.8238636 -0.1598442 -0.5213899 -0.7741699 -0.3589062 -0.5239869 -0.8018785 -0.2871041 -0.4182109 -0.9073764 -0.04204714 -0.09431457 -0.8504547 -0.5175246 -0.09786844 -0.871833 -0.4799263 -0.02822679 -0.8241612 -0.5656514 -0.1737084 -0.8829022 -0.4362444 -0.3285052 -0.8617004 -0.3867259 -0.3002105 -0.8330867 -0.4645861 -0.2481482 -0.8363333 -0.4888447 -0.04952812 -0.75757 -0.6508723 0.0155211 -0.7224547 -0.6912441 -0.1282264 -0.7322906 -0.6688112 -0.1349917 -0.7145285 -0.6864593 -0.213006 -0.8038173 -0.5554334 -0.2056365 -0.7685928 -0.6057878 -0.2176901 -0.7879153 -0.5760213 -0.209653 -0.6527602 -0.7279765 -0.4613496 -0.7876884 -0.4082936 -0.4582542 -0.7828683 -0.4208566 -0.3958311 -0.8451455 -0.3592309 -0.3852509 -0.7756026 -0.5000226 -0.386394 -0.7514556 -0.5348029 -0.6101287 -0.6981543 -0.3745979 -0.5262247 -0.6783443 -0.5127735 -0.3619025 -0.7344799 -0.5740784 -0.361969 -0.7005512 -0.6149849 -0.3243538 -0.6740632 -0.6636517 -0.3241259 -0.6731341 -0.6647052 -0.5141352 -0.6505328 -0.5589922 -0.5143783 -0.670351 -0.5348312 -0.5232388 -0.5407456 -0.6586467 -0.4774794 -0.588532 -0.6524137 -0.4793247 -0.6261243 -0.6149929 -0.7551701 -0.6362325 -0.1578806 -0.7541607 -0.6473463 -0.1103836 -0.8123193 -0.5821019 -0.03598433 -0.8922553 -0.4513024 -0.01438087 -0.8621597 -0.4783874 -0.1668115 -0.86566 -0.4960923 -0.06726956 -0.686051 -0.6773998 -0.2654501 -0.6657892 -0.6956963 -0.2696877 -0.7458022 -0.5811001 -0.3257328 -0.7557315 -0.570481 -0.321592 -0.8485924 -0.4896399 -0.2003594 -0.80544 -0.5495588 -0.2219271 -0.8521484 -0.4500083 -0.2670875 -0.8180439 -0.4514786 -0.3563302 -0.9345786 -0.3539552 -0.03575789 -0.9437006 -0.3116604 -0.1108921 -0.9365765 -0.313647 -0.1563655 -0.9762597 -0.2131978 -0.0382598 -0.9965264 -0.07654702 0.0327984 -0.9922103 -0.0815078 -0.09420949 -0.9843796 -0.1350799 -0.1129177 -0.9769429 -0.2131384 -0.0124377 -0.9337424 -0.3189888 -0.1623929 -0.922806 -0.231162 -0.3082098 -0.8995992 -0.2916358 -0.3250691 -0.9057905 -0.3289071 -0.26714 -0.9693548 -0.1615054 -0.1851148 -0.9638723 -0.08835005 -0.2512857 -0.9221484 -0.1289166 -0.3647229 -0.9713643 -0.01052945 -0.2373617 -0.9565094 -0.2109505 -0.2014687 -0.715173 -0.4972544 -0.4911881 -0.6699156 -0.5561538 -0.4918394 -0.6645794 -0.5938028 -0.4535774 -0.6164913 -0.6554598 -0.4362466 -0.803778 -0.4651281 -0.3709405 -0.7941936 -0.3514827 -0.4956981 -0.7764812 -0.4528442 -0.4381887 -0.6215992 -0.5486738 -0.5590811 -0.611333 -0.5233526 -0.593611 -0.7427093 -0.3456992 -0.5734763 -0.7057432 -0.4126523 -0.5758861 -0.6141317 -0.4242686 -0.6654611 -0.6984251 -0.3073363 -0.6463334 -0.6348553 -0.4487374 -0.6289623 -0.867031 -0.2987717 -0.398739 -0.8740793 -0.3069171 -0.3765468 -0.9214583 -0.07569533 -0.3810312 -0.926474 -0.1094698 -0.3600867 -0.8664281 -0.1950669 -0.459621 -0.8398749 -0.1810548 -0.5116927 -0.7260947 -0.1772686 -0.664351 -0.7662746 -0.1874662 -0.6145566 -0.7254808 -0.3133705 -0.6127615 -0.8365886 -0.09246605 -0.5399718 -0.7826241 -0.08838766 -0.6161875 -0.7751639 -0.06551557 -0.628354 -0.7589998 -0.1721883 -0.6279096 -0.8201745 -0.2017765 -0.5353504 -0.8587615 -0.02774506 -0.511624 -0.7777085 -0.3351807 -0.5318116 -0.07333034 -0.6159841 -0.7843382 -0.2826661 -0.6464355 -0.7086756 -0.1814236 -0.598236 -0.7805122 -0.1077079 -0.5840556 -0.804536 -3.70545e-4 -0.4892593 -0.8721384 -0.09971976 -0.5288083 -0.8428629 -0.01587277 -0.4136419 -0.9103014 -0.1147363 -0.5094615 -0.8528098 -0.1230947 -0.4323729 -0.8932533 -0.2779062 -0.5417834 -0.7932459 -0.3114199 -0.5586104 -0.7687472 -0.3293675 -0.5553922 -0.7635815 -0.4021854 -0.5653494 -0.7201576 -0.4502639 -0.4638324 -0.7629693 -0.406447 -0.4358236 -0.803031 -0.4097875 -0.5769542 -0.7065396 -0.2640351 -0.4800456 -0.8365654 -0.2332313 -0.4673306 -0.8527633 -0.2042743 -0.4154975 -0.88636 -0.3699839 -0.4002408 -0.8384029 -0.3304696 -0.4139478 -0.8481964 -0.2363834 -0.3588322 -0.9029743 -0.07852691 -0.3999583 -0.9131633 -0.07409095 -0.2710616 -0.9597064 -0.04725867 -0.2636561 -0.9634584 -0.03691452 -0.1706848 -0.9846341 -0.00991851 -0.06982398 -0.99751 -0.0194475 -0.2158475 -0.9762335 -0.1046792 -0.3195817 -0.9417589 -0.2130061 -0.304167 -0.9284994 -0.2341254 -0.321227 -0.9176048 -0.19818 -0.2350768 -0.9515585 -0.1469799 -0.2059999 -0.9674507 -0.1376495 -0.1749848 -0.9749015 -0.08054006 -0.1505865 -0.9853106 -0.5324319 -0.466764 -0.7061499 -0.5268192 -0.3688098 -0.7657943 -0.5042814 -0.4453161 -0.7398607 -0.3904873 -0.407027 -0.8257413 -0.6124746 -0.3574152 -0.705074 -0.6204092 -0.3664113 -0.6934228 -0.5141745 -0.3462103 -0.7847058 -0.55938 -0.2428445 -0.7925406 -0.3684391 -0.2945806 -0.8817455 -0.3249057 -0.2692253 -0.9066168 -0.4383049 -0.2346515 -0.8676564 -0.4722365 -0.2503165 -0.845183 -0.4762036 -0.3412671 -0.8104116 -0.623493 -0.2411563 -0.7437071 -0.6200434 -0.2372357 -0.7478405 -0.6785748 -0.2443795 -0.6926868 -0.6516326 -0.1015123 -0.7517116 -0.6700848 -0.09680718 -0.7359448 -0.7027064 -0.055803 -0.7092882 -0.6045553 -0.06964731 -0.7935127 -0.4072766 -0.1374846 -0.9028974 -0.4263137 -0.1436313 -0.8930994 -0.5581802 -0.08309346 -0.8255485 -0.519986 -0.06506103 -0.8516933 -0.498812 -0.01575845 -0.866567 -0.5370544 -0.2216485 -0.8139069 -0.2786126 -0.1831172 -0.9427848 -0.3203333 -0.2110765 -0.9234898 -0.07861506 -0.08632707 -0.9931603 -0.1696768 -0.1212461 -0.9780129 -0.2738395 -0.1017723 -0.9563757 -0.2672373 -0.09926337 -0.9585046 -0.318143 -0.0673387 -0.9456482 -0.3726018 -0.07743334 -0.9247552 -0.2120545 -0.03760629 -0.9765341 -0.1545675 -0.06051051 -0.9861274 -0.1206091 -0.04388374 -0.9917296 + -0.1700321 0.0140354 0.9853386 -0.2757118 0.01941353 0.9610443 -0.270439 0.01223379 0.9626594 -0.3519167 0.04135423 0.9351174 -0.1508421 0.08159315 0.9851849 -0.1758185 0.1199702 0.9770849 -0.2406141 0.1096612 0.9644062 -0.297879 0.1627755 0.9406234 -0.3343763 0.15236 0.9300425 -0.2601909 0.2354524 0.9364096 -0.3893696 0.02522867 0.9207361 -0.4534991 0.1120386 0.8841868 -0.5371197 0.09135067 0.8385449 -0.5348746 0.09017485 0.8401059 -0.6076992 0.04235571 0.7930371 -0.557215 0.1589862 0.815006 -0.611349 0.1749539 0.7717795 -0.6576721 0.1156959 0.7443668 -0.7227657 0.1116082 0.6820215 -0.4083275 0.2022079 0.8901577 -0.4061919 0.1938769 0.8929837 -0.5055726 0.2368677 0.8296326 -0.3590194 0.2933119 0.8860436 -0.3654986 0.3251873 0.8721606 -0.6217962 0.2417275 0.7449411 -0.5203912 0.3007795 0.7992026 -0.6618046 0.2709281 0.6990084 -0.5068118 0.3418481 0.7913796 -0.5066801 0.3398041 0.7923437 -0.5534013 0.387596 0.7372356 -0.5646736 0.4735531 0.6759374 -0.5471072 0.4536636 0.7034652 -0.0677703 0.08319216 0.9942265 -0.06619119 0.08066076 0.9945414 -0.1498695 0.2012934 0.9679981 -0.2501971 0.2657322 0.9310144 -0.2635553 0.2813255 0.9227104 -0.1442259 0.1938725 0.9703672 -0.1634407 0.2886012 0.9433962 -0.08226299 0.1946169 0.9774237 -0.05118888 0.1281767 0.9904294 -0.1204187 0.3773958 0.9181895 -0.1175755 0.3387245 0.9335104 -0.0437147 0.2288792 0.9724728 -0.04478877 0.2906717 0.9557741 -0.3557161 0.3527311 0.8654751 -0.3898952 0.4288679 0.8148952 -0.2399199 0.3987655 0.8851128 -0.264627 0.4108811 0.8724388 -0.2837802 0.4604018 0.8411296 -0.4302559 0.4348644 0.7910581 -0.4432328 0.4777898 0.7584602 -0.319899 0.4752 0.8196644 -0.3350262 0.5444488 0.7689819 -0.3251931 0.5574078 0.7639018 -0.4169501 0.5226976 0.7435993 -0.1639414 0.4072127 0.8984994 -0.2027179 0.5445482 0.8138629 -0.05331116 0.4159573 0.9078202 -0.1292687 0.510981 0.8498166 -0.04394292 0.4980896 0.8660115 -0.07968479 0.522714 0.8487759 -0.2186743 0.5875222 0.7791016 -0.2081756 0.6037352 0.7695238 -0.1382448 0.6342788 0.7606438 -0.06098043 0.5930843 0.8028277 -0.7996454 0.03569209 0.599411 -0.7765845 0.1390456 0.6144777 -0.7815607 0.1513631 0.6051877 -0.813413 0.1776261 0.5539029 -0.7035074 0.1255566 0.6995092 -0.8926948 0.04359012 0.4485489 -0.8901259 0.07447206 0.4495884 -0.8947457 0.05710893 0.4429094 -0.9299921 0.09004616 0.3563795 -0.8269928 0.2290917 0.5134199 -0.7726106 0.3017896 0.558566 -0.8625411 0.238948 0.446012 -0.8605886 0.2401239 0.4491413 -0.8910125 0.2527237 0.3771306 -0.8543372 -0.001048207 0.5197183 -0.6673267 0.2914503 0.6853699 -0.7356112 0.2997069 0.6074965 -0.6340841 0.3485094 0.6902743 -0.727313 0.3050414 0.6147891 -0.6335073 0.4246329 0.6468042 -0.6978412 0.4555686 0.552698 -0.6877585 0.4306024 0.5844398 -0.7837123 0.3987053 0.476266 -0.7884094 0.3998481 0.4674742 -0.7975894 0.4240492 0.4289911 -0.8313143 0.4250532 0.3581149 -0.6715307 0.5218867 0.5260048 -0.7028686 0.558556 0.4404442 -0.7112146 0.5562311 0.4298614 -0.6039531 0.5611986 0.5659479 -0.9500722 0.07082283 0.3038866 -0.9695993 0.1355932 0.2036952 -0.9596351 -0.03826487 0.2786331 -0.9043185 0.2380285 0.3543313 -0.9283761 0.245238 0.2792419 -0.971605 0.1344292 0.194712 -0.9882208 0.05331575 0.1434479 -0.9876104 0.1531732 0.03411614 -0.9958001 0.08602654 0.03132885 -0.9553346 0.274689 0.1090042 -0.9739539 0.1913247 0.1216908 -0.9178413 0.3322985 0.2171295 -0.9543452 0.2848623 0.08988183 -0.9627739 0.2699356 -0.01418775 -0.9827339 0.1847226 -0.01057457 -0.9179173 0.3327836 0.2160627 -0.9881872 -0.005387187 0.1531573 -0.8658761 0.368561 0.3382623 -0.8242086 0.4681469 0.3186203 -0.87123 0.4565784 0.1802625 -0.7794293 0.5966286 0.1911136 -0.7882068 0.5298737 0.3129919 -0.8836572 0.437787 0.1658093 -0.8956457 0.4380962 0.07675045 -0.9174415 0.3951629 0.0463404 -0.930858 0.3637772 -0.03420138 -0.8796628 0.4724767 0.05439841 -0.8086284 0.5657761 0.1612996 -0.7801735 0.5960842 0.1897703 -0.824686 0.5619276 0.06426995 -0.8098871 0.5859726 0.02681678 -0.7806282 0.6249412 0.008272647 -0.754716 0.6548383 0.03988063 -0.7176948 0.6585609 0.2263003 -0.7315286 0.5735177 0.368705 -0.4890745 0.5830461 0.6487398 -0.4956969 0.6553373 0.5699278 -0.3646378 0.6376513 0.6785574 -0.3584566 0.6503688 0.6697233 -0.4362893 0.5821085 0.6861498 -0.4217622 0.6880506 0.5905108 -0.4741749 0.6745361 0.5658262 -0.3038213 0.6858368 0.6613022 -0.5562937 0.6324964 0.5389673 -0.5977301 0.6751987 0.4322333 -0.5883088 0.7016111 0.4020382 -0.4570444 0.7561032 0.4684211 -0.4977963 0.7588879 0.4198666 -0.387314 0.7850098 0.4834744 -0.2378649 0.6790282 0.6945078 -0.2960841 0.7607196 0.5776159 -0.3434905 0.7587257 0.5534887 -0.1179264 0.6829159 0.7209156 -0.1606235 0.7160832 0.6792827 -0.1485142 0.7615162 0.6309015 -0.0631349 0.7845969 0.6167833 -0.2270184 0.7959174 0.5612293 -0.2723759 0.8612829 0.4289558 -0.3233509 0.8573465 0.4005013 -0.3361811 0.8674083 0.3668586 -0.2197154 0.8125149 0.5399489 -0.1122603 0.8769817 0.4672266 -0.1140418 0.8665037 0.485969 -0.6208093 0.708608 0.3353663 -0.6644393 0.7290418 0.1643734 -0.5925629 0.7614259 0.262869 -0.6430448 0.74696 0.16895 -0.4101337 0.8541734 0.3196534 -0.461745 0.8268852 0.321018 -0.521933 0.8139725 0.2550189 -0.5072547 0.844321 0.17267 -0.7109327 0.7015145 0.04952019 -0.5308645 0.8368133 0.1338894 -0.6005448 0.7894685 0.1268284 -0.5114229 0.8593137 0.005153059 -0.605309 0.7956825 0.02214741 -0.4472942 0.8942973 0.01266241 -0.5394513 0.8411114 0.03903883 -0.6903553 0.6586636 0.2992856 -0.2757188 0.9126572 0.3017221 -0.3911659 0.9024637 0.1804124 -0.2862241 0.9316532 0.2238261 -0.158458 0.9043294 0.3963325 -0.1684809 0.9285781 0.3306916 -0.1531431 0.918401 0.3648108 -0.2263028 0.9556874 0.188278 -0.1487595 0.9687986 0.1982424 -0.1315998 0.9625717 0.2369331 -0.3753352 0.9113212 0.1691666 -0.3630577 0.9258582 0.1047651 -0.2819563 0.9576536 0.05831313 -0.1255235 0.9809459 0.1482872 -0.1559823 0.9862683 0.05426341 -0.2613607 0.9648789 0.02644777 -0.555939 0.5253156 0.644186 -0.02530264 0.6961728 0.7174283 -0.7278183 -0.01027601 0.6856931 0.01784682 0.1399096 0.9900035 0.0190559 0.2064665 0.9782682 0.02748775 0.3296516 0.9437025 0.03402459 0.4077419 0.9124631 0.08643871 0.2761675 0.9572147 0.0797106 0.2398247 0.9675383 0.1285336 0.3768936 0.9172952 0.02805793 0.07470077 0.9968112 0.009875237 0.01076126 0.9998934 0.05053275 0.1019884 0.9935013 0.03222984 0.052509 0.9981003 0.1483127 0.3087396 0.9395122 0.199538 0.2980457 0.9334632 0.2248645 0.2531192 0.9409392 0.1417189 0.1694208 0.9753012 0.05084341 0.377848 0.9244707 0.03845101 0.5030025 0.8634294 0.06467479 0.4763652 0.8768657 0.1474386 0.485297 0.8618288 0.06216073 0.5656558 0.8222953 0.01441305 0.6331436 0.7739003 0.01165473 0.6249621 0.7805681 0.153841 0.5656147 0.8101933 0.1703202 0.6104958 0.7734895 0.1174387 0.6629887 0.7393606 0.1646983 0.5472627 0.8205962 0.1271768 0.7128288 0.6897109 0.2063285 0.4271801 0.8803101 0.2065766 0.4238709 0.8818501 0.2467427 0.3694312 0.8959011 0.3014009 0.3577988 0.8838199 0.2883701 0.5083304 0.8114451 0.2469903 0.6224642 0.7426536 0.2898892 0.5024442 0.8145637 0.3073567 0.5567426 0.7717316 0.2585442 0.6665478 0.6991917 0.3336872 0.4624089 0.8214811 0.3796948 0.5727202 0.7265147 0.3436068 0.4123361 0.8437496 0.1177235 0.1163894 0.9862022 0.2201099 0.1849087 0.9577894 0.2174549 0.1830061 0.9587608 0.2938296 0.1594991 0.9424566 0.3449566 0.189304 0.9193307 0.1581664 0.05417615 0.9859252 0.204616 0.0473684 0.9776956 0.1029655 -0.002052426 0.9946829 0.2205463 0.03523713 0.9747399 0.3051438 0.04750043 0.951121 0.3051697 0.04753142 0.9511111 0.3444839 0.2856836 0.8942683 0.4329749 0.3884703 0.8134024 0.4345757 0.2914582 0.8521714 0.4694665 0.314696 0.8249652 0.3321277 0.2540167 0.908387 0.4481467 0.4399381 0.7782154 0.4798614 0.4617013 0.7460328 0.4838882 0.479393 0.7321438 0.5277891 0.5033157 0.6841872 0.4659928 0.3003232 0.8322601 0.5472493 0.3470139 0.7616428 0.5722975 0.3353806 0.7483285 0.4321629 0.1730672 0.8850329 0.3902353 0.1619126 0.9063669 0.4815925 0.1534854 0.8628504 0.5381807 0.2019924 0.8182669 0.3952507 0.0623393 0.9164555 0.4880669 0.06291472 0.8705357 0.4943825 0.05542904 0.8674755 0.5990889 0.2630027 0.7562555 0.5384528 0.2062287 0.8170302 0.644039 0.2351729 0.7279475 0.5976551 0.07236731 0.7984807 0.6046449 0.1179821 0.7877086 0.3948737 0.06192958 0.9166458 -0.006145775 0.7252987 0.6884069 -0.02745378 0.8274065 0.5609321 -0.02733993 0.8256794 0.5634768 0.1764788 0.7129186 0.6786769 0.08948624 0.7889499 0.6079066 0.1410712 0.8205945 0.5538264 0.09004539 0.7380726 0.6686858 0.02949374 0.8626832 0.5048841 0.03275859 0.8855602 0.4633681 0.006323993 0.9001615 0.4355106 0.01007872 0.9301005 0.3671671 0.1798709 0.8232431 0.5384398 0.189783 0.8554054 0.4819378 0.1289037 0.8950992 0.4268273 0.2253475 0.7955032 0.5624884 0.1324543 0.9238972 0.3589846 0.3083704 0.6853151 0.6597355 0.2970479 0.7258915 0.6203581 0.3908827 0.6416376 0.6599333 0.2429999 0.7605107 0.6021417 0.4011346 0.6430619 0.6523515 0.503925 0.5934087 0.6276351 0.5300176 0.6288873 0.568843 0.3617591 0.7527652 0.5499773 0.3383172 0.8110716 0.4771838 0.3336399 0.7976548 0.5024256 0.436966 0.7093086 0.5531203 0.4376441 0.7941224 0.4217076 0.2867181 0.8594082 0.4233325 0.4850881 0.7184151 0.4985672 0.4711677 0.70542 0.5295127 0.5746352 0.6974069 0.4282733 0.5699958 0.6946174 0.4388753 -0.01688933 0.9413422 0.3370307 -0.0233981 0.9613351 0.2743855 0.1475151 0.945231 0.2911661 0.2943663 0.882376 0.3670983 0.2696015 0.8974581 0.3491188 0.1447942 0.9273795 0.3449665 0.2481177 0.9421233 0.2254803 0.2218217 0.9500668 0.2194725 0.05250507 0.9793455 0.1952584 0.05173569 0.9785144 0.199582 0.01769667 0.9950681 0.09760373 -0.07476055 0.9970853 -0.01522642 0.08232188 0.9956502 0.04363536 0.01603758 0.994333 0.1050948 0.1892725 0.9678417 0.1657062 0.1729146 0.983286 0.05700099 0.2029805 0.9744662 0.09599363 0.2939741 0.952502 0.07949435 0.3351656 0.9240856 0.1836569 0.4534571 0.810212 0.3713939 0.4709725 0.8082835 0.3533594 0.4731293 0.8413055 0.2614455 0.4662386 0.8467929 0.2560536 0.3813 0.8880535 0.2568488 0.5530644 0.750665 0.3614165 0.614195 0.7419853 0.2687421 0.6112441 0.7556463 0.2353286 0.3352962 0.9240317 0.1836901 0.4476653 0.8855894 0.1238037 0.4291658 0.8954626 0.1181672 0.3120557 0.9489361 0.04627722 0.5661287 0.7962644 0.2132169 0.544609 0.8354483 0.07366895 0.5561091 0.8276646 0.07559132 0.6391841 0.7648106 0.08067452 0.5698401 0.8189826 0.06745195 0.3386878 0.8759885 0.3434165 0.5326935 0.5196876 0.667954 0.5957606 0.6081215 0.52465 0.6324383 0.5194368 0.5746368 0.6422632 0.389476 0.6601564 0.6421031 0.387206 0.6616458 0.6757808 0.4253319 0.6020076 0.6726132 0.4657283 0.5750555 0.6207991 0.5815432 0.5257528 0.6777212 0.6412925 0.359775 0.7094434 0.5634614 0.423322 0.701835 0.5566975 0.4444273 0.721989 0.4785624 0.4997098 0.7689646 0.5156793 0.3778468 0.7882457 0.4353651 0.4348863 0.7758744 0.4264207 0.4649564 0.7831273 0.3483514 0.5151342 0.6946246 0.2748697 0.6647883 0.7327722 0.2493097 0.6331584 0.75428 0.2562935 0.6044629 0.7218415 0.1430118 0.6771208 0.7046246 0.1360275 0.69642 0.7908799 0.03642368 0.6108865 0.7794522 0.0972563 0.6188664 0.6642187 0.1590065 0.7304317 0.8726354 0.2795484 0.4004498 0.8436326 0.2765833 0.460202 0.8290051 0.183633 0.5282325 0.9003275 0.1162574 0.4193979 0.86774 0.1242016 0.4812498 0.8174127 0.1834642 0.5460564 0.767058 0.3406715 0.5436589 0.6855395 0.6513907 0.325155 0.7439628 0.61779 0.2546665 0.7440136 0.6410641 0.1883632 0.7916655 0.5179819 0.3239761 0.7903776 0.5434104 0.2828575 0.8574502 0.4054074 0.3168976 0.7194737 0.6753529 0.1620374 0.731491 0.6802049 0.04735183 0.8478406 0.4936569 0.1935701 0.8867883 0.4572088 0.06757736 0.8453526 0.5197568 0.1234176 0.8133981 0.57243 0.1034774 0.7982963 0.6009294 0.04008847 0.8860179 0.4046412 0.2263575 0.6629086 0.7300203 0.1662007 0.8739864 0.3166542 0.3686165 0.8555718 0.3795905 0.3520058 0.9241317 0.2934704 0.2446543 0.9135707 0.07992541 0.3987488 0.9436684 0.06102913 0.3252158 0.9570189 0.1099893 0.2683601 0.9425078 0.1860868 0.2775804 0.9747668 0.0991013 0.2000222 0.9019387 0.2067669 0.3791494 0.9402271 0.3279622 0.09172701 0.9628342 0.2462452 0.1109666 0.9159414 0.3810899 0.1257858 0.9762227 0.1418502 0.163914 0.9617292 0.2221956 0.1603311 0.9807367 0.1939048 0.02358925 0.9928126 0.1138638 0.0368542 0.9433164 0.2423121 0.226802 0.8977471 0.3863324 0.2116544 0.6913692 0.003492772 0.7224933 -0.07545101 0.9971092 -0.0089733 -0.985931 0.1469019 -0.07974958 -0.9940261 0.07527363 -0.07903176 -0.99884 0.03676301 -0.03109848 -0.9800943 0.04427993 -0.1935316 -0.9507991 0.305314 -0.05258011 -0.9514176 0.2857881 -0.114585 -0.9643793 0.2095181 -0.1614767 -0.9570096 0.1955417 -0.2142341 -0.9495044 0.01800268 -0.3132371 -0.9390817 0.06799483 -0.336901 -0.9368098 0.154169 -0.3140369 -0.9558013 0.1691076 -0.2405132 -0.8916434 0.2682023 -0.3647462 -0.9095813 0.3322931 -0.249486 -0.9382909 0.151488 -0.3109047 -0.9761564 0.001184582 -0.2170656 -0.8611963 0.5063978 -0.04361414 -0.9069549 0.3589278 -0.2204625 -0.8807764 0.4593518 -0.1150172 -0.8649443 0.4912959 -0.1024684 -0.8220394 0.5506131 -0.1451781 -0.7673279 0.6368337 -0.07517224 -0.7338154 0.6717681 -0.1012055 -0.8876405 0.4097418 -0.2102527 -0.8160113 0.5065981 -0.2783592 -0.8441609 0.4604859 -0.2744911 -0.8540741 0.3676468 -0.3679583 -0.883847 0.3193576 -0.3417971 -0.8030136 0.5525615 -0.2232596 -0.7171419 0.6514343 -0.2476708 -0.7752755 0.5270732 -0.3480544 -0.7016346 0.6220512 -0.3475072 -0.8882245 -0.007721483 -0.4593449 -0.8948439 0.04311645 -0.444292 -0.8642957 0.1453043 -0.4815391 -0.8667923 0.2295638 -0.4426867 -0.8361077 0.139385 -0.5305618 -0.8116819 0.3130968 -0.4930955 -0.8719284 0.1740499 -0.4576545 -0.808687 0.0878371 -0.5816444 -0.78149 0.01302051 -0.6237819 -0.8081077 0.05536144 -0.5864274 -0.7119199 0.03133803 -0.7015612 -0.7696534 0.263224 -0.5816758 -0.7493587 0.256346 -0.6105312 -0.733541 0.2072162 -0.647286 -0.65462 0.2217786 -0.7226942 -0.7408785 0.161993 -0.6518108 -0.8221539 0.3797343 -0.4241048 -0.7663378 0.4626033 -0.4457853 -0.7879865 0.3102353 -0.5318189 -0.7218286 0.5830373 -0.3728687 -0.7057179 0.5581952 -0.4363259 -0.7138711 0.4514294 -0.53535 -0.7460864 0.4734361 -0.4682024 -0.6827415 0.3367052 -0.6484549 -0.6646366 0.416332 -0.620424 -0.6308884 0.5564793 -0.5406576 -0.590103 0.5405992 -0.599609 -0.6542915 0.4232341 -0.6267181 -0.7118019 0.4362593 -0.5504689 -0.702866 0.6744319 -0.2260994 -0.662622 0.7465341 -0.06015872 -0.6593834 0.7514784 -0.02222621 -0.6261447 0.7491419 -0.2161695 -0.6208199 0.7738002 -0.1257614 -0.5367444 0.8372096 -0.104813 -0.418855 0.9057255 -0.06497645 -0.4307301 0.8955753 -0.1114294 -0.5000048 0.8556095 -0.1338951 -0.6344199 0.7384533 -0.2284692 -0.5241419 0.7690916 -0.3657507 -0.5898003 0.7237688 -0.358182 -0.4155483 0.8681376 -0.271398 -0.4921987 0.8340346 -0.2492526 -0.5011457 0.8324595 -0.2363566 -0.3831503 0.8456014 -0.371691 -0.3799044 0.9083349 -0.1749305 -0.2641804 0.9630662 -0.05208033 -0.2702741 0.9620426 -0.03776425 -0.3033801 0.9354448 -0.1813931 -0.2786436 0.9466443 -0.1619333 -0.1449025 0.9747353 -0.1699836 -0.1619952 0.9676717 -0.1933109 -0.01798015 0.9865041 -0.1627461 -0.1554632 0.9823707 -0.1038229 -0.2877793 0.9112281 -0.2946975 -0.2449514 0.9145259 -0.3219337 -0.2380316 0.9098699 -0.3398203 -0.1593237 0.9585734 -0.2361209 -0.3831876 0.8687321 -0.3138025 -0.08022874 0.9433107 -0.322069 0.003582298 0.9554501 -0.2951312 -0.1020585 0.9237201 -0.3692227 -0.5922861 0.6611647 -0.4604982 -0.6109799 0.6884474 -0.3908245 -0.594727 0.6452499 -0.4795335 -0.6324303 0.5923954 -0.4990989 -0.4823081 0.7763372 -0.4058073 -0.4732748 0.7514682 -0.4596809 -0.4238128 0.7397235 -0.5226777 -0.3347749 0.7995352 -0.4986676 -0.5114411 0.6431261 -0.5699272 -0.5448955 0.5556434 -0.6279724 -0.5064713 0.6091547 -0.6102601 -0.4175102 0.7414686 -0.5252711 -0.3490074 0.6802944 -0.6445102 -0.3949618 0.6268731 -0.6715917 -0.2884351 0.699898 -0.6534126 -0.2559871 0.8798487 -0.4004209 -0.3304522 0.8413587 -0.427688 -0.09484529 0.9119179 -0.3992623 -0.02596062 0.8957709 -0.4437574 -0.04093599 0.8590916 -0.5101823 -0.1620005 0.8623117 -0.4797649 -0.1523196 0.8293119 -0.537625 -0.2497159 0.6806225 -0.6887634 -0.1299387 0.7807166 -0.6112264 -0.2626985 0.7406495 -0.6184075 -0.1345487 0.7181804 -0.6827251 -0.001473009 0.7661601 -0.6426481 -0.006140232 0.7736721 -0.6335566 -0.1302729 0.7809436 -0.6108651 -0.1455243 0.8386972 -0.5247949 -0.2796851 0.7941042 -0.5396062 -0.6168898 0.06922161 -0.7839997 -0.6493399 0.09900945 -0.7540258 -0.6320049 0.1748877 -0.754973 -0.6844978 0.08556324 -0.7239764 -0.5553989 0.2178549 -0.8025406 -0.5335035 0.0876066 -0.8412486 -0.4225308 0.0110569 -0.9062812 -0.4051041 0.05309647 -0.9127275 -0.5150316 0.1154196 -0.8493649 -0.5239727 0.2041198 -0.8269147 -0.4466143 0.1141234 -0.8874185 -0.6288172 0.2919207 -0.7206742 -0.5762149 0.3192471 -0.7523682 -0.5501929 0.3605089 -0.7532074 -0.5215218 0.5030977 -0.6891356 -0.508058 0.3666716 -0.7793774 -0.5698829 0.4235387 -0.7041651 -0.4535292 0.3071398 -0.836646 -0.456011 0.2465703 -0.8551356 -0.403539 0.2144759 -0.8894698 -0.3823252 0.3783001 -0.8430401 -0.3885553 0.2166326 -0.8955976 -0.3009089 0.02873498 -0.95322 -0.3537867 0.06513661 -0.9330554 -0.2545163 0.04248768 -0.9661348 -0.1663244 0.04289138 -0.9851378 -0.07269006 0.01296311 -0.9972704 -0.1125319 -0.01433694 -0.9935448 -0.2203758 0.02136945 -0.9751809 -0.3058235 0.1713966 -0.9365337 -0.3211419 0.1683838 -0.9319414 -0.2412177 0.127189 -0.9621003 -0.2507582 0.2517937 -0.9347301 -0.2159975 0.1375876 -0.9666514 -0.1471832 0.0937556 -0.9846558 -0.1196592 0.1057589 -0.9871661 -0.0620023 0.04971039 -0.9968374 -0.4448668 0.5077648 -0.7377456 -0.432808 0.4318776 -0.7913021 -0.4216594 0.4715468 -0.774498 -0.3902021 0.5882757 -0.7082896 -0.3055812 0.5554888 -0.7733384 -0.345134 0.4920791 -0.7992125 -0.2701263 0.5673457 -0.7779143 -0.3058418 0.4405397 -0.8440294 -0.3447442 0.3792393 -0.8586786 -0.3088064 0.3239284 -0.8942645 -0.2602952 0.3116973 -0.9138333 -0.2222504 0.4991519 -0.8375275 -0.2605037 0.4517072 -0.8532869 -0.1948533 0.3884482 -0.9006332 -0.2272105 0.6134823 -0.7563166 -0.1884896 0.6146334 -0.7659619 -0.1015371 0.6914832 -0.7152211 -0.02649235 0.6813001 -0.7315247 -0.01915782 0.6228429 -0.7821124 -0.06412738 0.5721039 -0.8176704 -0.1642202 0.502736 -0.848698 -0.1379555 0.4735692 -0.8698855 -0.1417538 0.4282366 -0.8924794 -0.03664511 0.5071488 -0.8610791 -0.1283895 0.5656952 -0.8145583 -0.1838585 0.2073662 -0.9608306 -0.2042168 0.3564379 -0.9117279 -0.1495452 0.2145609 -0.9651942 -0.09579706 0.1560248 -0.9830967 -0.1040274 0.2898104 -0.9514139 -0.03977447 0.3553698 -0.9338793 -0.0476728 0.3861876 -0.9211876 -0.02652758 0.265984 -0.9636124 -0.06255513 0.3032317 -0.9508615 -0.03801459 0.1646168 -0.9856248 -0.03434592 0.1677001 -0.9852396 -0.01008415 0.0702548 -0.9974781 0.01638573 0.9955315 -0.09299808 0.06326156 0.9948632 -0.07902657 0.1394221 0.9832022 -0.1177916 0.2316516 0.970524 -0.06648886 0.188046 0.9760768 -0.1091457 0.3330556 0.9294346 -0.1588248 0.325488 0.9384578 -0.1155617 0.2320749 0.9707819 -0.06102317 0.0289613 0.9640305 -0.2642092 0.1077982 0.956797 -0.2700355 0.1282656 0.958236 -0.2556009 0.06252139 0.8984549 -0.4345918 0.3062819 0.9281124 -0.2116577 0.2108319 0.9431061 -0.2571011 0.2522854 0.8960173 -0.3653837 0.239919 0.9443343 -0.2251035 0.4583013 0.8877834 -0.04243505 0.4925752 0.8623342 -0.1172584 0.6050496 0.7931668 -0.06929248 0.6960517 0.7179605 -0.006693005 0.6971561 0.7168903 0.006468057 0.6465716 0.7445937 -0.1659082 0.6295601 0.7725505 -0.08258289 0.4768901 0.8614802 -0.1744357 0.4773942 0.8605922 -0.1774145 0.3382532 0.8754901 -0.3451115 0.5212312 0.7841765 -0.3367273 0.4244861 0.8664476 -0.2628309 0.5204395 0.8248395 -0.2208675 0.3599766 0.8862057 -0.2916442 0.6364405 0.7478833 -0.1887167 0.5106665 0.8036668 -0.3055151 0.6309377 0.7226954 -0.2821863 0.4038088 0.9146575 -0.0184431 0.3871028 0.9218781 0.01710051 0.07341128 0.9052227 -0.4185483 0.1361529 0.9083429 -0.3954434 0.05598145 0.8217472 -0.5670958 0.08995538 0.8488392 -0.5209414 0.05489748 0.8356162 -0.5465637 0.2043474 0.8919628 -0.4032921 0.3097134 0.8782817 -0.3642788 0.306802 0.825572 -0.4736071 0.2315663 0.8312731 -0.5053336 0.1070154 0.7334752 -0.6712391 0.09369558 0.6866408 -0.7209338 0.2272644 0.8285451 -0.5117266 0.1944198 0.7598156 -0.620388 0.2280981 0.7847282 -0.5763445 0.165754 0.7620793 -0.6259081 0.2347823 0.7154679 -0.6580145 0.4350595 0.8016678 -0.4099419 0.4893898 0.7817195 -0.3865391 0.377237 0.7843934 -0.4923609 0.3878831 0.7524574 -0.5323104 0.5167913 0.7259715 -0.4537535 0.5166115 0.7479688 -0.4167197 0.6126298 0.6924051 -0.3811299 0.6053783 0.6314989 -0.4844858 0.4676456 0.7146235 -0.5202123 0.3619127 0.7344802 -0.5740715 0.3619831 0.7005602 -0.6149663 0.3291957 0.6775842 -0.6576549 0.4992587 0.6403114 -0.5837312 0.4630653 0.581927 -0.6685295 0.4774644 0.5885463 -0.6524116 0.4793116 0.6261632 -0.6149636 0.7954481 0.6007384 -0.07984906 0.7252603 0.6721078 -0.1492266 0.7487925 0.6553627 -0.0990439 0.8139476 0.5790275 -0.04707896 0.8922817 0.4512513 -0.01434022 0.8689237 0.4660388 -0.1666727 0.8709385 0.4880144 -0.05751723 0.7470212 0.6134489 -0.2562028 0.6865652 0.6550236 -0.3155509 0.7742719 0.577822 -0.2581179 0.6489058 0.6924996 -0.3152232 0.8493711 0.4845023 -0.2093478 0.8133393 0.5404639 -0.2153559 0.8521484 0.4500379 -0.2670375 0.7747286 0.5231754 -0.3550821 0.8180089 0.451543 -0.356329 0.9343497 0.354871 -0.03251749 0.9472991 0.3099882 -0.08081966 0.9365588 0.3136627 -0.1564395 0.9742528 0.2220442 -0.03908872 0.9968085 0.0766099 0.02244377 0.9925477 0.06616955 -0.1023261 0.9831366 0.124191 -0.1342351 0.9337731 0.3189128 -0.162366 0.9228146 0.2310963 -0.3082332 0.8995777 0.2916499 -0.3251158 0.905784 0.3289082 -0.2671605 0.9732722 0.1436998 -0.1791413 0.9629628 0.0894494 -0.2543653 0.922146 0.1289441 -0.3647194 0.9670231 0.03058242 -0.2528459 0.9564994 0.210963 -0.2015033 0.7009596 0.5881082 -0.4034656 0.7048721 0.4953283 -0.5077453 0.6748266 0.5851061 -0.4497331 0.6188652 0.6282081 -0.4715511 0.8013916 0.4673668 -0.3732827 0.7942076 0.351481 -0.4956768 0.7779381 0.4464606 -0.4421372 0.6872416 0.473489 -0.550915 0.6049438 0.5060338 -0.614795 0.581159 0.506595 -0.6368797 0.6474282 0.4753539 -0.5957143 0.7584511 0.3411554 -0.5553063 0.6904608 0.3226993 -0.6474019 0.6572501 0.3587521 -0.6628116 0.5786129 0.6163418 -0.5341628 0.8670457 0.2987687 -0.3987092 0.8740883 0.3068995 -0.37654 0.9214566 0.07570672 -0.3810333 0.9264762 0.1094788 -0.3600784 0.8664382 0.1950512 -0.4596084 0.8256601 0.1738874 -0.5367015 0.7358118 0.1736867 -0.6545334 0.7646389 0.1934405 -0.6147425 0.7244028 0.3161583 -0.6126047 0.8332527 0.09570258 -0.5445467 0.8274403 0.1716346 -0.5346813 0.8509994 0.04115384 -0.5235518 0.777728 0.3351575 -0.5317975 0.08493971 0.5975533 -0.7973176 0.1863842 0.637555 -0.747519 0.1248171 0.6476739 -0.7516244 0.1020298 0.5544013 -0.8259717 0.203741 0.6224715 -0.7556579 0.2041769 0.5521425 -0.8083629 0.01441121 0.4812242 -0.8764791 0.01448154 0.4768719 -0.8788536 0.08921319 0.5242369 -0.8468866 0.2382118 0.5207673 -0.8197906 0.321196 0.6023977 -0.730719 0.3391692 0.6239898 -0.7039894 0.2652979 0.5162637 -0.8143026 0.3268581 0.5557348 -0.7644099 0.3951382 0.5077894 -0.7655168 0.4448639 0.5007697 -0.7425132 0.1835413 0.4182644 -0.8895884 0.1812611 0.4496424 -0.8746234 0.3650979 0.4016281 -0.83988 0.3248021 0.4155174 -0.8496169 0.2445775 0.3775492 -0.8931061 0.06886655 0.3385381 -0.9384292 0.1045486 0.3517791 -0.9302265 0.1102145 0.3716465 -0.921809 0.05578398 0.2125183 -0.9755635 0.02459454 0.2579751 -0.9658385 0.01842504 0.1720866 -0.9849095 -0.0142247 0.06471973 -0.9978021 0.1408133 0.3122333 -0.9395115 0.2213807 0.3008424 -0.927623 0.2469315 0.3164017 -0.9159229 0.126726 0.2137719 -0.9686291 0.1089678 0.1178852 -0.9870305 0.07226389 0.1026971 -0.9920843 0.05859214 0.0819512 -0.9949126 0.1068581 0.2028439 -0.9733631 0.5485549 0.4341555 -0.7145605 0.3675946 0.4034097 -0.8379348 0.4743591 0.4107612 -0.778626 0.4876213 0.4418326 -0.7530004 0.5705908 0.3222793 -0.7553557 0.5962184 0.3679668 -0.7135294 0.5419985 0.3143606 -0.7793684 0.4920457 0.3451668 -0.7992191 0.4407857 0.3048468 -0.8442609 0.3867428 0.3390592 -0.8575949 0.3183529 0.2714793 -0.9082678 0.4548835 0.2466692 -0.8557076 0.4456229 0.2291905 -0.8653854 0.3499025 0.2094014 -0.9130824 0.6298846 0.1978248 -0.7510731 0.6821236 0.2273111 -0.6950088 0.6340958 0.195545 -0.7481208 0.5598046 0.190845 -0.806348 0.6562227 0.1042213 -0.7473351 0.7195544 0.09549629 -0.6878387 0.6227505 3.44202e-5 -0.7824206 0.6211423 0.05766439 -0.7815736 0.5732837 0.08534526 -0.8149 0.4752447 0.1332163 -0.8697104 0.3802746 0.1139712 -0.9178245 0.4588013 0.1427704 -0.8769937 0.5058371 0.04092764 -0.8616576 0.4974088 0.01522225 -0.8673827 0.5482173 0.1525461 -0.8223063 0.5328554 0.2321501 -0.8137392 0.2157589 0.1898303 -0.9578167 0.2116264 0.1846315 -0.9597529 0.2178984 0.1490857 -0.9645174 0.3288505 0.2296752 -0.9160277 0.1496306 0.100494 -0.9836218 0.3695179 0.1214767 -0.9212492 0.2709627 0.08974391 -0.9583972 0.3970957 0.04022228 -0.9168954 0.2538689 0.02594888 -0.9668906 0.1705788 0.0229249 -0.9850773 0.1522551 0.003102183 -0.9883364 -0.03405672 0.687582 -0.7253077 -0.9990242 -0.03423142 -0.02790999 0.1024908 -0.002060651 0.9947319 0.3382831 -0.05980253 0.9391423 0.3224619 -0.05037826 0.9452409 0.3955872 -0.04242271 0.9174481 0.2531185 -0.0665574 0.9651432 0.2193877 -0.03283816 0.975085 0.05016422 -0.03375697 0.9981704 0.1524761 -0.06226712 0.9863437 0.04221403 -0.05823141 0.9974102 0.1390087 -0.1284504 0.9819253 0.2273496 -0.1359272 0.9642801 0.342863 -0.1621947 0.9252772 0.2538198 -0.1806502 0.9502321 0.1389586 -0.1284101 0.9819376 0.4991608 -0.01724785 0.8663377 0.5410972 -0.0575698 0.8389873 0.4313313 -0.06122887 0.9001136 0.4457839 -0.1448217 0.8833479 0.4936034 -0.1656977 0.8537564 0.5193996 -0.1487348 0.841488 0.6213227 0.01239764 0.7834568 0.6001304 -0.03721642 0.7990359 0.7076906 -0.02146208 0.7061965 0.6197566 -0.1828661 0.7631918 0.6346973 -0.1672103 0.7544535 0.6041666 -0.2442916 0.7584884 0.6387372 -0.1176675 0.7603744 0.3688288 -0.1814821 0.9116082 0.4833918 -0.2867872 0.8270946 0.3603294 -0.2913011 0.8861752 0.3660557 -0.2989396 0.881271 0.4921144 -0.2962466 0.8185728 0.6315416 -0.3146163 0.7086409 0.4950524 -0.3589866 0.7912344 0.5570156 -0.3981484 0.7288426 0.5531615 -0.4453892 0.7040176 0.09694069 -0.1329892 0.9863653 0.2286198 -0.2434011 0.9425969 0.2522477 -0.284368 0.9249356 0.1626299 -0.247254 0.9552052 0.175181 -0.358065 0.9171157 0.04766851 -0.1735178 0.9836764 0.0575093 -0.2580154 0.9644277 0.09222733 -0.276028 0.9567146 0.128602 -0.2736696 0.9531877 0.07520627 -0.4047973 0.9113085 0.3433924 -0.3910911 0.8538908 0.3642324 -0.4226816 0.8298645 0.2097412 -0.3643726 0.9073265 0.2344831 -0.4075348 0.8825719 0.4293276 -0.4318854 0.7931916 0.4440781 -0.4806244 0.7561713 0.4840259 -0.4987917 0.7189755 0.314513 -0.5085177 0.8015556 0.3468798 -0.543267 0.7645491 0.342217 -0.5920107 0.7296649 0.3800149 -0.6066889 0.6982244 0.2162984 -0.4532981 0.8647173 0.2257694 -0.5125817 0.8284251 0.07141697 -0.4319992 0.8990419 0.07114917 -0.4093747 0.9095879 0.04293775 -0.4850921 0.8734084 0.07944864 -0.5364986 0.8401532 0.2100335 -0.5313606 0.8206959 0.1995543 -0.6220468 0.7571234 0.1518704 -0.6409955 0.7523699 0.06302112 -0.5942726 0.8017909 0.753125 -0.09156066 0.6514748 0.7356665 -0.03465849 0.6764567 0.8229376 0.003830134 0.5681189 0.813638 -0.0947448 0.5735996 0.7230303 -0.2203274 0.654739 0.7148072 -0.1848998 0.6744351 0.7740587 -0.2442548 0.5841 0.8253798 -0.1197384 0.5517345 0.8915448 -0.02576357 0.4521992 0.9018272 -0.1530944 0.4040667 0.9028216 -0.0744372 0.4235239 0.8943184 -0.05633735 0.4438701 0.8194796 -0.2120194 0.5324482 0.8378084 -0.2354622 0.4925796 0.8637509 -0.2335215 0.4465445 0.8727708 -0.2790974 0.4004694 0.8526057 0.01776731 0.5222529 0.6727442 -0.3166376 0.6686972 0.6927758 -0.3597421 0.625018 0.7324181 -0.3654188 0.574485 0.7466311 -0.3939373 0.5360555 0.611148 -0.468927 0.6376564 0.6187136 -0.5061838 0.6008092 0.7870337 -0.3704563 0.4932952 0.8257442 -0.4250529 0.3707785 0.8239085 -0.3876314 0.4134209 0.6913315 -0.5466908 0.4724299 0.7223841 -0.4567121 0.5192065 0.7838726 -0.489589 0.3818984 0.6408153 -0.5864166 0.4954507 0.7222492 -0.486455 0.491648 0.9508735 -0.04731273 0.305943 0.9479154 -0.05614036 0.313536 0.9848117 -0.05967992 0.163047 0.9343615 -0.1624791 0.3171266 0.9367414 -0.1887757 0.2947529 0.900989 -0.2919179 0.3209406 0.9628433 -0.1877254 0.1941441 0.9780349 -0.08186763 0.1916909 0.9808459 -0.1930826 0.02570337 0.9949952 -0.09766221 0.02113461 0.9960979 -0.07315725 0.04936879 0.9983085 0.030276 0.0496326 0.9574062 -0.2445638 0.153499 0.9599401 -0.2551965 0.1157143 0.9275943 -0.3699169 0.05225312 0.9120206 -0.3429496 0.2249539 0.9854133 0.02573865 0.1682209 0.849074 -0.4157922 0.3258686 0.9018755 -0.3919535 0.18164 0.8448988 -0.4713556 0.2529231 0.8629682 -0.4646793 0.1983914 0.7674539 -0.5313768 0.3586827 0.7886684 -0.5459173 0.2828012 0.7043833 -0.6138426 0.3564287 0.7143294 -0.6423436 0.27772 0.7663712 -0.5959669 0.2397888 0.929045 -0.3645123 0.06329667 0.931957 -0.3623191 0.01346361 0.8476897 -0.5255225 0.07244539 0.8432967 -0.5205556 0.1336889 0.7773312 -0.5970665 0.1981617 0.8424239 -0.5359669 0.0553317 0.844635 -0.5349788 -0.01973325 0.7659504 -0.6380119 0.07912588 0.8967913 -0.335749 0.288163 0.7286889 -0.5719782 0.3766346 0.5087135 -0.6008919 0.6165545 0.4732025 -0.5591034 0.6807957 0.5454953 -0.6025983 0.5825034 0.5148331 -0.6736544 0.5302233 0.5889691 -0.5744972 0.5683912 0.3869465 -0.6814216 0.6212383 0.3954182 -0.682951 0.6141844 0.3215582 -0.7071852 0.6296741 0.6255591 -0.6608693 0.4146417 0.5825992 -0.702923 0.4080165 0.5894476 -0.7002081 0.4028152 0.4594148 -0.7178996 0.5230281 0.3755694 -0.7706658 0.5148029 0.4895023 -0.7586534 0.4299216 0.458525 -0.7918032 0.403488 0.4163825 -0.8073832 0.4180407 0.4222745 -0.7258688 0.5429537 0.2705308 -0.6812469 0.6802322 0.2601222 -0.6380559 0.7247215 0.2859472 -0.7627293 0.5800676 0.1132086 -0.6868622 0.7179166 0.1214429 -0.7437071 0.6573823 0.1754227 -0.7621566 0.6231727 0.1715996 -0.7630882 0.6230973 0.04271346 -0.8178731 0.5738112 0.3055638 -0.7907809 0.530374 0.268988 -0.8271353 0.49345 0.3378469 -0.8674271 0.3652806 0.2741587 -0.86048 0.4294313 0.3350639 -0.8683469 0.3656582 0.1394024 -0.8354427 0.5316036 0.1393058 -0.8354871 0.5315595 0.1168782 -0.8800093 0.4603513 0.6891928 -0.6759486 0.2609731 0.5952488 -0.7426228 0.3069043 0.5878081 -0.7516604 0.2991462 0.5138726 -0.8066666 0.2919316 0.4817193 -0.8165408 0.3181316 0.4060656 -0.8614785 0.3049025 0.5049903 -0.8456734 0.1726886 0.6865092 -0.7135753 0.1396974 0.7513915 -0.6486549 0.1210696 0.6123103 -0.7752921 0.154914 0.6721678 -0.7294549 0.1268313 0.741368 -0.6709138 0.01575398 0.6774861 -0.7353796 0.01514923 0.6885058 -0.7244965 0.03262943 0.5408703 -0.8315231 0.1266047 0.5664309 -0.8240998 0.00393331 0.5328823 -0.8452658 0.0395264 0.4529958 -0.8914916 0.006132721 0.2756991 -0.9126631 0.3017221 0.396736 -0.899222 0.1843915 0.2861984 -0.9316615 0.2238244 0.1584544 -0.9043361 0.3963187 0.1684967 -0.928575 0.3306923 0.1531462 -0.9183933 0.3648289 0.2262867 -0.9556893 0.188288 0.1487436 -0.9688037 0.1982294 0.1315989 -0.9625832 0.2368869 0.3753227 -0.9113267 0.1691642 0.3630509 -0.9258611 0.1047636 0.281961 -0.9576529 0.05830228 0.1255124 -0.9809485 0.1482796 0.1667253 -0.9858053 0.0197668 0.2699462 -0.9620589 0.03964573 0.1928521 -0.9798619 0.05175834 -0.006893873 -0.6794341 0.7337042 -0.02459651 -0.09201186 0.9954541 -0.007308721 -0.1580374 0.9874061 -0.02862501 -0.1044934 0.9941136 -0.04893881 -0.2045041 0.9776417 -0.007088363 -0.2744616 0.9615719 -0.03720915 -0.3557907 0.9338246 -0.04023355 -0.3168019 0.9476382 -0.1048428 -0.1270489 0.9863401 -0.125953 -0.2811189 0.9513717 -0.1258776 -0.2212591 0.967057 -0.1025237 -0.202987 0.9737994 -0.1628565 -0.3141226 0.93531 -0.1930236 -0.1953706 0.9615468 -0.02153646 -0.49743 0.8672367 -0.06111329 -0.5663615 0.821888 -0.1065922 -0.4318041 0.8956469 -0.1007375 -0.4101532 0.9064361 -0.1386786 -0.4482371 0.8830922 -0.1454785 -0.5568501 0.8177738 0.003398239 -0.6178671 0.7862753 -0.02475112 -0.6936252 0.7199108 -0.125375 -0.6756579 0.7264761 -0.1383588 -0.5699402 0.8099539 -0.1639127 -0.6030621 0.7806721 -0.2289776 -0.6076783 0.760458 -0.207669 -0.4454092 0.8709101 -0.2372109 -0.4850973 0.841672 -0.2582061 -0.3552776 0.8983916 -0.2280207 -0.3129161 0.9220033 -0.2578424 -0.3635388 0.8951855 -0.2836536 -0.4967945 0.8202047 -0.2965811 -0.5591348 0.7742144 -0.2542751 -0.6848465 0.6828833 -0.3263434 -0.5639184 0.7586145 -0.3544161 -0.4415804 0.8242548 -0.4187677 -0.5057871 0.754197 -0.4450416 -0.5189408 0.7298209 -0.354191 -0.4254183 0.8328074 -0.2108005 -0.1372064 0.9678521 -0.2534939 -0.2499375 0.9344904 -0.1821585 -0.08921152 0.9792138 -0.2956511 -0.226652 0.9280191 -0.05879724 -0.01351839 0.9981784 -0.1656327 -0.08112114 0.9828456 -0.06716084 -0.008705377 0.9977043 -0.1465261 -0.02326011 0.9889334 -0.3185783 -0.130829 0.9388247 -0.3168159 -0.1296408 0.9395856 -0.3482452 -0.1277216 0.9286617 -0.2706901 -0.03298807 0.9621012 -0.3665665 -0.3231745 0.8724604 -0.388341 -0.3522449 0.8515368 -0.4138045 -0.2163361 0.8842875 -0.4853496 -0.2343154 0.8423373 -0.3716676 -0.2585269 0.8916429 -0.4076225 -0.4657348 0.7854521 -0.4808394 -0.3814641 0.7894799 -0.5415624 -0.4280052 0.7235479 -0.5591026 -0.3421365 0.7552132 -0.5279953 -0.3854895 0.7567158 -0.4515249 -0.3472617 0.8219091 -0.4469652 -0.2119457 0.8690807 -0.4270024 -0.04639863 0.9030593 -0.4798274 -0.06208914 0.8751633 -0.4930737 -0.0586366 0.8680093 -0.5603424 -0.2373355 0.793529 -0.5249187 -0.2235392 0.8212739 -0.6114576 -0.220814 0.7598426 -0.6460383 -0.2391775 0.7248646 -0.5457081 -0.08150297 0.8340024 -0.6096957 -0.06641137 0.7898485 -0.6208789 -0.05482101 0.7819873 -0.6782231 -0.06246167 0.7321968 0.03657144 -0.7728924 0.6334825 -0.09156811 -0.7713041 0.6298455 -0.01685547 -0.7476113 0.6639227 -0.1873809 -0.7169011 0.6715217 -0.1738179 -0.7449552 0.6440724 -0.09981268 -0.828776 0.5506069 -0.02815401 -0.8546851 0.518383 -0.02221924 -0.8839457 0.4670616 -0.005431771 -0.8924174 0.4511783 -0.0101456 -0.9306561 0.3657545 -0.1819522 -0.8300687 0.5271427 -0.1897905 -0.8554054 0.481935 -0.1288961 -0.8951045 0.4268184 -0.2139394 -0.8008373 0.5593653 -0.1324802 -0.9241021 0.358447 -0.3097746 -0.6844661 0.659959 -0.309943 -0.7753167 0.5502905 -0.3596223 -0.655242 0.6643266 -0.4391295 -0.6735629 0.5945404 -0.4529041 -0.5586 0.6948697 -0.5002812 -0.5803173 0.6426123 -0.4969978 -0.6176638 0.6094956 -0.3678945 -0.6323095 0.6817906 -0.3274878 -0.8219485 0.4659963 -0.3132747 -0.7759249 0.5475398 -0.4226325 -0.7340716 0.5315267 -0.4347317 -0.7211629 0.5393816 -0.4182629 -0.791711 0.4452527 -0.4446863 -0.7982276 0.4063088 -0.2866998 -0.8594128 0.4233354 -0.5578339 -0.703103 0.4409849 -0.5506243 -0.6949425 0.4624585 0.01596236 -0.9414303 0.3368295 0.02312493 -0.9613262 0.2744398 -0.2932263 -0.8789964 0.3760102 -0.2430048 -0.909672 0.3368169 -0.1455931 -0.9276783 0.3438252 -0.1247839 -0.9666527 0.2236325 -0.2784926 -0.9336404 0.2252942 -0.03870874 -0.9765764 0.2116608 -0.006150543 -0.9943439 0.1060301 0.06052565 -0.9981637 0.00243479 -0.0711705 -0.9953528 0.06486678 -0.1436282 -0.9847602 0.09807354 -0.005163609 -0.9940837 0.1084944 -0.1590801 -0.9684014 0.1920741 -0.2587349 -0.9455654 0.1973893 -0.3052135 -0.9476093 0.09424114 -0.2106648 -0.9765092 0.04528099 -0.3599173 -0.901602 0.2399448 -0.4459188 -0.8118867 0.3768243 -0.368586 -0.8922884 0.2607029 -0.5006424 -0.8114687 0.301456 -0.5896404 -0.7000277 0.4028468 -0.4923418 -0.8272926 0.2705301 -0.624131 -0.7460418 0.2321252 -0.5699456 -0.7615461 0.3085605 -0.4065904 -0.9030302 0.1386387 -0.4456929 -0.8933504 0.05729907 -0.4038802 -0.9061217 0.1257942 -0.3042285 -0.9481419 0.09204351 -0.5623396 -0.8121203 0.1556759 -0.5111793 -0.8361636 0.1988116 -0.535839 -0.8425143 0.05519306 -0.5715775 -0.8144509 0.09984523 -0.6283339 -0.7751227 0.06619274 -0.3506304 -0.8733953 0.3379927 -0.6547984 -0.6482523 0.3885977 -0.5748218 -0.5206366 0.6312825 -0.5770688 -0.618882 0.5328948 -0.6252542 -0.5368298 0.5664548 -0.5873349 -0.4470967 0.6746424 -0.6437381 -0.2945088 0.7063044 -0.6634995 -0.3306409 0.6711521 -0.6780307 -0.448025 0.5827075 -0.678339 -0.4673193 0.5669825 -0.7531877 -0.3216696 0.5737919 -0.63056 -0.4214617 0.6517393 -0.6198253 -0.5777172 0.5310927 -0.6571918 -0.5781564 0.4835641 -0.6753823 -0.6402962 0.3658956 -0.7314238 -0.5009832 0.4626394 -0.7283397 -0.4800332 0.4889677 -0.7540463 -0.503794 0.4214331 -0.7913342 -0.3523308 0.4996533 -0.7094237 -0.1722121 0.6834187 -0.7666277 -0.2431341 0.5942793 -0.7156326 -0.1722815 0.6768968 -0.767858 -0.02366632 0.6401829 -0.7862961 -0.09385573 0.6106797 -0.8741034 -0.2762664 0.3995252 -0.8442636 -0.2833207 0.4549158 -0.8331956 -0.204414 0.5138093 -0.7917063 -0.3521571 0.4991859 -0.8432439 -0.08038282 0.5314869 -0.803932 -0.1062677 0.5851503 -0.8946567 -0.1177486 0.430958 -0.8670453 -0.1243552 0.4824606 -0.8060574 -0.1977005 0.5578404 -0.7433875 -0.329466 0.5820887 -0.7192872 -0.6036283 0.3438878 -0.6810324 -0.7012059 0.2109626 -0.669901 -0.7087419 0.2211731 -0.7556465 -0.5935094 0.277029 -0.7923508 -0.557225 0.2483558 -0.814127 -0.4575917 0.357501 -0.8044276 -0.4606093 0.3751471 -0.793151 -0.5568809 0.2465667 -0.8560334 -0.4053732 0.3207482 -0.7124178 -0.6904715 0.1253396 -0.7904553 -0.5969109 0.1373966 -0.7175865 -0.6858573 0.1211177 -0.7424215 -0.6682198 0.04788309 -0.850501 -0.4882085 0.1957051 -0.8878486 -0.4553775 0.06600052 -0.855788 -0.505419 0.1103569 -0.8144249 -0.5718839 0.09828972 -0.801947 -0.5969672 0.02261328 -0.8860233 -0.404635 0.2263479 -0.8800278 -0.314468 0.3558945 -0.9241174 -0.2934661 0.2447136 -0.9111066 -0.06633216 0.4067985 -0.9485749 -0.06527239 0.3097501 -0.935492 -0.1777629 0.3053773 -0.9051328 -0.1977418 0.3763417 -0.9486499 -0.2097635 0.2367756 -0.9526363 -0.300666 0.0456531 -0.9486844 -0.3060678 0.07950162 -0.9597728 -0.2350052 0.1536518 -0.9163226 -0.3809157 0.1235161 -0.9769287 -0.05676996 0.2058827 -0.9756869 -0.1097375 0.1897179 -0.9892587 -0.1360479 0.05346405 -0.9814788 -0.1543104 0.1135251 -0.9467149 -0.232131 0.2232624 -0.8977367 -0.3863508 0.2116647 0.05122882 -0.9983543 -0.02577418 0.9922286 -0.08119046 -0.09428972 0.9908317 -0.06229567 -0.1198828 0.9745653 -0.1056916 -0.1976157 0.9917201 0.001268982 -0.1284128 0.9646559 -0.2567152 -0.05946761 0.960516 -0.2516375 -0.1186905 0.959735 -0.2572838 -0.1127557 0.9544584 -0.2287447 -0.1915335 0.925648 -0.3557373 -0.1289451 0.9521093 -0.02986919 -0.3042956 0.9478137 -0.06858932 -0.3113598 0.9485028 -0.07223123 -0.3084234 0.910005 -0.08653813 -0.4054655 0.9277414 -0.2556693 -0.2718995 0.9200914 -0.2450733 -0.3055669 0.8970217 -0.2598044 -0.3575665 0.9129211 -0.4029076 -0.06511831 0.8839792 -0.4614202 -0.07531446 0.8984198 -0.3820201 -0.2165701 0.8071475 -0.586258 -0.06938618 0.7766849 -0.6254 -0.07507055 0.7374379 -0.6522787 -0.1752651 0.7420036 -0.6564827 -0.1358722 0.8552179 -0.4804019 -0.1944648 0.8687933 -0.431349 -0.2431795 0.8516719 -0.4338272 -0.2940224 0.8640302 -0.3285809 -0.3814269 0.8203555 -0.4669743 -0.3300785 0.7637581 -0.5999656 -0.2381489 0.8170747 -0.5437954 -0.1915094 0.7550902 -0.5951488 -0.2750214 0.7683104 -0.5492555 -0.3286603 0.8945618 0.01919907 -0.4465318 0.8713416 -0.08387511 -0.4834553 0.896291 -0.06710159 -0.4383604 0.8341879 -0.03241902 -0.5505268 0.8886887 -0.2133771 -0.4058358 0.8334868 -0.1948939 -0.5170263 0.8313293 -0.1966181 -0.5198394 0.7526865 0.01297986 -0.6582513 0.8044998 -0.05352759 -0.5915362 0.6985157 -0.05652403 -0.7133589 0.7522875 0.0244404 -0.6583815 0.7318217 -0.2720482 -0.6248413 0.7891794 -0.130783 -0.6000764 0.7429054 -0.1632806 -0.6491771 0.695508 -0.13386 -0.7059392 0.787164 -0.2994603 -0.5391626 0.8250437 -0.355943 -0.4388707 0.793859 -0.4278707 -0.432105 0.7963887 -0.2937589 -0.5286501 0.71864 -0.5482373 -0.4277763 0.7138633 -0.4513815 -0.5354008 0.6698109 -0.593846 -0.4457582 0.7426567 -0.4710344 -0.4760123 0.6738732 -0.3182386 -0.6667976 0.688331 -0.4264801 -0.5867838 0.6309067 -0.5564628 -0.5406534 0.5960195 -0.4837015 -0.640932 0.5728307 -0.4655026 -0.6746646 0.5900878 -0.5405662 -0.5996538 0.7117971 -0.4362719 -0.5504652 0.6649786 -0.7433414 -0.07243674 0.6436509 -0.7600713 -0.08947193 0.5879536 -0.804559 -0.08363962 0.4199431 -0.9044118 -0.07541406 0.5360034 -0.8303452 -0.1524054 0.4457037 -0.8844302 -0.1383168 0.6586662 -0.7210862 -0.2149273 0.5533183 -0.7881319 -0.2696053 0.6378365 -0.7292019 -0.2478493 0.6390494 -0.6611294 -0.3930951 0.5395754 -0.7697547 -0.3410808 0.6701702 -0.6663047 -0.3269711 0.5483948 -0.7891013 -0.2767353 0.4169989 -0.8668536 -0.2732706 0.4093347 -0.8882681 -0.2083867 0.314709 -0.9463959 -0.07275366 0.2701224 -0.9540427 -0.1297553 0.2880573 -0.9331722 -0.2149717 0.1894431 -0.9746295 -0.1192008 0.07078534 -0.9944736 -0.07753509 0.1549716 -0.9636643 -0.217566 0.02660459 -0.9887191 -0.1474004 0.1618344 -0.9831894 -0.08454769 0.203544 -0.9457084 -0.253388 0.2872519 -0.9335477 -0.2144179 0.3189638 -0.8965632 -0.3073054 0.3819985 -0.8675581 -0.3184654 0.035878 -0.9769723 -0.2103282 0.06584197 -0.9691638 -0.2374582 0.06297302 -0.9479827 -0.3120308 0.1927144 -0.9137749 -0.3575983 0.1140397 -0.9264291 -0.3587815 0.3848568 -0.8299863 -0.4037424 0.5886906 -0.6972923 -0.4089337 0.5277315 -0.685569 -0.5014925 0.5281212 -0.6712189 -0.5201473 0.6321343 -0.580036 -0.5137748 0.428011 -0.7971115 -0.425934 0.4380179 -0.7646564 -0.4726955 0.4995781 -0.6513062 -0.5711586 0.5192803 -0.5970631 -0.6114439 0.4617266 -0.5445998 -0.7001568 0.4167227 -0.6866856 -0.5956553 0.3786087 -0.739278 -0.5568874 0.3063886 -0.7641155 -0.5676739 0.3672294 -0.6515097 -0.6638356 0.2762553 -0.6940311 -0.6648337 0.2745132 -0.8670619 -0.4157478 0.3422683 -0.8391007 -0.4228032 0.2438005 -0.8958519 -0.3714978 0.2260928 -0.8273959 -0.5140994 0.04957842 -0.8903303 -0.4526079 0.06504195 -0.8742329 -0.4811304 0.1243318 -0.8567814 -0.500467 -0.02686619 -0.9080838 -0.417926 0.1822323 -0.9143113 -0.3616991 0.2508335 -0.6812117 -0.6877742 0.1391031 -0.7784473 -0.6121031 0.2730566 -0.7368582 -0.6184498 0.1334775 -0.7894645 -0.5991073 0.1185576 -0.7262988 -0.6770777 -0.02162539 -0.8080088 -0.5887734 0.1550937 -0.8336322 -0.5300976 0.2896745 -0.7887589 -0.5421701 0.5439357 -0.0434224 -0.8380027 0.5865203 -0.04218626 -0.8088353 0.6446153 -0.1755613 -0.7440763 0.6096212 -0.1693576 -0.7743901 0.5639727 -0.1984862 -0.8015848 0.4658743 0.003157615 -0.8848454 0.4968108 -0.1205697 -0.8594428 0.5119357 -0.1799935 -0.8399549 0.4361516 -0.09290641 -0.8950644 0.3936238 -0.1093058 -0.91275 0.6434757 -0.2978574 -0.7051383 0.6585416 -0.3161368 -0.6829205 0.550728 -0.2979254 -0.7797045 0.5560808 -0.3084369 -0.7717778 0.5351953 -0.3850011 -0.751891 0.4590997 -0.416697 -0.7845963 0.5709156 -0.4179358 -0.7066719 0.4606509 -0.2794602 -0.8424386 0.4511392 -0.2432709 -0.8586575 0.39739 -0.2228465 -0.8901802 0.4127123 -0.3725798 -0.8311757 0.3409581 -0.02921575 -0.9396244 0.2878365 -0.0240634 -0.9573773 0.01951342 -0.01087009 -0.9997506 0.07637792 -0.002618968 -0.9970756 0.07043576 -0.007763445 -0.9974861 0.3225901 -0.1700186 -0.9311441 0.3679134 -0.1617823 -0.915678 0.2458198 -0.1077752 -0.9633054 0.2735758 -0.2330437 -0.9331919 0.1980856 -0.1257284 -0.9720877 0.1720038 -0.1092503 -0.9790195 0.4487567 -0.5444712 -0.7086385 0.427878 -0.4876939 -0.7609699 0.3907566 -0.5884887 -0.7078068 0.3055694 -0.5554986 -0.7733362 0.3448403 -0.4925829 -0.7990289 0.2575185 -0.5713362 -0.7792685 0.320874 -0.4416672 -0.8378365 0.3343133 -0.3883037 -0.858752 0.304103 -0.3532114 -0.884739 0.3135895 -0.2981598 -0.9015334 0.2081336 -0.505355 -0.8374347 0.2004767 -0.3638752 -0.9096176 0.2341547 -0.6080811 -0.7585573 0.1277522 -0.6390783 -0.7584578 0.006501376 -0.6311492 -0.7756342 0.06712841 -0.6053205 -0.7931462 0.07079792 -0.587432 -0.8061708 0.1371737 -0.7053306 -0.6954799 0.177972 -0.4954192 -0.850227 0.1504906 -0.4604455 -0.8748387 0.1502133 -0.4410379 -0.8848286 0.0366134 -0.5070909 -0.8611146 0.1942124 -0.2159832 -0.9568871 0.2050706 -0.2281525 -0.9517838 0.1767173 -0.3220452 -0.9300849 0.07339549 -0.1207072 -0.9899712 0.07379305 -0.1210585 -0.9898988 0.08396369 -0.2975992 -0.9509915 0.09025239 -0.2383772 -0.96697 0.03368747 -0.3739716 -0.9268282 0.04241806 -0.3320214 -0.9423177 0.01858615 -0.1125748 -0.9934694 0.06701332 -0.2122876 -0.9749068 3.16855e-4 -0.02504581 -0.9996863 -0.07642525 -0.9969191 -0.01765185 -0.09228849 -0.9950137 -0.03782469 -0.08411312 -0.9893604 -0.1187057 -0.2096967 -0.9776577 -0.0145843 -0.2567877 -0.964766 -0.05733072 -0.3215028 -0.9468328 -0.01198452 -0.2564159 -0.962241 -0.09134125 -0.3067558 -0.9355417 -0.1751079 -0.06942957 -0.9695799 -0.234722 -0.1233226 -0.9715891 -0.2020059 -0.1630361 -0.9582061 -0.2350752 -0.1231109 -0.9766005 -0.1763381 -0.058088 -0.9348208 -0.3503367 -0.03855264 -0.9306398 -0.3639004 -0.2954631 -0.9323939 -0.2081903 -0.4034268 -0.9040723 -0.1410681 -0.3035224 -0.9203329 -0.2467018 -0.1782629 -0.9208762 -0.3467124 -0.2626968 -0.9095799 -0.3219547 -0.1866868 -0.9226431 -0.3374579 -0.4184539 -0.9072739 -0.04183769 -0.5385482 -0.8414492 -0.0439229 -0.6431704 -0.7621914 -0.07345747 -0.5733164 -0.8143997 -0.08978712 -0.6505808 -0.7553989 -0.0782116 -0.7104305 -0.7001577 -0.07118934 -0.4414629 -0.8772542 -0.1885088 -0.4335096 -0.8614105 -0.2646535 -0.4204161 -0.8641389 -0.2766125 -0.5608336 -0.7914361 -0.2430938 -0.6424216 -0.7266082 -0.2435883 -0.5437825 -0.823866 -0.1598292 -0.5213842 -0.7741711 -0.3589119 -0.5239819 -0.8018776 -0.2871159 -0.4182159 -0.9073737 -0.04205274 -0.09431624 -0.8504535 -0.5175262 -0.09786963 -0.8718282 -0.4799345 -0.0282303 -0.8241617 -0.5656508 -0.1737083 -0.8828979 -0.4362533 -0.3285105 -0.8616943 -0.3867349 -0.3002184 -0.8330837 -0.4645864 -0.2481449 -0.8363309 -0.4888504 -0.0495277 -0.757572 -0.65087 0.01552098 -0.7224583 -0.6912404 -0.1282275 -0.7322921 -0.6688094 -0.1349969 -0.714519 -0.6864681 -0.213005 -0.8038175 -0.5554335 -0.2056253 -0.7685888 -0.6057968 -0.2176868 -0.787924 -0.5760108 -0.2096507 -0.6527572 -0.7279798 -0.4613514 -0.7876964 -0.4082759 -0.4582511 -0.7828683 -0.4208602 -0.3958355 -0.8451392 -0.3592413 -0.3852442 -0.7756095 -0.5000168 -0.3863887 -0.7514538 -0.5348094 -0.6101276 -0.6981517 -0.3746045 -0.5262312 -0.6783472 -0.512763 -0.361908 -0.7344862 -0.5740668 -0.361975 -0.7005581 -0.6149735 -0.3243433 -0.6740578 -0.6636622 -0.3241145 -0.6731252 -0.6647198 -0.5141333 -0.6505329 -0.5589938 -0.5143764 -0.670347 -0.5348381 -0.5232359 -0.5407454 -0.6586492 -0.4774847 -0.5885236 -0.6524174 -0.4793309 -0.6261301 -0.6149821 -0.7551689 -0.6362311 -0.1578924 -0.7541611 -0.6473453 -0.1103873 -0.8123205 -0.5821 -0.03598701 -0.8922557 -0.4513018 -0.01437664 -0.8621575 -0.4783914 -0.1668117 -0.8656575 -0.4960965 -0.06727206 -0.68606 -0.6773917 -0.2654475 -0.66579 -0.6956961 -0.2696864 -0.7458072 -0.5810971 -0.3257266 -0.7557276 -0.5704885 -0.3215878 -0.8485901 -0.4896432 -0.2003609 -0.8054335 -0.5495671 -0.2219305 -0.8521453 -0.4500049 -0.2671031 -0.8180451 -0.4514749 -0.3563323 -0.9345811 -0.3539491 -0.03575658 -0.9437025 -0.3116576 -0.1108838 -0.9365756 -0.3136461 -0.1563721 -0.97626 -0.2131984 -0.03824943 -0.9965263 -0.07654798 0.03280347 -0.9922112 -0.08150434 -0.09420263 -0.9843806 -0.1350789 -0.1129106 -0.9769428 -0.2131382 -0.01244753 -0.9337455 -0.3189805 -0.1623916 -0.9228059 -0.231171 -0.3082033 -0.8995993 -0.2916439 -0.3250619 -0.9057887 -0.3289002 -0.2671544 -0.9693551 -0.1615048 -0.1851132 -0.9638715 -0.08834135 -0.2512919 -0.9221503 -0.1289054 -0.3647222 -0.9713623 -0.01053327 -0.23737 -0.9565063 -0.2109632 -0.2014703 -0.7151711 -0.4972551 -0.4911901 -0.6699163 -0.5561511 -0.4918417 -0.6645795 -0.5938036 -0.4535763 -0.6164889 -0.6554636 -0.436244 -0.8037807 -0.4651228 -0.3709414 -0.7941952 -0.3514904 -0.49569 -0.7764858 -0.4528399 -0.4381846 -0.6216002 -0.5486697 -0.5590839 -0.6113341 -0.523352 -0.5936104 -0.7427132 -0.3456981 -0.5734718 -0.7057418 -0.4126579 -0.5758837 -0.614127 -0.4242684 -0.6654655 -0.6984263 -0.3073266 -0.6463367 -0.6348555 -0.448742 -0.628959 -0.8670299 -0.2987823 -0.3987334 -0.874076 -0.3069266 -0.3765467 -0.9214593 -0.07568514 -0.3810312 -0.9264744 -0.1094649 -0.360087 -0.8664271 -0.1950632 -0.4596242 -0.8398732 -0.1810522 -0.5116964 -0.726094 -0.1772731 -0.6643508 -0.7662701 -0.1874669 -0.6145619 -0.7254796 -0.3133609 -0.6127678 -0.8365868 -0.09246647 -0.5399746 -0.7826229 -0.08838737 -0.6161892 -0.7751639 -0.06551873 -0.6283537 -0.7589966 -0.1721927 -0.6279123 -0.8201697 -0.2017759 -0.535358 -0.8587617 -0.02774202 -0.5116237 -0.7777024 -0.3351826 -0.5318193 -0.07333958 -0.6159801 -0.7843405 -0.2826645 -0.6464322 -0.7086793 -0.1814235 -0.5982394 -0.7805097 -0.1077094 -0.5840599 -0.8045328 -3.78849e-4 -0.4892614 -0.8721371 -0.09971958 -0.5288075 -0.8428635 -0.01587945 -0.4136478 -0.9102985 -0.1147358 -0.5094601 -0.8528108 -0.1230971 -0.4323787 -0.8932501 -0.2778968 -0.5417937 -0.7932422 -0.3114147 -0.5586228 -0.7687402 -0.329377 -0.5554018 -0.7635703 -0.4021881 -0.565358 -0.7201494 -0.4502669 -0.4638364 -0.7629651 -0.4064603 -0.4358327 -0.8030194 -0.4097776 -0.576942 -0.7065553 -0.2640253 -0.4800533 -0.8365642 -0.2332162 -0.4673358 -0.8527646 -0.2042616 -0.415507 -0.8863584 -0.3699742 -0.4002323 -0.8384112 -0.3304845 -0.4139302 -0.8481992 -0.2363887 -0.3588107 -0.9029814 -0.07852756 -0.3999655 -0.91316 -0.07409089 -0.2710516 -0.9597091 -0.04727208 -0.2636494 -0.9634596 -0.03691935 -0.1706953 -0.984632 -0.009931802 -0.06980925 -0.9975109 -0.01945888 -0.2158411 -0.9762347 -0.1046825 -0.3195787 -0.9417596 -0.2130091 -0.304162 -0.9285002 -0.2341313 -0.321228 -0.9176029 -0.1981829 -0.2350797 -0.9515573 -0.146972 -0.2059951 -0.967453 -0.1376417 -0.1749808 -0.9749034 -0.08055669 -0.1505923 -0.9853085 -0.532429 -0.4667633 -0.7061526 -0.5268206 -0.3688185 -0.7657892 -0.504284 -0.4453193 -0.739857 -0.3904907 -0.4070234 -0.8257415 -0.612482 -0.3574233 -0.7050634 -0.6204041 -0.366406 -0.6934303 -0.5141701 -0.3462099 -0.7847089 -0.5593798 -0.2428347 -0.7925438 -0.368427 -0.2945887 -0.8817477 -0.3249 -0.2692337 -0.9066163 -0.4383094 -0.2346473 -0.8676553 -0.4722444 -0.2503168 -0.8451786 -0.4762042 -0.3412665 -0.8104115 -0.6235029 -0.2411563 -0.7436988 -0.6200438 -0.2372261 -0.7478433 -0.6785752 -0.2443794 -0.6926864 -0.6516304 -0.1015158 -0.751713 -0.6700823 -0.09681034 -0.7359467 -0.7027051 -0.0558055 -0.7092894 -0.6045535 -0.06965094 -0.7935136 -0.4072753 -0.137475 -0.9028995 -0.4263197 -0.1436237 -0.8930979 -0.5581843 -0.0830968 -0.8255454 -0.5199822 -0.06506115 -0.8516958 -0.4988085 -0.01576346 -0.866569 -0.5370584 -0.2216439 -0.8139057 -0.278615 -0.1831219 -0.9427832 -0.3203231 -0.2110744 -0.9234938 -0.07863169 -0.08631122 -0.9931604 -0.1696641 -0.1212549 -0.978014 -0.2738511 -0.1017755 -0.956372 -0.2672388 -0.09926307 -0.9585043 -0.3181513 -0.06733405 -0.9456458 -0.372603 -0.07742631 -0.9247552 -0.212046 -0.03758919 -0.9765365 -0.1545513 -0.06049823 -0.9861308 -0.1206093 -0.04388183 -0.9917297 From 65b6932c9749ff302a1ac17179af34e6449bcc96 Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sat, 6 May 2017 23:37:40 +0200 Subject: [PATCH 65/74] Nothing important --- config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config.js b/config.js index 6e68133..3189424 100644 --- a/config.js +++ b/config.js @@ -7,5 +7,6 @@ module.exports = { "server": "127.0.0.1:3128" - //"server": "192.168.0.100:3128" + // "server": "192.168.1.131:3128", + "hokuyo_command": "$UTCOUPE_WORKSPACE/bin/hokuyo" } From 9f7fee056a1b1e4e62aa4720dc8a35606b5cad0c Mon Sep 17 00:00:00 2001 From: mmxm Date: Sun, 7 May 2017 01:01:31 +0200 Subject: [PATCH 66/74] =?UTF-8?q?Am=C3=A9lioration=20recalage=20+=20bouton?= =?UTF-8?q?=20recalage=20=20+=20Gestion=20des=20couleurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changer les positions des hokuyos en fonction de la couleur --- lidar/lidar.class.js | 151 ++++++++++++++++++++++++++------------- lidar/main.js | 4 ++ webclient/index.js | 3 + webclient/index.tpl.html | 27 +++---- 4 files changed, 124 insertions(+), 61 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 2e2d815..072499a 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -12,13 +12,13 @@ module.exports = (function () { var logger = log4js.getLogger('lidar.lidar'); var DELTA_T = 100; // ms between two data shipping - var DELTA_T_CHECK = 200; // ms between two data shipping - var X_MAX_ZONE = 295; + var DELTA_T_CHECK = 500; // ms between two data shipping + var X_MAX_ZONE = 300; var X_MIN_ZONE = 0; - var Y_MAX_ZONE = 195; + var Y_MAX_ZONE = 200; var Y_MIN_ZONE = 0; - var CLUSTER_DISTANCE = 5; - var CLUSTER_K = 6; + var CLUSTER_DISTANCE = 3; + var CLUSTER_K = 10; // var SILENCE_TIMEOUT = 300; /** @@ -42,31 +42,24 @@ module.exports = (function () { this.lastSignOfLife = {}; // of each hokuyo this.hokuyoPositions = { - one: { - "x": -2, //-6.2 - "y": -2, //-6.2 - "w": 0 , //0 - "decalage" : [], - "init" : 2, //Nb de boucles de recalage - "rockets" : ["two"] - }, - two: { - "x": 304, //306.2 - "y": 100, //100 - "w": 180 , //180 - "decalage" : [], - "init" : 2, - "rockets" : ["one"] - } } + this.rocketPositions = { one : { - "x" : 185, - "y" : 4 + "x" : 2, + "y" : 137 }, two : { "x" : 115, - "y" : 4 + "y" : 2 + }, + three : { + "x" : 185, + "y" : 2 + }, + four : { + "x" : 298, + "y" : 137 } } @@ -79,6 +72,50 @@ module.exports = (function () { // Status loop this.updateStatus(); } + Lidar.prototype.setColor = function(){ + if (this.color == "blue"){ + this.hokuyoPositions = { + one: { + "x": -2, //-6.2 + "y": -2, //-6.2 + "w": 0 , //0 + "decalage" : [], + "init" : 0, //Nb de boucles de recalage + "rockets" : ["one", "two"] + }, + two: { + "x": 306, //306.2 + "y": 100, //100 + "w": 180 , //180 + "decalage" : [], + "init" : 0, + "rockets" : ["three", "four"] + } + } + } + if (this.color == "yellow"){ + this.hokuyoPositions = { + one: { + "x": -6.2, //-6.2 + "y": -6.2, //-6.2 + "w": 0 , //0 + "decalage" : [], + "init" : 0, //Nb de boucles de recalage + "rockets" : ["one", "two"] + }, + two: { + "x": 306.2, //306.2 + "y": 100, //100 + "w": 180, //180 + "decalage" : [], + "init" : 0, + "rockets" : ["three", "four"] + } + } + } + + + } Lidar.prototype.updateStatus = function() { clearTimeout(this.statusTimer); @@ -132,8 +169,16 @@ module.exports = (function () { this.started = true; this.changeStatus("error"); // as far as we do not receive hokuyo data logger.info("Started as " + this.color); + this.setColor() //assigne une position à chaque hokuyo en fonction de la couleur du robot + }; + Lidar.prototype.recalage = function(nb){ + this.setColor(); + this.hokuyoPositions["one"].init = nb; + this.hokuyoPositions["two"].init = nb; + } + Lidar.prototype.stop = function() { this.color = undefined; this.started = false; @@ -160,8 +205,11 @@ module.exports = (function () { this.distance * Math.sin(lidar.toRadian(-this.angle)) ] // Change to table frame + //this.x = hokPos.x + cartPt[0] * Math.cos(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.sin(lidar.toRadian(hokPos.w)), + //this.y = hokPos.y + cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) + this.x = hokPos.x + cartPt[0] * Math.cos(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.sin(lidar.toRadian(hokPos.w)), - this.y = hokPos.y + cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) + this.y = hokPos.y - cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) } @@ -180,14 +228,14 @@ module.exports = (function () { } Cluster.prototype.diagBox = function() { - let Xmax = 0, Ymax = 0, Xmin = 10000, Ymin = 10000, x, y; + var Xmax = 0, Ymax = 0, Xmin = 10000, Ymin = 10000, x, y; for(let i = 0 ; i < this.spots.length; i++){ x = this.spots[i].x; y = this.spots[i].y; - if (Xmax < x ) Xmax = x; - if (Xmin > x) Xmin = x; - if (Ymax < x ) Ymax = y; - if (Ymin > x) Ymin = y; + if (Xmax < x ) {Xmax = x;} + if (Xmin > x) {Xmin = x;} + if (Ymax < y ){ Ymax = y;} + if (Ymin > y) {Ymin = y;} } x = Xmax - Xmin; y = Ymax - Ymin; @@ -202,8 +250,10 @@ module.exports = (function () { this.distance * Math.sin(lidar.toRadian(-this.angle)) ] // Change to table frame + //this.x = hokPos.x + cartPt[0] * Math.cos(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.sin(lidar.toRadian(hokPos.w)), + //this.y = hokPos.y + cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) this.x = hokPos.x + cartPt[0] * Math.cos(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.sin(lidar.toRadian(hokPos.w)), - this.y = hokPos.y + cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) + this.y = hokPos.y - cartPt[0] * Math.sin(lidar.toRadian(hokPos.w)) + cartPt[1] * Math.cos(lidar.toRadian(hokPos.w)) } /** @@ -231,15 +281,17 @@ module.exports = (function () { // Merge spots //logger.warn(this.lastCartSpots) + // Retourne un tableau de points provenant des deux hokuyos this.mergedSpots = this.mergeSpots(this.lastCartSpots); - //logger.warn(this.mergedSpots); - /* Merge very close clusters provided by two different hokuyo */ + //this.toCartesian(hokuyoName, this.mergedSpots); // Filter (bis) + //Ne fait rien this.mergedFilterSpots = this.filterCart(this.mergedSpots); + // Find enemy robots - this.robotsSpots = this.findRobots(this.mergedFilterSpots); + this.robotsSpots = this.findRobots(this.mergedSpots); this.displaySpots = this.prepareData(this.mergedSpots); //renvoie un tableau de coordonnées prêt à être affiché // Prepare data @@ -306,7 +358,7 @@ module.exports = (function () { var jmin, dmin, x, y clusters[0] = new Cluster; - clusters[0].spots = new Array; + //clusters[0].spots = new Array; /* A modifier !! On met les k premiers points dans un même cluster */ @@ -314,17 +366,17 @@ module.exports = (function () { let nulSpot = new Spot; nulSpot.angle = 0; nulSpot.distance = 0;nulSpot.x = 0; nulSpot.y = 0; - for (i = 0; i < k; i++){ + for (let i = 0; i < k; i++){ spotsIn.unshift(nulSpot); G.push(0); clusters[0].spots.push(spotsIn[i]); } - for (var i = k; i < spotsIn.length; i++){ + for (let i = k; i < spotsIn.length; i++){ G.push(0); if (spotsIn[i].distance > 1){ jmin = 1; dmin = 0; - for (var j = 1; j <= k; j++){ + for (let j = 1; j <= k; j++){ x = spotsIn[i].x - spotsIn[i - j].x; y = spotsIn[i].y - spotsIn[i - j].y ; d[j] =Math.sqrt(x*x + y*y); @@ -340,7 +392,7 @@ module.exports = (function () { G[i - jmin] = g; clusters[g] = new Cluster; - clusters[g].spots = new Array; + // clusters[g].spots = new Array; } g = G[i - jmin]; @@ -349,7 +401,7 @@ module.exports = (function () { } } } - for (i = 0; i < k; i++){ + for (let i = 0; i < k; i++){ spotsIn.shift(); } clusters.shift(); @@ -427,7 +479,8 @@ module.exports = (function () { x = Math.abs(clusters[i].x - clusters[j].x); y = Math.abs(clusters[i].y - clusters[j].y); d = Math.sqrt(x*x + y*y) - if(d < 20){ + + if(d < 30){ clusters[i].spots = clusters[i].spots.concat(clusters[j].spots); clusters.splice(j, 1); diff ++; @@ -438,14 +491,17 @@ module.exports = (function () { } for (let i = 0 ; i < clusters.length ; i++){ clusters[i].calculCenter(); - if (clusters[i].spots.length >3){ + //if (clusters[i].spots.length >3 && clusters[i].spots.length < 120){ if(clusters[i].x > X_MIN_ZONE && clusters[i].x < X_MAX_ZONE && clusters[i].y < Y_MAX_ZONE && clusters[i].y > Y_MIN_ZONE){ clusters[i].diagBox(); - if (clusters[i].diag < 30 && clusters[i].diag > 4 ) + + if (clusters[i].diag < 16 && clusters[i].diag > 3) ret.push([clusters[i].x, clusters[i].y]); } - } + //} } + //logger.info([clusters.length, ret.length]) + /*ret = [ [ 150, 100 ], [ 100, 135 ] @@ -457,6 +513,7 @@ module.exports = (function () { let ret = []; for(let i = 0; i < spots.length ; i++){ if (spots[i].inTheTable == true) + //if(spots[i].x > -20 && spots[i].x < 320 && spots[i].y>-20 && spots[i].y<220) ret.push([spots[i].x, spots[i].y]) } return ret; @@ -480,7 +537,6 @@ module.exports = (function () { && cluster.x < x + d && cluster.y > y - d && cluster.y < y + d){ - logger.warn("fusee detectee") return true; } else return false; @@ -505,11 +561,10 @@ module.exports = (function () { finish = true; }*/ for(let j=0; j < hokPos.rockets.length; j++){ - if (isNear(this, clusters[i], hokPos.rockets[j], 30) == true && finish == false){ - angle = angleGap(this, clusters[i], hokPos.rockets[j], hokName) + if (isNear(this, clusters[i], hokPos.rockets[j], 25) == true && finish == false){ + angle = -angleGap(this, clusters[i], hokPos.rockets[j], hokName) hokPos.decalage.push(angle) finish = true; - logger.warn("fusee detectee"); } } } diff --git a/lidar/main.js b/lidar/main.js index f1898c1..2fd0cfd 100644 --- a/lidar/main.js +++ b/lidar/main.js @@ -66,6 +66,10 @@ spawn('sudo', ['halt']); break; case "calibration": + hokMng.recalage(10); //Recalage des hokuyos + break; + case "color": + hokMng.changeColor() break; case "stop": hokMng.stop(); diff --git a/webclient/index.js b/webclient/index.js index 4e3d687..19ffabe 100644 --- a/webclient/index.js +++ b/webclient/index.js @@ -48,6 +48,9 @@ angular.module('app').controller('IndexCtrl', ['$rootScope', '$scope', 'UTCoupe' $scope.pauseLidar = function() { Client.send("lidar", "stop", {}); } + $scope.calibLidar = function() { + Client.send("lidar", "calibration", {}); + } }]); angular.module('app').service('UTCoupe', ['$rootScope', 'Client', function($rootScope, Client) { diff --git a/webclient/index.tpl.html b/webclient/index.tpl.html index 065b312..e178d31 100644 --- a/webclient/index.tpl.html +++ b/webclient/index.tpl.html @@ -2,12 +2,12 @@ @@ -17,7 +17,7 @@
  • IA - +
    Color: {{ our_color }} @@ -41,28 +41,29 @@
  • GR - - + +

  • PR - - + +

  • Lidar - - - - + + + + +

  • Hokuyo - + From 6e814b20df14f84211aa7686e9c16bd9c6209b58 Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 01:17:13 +0200 Subject: [PATCH 67/74] Added robot position in webclient view --- webclient/pages/hokuyo/hokuyoDisplay.class.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/webclient/pages/hokuyo/hokuyoDisplay.class.js b/webclient/pages/hokuyo/hokuyoDisplay.class.js index 2c43099..d0de6e0 100644 --- a/webclient/pages/hokuyo/hokuyoDisplay.class.js +++ b/webclient/pages/hokuyo/hokuyoDisplay.class.js @@ -244,6 +244,11 @@ class HokuyoDisplay { fill: this.dotColor, transform: "t," + this.center.str + "s" + this.viewportScale + "," + this.viewportScale + ",0,0", "fill-opacity": .4}) ); + this.objects.push( this.r.text(robot[0], robot[1], "["+ robot[0] + "; " + robot[1] +"]").attr({ + fill: this.dotColor, + "font-size": "6px", + transform: "t,50,25" + "t," + this.center.str + "s" + this.viewportScale + "," + this.viewportScale + ",0,0"}) ); + } // console.log(cartesianSpots); From 4e7299882e356de6eb7a2916d55870b7ce57b87a Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 01:25:18 +0200 Subject: [PATCH 68/74] Int caption instead of float --- webclient/pages/hokuyo/hokuyoDisplay.class.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webclient/pages/hokuyo/hokuyoDisplay.class.js b/webclient/pages/hokuyo/hokuyoDisplay.class.js index 56c0b31..93c4451 100644 --- a/webclient/pages/hokuyo/hokuyoDisplay.class.js +++ b/webclient/pages/hokuyo/hokuyoDisplay.class.js @@ -244,7 +244,7 @@ class HokuyoDisplay { fill: this.dotColor, transform: "t," + this.center.str + "s" + this.viewportScale + "," + this.viewportScale + ",0,0", "fill-opacity": .4}) ); - this.objects.push( this.r.text(robot[0], robot[1], "["+ robot[0] + "; " + robot[1] +"]").attr({ + this.objects.push( this.r.text(robot[0], robot[1], "["+ parseInt(robot[0]) + "; " + parseInt(robot[1]) +"]").attr({ fill: this.dotColor, "font-size": "6px", transform: "t,50,25" + "t," + this.center.str + "s" + this.viewportScale + "," + this.viewportScale + ",0,0"}) ); From ad85a6037d833caf9129b9be6963d354733ac124 Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 11:19:45 +0200 Subject: [PATCH 69/74] Add some orders to server spamlist (verbose mode) --- lidar/lidar.class.js | 6 +++--- server/server.class.js | 3 ++- webclient/pages/orders/orders.js | 28 ++++++++++++---------------- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 072499a..89c13fd 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -305,9 +305,9 @@ module.exports = (function () { if(this.status == "error"){ logger.warn("Fell in an error while computing !"); } else { - this.send("lidar.all", toBeSent); - this.lastDataSent = Date.now(); - } + this.send("lidar.all", toBeSent); + this.lastDataSent = Date.now(); + } } this.updateStatus(); diff --git a/server/server.class.js b/server/server.class.js index c244118..38b9d67 100644 --- a/server/server.class.js +++ b/server/server.class.js @@ -88,7 +88,8 @@ module.exports = (function () { 'hokuyo': false } - this.spamList = ["hokuyo.polar_raw_data"]; + this.spamList = ["hokuyo.polar_raw_data", "lidar.all", 'logger', 'utcoupe', 'simulateur', 'gr.pos', 'pr.pos']; + // When the client is connected this.server.on('connection', function (client) { diff --git a/webclient/pages/orders/orders.js b/webclient/pages/orders/orders.js index aeda2a7..77c8ff2 100644 --- a/webclient/pages/orders/orders.js +++ b/webclient/pages/orders/orders.js @@ -8,22 +8,18 @@ angular.module('app').service('Orders', ['$rootScope', 'Client', function($rootS this.orders = []; this.init = function () { Client.order(function (from, name, data, to) { - if( name != 'logger' - && name != 'utcoupe' - && name != 'simulateur' - && name != 'gr.pos' - && name != 'pr.pos') { - this.orders.unshift({ - from: from, - name: name, - data: JSON.stringify(data), - to: to, - }); - if(this.orders.length > 500) - this.orders.pop(); - if($rootScope.act_page == 'orders') { - $rootScope.$apply(); - } + // Be careful, some orders are filtered by the server, set verbose mode to see them or go to server.server.class.js:175 + + this.orders.unshift({ + from: from, + name: name, + data: JSON.stringify(data), + to: to, + }); + if(this.orders.length > 500) + this.orders.pop(); + if($rootScope.act_page == 'orders') { + $rootScope.$apply(); } }.bind(this)); }; From e04b786aeb4c5e7829da6e47b799ad9523dd5b6d Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 14:06:11 +0200 Subject: [PATCH 70/74] Hokuyos position in Lidar node, change pos with color, send light messages --- lidar/lidar.class.js | 96 +++++++++++++++++++++++--------------------- lidar/main.js | 2 +- 2 files changed, 52 insertions(+), 46 deletions(-) diff --git a/lidar/lidar.class.js b/lidar/lidar.class.js index 89c13fd..50cd28b 100644 --- a/lidar/lidar.class.js +++ b/lidar/lidar.class.js @@ -46,19 +46,19 @@ module.exports = (function () { this.rocketPositions = { one : { - "x" : 2, + "x" : 4, "y" : 137 }, two : { "x" : 115, - "y" : 2 + "y" : 4 }, three : { "x" : 185, - "y" : 2 + "y" : 4 }, four : { - "x" : 298, + "x" : 296, "y" : 137 } } @@ -72,46 +72,37 @@ module.exports = (function () { // Status loop this.updateStatus(); } + + Lidar.prototype.convertXA = function(obj) { + obj.x = 300 - obj.x; + obj.a = 180 - obj.a; + + return obj; + }; + Lidar.prototype.setColor = function(){ - if (this.color == "blue"){ - this.hokuyoPositions = { - one: { - "x": -2, //-6.2 - "y": -2, //-6.2 - "w": 0 , //0 - "decalage" : [], - "init" : 0, //Nb de boucles de recalage - "rockets" : ["one", "two"] - }, - two: { - "x": 306, //306.2 - "y": 100, //100 - "w": 180 , //180 - "decalage" : [], - "init" : 0, - "rockets" : ["three", "four"] - } - } + this.hokuyoPositions = { + one: { + "x": -6.2, //-6.2 + "y": 2062, //-6.2 + "w": 0 , //0 + "decalage" : [], + "init" : 0, //Nb de boucles de recalage + "rockets" : ["one", "two"] + }, + two: { + "x": 306.2, //306.2 + "y": 100, //100 + "w": 180 , //180 + "decalage" : [], + "init" : 0, + "rockets" : ["three", "four"] + } } + if (this.color == "yellow"){ - this.hokuyoPositions = { - one: { - "x": -6.2, //-6.2 - "y": -6.2, //-6.2 - "w": 0 , //0 - "decalage" : [], - "init" : 0, //Nb de boucles de recalage - "rockets" : ["one", "two"] - }, - two: { - "x": 306.2, //306.2 - "y": 100, //100 - "w": 180, //180 - "decalage" : [], - "init" : 0, - "rockets" : ["three", "four"] - } - } + this.hokuyoPositions.one = this.convertXA(this.hokuyoPositions.one); + this.hokuyoPositions.two = this.convertXA(this.hokuyoPositions.two); } @@ -167,9 +158,10 @@ module.exports = (function () { Lidar.prototype.start = function(color) { this.color = color; this.started = true; + this.lastCartSpots = {}; this.changeStatus("error"); // as far as we do not receive hokuyo data logger.info("Started as " + this.color); - this.setColor() //assigne une position à chaque hokuyo en fonction de la couleur du robot + this.setColor(); //assigne une position à chaque hokuyo en fonction de la couleur du robot }; @@ -267,8 +259,13 @@ module.exports = (function () { if (this.hokuyoPositions[hokuyoName].init != 0){ this.calibration(spots, hokuyoName) } - // Save + if (!!this.lastCartSpots[hokuyoName] + && !this.lastCartSpots[hokuyoName].isWorking()) { + logger.warn("Hearing from " + hokuyoName + " for the first time since " + (Date.now() - this.lastCartSpots[hokuyoName].time) + " ms"); + } + + // Save this.lastCartSpots[hokuyoName] = {}; this.lastCartSpots[hokuyoName].isWorking = function() { return Date.now() - this.time < 2 * DELTA_T; }; // we had some data no long ago this.lastCartSpots[hokuyoName].time = Date.now(); @@ -294,18 +291,27 @@ module.exports = (function () { this.robotsSpots = this.findRobots(this.mergedSpots); this.displaySpots = this.prepareData(this.mergedSpots); //renvoie un tableau de coordonnées prêt à être affiché + let hokuyos = this.hokuyosWorking(); + // Prepare data let toBeSent = { - hokuyos: this.hokuyosWorking(), + hokuyos: hokuyos, cartesianSpots: this.displaySpots, robotsSpots: this.robotsSpots }; + // Prepare data + let toBeSentLight = { + hokuyos: hokuyos, + robotsSpots: this.robotsSpots + }; + // Send it to AI if(this.status == "error"){ logger.warn("Fell in an error while computing !"); } else { this.send("lidar.all", toBeSent); + this.send("lidar.light", toBeSentLight); this.lastDataSent = Date.now(); } } @@ -327,7 +333,7 @@ module.exports = (function () { "position": this.hokuyoPositions[hokName] }); } else { - logger.warn("Haven't heard from " + hokName + " since " + (Date.now() - lastData[hokName].time)); + logger.warn(hokName + " not working since " + (Date.now() - lastData[hokName].time)); } } diff --git a/lidar/main.js b/lidar/main.js index 2fd0cfd..679bb6b 100644 --- a/lidar/main.js +++ b/lidar/main.js @@ -58,7 +58,7 @@ if (hokMng.started) { hokMng.onHokuyoPolar(params.hokuyo, params.polarSpots); } else { - logger.warn("Start the Lidar before sending data !"); + // logger.warn("Start the Lidar before sending data !"); } break; case "shutdown": From ee10358caf260cfa3e4a070ee91c9aa59cb93f04 Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 14:07:36 +0200 Subject: [PATCH 71/74] Two level spam list --- server/server.class.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/server.class.js b/server/server.class.js index 38b9d67..4146831 100644 --- a/server/server.class.js +++ b/server/server.class.js @@ -88,7 +88,8 @@ module.exports = (function () { 'hokuyo': false } - this.spamList = ["hokuyo.polar_raw_data", "lidar.all", 'logger', 'utcoupe', 'simulateur', 'gr.pos', 'pr.pos']; + this.spamListLevel1 = ["lidar.all", 'utcoupe', 'simulateur', 'gr.pos', 'pr.pos']; + this.spamListLevel2 = ["hokuyo.polar_raw_data"]; // When the client is connected @@ -172,9 +173,14 @@ module.exports = (function () { // The order is valid // logger.info("Data " +data.name+ " from " +data.from+ " to " +data.to); if (!this.verbose && - this.spamList.indexOf(data.name) != -1) { + this.spamListLevel1.concat(this.spamListLevel2).indexOf(data.name) != -1) { + // Verbose mode level 1 : send most of spam messages + this.server.to(data.to).emit('order', data); + } else if (this.spamListLevel2.indexOf(data.name) != -1) { + // Not verbose, don't copy level 2 spam message to webclients this.server.to(data.to).emit('order', data); } else { + // Not verbose, copy to all regular messages this.server.to('webclient').to(data.to).emit('order', data); } } From 8773518eb33c69d0b20125bc26e452b01903dc0d Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 14:08:49 +0200 Subject: [PATCH 72/74] Lights lidar messages --- webclient/pages/hokuyo/hokuyo.js | 13 +++++++++++ webclient/pages/hokuyo/hokuyoDisplay.class.js | 14 +++++++----- webclient/pages/orders/orders.js | 22 ++++++++++--------- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/webclient/pages/hokuyo/hokuyo.js b/webclient/pages/hokuyo/hokuyo.js index b1a4946..75bee5a 100644 --- a/webclient/pages/hokuyo/hokuyo.js +++ b/webclient/pages/hokuyo/hokuyo.js @@ -146,6 +146,19 @@ angular.module('app').service('Hokuyo', ['$rootScope', '$sce', 'Client', if (!this.displays.main.isBusy) { this.displays.main.updateAll(data.hokuyos, data.robotsSpots, data.cartesianSpots); } + } else if (name == 'lidar.light' + && !!this.displays.main) { + // Save for later + this.lastData.main = {}; + this.lastData.main.hokuyos = data.hokuyos; + this.lastData.main.robotsSpots = data.robotsSpots; + + // console.log("Received all"); + + // Show + if (!this.displays.main.isBusy) { + this.displays.main.updateAll(data.hokuyos, data.robotsSpots, null); + } } else if (name == 'lidar.robots' && !!this.displays.main) { // this.displays.main.updateRobots(data.robots); diff --git a/webclient/pages/hokuyo/hokuyoDisplay.class.js b/webclient/pages/hokuyo/hokuyoDisplay.class.js index 93c4451..2927dca 100644 --- a/webclient/pages/hokuyo/hokuyoDisplay.class.js +++ b/webclient/pages/hokuyo/hokuyoDisplay.class.js @@ -252,12 +252,14 @@ class HokuyoDisplay { } // console.log(cartesianSpots); - for(let spot of cartesianSpots) { - this.objects.push( this.r.circle(spot[0], spot[1], this.dotRadius).attr({ - stroke: this.dotColor, - fill: this.dotColor, - transform: "t," + this.center.str + "s" + this.viewportScale + "," + this.viewportScale + ",0,0", - "fill-opacity": .4}) ); + if (!!cartesianSpots) { + for(let spot of cartesianSpots) { + this.objects.push( this.r.circle(spot[0], spot[1], this.dotRadius).attr({ + stroke: this.dotColor, + fill: this.dotColor, + transform: "t," + this.center.str + "s" + this.viewportScale + "," + this.viewportScale + ",0,0", + "fill-opacity": .4}) ); + } } this.isBusy = false; diff --git a/webclient/pages/orders/orders.js b/webclient/pages/orders/orders.js index 77c8ff2..6e109ca 100644 --- a/webclient/pages/orders/orders.js +++ b/webclient/pages/orders/orders.js @@ -10,16 +10,18 @@ angular.module('app').service('Orders', ['$rootScope', 'Client', function($rootS Client.order(function (from, name, data, to) { // Be careful, some orders are filtered by the server, set verbose mode to see them or go to server.server.class.js:175 - this.orders.unshift({ - from: from, - name: name, - data: JSON.stringify(data), - to: to, - }); - if(this.orders.length > 500) - this.orders.pop(); - if($rootScope.act_page == 'orders') { - $rootScope.$apply(); + if (name != "logger") { + this.orders.unshift({ + from: from, + name: name, + data: JSON.stringify(data), + to: to, + }); + if(this.orders.length > 500) + this.orders.pop(); + if($rootScope.act_page == 'orders') { + $rootScope.$apply(); + } } }.bind(this)); }; From 9b2db5b19fbf5b8ce1a778f9099ab23d1e745a4a Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 14:13:14 +0200 Subject: [PATCH 73/74] Bug on socketio-client path fixed --- webclient/webclient.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webclient/webclient.html b/webclient/webclient.html index c9bcdd2..4a57bf8 100644 --- a/webclient/webclient.html +++ b/webclient/webclient.html @@ -13,7 +13,7 @@ - + From d4a6cce27cbbfe996bf9cb416eaa35f36dfcbeca Mon Sep 17 00:00:00 2001 From: Mewen MICHEL Date: Sun, 7 May 2017 14:22:55 +0200 Subject: [PATCH 74/74] Added tmp.bmp and config.js in gitignore --- .gitignore | 4 ++++ config.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 602acf0..70e8b82 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,10 @@ cmake-build-debug/ bin/ doc/ +# UTCoupe files +tmp.bmp +config.js + # Some other files *get_distance *get_distance_intensity diff --git a/config.js b/config.js index 3189424..2eb81a7 100644 --- a/config.js +++ b/config.js @@ -6,7 +6,7 @@ */ module.exports = { - "server": "127.0.0.1:3128" + "server": "127.0.0.1:3128", // "server": "192.168.1.131:3128", "hokuyo_command": "$UTCOUPE_WORKSPACE/bin/hokuyo" }