11 struct timespec monotime;
12 clock_gettime(CLOCK_MONOTONIC, &monotime);
13 return (monotime.tv_sec + ((
float)monotime.tv_nsec) / 1000000000);
20 deque <float> tstart, tend;
24 int numjoints = tend.size() - 1;
25 if (
DEBUG_MODE) { printf(
"numjoints: %d\n", numjoints); }
27 if (numjoints < 0)
return false;
29 while (!tIn.empty()) {
34 for (
float t = tstart[0]; t < tend[0]; t += dt) {
35 deque <float> thisline;
36 thisline.push_back(t);
37 for (
int j = 1; j <= numjoints; j++) {
38 thisline.push_back(tstart[j] + (tend[j] - tstart[j]) * (t - tstart[0]) /
39 (tend[0] - tstart[0]));
41 tOut.push_back(thisline);
52 printf(
"trajectory size: %d x %d\n", (
int)traj.size(), (int)traj[0].size());
56 { printf(
"%2.2f\t", *fi); }
67 while (ri != traj.end()) {
68 if (
gettime() - startTime > (*ri)[0]) {
69 deque<float> thisline = *ri;
71 std::map<int, float> angles;
73 angles[i] = thisline[i];
85 int arm_move1 = stepLength / 5;
86 int arm_move2 = stepLength / 1.6;
87 int arm_move3 = stepLength * 1.6;
88 int arm_move4 = stepLength / 1.25;
89 data_t tSetpoints, tInterp;
91 tline.push_front(0.0);
92 tSetpoints.push_back(tline);
94 tline[0] = 0.25 * period;
96 tline[1 +
RARM] = arm_move1; tline[1 +
LARM] = -arm_move1;
97 tSetpoints.push_back(tline);
99 tline[0] = 0.375 * period;
101 tline[1 +
RARM] = arm_move2; tline[1 +
LARM] = -arm_move2;
102 tSetpoints.push_back(tline);
104 tline[0] = 0.625 * period;
105 tline[1 +
RHIP] = stepLength / 2; tline[1 +
LHIP] = 0 - stepLength / 2;
107 tline[1 +
RARM] = arm_move3; tline[1 +
LARM] = -arm_move3;
108 tSetpoints.push_back(tline);
110 tline[0] = 0.75 * period;
112 tline[1 +
RARM] = arm_move4; tline[1 +
LARM] = -arm_move4;
113 tSetpoints.push_back(tline);
117 tline[1 +
RARM] = 0; tline[1 +
LARM] = 0;
118 tSetpoints.push_back(tline);
126 data_t tSetpoints, tInterp;
127 deque<float> tline(robot->
jangles_);
128 tline.push_front(0.0);
129 tSetpoints.push_back(tline);
132 tline[1 +
RHIP] = -80; tline[1 +
LHIP] = -80;
133 tline[1 +
RARM] = 100; tline[1 +
LARM] = 100;
134 tSetpoints.push_back(tline);
143 int arm_move1 = stepLength / 5;
144 int arm_move2 = stepLength / 1.6;
145 int arm_move3 = stepLength * 1.6;
146 int arm_move4 = stepLength / 1.25;
147 data_t tSetpoints, tInterp;
148 deque<float> tline(robot->
jangles_);
149 tline.push_front(0.0);
150 tSetpoints.push_back(tline);
152 tline[0] = 0.25 * period;
154 tline[1 +
RARM] = -arm_move1; tline[1 +
LARM] = arm_move1;
155 tSetpoints.push_back(tline);
157 tline[0] = 0.375 * period;
159 tline[1 +
RARM] = -arm_move2; tline[1 +
LARM] = arm_move2;
160 tSetpoints.push_back(tline);
162 tline[0] = 0.625 * period;
163 tline[1 +
RHIP] = 0 - stepLength / 2; tline[1 +
LHIP] = stepLength / 2;
165 tline[1 +
RARM] = -arm_move3; tline[1 +
LARM] = arm_move3;
166 tSetpoints.push_back(tline);
168 tline[0] = 0.75 * period;
170 tline[1 +
RARM] = -arm_move4; tline[1 +
LARM] = arm_move4;
171 tSetpoints.push_back(tline);
175 tline[1 +
RARM] = 0; tline[1 +
LARM] = 0;
176 tSetpoints.push_back(tline);
185 data_t tSetpoints, tInterp;
186 deque<float> tline(robot->
jangles_);
187 tline.push_front(0.0);
188 tSetpoints.push_back(tline);
189 int lean_amount = 40;
191 tline[0] = 0.1 * move_time;
192 tline[1 +
RARM] = 60; tline[1 +
LARM] = 60;
194 tline[1 +
EYES] = -20;
195 tSetpoints.push_back(tline);
198 for (
float t = 0.2; t < 1.0; t += 0.2) {
199 tline[0] = t * move_time;
200 tline[1 +
LKNEE] = lean_amount; tline[1 +
RKNEE] = lean_amount;
201 tline[1 +
RARM] = 60; tline[1 +
LARM] = 10;
202 tline[1 +
EYES] = -0;
203 tSetpoints.push_back(tline);
205 tline[0] = (t + 0.1) * move_time;
206 tline[1 +
LKNEE] = -lean_amount; tline[1 +
RKNEE] = -lean_amount;
207 tline[1 +
RARM] = 10; tline[1 +
LARM] = 60;
208 tline[1 +
EYES] = -40;
209 tSetpoints.push_back(tline);
213 tline[0] = move_time;
215 tline[1 +
RARM] = 0; tline[1 +
LARM] = 0;
217 tSetpoints.push_back(tline);
225 data_t tSetpoints, tInterp;
226 deque<float> tline(robot->
jangles_);
227 tline.push_front(0.0);
228 tSetpoints.push_back(tline);
230 tline[0] = 0.15 * period;
232 tSetpoints.push_back(tline);
234 tline[0] = 0.3 * period;
236 tline[1 +
LHIP] = -110;
237 tSetpoints.push_back(tline);
239 tline[0] = 0.4 * period;
241 tSetpoints.push_back(tline);
243 tline[0] = 0.5 * period;
245 tSetpoints.push_back(tline);
247 tline[0] = 0.6 * period;
249 tSetpoints.push_back(tline);
251 tline[0] = 0.7 * period;
253 tSetpoints.push_back(tline);
255 tline[0] = 0.85 * period;
259 tSetpoints.push_back(tline);
263 tSetpoints.push_back(tline);
272 data_t tSetpoints, tInterp;
273 deque<float> tline(robot->
jangles_);
274 tline.push_front(0.0);
275 tSetpoints.push_back(tline);
277 tline[0] = 0.15 * period;
279 tSetpoints.push_back(tline);
281 tline[0] = 0.3 * period;
283 tline[1 +
RHIP] = -110;
284 tSetpoints.push_back(tline);
286 tline[0] = 0.4 * period;
288 tSetpoints.push_back(tline);
290 tline[0] = 0.5 * period;
292 tSetpoints.push_back(tline);
294 tline[0] = 0.6 * period;
296 tSetpoints.push_back(tline);
298 tline[0] = 0.7 * period;
300 tSetpoints.push_back(tline);
302 tline[0] = 0.85 * period;
306 tSetpoints.push_back(tline);
310 tSetpoints.push_back(tline);
319 data_t tSetpoints, tInterp;
320 deque<float> tline(robot->
jangles_);
321 tline.push_front(0.0);
322 tSetpoints.push_back(tline);
324 tline[0] = 0.2 * period;
326 tline[1 +
RARM] = 20; tline[1 +
LARM] = 20;
327 tSetpoints.push_back(tline);
329 tline[0] = 0.375 * period;
331 tline[1 +
LHIP] = 10;
332 tSetpoints.push_back(tline);
334 tline[0] = 0.425 * period;
335 tline[1 +
LHIP] = -120;
336 tline[1 +
EYES] = 30;
337 tline[1 +
RARM] = -20; tline[1 +
LARM] = -20;
338 tSetpoints.push_back(tline);
340 tline[0] = 0.575 * period;
341 tline[1 +
LHIP] = 0; tline[1 +
RHIP] = 0;
343 tline[1 +
RARM] = 0; tline[1 +
LARM] = 0;
344 tSetpoints.push_back(tline);
346 tline[0] = 0.7 * period;
348 tSetpoints.push_back(tline);
352 tSetpoints.push_back(tline);
360 data_t tSetpoints, tInterp;
361 deque<float> tline(robot->
jangles_);
362 tline.push_front(0.0);
363 tSetpoints.push_back(tline);
365 tline[0] = 0.2 * period;
367 tline[1 +
RARM] = 20; tline[1 +
LARM] = 20;
368 tSetpoints.push_back(tline);
370 tline[0] = 0.375 * period;
372 tline[1 +
RHIP] = 10;
373 tSetpoints.push_back(tline);
375 tline[0] = 0.425 * period;
376 tline[1 +
RHIP] = -120;
377 tline[1 +
EYES] = 30;
378 tline[1 +
RARM] = -20; tline[1 +
LARM] = -20;
379 tSetpoints.push_back(tline);
381 tline[0] = 0.575 * period;
382 tline[1 +
LHIP] = 0; tline[1 +
RHIP] = 0;
384 tline[1 +
RARM] = 0; tline[1 +
LARM] = 0;
385 tSetpoints.push_back(tline);
387 tline[0] = 0.7 * period;
389 tSetpoints.push_back(tline);
393 tSetpoints.push_back(tline);
401 data_t tSetpoints, tInterp;
402 deque<float> tline(robot->
jangles_);
403 tline.push_front(0.0);
404 tSetpoints.push_back(tline);
406 for (std::deque<float>::iterator di = tline.begin(); di != tline.end(); di++)
409 tSetpoints.push_back(tline);
412 tline[1 +
LARM] = -200;
414 tSetpoints.push_back(tline);
418 tline[1 +
LHIP] = -150; tline[1 +
RHIP] = -150;
419 tSetpoints.push_back(tline);
422 tline[1 +
LKNEE] = 125; tline[1 +
RKNEE] = -125;
423 tSetpoints.push_back(tline);
427 tSetpoints.push_back(tline);
430 tline[1 +
RARM] = 250;
431 tSetpoints.push_back(tline);
435 tSetpoints.push_back(tline);
438 tline[1 +
LHIP] = 150;
439 tSetpoints.push_back(tline);
442 tline[1 +
RARM] = 80;
443 tSetpoints.push_back(tline);
447 tSetpoints.push_back(tline);
450 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
451 tSetpoints.push_back(tline);
455 tSetpoints.push_back(tline);
464 data_t tSetpoints, tInterp;
465 deque<float> tline(robot->
jangles_);
466 tline.push_front(0.0);
467 tSetpoints.push_back(tline);
470 for (std::deque<float>::iterator di = tline.begin(); di != tline.end(); di++)
473 tSetpoints.push_back(tline);
480 deque <float> tline(tSetpoints.back());
484 tline[1 +
LKNEE] = -leanAmount; tline[1 +
RKNEE] = -leanAmount;
486 tSetpoints.push_back(tline);
493 deque <float> tline(tSetpoints.back());
497 tline[1 +
LKNEE] = leanAmount; tline[1 +
RKNEE] = leanAmount;
499 tSetpoints.push_back(tline);
506 deque <float> tline(tSetpoints.back());
509 tline[1 +
RHIP] = leanAmount; tline[1 +
LHIP] = leanAmount;
510 tSetpoints.push_back(tline);
517 deque <float> tline(tSetpoints.back());
520 tline[1 +
RHIP] = -leanAmount; tline[1 +
LHIP] = -leanAmount;
521 tSetpoints.push_back(tline);
527 deque <float> tline(tSetpoints.back());
530 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
533 tSetpoints.push_back(tline);
539 deque <float> tline(tSetpoints.back());
542 tline[1 +
LHIP] = -75; tline[1 +
RHIP] = 75;
543 tline[1 +
LKNEE] = 20; tline[1 +
RKNEE] = -20;
545 tSetpoints.push_back(tline);
551 deque <float> tline(tSetpoints.back());
554 tline[1 +
LHIP] = 75; tline[1 +
RHIP] = -75;
555 tline[1 +
LKNEE] = 20; tline[1 +
RKNEE] = -20;
557 tSetpoints.push_back(tline);
563 deque <float> tline(tSetpoints.back());
566 tline[1 +
LKNEE] = 60; tline[1 +
RKNEE] = -60;
568 tSetpoints.push_back(tline);
574 deque <float> tline(tSetpoints.back());
575 float startTime = tline[0];
577 tline[0] = startTime + 0.2 * period;
580 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
581 tSetpoints.push_back(tline);
583 tline[0] = startTime + 0.275 * period;
585 tSetpoints.push_back(tline);
587 tline[0] = startTime + 0.5 * period;
589 tline[1 +
LHIP] = -150;
591 tSetpoints.push_back(tline);
593 tline[0] = startTime + 0.675 * period;
597 tSetpoints.push_back(tline);
599 tline[0] = startTime + 0.725 * period;
601 tSetpoints.push_back(tline);
603 tline[0] = startTime + period;
605 tSetpoints.push_back(tline);
611 deque <float> tline(tSetpoints.back());
612 float startTime = tline[0];
614 tline[0] = startTime + 0.2 * period;
617 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
618 tSetpoints.push_back(tline);
620 tline[0] = startTime + 0.275 * period;
622 tSetpoints.push_back(tline);
624 tline[0] = startTime + 0.5 * period;
626 tline[1 +
RHIP] = -150;
628 tSetpoints.push_back(tline);
630 tline[0] = startTime + 0.675 * period;
634 tSetpoints.push_back(tline);
636 tline[0] = startTime + 0.725 * period;
638 tSetpoints.push_back(tline);
640 tline[0] = startTime + period;
642 tSetpoints.push_back(tline);
648 deque <float> tline(tSetpoints.back());
649 float startTime = tline[0];
651 tline[0] = startTime + 0.5 * period;
654 tline[1 +
RHIP] = -50; tline[1 +
LHIP] = 0;
655 tSetpoints.push_back(tline);
657 tline[0] = startTime + period;
658 tline[1 +
RKNEE] = 0;
660 tSetpoints.push_back(tline);
666 deque <float> tline(tSetpoints.back());
667 float startTime = tline[0];
669 tline[0] = startTime + 0.25 * period;
672 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
673 tSetpoints.push_back(tline);
675 tline[0] = startTime + 0.5 * period;
677 tline[1 +
RHIP] = 60; tline[1 +
LHIP] = 60;
678 tSetpoints.push_back(tline);
680 tline[0] = startTime + 0.75 * period;
682 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
683 tSetpoints.push_back(tline);
685 tline[0] = startTime + period;
687 tline[1 +
RHIP] = -60; tline[1 +
LHIP] = -60;
688 tSetpoints.push_back(tline);
694 deque <float> tline(tSetpoints.back());
695 float startTime = tline[0];
697 tline[0] = startTime + 0.25 * period;
700 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
701 tSetpoints.push_back(tline);
703 tline[0] = startTime + 0.5 * period;
705 tline[1 +
RHIP] = 60; tline[1 +
LHIP] = 60;
706 tSetpoints.push_back(tline);
708 tline[0] = startTime + 0.75 * period;
710 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
711 tSetpoints.push_back(tline);
713 tline[0] = startTime + period;
715 tline[1 +
RHIP] = -60; tline[1 +
LHIP] = -60;
716 tSetpoints.push_back(tline);
722 deque <float> tline(tSetpoints.back());
723 float startTime = tline[0];
725 tline[0] = startTime + 0.25 * period;
727 tline[1 +
LHIP] = 0; tline[1 +
RHIP] = 0;
728 tSetpoints.push_back(tline);
730 tline[0] = startTime + 0.75 * period;
732 tSetpoints.push_back(tline);
734 tline[0] = startTime + period;
735 tline[1 +
RKNEE] = 0;
736 tSetpoints.push_back(tline);
742 deque <float> tline(tSetpoints.back());
743 float startTime = tline[0];
745 tline[0] = startTime + 0.25 * period;
748 tSetpoints.push_back(tline);
750 tline[0] = startTime + 0.75 * period;
752 tSetpoints.push_back(tline);
754 tline[0] = startTime + period;
756 tSetpoints.push_back(tline);
762 deque <float> tline(tSetpoints.back());
763 float startTime = tline[0];
765 tline[0] = startTime + 0.25 * period;
767 tline[1 +
LHIP] = 0; tline[1 +
RHIP] = 0;
768 tSetpoints.push_back(tline);
770 tline[0] = startTime + 0.75 * period;
772 tSetpoints.push_back(tline);
774 tline[0] = startTime + period;
775 tline[1 +
RKNEE] = 0;
776 tSetpoints.push_back(tline);
782 deque <float> tline(tSetpoints.back());
783 float startTime = tline[0];
785 tline[0] = startTime + 0.25 * period;
787 tline[1 +
LHIP] = 0; tline[1 +
RHIP] = 0;
788 tSetpoints.push_back(tline);
790 tline[0] = startTime + 0.75 * period;
792 tSetpoints.push_back(tline);
794 tline[0] = startTime + period;
795 tline[1 +
LKNEE] = 0;
796 tSetpoints.push_back(tline);
802 deque <float> tline(tSetpoints.back());
803 float startTime = tline[0];
805 tline[0] = startTime + 0.25 * period;
808 tSetpoints.push_back(tline);
810 tline[0] = startTime + 0.75 * period;
812 tSetpoints.push_back(tline);
814 tline[0] = startTime + period;
816 tSetpoints.push_back(tline);
822 deque <float> tline(tSetpoints.back());
823 float startTime = tline[0];
825 tline[0] = startTime + 0.25 * period;
827 tline[1 +
LHIP] = 0; tline[1 +
RHIP] = 0;
828 tSetpoints.push_back(tline);
830 tline[0] = startTime + 0.75 * period;
832 tSetpoints.push_back(tline);
834 tline[0] = startTime + period;
835 tline[1 +
LKNEE] = 0;
836 tSetpoints.push_back(tline);
845 deque <float> tline(tSetpoints.back());
846 float startTime = tline[0];
848 tline[0] = startTime + period;
849 tline[1 +
RARM] = amountRight; tline[1 +
LARM] = amountLeft;
850 tSetpoints.push_back(tline);
857 deque <float> tline(tSetpoints.back());
858 float startTime = tline[0];
860 tline[0] = startTime + period;
861 tline[1 +
LARM] = amount;
862 tSetpoints.push_back(tline);
869 deque <float> tline(tSetpoints.back());
870 float startTime = tline[0];
872 tline[0] = startTime + period;
873 tline[1 +
RARM] = amount;
874 tSetpoints.push_back(tline);
881 deque <float> tline(tSetpoints.back());
882 float startTime = tline[0];
884 tline[0] = startTime + period;
885 tline[1 +
EYES] = targetPos;
886 tSetpoints.push_back(tline);
896 vector<bool> which) {
901 for (
unsigned int ji = 0; ji < which.size(); ji++) {
902 float tfield = !which[ji] ? (*ni1)[ji] : (*ni2)[ji];
903 tline.push_back(tfield);
905 traj.push_back(tline);
916 data_t tlegsArms, genTraj;
930 printf(
"starting\n");
932 data_t tSetpoints, genTraj;
934 data_t tLegs, tArms, tEyes;
935 data_t tiLegs, tiArms, tiEyes;
936 deque<float> tline(robot->
jangles_);
938 tLegs.push_back(tline);
939 tArms.push_back(tline);
940 tEyes.push_back(tline);
945 }
else if (robotID == 2) {
950 for (
int i = 0; i < 3; i++) {
980 }
else if (robotID == 1) {
990 }
else if (robotID == 2) {
1002 for (
int i = 0; i < 3; i++) {
1026 }
else if (robotID == 1) {
1030 }
else if (robotID == 2) {
1048 tline = genTraj.back();
1053 tLegs.push_back(tline);
1054 tArms.push_back(tline);
1081 tline = tLegs.back();
1086 tLegs.push_back(tline);
1087 tArms.push_back(tline);
1092 for (
int i = 0; i < 2; i++) {
1103 }
else if (robotID == 1) {
1120 for (
int i = 0; i < 4; i++) {
1129 ji[1 +
RARM] = 1; ji[1 +
LARM] = 1;
1141 deque <float> tline(tSetpoints.back());
1142 float startTime = tline[0];
1145 tline[0] = startTime + 0.2 * period;
1146 tline[1 +
RKNEE] = 55; tline[1 +
LKNEE] = 55;
1148 tline[1 +
RHIP] = 0; tline[1 +
LHIP] = 0;
1149 tSetpoints.push_back(tline);
1152 tline[0] = startTime + 0.275 * period;
1153 tline[1 +
LKNEE] = 75;
1154 tSetpoints.push_back(tline);
1157 tline[0] = startTime + 0.5 * period;
1158 tline[1 +
RHIP] = -30;
1159 tline[1 +
LHIP] = -50;
1161 tSetpoints.push_back(tline);
1164 tline[0] = startTime + 0.675 * period;
1165 tline[1 +
LHIP] = 0;
1168 tSetpoints.push_back(tline);
1171 tline[0] = startTime + 0.725 * period;
1172 tline[1 +
LHIP] = 50;
1173 tline[1 +
RHIP] = 0;
1176 tSetpoints.push_back(tline);
1178 tline[0] = startTime + period;
1179 tline[1 +
LHIP] = 0;
1181 tSetpoints.push_back(tline);
1187 data_t tSetpoints, genTraj;
1189 data_t tLegs, tArms, tEyes;
1190 data_t tiLegs, tiArms, tiEyes;
1191 deque<float> tline(robot->
jangles_);
1192 tline.push_front(0);
1193 tLegs.push_back(tline);
1194 tArms.push_back(tline);
1195 tEyes.push_back(tline);
void setServos(std::map< int, float > angles)
void printTrajectory(data_t &traj)
bool setPointsKickOutLeft(data_t &tSetpoints, float period)
bool setPointsLegsApart(data_t &tSetpoints, float period)
bool setPointsLeanBackward(data_t &tSetpoints, int leanAmount, float period)
bool setPointsEyes(data_t &tSetpoints, float targetPos, float period)
data_t genGetUp(MartyCore *robot)
data_t genStepLeft(MartyCore *robot, int stepLength, int turn, float period)
std::deque< float > jangles_
bool setPointsTapFR(data_t &tSetpoints, float period)
deque< deque< float > >::iterator record_iterator
data_t combineLegsArmsEyes(data_t &legs, data_t &arms, data_t &eyes)
bool setPointsCircleCW(data_t &tSetpoints, float period)
bool setPointsLeanForward(data_t &tSetpoints, int leanAmount, float period)
bool setPointsTapBL(data_t &tSetpoints, float period)
bool setPointsLeanLeft(data_t &tSetpoints, int leanAmount, float period)
bool setPointsTapML(data_t &tSetpoints, float period)
bool setPointsRightArmUp(data_t &tSetpoints, float amount, float period)
data_t genStepRight(MartyCore *robot, int stepLength, int turn, float period)
data_t genKickLeft(MartyCore *robot, float period)
bool setPointsKickOutRight(data_t &tSetpoints, float period)
bool runTrajectory(MartyCore *robot, data_t &traj)
bool setPointsFlickRight(data_t &tSetpoints, float period)
bool setPointsCrossLeftLeg(data_t &tSetpoints, float period)
bool setPointsLegsZero(data_t &tSetpoints, float period)
bool setPointsCrossRightLeg(data_t &tSetpoints, float period)
data_t genSitBack(MartyCore *robot, float period)
data_t genCelebration(MartyCore *robot, float move_time)
bool setPointsCircleACW(data_t &tSetpoints, float period)
bool setPointsTapBR(data_t &tSetpoints, float period)
bool interpTrajectory(data_t tIn, data_t &tOut, float dt)
bool setPointsLeftArmUp(data_t &tSetpoints, float amount, float period)
bool setPointsLeanRight(data_t &tSetpoints, int leanAmount, float period)
int hipToBeSquare(MartyCore *robot, int robotID)
data_t genKickRight(MartyCore *robot, float period)
int rollerSkate(MartyCore *robot)
data_t combineTrajectories(data_t &t1, data_t &t2, vector< bool > ti)
data_t genRaisedFootTwistRight(MartyCore *robot, float period)
bool setPointsTapFL(data_t &tSetpoints, float period)
data_t genRaisedFootTwistLeft(MartyCore *robot, float period)
deque< float >::iterator field_iterator
bool setPointsArmsUp(data_t &tSetpoints, float amountRight, float amountLeft, float period)
bool setPointsSkateLeft(data_t &tSetpoints, float amount, float period)
bool setPointsTapMR(data_t &tSetpoints, float period)
data_t genReturnToZero(MartyCore *robot, float period)