MCPcopy Create free account
hub / github.com/TJU-Aerial-Robotics/YOPO / initLogRecorder

Method initLogRecorder

Controller/src/so3_control/src/NetworkControl.cpp:3–73  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1#include "so3_control/NetworkControl.h"
2
3void NetworkControl::initLogRecorder()
4{
5 // Use file count as name to avoid date confusion
6 std::cout << "logger_file_name: " << logger_file_name << std::endl;
7 int max_number = -1;
8 boost::filesystem::path dir(logger_file_name);
9 if (boost::filesystem::exists(dir) && boost::filesystem::is_directory(dir)) {
10 std::regex filename_pattern(R"(^(\d+)_.*$)"); // 匹配以数字开头,并以"_"分隔的文件名
11 for (const auto& entry : boost::filesystem::directory_iterator(dir)) {
12 if (boost::filesystem::is_regular_file(entry)) {
13 std::string filename = entry.path().filename().string();
14 std::smatch match;
15 if (std::regex_match(filename, match, filename_pattern)) {
16 int number = std::stoi(match[1]); // 提取第一个"_"前的数字
17 max_number = std::max(max_number, number);
18 }
19 }
20 }
21 } else {
22 std::cerr << "Error: invalid logger path" << std::endl;
23 }
24 std::string fileCountStr = std::to_string(max_number + 1);
25 std::string temp_file_name = logger_file_name + fileCountStr + "_Net_logger_";
26 time_t timep;
27 timep = time(0);
28 char tmp[64];
29 strftime(tmp, sizeof(tmp), "%Y_%m_%d_%H_%M_%S", localtime(&timep));
30 temp_file_name += tmp;
31 temp_file_name += ".csv";
32 if (logger.is_open())
33 {
34 logger.close();
35 }
36 logger.open(temp_file_name.c_str(), std::ios::out);
37 std::cout << "logger: " << temp_file_name << std::endl;
38 if (!logger.is_open())
39 {
40 std::cout << "cannot open the logger." << std::endl;
41 }
42 else
43 {
44 logger << "timestamp" << ',';
45 logger << "cur_px" << ',';
46 logger << "cur_py" << ',';
47 logger << "cur_pz" << ',';
48 logger << "cur_vx" << ',';
49 logger << "cur_vy" << ',';
50 logger << "cur_vz" << ',';
51 logger << "cur_ax" << ',';
52 logger << "cur_ay" << ',';
53 logger << "cur_az" << ',';
54 logger << "des_px" << ',';
55 logger << "des_py" << ',';
56 logger << "des_pz" << ',';
57 logger << "des_vx" << ',';
58 logger << "des_vy" << ',';
59 logger << "des_vz" << ',';
60 logger << "des_ax" << ',';

Callers

nothing calls this directly

Calls 1

maxFunction · 0.50

Tested by

no test coverage detected