Moving calibration file naming to a centralized call, for consistency
Moving to format of:
calibration_NODE_NAME-TEAM#-CAMERA#_cam-24-XX_TIMESTAMP.json
Change-Id: Iece87428a9428cbdd70496f7335f5ec977357200
Signed-off-by: Jim Ostrowski <yimmy13@gmail.com>
diff --git a/frc971/vision/BUILD b/frc971/vision/BUILD
index d96822b..46b7cea 100644
--- a/frc971/vision/BUILD
+++ b/frc971/vision/BUILD
@@ -373,6 +373,7 @@
"//frc971/vision:calibration_fbs",
"//third_party:opencv",
"@com_github_google_glog//:glog",
+ "@com_google_absl//absl/strings:str_format",
],
)
diff --git a/frc971/vision/intrinsics_calibration_lib.cc b/frc971/vision/intrinsics_calibration_lib.cc
index c48c12d..59a45ac 100644
--- a/frc971/vision/intrinsics_calibration_lib.cc
+++ b/frc971/vision/intrinsics_calibration_lib.cc
@@ -249,18 +249,12 @@
std::stringstream time_ss;
time_ss << realtime_now;
- std::string camera_number_optional = "";
std::optional<uint16_t> camera_number =
frc971::vision::CameraNumberFromChannel(camera_channel_);
- if (camera_number != std::nullopt) {
- camera_number_optional = "-" + std::to_string(camera_number.value());
- }
- const std::string calibration_filename =
- calibration_folder_ +
- absl::StrFormat("/calibration_%s-%d-%d%s_cam-%s_%s.json",
- cpu_type_.value(), team_number.value(),
- cpu_number_.value(), camera_number_optional, camera_id_,
- time_ss.str());
+ CHECK(camera_number.has_value());
+ std::string calibration_filename =
+ CalibrationFilename(calibration_folder_, hostname_, team_number.value(),
+ camera_number.value(), camera_id_, time_ss.str());
LOG(INFO) << calibration_filename << " -> "
<< aos::FlatbufferToJson(camera_calibration,
diff --git a/frc971/vision/vision_util_lib.cc b/frc971/vision/vision_util_lib.cc
index bfd6209..45aa199 100644
--- a/frc971/vision/vision_util_lib.cc
+++ b/frc971/vision/vision_util_lib.cc
@@ -1,5 +1,6 @@
#include "frc971/vision/vision_util_lib.h"
+#include "absl/strings/str_format.h"
#include "glog/logging.h"
namespace frc971::vision {
@@ -58,4 +59,19 @@
return camera_number;
}
+std::string CalibrationFilename(std::string calibration_folder,
+ std::string node_name, int team_number,
+ int camera_number, std::string camera_id,
+ std::string timestamp) {
+ // Get rid of any fractional seconds-- we shouldn't need those and it makes
+ // the string unnecessarily longer
+ timestamp = timestamp.substr(0, timestamp.find("."));
+ std::string calibration_filename =
+ calibration_folder +
+ absl::StrFormat("/calibration_%s-%d-%d_cam-%s_%s.json", node_name.c_str(),
+ team_number, camera_number, camera_id.c_str(),
+ timestamp.c_str());
+ return calibration_filename;
+}
+
} // namespace frc971::vision
diff --git a/frc971/vision/vision_util_lib.h b/frc971/vision/vision_util_lib.h
index 8ce651c..a26af3b 100644
--- a/frc971/vision/vision_util_lib.h
+++ b/frc971/vision/vision_util_lib.h
@@ -25,6 +25,12 @@
// not have a number
std::optional<uint16_t> CameraNumberFromChannel(std::string camera_channel);
+// Return a calibration filename to save to based on the given data
+std::string CalibrationFilename(std::string calibration_folder,
+ std::string node_name, int team_number,
+ int camera_number, std::string camera_id,
+ std::string timestamp);
+
} // namespace frc971::vision
#endif // FRC971_VISION_VISION_UTIL_LIB_H_