My Project 1.0
Holistic Fusion: A Generic Framework for Multimodal Sensor Fusion
Loading...
Searching...
No Matches
FileLogger.h
Go to the documentation of this file.
1/*
2Copyright 2024 by Julian Nubert, Robotic Systems Lab, ETH Zurich.
3All rights reserved.
4This file is released under the "BSD-3-Clause License".
5Please see the LICENSE file that has been included as part of this package.
6 */
7
8#ifndef FILE_LOGGER_H
9#define FILE_LOGGER_H
10
11// C++
12#include <fstream>
13#include <map>
14#include <optional>
15#include <string>
16
17// GTSAM Values
18#include <gtsam/geometry/Pose3.h>
19#include <gtsam/nonlinear/Values.h>
20
21// Workspace
23
24namespace holistic_fusion {
25
27 static constexpr const char* kTum = "tum";
28 static constexpr const char* kG2o = "g2o";
29 static constexpr const char* kCsv = "csv";
30};
31
32enum class FileFormatType { kCsv, kTum, kG2o };
33
35 public:
36 FileLogger() = default;
37 virtual ~FileLogger() = default;
38
39 // Create File Streams
40 // 1. CSV
41 // Pose3
42 static void createPose3CsvFileStream(std::map<std::string, std::ofstream>& fileStreams, const std::string& savePath,
43 const std::string& transformIdentifier, const std::string& timeString,
44 const bool saveCovarianceFlag);
45 // Latitude, Longitude, Altitude
46 static void createLatLonAltCsvFileStream(std::map<std::string, std::ofstream>& fileStreams, const std::string& savePath,
47 const std::string& transformIdentifier, const std::string& timeString);
48 // Point3
49 static void createPoint3CsvFileStream(std::map<std::string, std::ofstream>& fileStreams, const std::string& savePath,
50 const std::string& transformIdentifier, const std::string& timeString);
51 // Imu Bias
52 static void createImuBiasCsvFileStream(std::map<std::string, std::ofstream>& fileStreams, const std::string& savePath,
53 const std::string& stateCategoryIdentifier, const std::string& timeString);
54 // Double
55 static void createDoubleCsvFileStream(std::map<std::string, std::ofstream>& fileStreams, const std::string& savePath,
56 const std::string& transformIdentifier, const std::string& timeString);
57 // 2. TUM
58 // Pose3
59 static void createPose3TumFileStream(std::map<std::string, std::ofstream>& fileStreams, const std::string& savePath,
60 const std::string& transformIdentifier, const std::string& timeString);
61
62 // Write to File
63 // 1. CSV
64 // Pose3
65 static void writePose3ToCsvFile(std::map<std::string, std::ofstream>& fileStreams, const gtsam::Pose3& pose,
66 const std::string& transformIdentifier, const double timeStamp, const bool saveCovarianceFlag,
67 const std::optional<Eigen::Matrix<double, 6, 6>>& optionalPoseCovarianceInWorldRos = std::nullopt);
68 // Latitude, Longitude, Altitude
69 static void writeLatLonAltToCsvFile(std::map<std::string, std::ofstream>& fileStreams, const gtsam::Point3& point,
70 const std::string& transformIdentifier, const double timeStamp);
71 // Point3
72 static void writePoint3ToCsvFile(std::map<std::string, std::ofstream>& fileStreams, const gtsam::Point3& point,
73 const std::string& transformIdentifier, const double timeStamp);
74 // Imu Bias
75 static void writeImuBiasToCsvFile(std::map<std::string, std::ofstream>& fileStreams, const gtsam::imuBias::ConstantBias& imuBias,
76 const std::string& stateCategoryIdentifier, const double timeStamp);
77 // Double
78 static void writeDoubleToCsvFile(std::map<std::string, std::ofstream>& fileStreams, const double value,
79 const std::string& transformIdentifier, const double timeStamp);
80 // 2. TUM
81 // Pose3
82 static void writePose3ToTumFile(std::map<std::string, std::ofstream>& fileStreams, const gtsam::Pose3& pose,
83 const std::string& transformIdentifier, const double timeStamp);
84};
85
86} // namespace holistic_fusion
87
88#endif // FILE_LOGGER_H
static void writeLatLonAltToCsvFile(std::map< std::string, std::ofstream > &fileStreams, const gtsam::Point3 &point, const std::string &transformIdentifier, const double timeStamp)
static void createLatLonAltCsvFileStream(std::map< std::string, std::ofstream > &fileStreams, const std::string &savePath, const std::string &transformIdentifier, const std::string &timeString)
static void writePose3ToCsvFile(std::map< std::string, std::ofstream > &fileStreams, const gtsam::Pose3 &pose, const std::string &transformIdentifier, const double timeStamp, const bool saveCovarianceFlag, const std::optional< Eigen::Matrix< double, 6, 6 > > &optionalPoseCovarianceInWorldRos=std::nullopt)
static void writeDoubleToCsvFile(std::map< std::string, std::ofstream > &fileStreams, const double value, const std::string &transformIdentifier, const double timeStamp)
static void writePose3ToTumFile(std::map< std::string, std::ofstream > &fileStreams, const gtsam::Pose3 &pose, const std::string &transformIdentifier, const double timeStamp)
static void writePoint3ToCsvFile(std::map< std::string, std::ofstream > &fileStreams, const gtsam::Point3 &point, const std::string &transformIdentifier, const double timeStamp)
static void createPoint3CsvFileStream(std::map< std::string, std::ofstream > &fileStreams, const std::string &savePath, const std::string &transformIdentifier, const std::string &timeString)
static void createImuBiasCsvFileStream(std::map< std::string, std::ofstream > &fileStreams, const std::string &savePath, const std::string &stateCategoryIdentifier, const std::string &timeString)
virtual ~FileLogger()=default
static void createPose3CsvFileStream(std::map< std::string, std::ofstream > &fileStreams, const std::string &savePath, const std::string &transformIdentifier, const std::string &timeString, const bool saveCovarianceFlag)
static void createDoubleCsvFileStream(std::map< std::string, std::ofstream > &fileStreams, const std::string &savePath, const std::string &transformIdentifier, const std::string &timeString)
static void writeImuBiasToCsvFile(std::map< std::string, std::ofstream > &fileStreams, const gtsam::imuBias::ConstantBias &imuBias, const std::string &stateCategoryIdentifier, const double timeStamp)
static void createPose3TumFileStream(std::map< std::string, std::ofstream > &fileStreams, const std::string &savePath, const std::string &transformIdentifier, const std::string &timeString)
static constexpr const char * kTum
Definition FileLogger.h:27
static constexpr const char * kG2o
Definition FileLogger.h:28
static constexpr const char * kCsv
Definition FileLogger.h:29