Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
reportWriter.cpp
Go to the documentation of this file.
1#include "reportWriter.hpp"
2#include <rclcpp/rclcpp.hpp>
3
4bool reportToFile(Report report, std::string dir)
5{
6 YAML::Emitter out;
7 out << YAML::BeginMap;
8 out << YAML::Key << "report";
9 out << YAML::BeginMap;
10 out << YAML::Key << "version";
11 out << YAML::Value << "0.9";
12 out << YAML::Key << "creation_time";
13 time_t rawtime;
14
15 struct tm* timeinfo;
16 char buffer[80];
17
18 time(&rawtime);
19 timeinfo = localtime(&rawtime);
20
21 strftime(buffer, 80, "%F %T", timeinfo);
22 out << YAML::Value << buffer;
23 out << YAML::Key << "seed";
24 out << YAML::Value << report.seed;
25 out << YAML::Key << "track_file";
26 out << YAML::Value << report.track_name;
27 out << YAML::Key << "perception_config_file";
28 out << YAML::Value << report.perception_config_file;
29 out << YAML::Key << "sensors_config_file";
30 out << YAML::Value << report.sensors_config_file;
31 out << YAML::Key << "vehicle_config_file";
32 out << YAML::Value << report.vehicle_config_file;
33
34 out << YAML::Key << "status";
35 out << YAML::BeginMap;
36 out << YAML::Key << "discipline";
37 out << YAML::Value << report.discipline;
38 out << YAML::Key << "success";
39 out << YAML::Value << report.success;
40 out << YAML::Key << "reason";
41 out << YAML::Value << report.dnf_reason;
42 out << YAML::Key << "final_time";
43 out << YAML::Value << report.final_time;
44 out << YAML::Key << "final_time_raw";
45 out << YAML::Value << report.final_time_raw;
46 out << YAML::Key << "total_sim_time";
47 out << YAML::Value << report.total_sim_time;
48 out << YAML::EndMap;
49
50 out << YAML::Key << "settings";
51 out << YAML::BeginMap;
52 out << YAML::Key << "timeout-first-lap";
53 out << YAML::Value << report.timeout_first_lap;
54 out << YAML::Key << "timeout-total";
55 out << YAML::Value << report.timeout_total;
56 out << YAML::Key << "oc_detect";
57 out << YAML::Value << report.off_course_detect;
58 out << YAML::Key << "doo_detect";
59 out << YAML::Value << report.cone_hit_detect;
60 out << YAML::Key << "uss_detect";
61 out << YAML::Value << report.uss_detect;
62 out << YAML::Key << "dnf_detect";
63 out << YAML::Value << report.dnf_detect;
64 out << YAML::Key << "finish_validate";
65 out << YAML::Value << report.finish_validate;
66 out << YAML::EndMap;
67
68 out << YAML::Key << "laps";
69 out << YAML::BeginSeq;
70 for (int i = 0; i < report.lap_times.size(); ++i)
71 {
72 out << YAML::BeginMap;
73 out << YAML::Key << "lap";
74 out << YAML::BeginMap;
75 out << YAML::Key << "time";
76 out << YAML::Value << report.lap_times[i].time;
77 out << YAML::Key << "sectors";
78 out << YAML::Flow << YAML::BeginSeq;
79 for (int j = 0; j < report.lap_times[i].sector_times.size(); ++j)
80 {
81 out << report.lap_times[i].sector_times[j];
82 }
83 out << YAML::EndSeq;
84 out << YAML::EndMap;
85 out << YAML::EndMap;
86 }
87 out << YAML::EndSeq;
88
89 out << YAML::Key << "penalties";
90 out << YAML::BeginSeq;
91 for (int i = 0; i < report.penalties.size(); ++i)
92 {
93 out << YAML::BeginMap;
94 out << YAML::Key << "penalty";
95 out << YAML::BeginMap;
96 out << YAML::Key << "lap";
97 out << YAML::Value << report.penalties[i].lap;
98 out << YAML::Key << "time";
99 out << YAML::Value << report.penalties[i].penalty_time;
100 out << YAML::Key << "occurence_time";
101 out << YAML::Value << report.penalties[i].occurence_time;
102 out << YAML::Key << "reason";
103 out << YAML::Value << report.penalties[i].reason;
104 out << YAML::Key << "car_position";
105 out << YAML::Flow << YAML::BeginSeq;
106 out << report.penalties[i].position.x() << report.penalties[i].position.y() << report.penalties[i].position.z();
107 out << YAML::EndSeq;
108 out << YAML::EndMap;
109 out << YAML::EndMap;
110 }
111 out << YAML::EndSeq;
112
113 out << YAML::EndMap;
114 out << YAML::EndMap;
115 strftime(buffer, 80, "%F-%H-%M-%S", timeinfo);
116 std::string path = dir + "/report-" + std::string(buffer) + ".yaml";
117 RCLCPP_INFO_STREAM(rclcpp::get_logger("pacsim_logger"), "Writing report to " << path);
118 std::ofstream fout(path);
119 fout << out.c_str();
120
121 return true;
122}
bool reportToFile(Report report, std::string dir)
bool uss_detect
Definition types.hpp:147
std::string track_name
Definition types.hpp:132
std::string perception_config_file
Definition types.hpp:133
double final_time_raw
Definition types.hpp:142
double timeout_total
Definition types.hpp:150
std::string sensors_config_file
Definition types.hpp:134
std::vector< Penalty > penalties
Definition types.hpp:168
bool success
Definition types.hpp:139
std::string discipline
Definition types.hpp:138
int seed
Definition types.hpp:136
double final_time
Definition types.hpp:141
bool off_course_detect
Definition types.hpp:145
double timeout_first_lap
Definition types.hpp:151
std::string dnf_reason
Definition types.hpp:140
bool finish_validate
Definition types.hpp:149
bool cone_hit_detect
Definition types.hpp:146
bool dnf_detect
Definition types.hpp:148
std::string vehicle_config_file
Definition types.hpp:135
std::vector< LapTime > lap_times
Definition types.hpp:157
double total_sim_time
Definition types.hpp:143