Easy Training / Mbed 2 deprecated Teach_demo

Dependencies:   mbed Teach memory

Committer:
MarcelPortmann
Date:
Mon Apr 27 05:07:00 2020 +0000
Revision:
3:b22580585b9c
Parent:
1:33fdaabcdeda
memory incl.;

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 3:b22580585b9c 72 void teach::save(string name)
MarcelPortmann 3:b22580585b9c 73 { tr_name = name;
MarcelPortmann 3:b22580585b9c 74 store.ErstellenDatenblock(tr_name);
MarcelPortmann 3:b22580585b9c 75 process();
MarcelPortmann 3:b22580585b9c 76
MarcelPortmann 1:33fdaabcdeda 77 }
MarcelPortmann 1:33fdaabcdeda 78
MarcelPortmann 1:33fdaabcdeda 79 void teach::stop(void)
MarcelPortmann 1:33fdaabcdeda 80 {
MarcelPortmann 1:33fdaabcdeda 81
MarcelPortmann 0:ad924d8a2f98 82 }
MarcelPortmann 0:ad924d8a2f98 83
MarcelPortmann 1:33fdaabcdeda 84 void teach::process(void)
MarcelPortmann 1:33fdaabcdeda 85 {
MarcelPortmann 1:33fdaabcdeda 86 int i=0, k=0, p=0, count=0,forward = 100000, backward = 100000;
MarcelPortmann 1:33fdaabcdeda 87 float tempsum[3] = {};
MarcelPortmann 1:33fdaabcdeda 88 int max = data_vec.size();
MarcelPortmann 0:ad924d8a2f98 89
MarcelPortmann 1:33fdaabcdeda 90 for(i=0; i<=max; i++) { // avrage starting Point
MarcelPortmann 1:33fdaabcdeda 91 if(data_vec[i].start) {
MarcelPortmann 1:33fdaabcdeda 92 tempsum[0] += data_vec[i].pos[0];
MarcelPortmann 1:33fdaabcdeda 93 tempsum[1] += data_vec[i].pos[1];
MarcelPortmann 1:33fdaabcdeda 94 tempsum[2] += data_vec[i].pos[2];
MarcelPortmann 1:33fdaabcdeda 95 k++;
MarcelPortmann 1:33fdaabcdeda 96 }
MarcelPortmann 1:33fdaabcdeda 97 }
MarcelPortmann 1:33fdaabcdeda 98 tempsum[0] = tempsum[0]/k;
MarcelPortmann 1:33fdaabcdeda 99 tempsum[1] = tempsum[1]/k;
MarcelPortmann 1:33fdaabcdeda 100 tempsum[2] = tempsum[2]/k;
MarcelPortmann 1:33fdaabcdeda 101
MarcelPortmann 3:b22580585b9c 102 float empty[3] = {0,0,1}; // status: 000 standart point
MarcelPortmann 3:b22580585b9c 103 store.SpeichernPosition(tr_name,0,tempsum,empty,empty); // 001 start point
MarcelPortmann 3:b22580585b9c 104 // 010 end point
MarcelPortmann 1:33fdaabcdeda 105
MarcelPortmann 1:33fdaabcdeda 106 i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters
MarcelPortmann 1:33fdaabcdeda 107
MarcelPortmann 1:33fdaabcdeda 108 for(i=0; i<=max; i++) { // avrage end Point
MarcelPortmann 1:33fdaabcdeda 109 if(data_vec[i].end) {
MarcelPortmann 1:33fdaabcdeda 110 tempsum[0] += data_vec[i].pos[0];
MarcelPortmann 1:33fdaabcdeda 111 tempsum[1] += data_vec[i].pos[1];
MarcelPortmann 1:33fdaabcdeda 112 tempsum[2] += data_vec[i].pos[2];
MarcelPortmann 1:33fdaabcdeda 113 k++;
MarcelPortmann 1:33fdaabcdeda 114 }
MarcelPortmann 1:33fdaabcdeda 115 }
MarcelPortmann 1:33fdaabcdeda 116 tempsum[0] = tempsum[0]/k;
MarcelPortmann 1:33fdaabcdeda 117 tempsum[1] = tempsum[1]/k;
MarcelPortmann 1:33fdaabcdeda 118 tempsum[2] = tempsum[2]/k;
MarcelPortmann 1:33fdaabcdeda 119
MarcelPortmann 1:33fdaabcdeda 120 // save endpoint to memory
MarcelPortmann 1:33fdaabcdeda 121
MarcelPortmann 1:33fdaabcdeda 122 i = 0, k = 0, tempsum[0] = 0, tempsum[1] = 0, tempsum[2] = 0; // reset counters
MarcelPortmann 1:33fdaabcdeda 123
MarcelPortmann 1:33fdaabcdeda 124 for(i=0; i<=max; i++) { // forward point number
MarcelPortmann 1:33fdaabcdeda 125
MarcelPortmann 1:33fdaabcdeda 126 while(!data_vec[k].end) {
MarcelPortmann 1:33fdaabcdeda 127 count++;
MarcelPortmann 1:33fdaabcdeda 128 k++;
MarcelPortmann 1:33fdaabcdeda 129 }
MarcelPortmann 1:33fdaabcdeda 130
MarcelPortmann 1:33fdaabcdeda 131 if(count<forward) {
MarcelPortmann 1:33fdaabcdeda 132 forward = count;
MarcelPortmann 1:33fdaabcdeda 133 }
MarcelPortmann 1:33fdaabcdeda 134 while(!data_vec[k].start) {
MarcelPortmann 1:33fdaabcdeda 135 k++;
MarcelPortmann 1:33fdaabcdeda 136 }
MarcelPortmann 1:33fdaabcdeda 137 i = k;
MarcelPortmann 1:33fdaabcdeda 138 count = 0;
MarcelPortmann 1:33fdaabcdeda 139
MarcelPortmann 1:33fdaabcdeda 140 }
MarcelPortmann 1:33fdaabcdeda 141
MarcelPortmann 1:33fdaabcdeda 142 k = 0;
MarcelPortmann 1:33fdaabcdeda 143 for(i=0; i<=max; i++) { // backward point number
MarcelPortmann 1:33fdaabcdeda 144
MarcelPortmann 1:33fdaabcdeda 145 while(!data_vec[k].end) {
MarcelPortmann 1:33fdaabcdeda 146 k++;
MarcelPortmann 1:33fdaabcdeda 147 }
MarcelPortmann 1:33fdaabcdeda 148
MarcelPortmann 1:33fdaabcdeda 149 while(!data_vec[k].start) {
MarcelPortmann 1:33fdaabcdeda 150 count++;
MarcelPortmann 1:33fdaabcdeda 151 k++;
MarcelPortmann 1:33fdaabcdeda 152 }
MarcelPortmann 1:33fdaabcdeda 153 if(count<backward) {
MarcelPortmann 1:33fdaabcdeda 154 backward = count;
MarcelPortmann 1:33fdaabcdeda 155 }
MarcelPortmann 1:33fdaabcdeda 156 i = k;
MarcelPortmann 1:33fdaabcdeda 157 count = 0;
MarcelPortmann 1:33fdaabcdeda 158
MarcelPortmann 0:ad924d8a2f98 159 }
MarcelPortmann 1:33fdaabcdeda 160
MarcelPortmann 1:33fdaabcdeda 161 k = 0;
MarcelPortmann 1:33fdaabcdeda 162 struct temp_arry forw[forward]; // temp array initialise and zerowing
MarcelPortmann 1:33fdaabcdeda 163 for(i=0; i<forward; i++) {
MarcelPortmann 1:33fdaabcdeda 164 forw[i].time=0;
MarcelPortmann 1:33fdaabcdeda 165 forw[i].pos[0]=0;
MarcelPortmann 1:33fdaabcdeda 166 forw[i].pos[1]=0;
MarcelPortmann 1:33fdaabcdeda 167 forw[i].pos[2]=0;
MarcelPortmann 1:33fdaabcdeda 168 }
MarcelPortmann 1:33fdaabcdeda 169
MarcelPortmann 1:33fdaabcdeda 170 for(i=0; i<=max; i++) { // avrage forward points
MarcelPortmann 1:33fdaabcdeda 171 for(p=0; p<=forward; p++) {
MarcelPortmann 1:33fdaabcdeda 172 forw[p].time += data_vec[k].time;
MarcelPortmann 1:33fdaabcdeda 173 forw[p].pos[0] += data_vec[k].pos[0];
MarcelPortmann 1:33fdaabcdeda 174 forw[p].pos[1] += data_vec[k].pos[1];
MarcelPortmann 1:33fdaabcdeda 175 forw[p].pos[2] += data_vec[k].pos[2];
MarcelPortmann 1:33fdaabcdeda 176 k++;
MarcelPortmann 1:33fdaabcdeda 177 }
MarcelPortmann 1:33fdaabcdeda 178
MarcelPortmann 1:33fdaabcdeda 179 while(!data_vec[k].start) {
MarcelPortmann 1:33fdaabcdeda 180 k++;
MarcelPortmann 1:33fdaabcdeda 181 }
MarcelPortmann 1:33fdaabcdeda 182 i = k;
MarcelPortmann 1:33fdaabcdeda 183 count++;
MarcelPortmann 1:33fdaabcdeda 184
MarcelPortmann 1:33fdaabcdeda 185 }
MarcelPortmann 1:33fdaabcdeda 186 for(i=0; i<=forward; i++) {
MarcelPortmann 1:33fdaabcdeda 187 forw[i].time = (forw[i].time)/count;
MarcelPortmann 1:33fdaabcdeda 188 forw[i].pos[0] = (forw[i].pos[0])/count;
MarcelPortmann 1:33fdaabcdeda 189 forw[i].pos[1] = (forw[i].pos[1])/count;
MarcelPortmann 1:33fdaabcdeda 190 forw[i].pos[2] = (forw[i].pos[2])/count;
MarcelPortmann 1:33fdaabcdeda 191 }
MarcelPortmann 1:33fdaabcdeda 192 count = 0;
MarcelPortmann 1:33fdaabcdeda 193 k = 0, i = 0, p = 0; // reset counters
MarcelPortmann 1:33fdaabcdeda 194
MarcelPortmann 1:33fdaabcdeda 195 // Save forward way to memory
MarcelPortmann 1:33fdaabcdeda 196
MarcelPortmann 1:33fdaabcdeda 197 struct temp_arry backw[backward]; // temp array initialise and zerowing
MarcelPortmann 1:33fdaabcdeda 198 for(i=0; i<backward; i++) {
MarcelPortmann 1:33fdaabcdeda 199 backw[i].time=0;
MarcelPortmann 1:33fdaabcdeda 200 backw[i].pos[0]=0;
MarcelPortmann 1:33fdaabcdeda 201 backw[i].pos[1]=0;
MarcelPortmann 1:33fdaabcdeda 202 backw[i].pos[2]=0;
MarcelPortmann 1:33fdaabcdeda 203 }
MarcelPortmann 1:33fdaabcdeda 204
MarcelPortmann 1:33fdaabcdeda 205 for(i=0; i<=max; i++) { // avrage backward points
MarcelPortmann 1:33fdaabcdeda 206
MarcelPortmann 1:33fdaabcdeda 207 while(!data_vec[k].end) {
MarcelPortmann 1:33fdaabcdeda 208 k++;
MarcelPortmann 1:33fdaabcdeda 209 }
MarcelPortmann 1:33fdaabcdeda 210
MarcelPortmann 1:33fdaabcdeda 211 for(p=0; p<=backward; p++) {
MarcelPortmann 1:33fdaabcdeda 212 backw[p].time += data_vec[k].time;
MarcelPortmann 1:33fdaabcdeda 213 backw[p].pos[0] += data_vec[k].pos[0];
MarcelPortmann 1:33fdaabcdeda 214 backw[p].pos[1] += data_vec[k].pos[1];
MarcelPortmann 1:33fdaabcdeda 215 backw[p].pos[2] += data_vec[k].pos[2];
MarcelPortmann 1:33fdaabcdeda 216 k++;
MarcelPortmann 1:33fdaabcdeda 217 }
MarcelPortmann 1:33fdaabcdeda 218 i = k;
MarcelPortmann 1:33fdaabcdeda 219 count++;
MarcelPortmann 1:33fdaabcdeda 220 }
MarcelPortmann 1:33fdaabcdeda 221
MarcelPortmann 1:33fdaabcdeda 222 for(i=0; i<=backward; i++) {
MarcelPortmann 1:33fdaabcdeda 223 backw[i].time = (backw[i].time)/count;
MarcelPortmann 1:33fdaabcdeda 224 backw[i].pos[0] = (backw[i].pos[0])/count;
MarcelPortmann 1:33fdaabcdeda 225 backw[i].pos[0] = (backw[i].pos[0])/count;
MarcelPortmann 1:33fdaabcdeda 226 backw[i].pos[0] = (backw[i].pos[0])/count;
MarcelPortmann 1:33fdaabcdeda 227 }
MarcelPortmann 1:33fdaabcdeda 228 count = 0;
MarcelPortmann 1:33fdaabcdeda 229 k = 0, i = 0, p = 0; // reset counters
MarcelPortmann 1:33fdaabcdeda 230
MarcelPortmann 1:33fdaabcdeda 231 // save backward way to memory
MarcelPortmann 1:33fdaabcdeda 232
MarcelPortmann 0:ad924d8a2f98 233 }
MarcelPortmann 0:ad924d8a2f98 234
MarcelPortmann 1:33fdaabcdeda 235 void teach::temp_store()
MarcelPortmann 1:33fdaabcdeda 236 {
MarcelPortmann 1:33fdaabcdeda 237
MarcelPortmann 0:ad924d8a2f98 238 }
MarcelPortmann 0:ad924d8a2f98 239
MarcelPortmann 1:33fdaabcdeda 240 void teach::contr_sice()
MarcelPortmann 1:33fdaabcdeda 241 {
MarcelPortmann 1:33fdaabcdeda 242 if((data_vec.size()*sizeof(posdata)) >= MAX_SIZE) {
MarcelPortmann 1:33fdaabcdeda 243 // fehlermeldung oder speichern bei zu grossem temp speicher
MarcelPortmann 1:33fdaabcdeda 244 }
MarcelPortmann 0:ad924d8a2f98 245 }