Easy Training / Teach

Dependents:   Teach_demo Easyfit

Committer:
MarcelPortmann
Date:
Wed May 06 11:40:39 2020 +0000
Revision:
2:a6d12e229ad3
Parent:
0:c203f964c949
Child:
3:b896dc38386f
aufzeichnung leuft zum teil

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MarcelPortmann 0:c203f964c949 1 /*
MarcelPortmann 0:c203f964c949 2 Hear cold stand a discription
MarcelPortmann 0:c203f964c949 3
MarcelPortmann 0:c203f964c949 4 */
MarcelPortmann 0:c203f964c949 5
MarcelPortmann 0:c203f964c949 6
MarcelPortmann 0:c203f964c949 7 #include "teach.h"
MarcelPortmann 0:c203f964c949 8
MarcelPortmann 0:c203f964c949 9
MarcelPortmann 0:c203f964c949 10 teach::teach(void) // constructor
MarcelPortmann 0:c203f964c949 11 {
MarcelPortmann 0:c203f964c949 12
MarcelPortmann 0:c203f964c949 13 lowcount = 0, highcount = 0; //sets startvalue
MarcelPortmann 0:c203f964c949 14 data_vec.clear();
MarcelPortmann 0:c203f964c949 15 }
MarcelPortmann 0:c203f964c949 16
MarcelPortmann 0:c203f964c949 17 void teach::setstart(float posx,float posy,float posz, int time)
MarcelPortmann 0:c203f964c949 18 {
MarcelPortmann 0:c203f964c949 19 lowcount = 0;
MarcelPortmann 0:c203f964c949 20
MarcelPortmann 0:c203f964c949 21 temp.start = true;
MarcelPortmann 0:c203f964c949 22 temp.end = false;
MarcelPortmann 0:c203f964c949 23 temp.hi = highcount;
MarcelPortmann 0:c203f964c949 24 temp.low = lowcount;
MarcelPortmann 0:c203f964c949 25 temp.time = time;
MarcelPortmann 0:c203f964c949 26 temp.pos[0] = posx;
MarcelPortmann 0:c203f964c949 27 temp.pos[1] = posy;
MarcelPortmann 0:c203f964c949 28 temp.pos[2] = posz;
MarcelPortmann 0:c203f964c949 29 data_vec.push_back(temp);
MarcelPortmann 0:c203f964c949 30
MarcelPortmann 0:c203f964c949 31 lowcount++;
MarcelPortmann 0:c203f964c949 32 highcount++;
MarcelPortmann 0:c203f964c949 33
MarcelPortmann 0:c203f964c949 34 contr_sice();
MarcelPortmann 0:c203f964c949 35 }
MarcelPortmann 0:c203f964c949 36
MarcelPortmann 0:c203f964c949 37 void teach::setpoint(float posx,float posy,float posz, int time)
MarcelPortmann 0:c203f964c949 38 {
MarcelPortmann 0:c203f964c949 39 lowcount++;
MarcelPortmann 0:c203f964c949 40
MarcelPortmann 0:c203f964c949 41 temp.start = false;
MarcelPortmann 0:c203f964c949 42 temp.end = false;
MarcelPortmann 0:c203f964c949 43 temp.hi = highcount;
MarcelPortmann 0:c203f964c949 44 temp.low = lowcount;
MarcelPortmann 0:c203f964c949 45 temp.time = time;
MarcelPortmann 0:c203f964c949 46 temp.pos[0] = posx;
MarcelPortmann 0:c203f964c949 47 temp.pos[1] = posy;
MarcelPortmann 0:c203f964c949 48 temp.pos[2] = posz;
MarcelPortmann 0:c203f964c949 49 data_vec.push_back(temp);
MarcelPortmann 0:c203f964c949 50
MarcelPortmann 0:c203f964c949 51 contr_sice();
MarcelPortmann 0:c203f964c949 52 }
MarcelPortmann 0:c203f964c949 53
MarcelPortmann 0:c203f964c949 54 void teach::setend(float posx,float posy,float posz, int time)
MarcelPortmann 0:c203f964c949 55 {
MarcelPortmann 0:c203f964c949 56 temp.start = false;
MarcelPortmann 0:c203f964c949 57 temp.end = true;
MarcelPortmann 0:c203f964c949 58 temp.hi = highcount;
MarcelPortmann 0:c203f964c949 59 temp.low = lowcount;
MarcelPortmann 0:c203f964c949 60 temp.time = time;
MarcelPortmann 0:c203f964c949 61 temp.pos[0] = posx;
MarcelPortmann 0:c203f964c949 62 temp.pos[1] = posy;
MarcelPortmann 0:c203f964c949 63 temp.pos[2] = posz;
MarcelPortmann 0:c203f964c949 64 data_vec.push_back(temp);
MarcelPortmann 0:c203f964c949 65
MarcelPortmann 0:c203f964c949 66 lowcount = 0;
MarcelPortmann 0:c203f964c949 67 highcount++;
MarcelPortmann 0:c203f964c949 68
MarcelPortmann 0:c203f964c949 69 contr_sice();
MarcelPortmann 0:c203f964c949 70 }
MarcelPortmann 0:c203f964c949 71
MarcelPortmann 0:c203f964c949 72 void teach::save(string name)
MarcelPortmann 0:c203f964c949 73 {
MarcelPortmann 0:c203f964c949 74 tr_name = name;
MarcelPortmann 0:c203f964c949 75 store.ErstellenDatenblock(tr_name);
MarcelPortmann 2:a6d12e229ad3 76
MarcelPortmann 0:c203f964c949 77 process();
MarcelPortmann 0:c203f964c949 78
MarcelPortmann 0:c203f964c949 79 }
MarcelPortmann 0:c203f964c949 80
MarcelPortmann 0:c203f964c949 81 void teach::stop(void)
MarcelPortmann 0:c203f964c949 82 {
MarcelPortmann 0:c203f964c949 83 data_vec.clear();
MarcelPortmann 0:c203f964c949 84 highcount = 0; lowcount = 0;
MarcelPortmann 0:c203f964c949 85 // memory lösch funktion;
MarcelPortmann 0:c203f964c949 86 temp.start = false;
MarcelPortmann 0:c203f964c949 87 temp.end = false;
MarcelPortmann 0:c203f964c949 88 temp.hi = 0;
MarcelPortmann 0:c203f964c949 89 temp.low = 0;
MarcelPortmann 0:c203f964c949 90 temp.time = 0;
MarcelPortmann 0:c203f964c949 91 temp.pos[0] = 0;
MarcelPortmann 0:c203f964c949 92 temp.pos[1] = 0;
MarcelPortmann 0:c203f964c949 93 temp.pos[2] = 0;
MarcelPortmann 0:c203f964c949 94
MarcelPortmann 0:c203f964c949 95 }
MarcelPortmann 0:c203f964c949 96
MarcelPortmann 0:c203f964c949 97 void teach::process(void)
MarcelPortmann 0:c203f964c949 98 {
MarcelPortmann 0:c203f964c949 99 int i=0, k=0, p=0, count=0,forward = 100000, backward = 100000;
MarcelPortmann 0:c203f964c949 100 float tempsum[3] = {};
MarcelPortmann 0:c203f964c949 101 float empty[3] = {};
MarcelPortmann 0:c203f964c949 102 int max = data_vec.size();
MarcelPortmann 0:c203f964c949 103
MarcelPortmann 0:c203f964c949 104 for(i=0; i<=max; i++) { // avrage starting Point
MarcelPortmann 0:c203f964c949 105 if(data_vec[i].start) {
MarcelPortmann 0:c203f964c949 106 tempsum[0] += data_vec[i].pos[0];
MarcelPortmann 0:c203f964c949 107 tempsum[1] += data_vec[i].pos[1];
MarcelPortmann 0:c203f964c949 108 tempsum[2] += data_vec[i].pos[2];
MarcelPortmann 0:c203f964c949 109 k++;
MarcelPortmann 0:c203f964c949 110 }
MarcelPortmann 0:c203f964c949 111 }
MarcelPortmann 0:c203f964c949 112 tempsum[0] = tempsum[0]/k;
MarcelPortmann 0:c203f964c949 113 tempsum[1] = tempsum[1]/k;
MarcelPortmann 0:c203f964c949 114 tempsum[2] = tempsum[2]/k;
MarcelPortmann 0:c203f964c949 115
MarcelPortmann 0:c203f964c949 116 empty[0] = 1; // status: 000 standart point
MarcelPortmann 0:c203f964c949 117 empty[1] = 0; // 001 start point
MarcelPortmann 0:c203f964c949 118 empty[2] = 0; // 010 end point
MarcelPortmann 0:c203f964c949 119 store.SpeichernPosition(tr_name,0,tempsum,empty,empty); // save startpoint to memory
MarcelPortmann 0:c203f964c949 120
MarcelPortmann 0:c203f964c949 121
MarcelPortmann 0:c203f964c949 122 i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters
MarcelPortmann 0:c203f964c949 123
MarcelPortmann 0:c203f964c949 124
MarcelPortmann 0:c203f964c949 125
MarcelPortmann 0:c203f964c949 126 for(i=0; i<=max; i++) { // forward point number
MarcelPortmann 0:c203f964c949 127
MarcelPortmann 0:c203f964c949 128 while(!data_vec[k].end) {
MarcelPortmann 0:c203f964c949 129 count++;
MarcelPortmann 0:c203f964c949 130 k++;
MarcelPortmann 0:c203f964c949 131 }
MarcelPortmann 0:c203f964c949 132
MarcelPortmann 0:c203f964c949 133 if(count<forward) {
MarcelPortmann 0:c203f964c949 134 forward = count;
MarcelPortmann 0:c203f964c949 135 }
MarcelPortmann 0:c203f964c949 136 while(!data_vec[k].start) {
MarcelPortmann 0:c203f964c949 137 k++;
MarcelPortmann 0:c203f964c949 138 }
MarcelPortmann 0:c203f964c949 139 i = k;
MarcelPortmann 0:c203f964c949 140 count = 0;
MarcelPortmann 0:c203f964c949 141
MarcelPortmann 0:c203f964c949 142 }
MarcelPortmann 0:c203f964c949 143
MarcelPortmann 0:c203f964c949 144 k = 0;
MarcelPortmann 0:c203f964c949 145 for(i=0; i<=max; i++) { // backward point number
MarcelPortmann 0:c203f964c949 146
MarcelPortmann 0:c203f964c949 147 while(!data_vec[k].end) {
MarcelPortmann 0:c203f964c949 148 k++;
MarcelPortmann 0:c203f964c949 149 }
MarcelPortmann 0:c203f964c949 150
MarcelPortmann 0:c203f964c949 151 while(!data_vec[k].start) {
MarcelPortmann 0:c203f964c949 152 count++;
MarcelPortmann 0:c203f964c949 153 k++;
MarcelPortmann 0:c203f964c949 154 }
MarcelPortmann 0:c203f964c949 155 if(count<backward) {
MarcelPortmann 0:c203f964c949 156 backward = count;
MarcelPortmann 0:c203f964c949 157 }
MarcelPortmann 0:c203f964c949 158 i = k;
MarcelPortmann 0:c203f964c949 159 count = 0;
MarcelPortmann 0:c203f964c949 160
MarcelPortmann 0:c203f964c949 161 }
MarcelPortmann 0:c203f964c949 162
MarcelPortmann 0:c203f964c949 163 k = 0;
MarcelPortmann 0:c203f964c949 164 struct temp_arry forw[forward]; // temp array initialise and zerowing
MarcelPortmann 0:c203f964c949 165 for(i=0; i<forward; i++) {
MarcelPortmann 0:c203f964c949 166 forw[i].time=0;
MarcelPortmann 0:c203f964c949 167 forw[i].pos[0]=0;
MarcelPortmann 0:c203f964c949 168 forw[i].pos[1]=0;
MarcelPortmann 0:c203f964c949 169 forw[i].pos[2]=0;
MarcelPortmann 0:c203f964c949 170 }
MarcelPortmann 0:c203f964c949 171
MarcelPortmann 0:c203f964c949 172 for(i=0; i<=max; i++) { // avrage forward points
MarcelPortmann 0:c203f964c949 173 for(p=0; p<=forward; p++) {
MarcelPortmann 0:c203f964c949 174 forw[p].time += data_vec[k].time;
MarcelPortmann 0:c203f964c949 175 forw[p].pos[0] += data_vec[k].pos[0];
MarcelPortmann 0:c203f964c949 176 forw[p].pos[1] += data_vec[k].pos[1];
MarcelPortmann 0:c203f964c949 177 forw[p].pos[2] += data_vec[k].pos[2];
MarcelPortmann 0:c203f964c949 178 k++;
MarcelPortmann 0:c203f964c949 179 }
MarcelPortmann 0:c203f964c949 180
MarcelPortmann 0:c203f964c949 181 while(!data_vec[k].start) {
MarcelPortmann 0:c203f964c949 182 k++;
MarcelPortmann 0:c203f964c949 183 }
MarcelPortmann 0:c203f964c949 184 i = k;
MarcelPortmann 0:c203f964c949 185 count++;
MarcelPortmann 0:c203f964c949 186
MarcelPortmann 0:c203f964c949 187 }
MarcelPortmann 0:c203f964c949 188 for(i=0; i<=forward; i++) {
MarcelPortmann 0:c203f964c949 189 forw[i].time = (forw[i].time)/count;
MarcelPortmann 0:c203f964c949 190 forw[i].pos[0] = (forw[i].pos[0])/count;
MarcelPortmann 0:c203f964c949 191 forw[i].pos[1] = (forw[i].pos[1])/count;
MarcelPortmann 0:c203f964c949 192 forw[i].pos[2] = (forw[i].pos[2])/count;
MarcelPortmann 0:c203f964c949 193 }
MarcelPortmann 0:c203f964c949 194 count = 0;
MarcelPortmann 0:c203f964c949 195 k = 0, i = 0, p = 0; // reset counters
MarcelPortmann 0:c203f964c949 196
MarcelPortmann 0:c203f964c949 197 // Save forward way to memory
MarcelPortmann 0:c203f964c949 198 empty[0] = 0; // status: 000 standart point
MarcelPortmann 0:c203f964c949 199 empty[1] = 0; // 001 start point
MarcelPortmann 0:c203f964c949 200 empty[2] = 0; // 010 end point
MarcelPortmann 0:c203f964c949 201 for(i=0; i<=forward; i++) {
MarcelPortmann 0:c203f964c949 202 store.SpeichernPosition(tr_name,forw[i].time,forw[i].pos,empty,empty);
MarcelPortmann 0:c203f964c949 203 }
MarcelPortmann 0:c203f964c949 204
MarcelPortmann 0:c203f964c949 205 for(i=0; i<=max; i++) { // avrage end Point
MarcelPortmann 0:c203f964c949 206 if(data_vec[i].end) {
MarcelPortmann 0:c203f964c949 207 tempsum[0] += data_vec[i].pos[0];
MarcelPortmann 0:c203f964c949 208 tempsum[1] += data_vec[i].pos[1];
MarcelPortmann 0:c203f964c949 209 tempsum[2] += data_vec[i].pos[2];
MarcelPortmann 0:c203f964c949 210 k++;
MarcelPortmann 0:c203f964c949 211 }
MarcelPortmann 0:c203f964c949 212 }
MarcelPortmann 0:c203f964c949 213 tempsum[0] = tempsum[0]/k;
MarcelPortmann 0:c203f964c949 214 tempsum[1] = tempsum[1]/k;
MarcelPortmann 0:c203f964c949 215 tempsum[2] = tempsum[2]/k;
MarcelPortmann 0:c203f964c949 216
MarcelPortmann 0:c203f964c949 217 // save endpoint to memory
MarcelPortmann 0:c203f964c949 218 empty[0] = 0; // status: 000 standart point
MarcelPortmann 0:c203f964c949 219 empty[1] = 1; // 001 start point
MarcelPortmann 0:c203f964c949 220 empty[2] = 0; // 010 end point
MarcelPortmann 0:c203f964c949 221 store.SpeichernPosition(tr_name,0,tempsum,empty,empty); // save endpoint to memory
MarcelPortmann 0:c203f964c949 222
MarcelPortmann 0:c203f964c949 223 i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters
MarcelPortmann 0:c203f964c949 224
MarcelPortmann 0:c203f964c949 225 struct temp_arry backw[backward]; // temp array initialise and zerowing
MarcelPortmann 0:c203f964c949 226 for(i=0; i<backward; i++) {
MarcelPortmann 0:c203f964c949 227 backw[i].time=0;
MarcelPortmann 0:c203f964c949 228 backw[i].pos[0]=0;
MarcelPortmann 0:c203f964c949 229 backw[i].pos[1]=0;
MarcelPortmann 0:c203f964c949 230 backw[i].pos[2]=0;
MarcelPortmann 0:c203f964c949 231 }
MarcelPortmann 0:c203f964c949 232
MarcelPortmann 0:c203f964c949 233 for(i=0; i<=max; i++) { // avrage backward points
MarcelPortmann 0:c203f964c949 234
MarcelPortmann 0:c203f964c949 235 while(!data_vec[k].end) {
MarcelPortmann 0:c203f964c949 236 k++;
MarcelPortmann 0:c203f964c949 237 }
MarcelPortmann 0:c203f964c949 238
MarcelPortmann 0:c203f964c949 239 for(p=0; p<=backward; p++) {
MarcelPortmann 0:c203f964c949 240 backw[p].time += data_vec[k].time;
MarcelPortmann 0:c203f964c949 241 backw[p].pos[0] += data_vec[k].pos[0];
MarcelPortmann 0:c203f964c949 242 backw[p].pos[1] += data_vec[k].pos[1];
MarcelPortmann 0:c203f964c949 243 backw[p].pos[2] += data_vec[k].pos[2];
MarcelPortmann 0:c203f964c949 244 k++;
MarcelPortmann 0:c203f964c949 245 }
MarcelPortmann 0:c203f964c949 246 i = k;
MarcelPortmann 0:c203f964c949 247 count++;
MarcelPortmann 0:c203f964c949 248 }
MarcelPortmann 0:c203f964c949 249
MarcelPortmann 0:c203f964c949 250 for(i=0; i<=backward; i++) {
MarcelPortmann 0:c203f964c949 251 backw[i].time = (backw[i].time)/count;
MarcelPortmann 0:c203f964c949 252 backw[i].pos[0] = (backw[i].pos[0])/count;
MarcelPortmann 0:c203f964c949 253 backw[i].pos[1] = (backw[i].pos[1])/count;
MarcelPortmann 0:c203f964c949 254 backw[i].pos[2] = (backw[i].pos[2])/count;
MarcelPortmann 0:c203f964c949 255 }
MarcelPortmann 0:c203f964c949 256 count = 0;
MarcelPortmann 0:c203f964c949 257 k = 0, i = 0, p = 0; // reset counters
MarcelPortmann 0:c203f964c949 258
MarcelPortmann 0:c203f964c949 259 // save backward way to memory
MarcelPortmann 0:c203f964c949 260 empty[0] = 0; // status: 000 standart point
MarcelPortmann 0:c203f964c949 261 empty[1] = 0; // 001 start point
MarcelPortmann 0:c203f964c949 262 empty[2] = 0; // 010 end point
MarcelPortmann 0:c203f964c949 263 for(i=0; i<=backward; i++) {
MarcelPortmann 0:c203f964c949 264 store.SpeichernPosition(tr_name,backw[i].time,backw[i].pos,empty,empty);
MarcelPortmann 0:c203f964c949 265 }
MarcelPortmann 0:c203f964c949 266
MarcelPortmann 0:c203f964c949 267 }
MarcelPortmann 0:c203f964c949 268
MarcelPortmann 0:c203f964c949 269 void teach::temp_store()
MarcelPortmann 0:c203f964c949 270 {
MarcelPortmann 0:c203f964c949 271
MarcelPortmann 0:c203f964c949 272
MarcelPortmann 0:c203f964c949 273 }
MarcelPortmann 0:c203f964c949 274
MarcelPortmann 0:c203f964c949 275 void teach::contr_sice()
MarcelPortmann 0:c203f964c949 276 {
MarcelPortmann 0:c203f964c949 277 if((data_vec.size()*sizeof(posdata)) >= MAX_SIZE) {
MarcelPortmann 0:c203f964c949 278 // fehlermeldung oder speichern bei zu grossem temp speicher
MarcelPortmann 0:c203f964c949 279 }
MarcelPortmann 0:c203f964c949 280 }