]> rtime.felk.cvut.cz Git - hubacji1/iamcar2.git/blob - src/test1.cc
Change test 1 output format
[hubacji1/iamcar2.git] / src / test1.cc
1 #include <chrono>
2 #include <iostream>
3 #include <jsoncpp/json/json.h>
4
5 #include "psp.h"
6
7 std::chrono::high_resolution_clock::time_point TSTART_;
8 std::chrono::high_resolution_clock::time_point TEND_;
9 inline void TSTART() { TSTART_ = std::chrono::high_resolution_clock::now(); }
10 inline void TEND() { TEND_ = std::chrono::high_resolution_clock::now(); }
11 inline double TDIFF()
12 {
13         std::chrono::duration<double> DT_;
14         DT_ = std::chrono::duration_cast<std::chrono::duration<double>>(
15                 TEND_ - TSTART_
16         );
17         return DT_.count();
18 }
19 inline void TPRINT(const char *what)
20 {
21         std::cerr << what << ": " << TDIFF() << std::endl;
22 }
23
24 int main()
25 {
26         Json::Value jvo; // JSON output
27
28         double offset = -1.256994;
29         double delta = 0.1;
30         std::cerr << "#dist,fe cusps,fe time,fer cusps,fer time";
31         std::cerr << std::endl;
32         for (int i = 0; i < 14; i++) {
33                 jvo["goals"] = Json::nullValue;
34                 // setup
35                 PSPlanner psp;
36                 double ppsl = 0.01 + psp.cc().perfect_parking_slot_len();
37                 double psl = ppsl + offset + i * delta;
38                 psp.ps().border(
39                         0, 0,
40                         2.2, 0,
41                         2.2, 0 + psl,
42                         0, 0 + psl
43                 );
44                 // run fe planner
45                 TSTART();
46                 psp.fe(); // or fer()
47                 TEND();
48                 std::cerr << (psl - psp.cc().l() - 0.01);
49                 std::cerr << ",";
50                 std::cerr << psp.c();
51                 std::cerr << ",";
52                 std::cerr << TDIFF();
53                 // json output
54                 jvo["time"] = TDIFF();
55                 jvo["goal"][0] = psp.gc().x();
56                 jvo["goal"][1] = psp.gc().y();
57                 jvo["goal"][2] = psp.gc().h();
58                 unsigned int icnt = 0;
59                 for (auto &i: psp.cusps()) {
60                         jvo["goals"][icnt][0] = i.x();
61                         jvo["goals"][icnt][1] = i.y();
62                         jvo["goals"][icnt][2] = i.h();
63                         icnt++;
64                 }
65                 jvo["goals"][icnt][0] = psp.cc().x();
66                 jvo["goals"][icnt][1] = psp.cc().y();
67                 jvo["goals"][icnt][2] = psp.cc().h();
68                 jvo["slot"][0][0][0] = psp.ps().x1();
69                 jvo["slot"][0][0][1] = psp.ps().y1();
70                 jvo["slot"][0][1][0] = psp.ps().x2();
71                 jvo["slot"][0][1][1] = psp.ps().y2();
72                 jvo["slot"][0][2][0] = psp.ps().x3();
73                 jvo["slot"][0][2][1] = psp.ps().y3();
74                 jvo["slot"][0][3][0] = psp.ps().x4();
75                 jvo["slot"][0][3][1] = psp.ps().y4();
76                 jvo["cusp"] = psp.c();
77                 std::cout << jvo << std::endl;
78                 // run fer planner
79                 TSTART();
80                 psp.fer(); // or fer()
81                 TEND();
82                 std::cerr << ",";
83                 std::cerr << psp.c();
84                 std::cerr << ",";
85                 std::cerr << TDIFF();
86                 std::cerr << std::endl;
87                 // json output
88                 jvo["time"] = TDIFF();
89                 jvo["goal"][0] = psp.gc().x();
90                 jvo["goal"][1] = psp.gc().y();
91                 jvo["goal"][2] = psp.gc().h();
92                 icnt = 0;
93                 for (auto &i: psp.cusps()) {
94                         jvo["goals"][icnt][0] = i.x();
95                         jvo["goals"][icnt][1] = i.y();
96                         jvo["goals"][icnt][2] = i.h();
97                         icnt++;
98                 }
99                 jvo["goals"][icnt][0] = psp.cc().x();
100                 jvo["goals"][icnt][1] = psp.cc().y();
101                 jvo["goals"][icnt][2] = psp.cc().h();
102                 jvo["slot"][0][0][0] = psp.ps().x1();
103                 jvo["slot"][0][0][1] = psp.ps().y1();
104                 jvo["slot"][0][1][0] = psp.ps().x2();
105                 jvo["slot"][0][1][1] = psp.ps().y2();
106                 jvo["slot"][0][2][0] = psp.ps().x3();
107                 jvo["slot"][0][2][1] = psp.ps().y3();
108                 jvo["slot"][0][3][0] = psp.ps().x4();
109                 jvo["slot"][0][3][1] = psp.ps().y4();
110                 jvo["cusp"] = psp.c();
111                 std::cout << jvo << std::endl;
112         }
113         return 0;
114 }