Easy Training / Mbed 2 deprecated Teach_demo

Dependencies:   mbed Teach memory

Committer:
MarcelPortmann
Date:
Tue Apr 21 15:49:22 2020 +0000
Revision:
1:33fdaabcdeda
Parent:
0:ad924d8a2f98
Child:
3:b22580585b9c
processes all data no implementation of memory

Who changed what in which revision?

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