35 #ifndef VP_RB_TRACKER_LOGGER_H
36 #define VP_RB_TRACKER_LOGGER_H
38 #include <visp3/core/vpConfig.h>
39 #include <visp3/core/vpMath.h>
40 #include <visp3/core/vpTime.h>
42 #if defined(VISP_HAVE_NLOHMANN_JSON)
43 #include VISP_NLOHMANN_JSON(json.hpp)
63 m_silhouetteExtractionTime = 0.0;
67 m_trackerIterStartTime.clear();
68 m_trackerFeatureExtractionTime.clear();
70 m_trackerFeatureTrackingTime.clear();
71 m_trackerVVSIterTimes.clear();
91 if (map.find(
id) == map.end()) {
92 map.insert(std::make_pair(
id, std::vector<double>()));
94 map.find(
id)->second.push_back(elapsed);
98 insertTrackerTime(m_trackerVVSIterTimes,
id, elapsed);
103 m_trackerIterStartTime[id] = elapsed;
108 m_trackerFeatureExtractionTime[id] = elapsed;
113 m_trackerFeatureTrackingTime[id] = elapsed;
118 m_trackerInitVVSTime[id] = elapsed;
123 m_driftTime = elapsed;
128 m_odometryTime = elapsed;
134 double m_silhouetteExtractionTime;
137 double m_odometryTime;
138 std::map<int, std::vector<double>> m_trackerVVSIterTimes;
140 std::map<int, double> m_trackerIterStartTime;
142 std::map<int, double> m_trackerFeatureExtractionTime;
144 std::map<int, double> m_trackerFeatureTrackingTime;
145 std::map<int, double> m_trackerInitVVSTime;
146 std::map<int, int> m_trackerNumFeatures;
152 const auto default_precision { out.precision() };
153 auto flags = out.flags();
154 out << std::setprecision(2) << std::fixed;
155 out <<
"====================================================" << std::endl;
156 out <<
"Render: " << timer.m_renderTime <<
"ms" << std::endl;
157 out <<
"Mask: " << timer.m_maskTime <<
"ms" << std::endl;
158 out <<
"Drift: " << timer.m_driftTime <<
"ms" << std::endl;
159 out <<
"Odometry: " << timer.m_odometryTime <<
"ms" << std::endl;
160 out <<
"Silhouette extraction: " << timer.m_silhouetteExtractionTime <<
"ms" << std::endl;
162 out <<
"Trackers: " << std::endl;
163 for (
const std::pair<
const int, std::vector<double>> &vvsIterData : timer.m_trackerVVSIterTimes) {
164 double trackingStartTime = timer.m_trackerIterStartTime.find(vvsIterData.first)->second;
165 double featTrackTime = timer.m_trackerFeatureTrackingTime.find(vvsIterData.first)->second;
166 double featExtractionTime = timer.m_trackerFeatureExtractionTime.find(vvsIterData.first)->second;
167 double initVVSTime = timer.m_trackerInitVVSTime.find(vvsIterData.first)->second;
169 double ttVVSIter = 0.f;
170 for (
double v : vvsIterData.second) {
173 out <<
"\t" << vvsIterData.first << std::endl;
174 out <<
"\t" <<
"\t" <<
"Tracking initialization: " << trackingStartTime <<
"ms" << std::endl;
175 out <<
"\t" <<
"\t" <<
"Feature extraction: " << featExtractionTime <<
"ms" << std::endl;
176 out <<
"\t" <<
"\t" <<
"Feature tracking: " << featTrackTime <<
"ms" << std::endl;
177 out <<
"\t" <<
"\t" <<
"VVS init: " << initVVSTime <<
"ms" << std::endl;
178 out <<
"\t" <<
"\t" <<
"VVS: " << ttVVSIter <<
"ms (" <<
vpMath::getMean(vvsIterData.second) <<
"ms"
181 out <<
"====================================================" << std::endl;
183 out << std::setprecision(default_precision);
friend std::ostream & operator<<(std::ostream &s, const vpArray2D< Type > &A)
error that can be emitted by ViSP classes.
@ notInitialized
Used to indicate that a parameter is not initialized.
static double getStdev(const std::vector< double > &v, bool useBesselCorrection=false)
static double getMean(const std::vector< double > &v)
void setTrackerFeatureTrackingTime(int id, double elapsed)
void setRenderTime(double elapsed)
void setOdometryTime(double elapsed)
void setInitVVSTime(int id, double elapsed)
void setMaskTime(double elapsed)
void setTrackerIterStartTime(int id, double elapsed)
void setSilhouetteTime(double elapsed)
void addTrackerVVSTime(int id, double elapsed)
void insertTrackerTime(std::map< int, std::vector< double >> &map, int id, double elapsed)
void setDriftDetectionTime(double elapsed)
void setTrackerFeatureExtractionTime(int id, double elapsed)
VISP_EXPORT double measureTimeMs()