Lens AI Profiler Cpp
trackingprofile.h
1 #ifndef TRACKING_PROFILE_H
2 #define TRACKING_PROFILE_H
3 
4 #include <string>
5 #include <map>
6 #include "saver.h"
7 #include "generic.h"
8 #include "kll_sketch.hpp"
9 #include <iostream>
10 #include <cmath>
11 #include <vector>
12 #include <Eigen/Dense> // For matrix operations and quaternion support
13 
14 // Forward declaration of classes or structs if needed
15 class Saver;
16 
17 // Define KLL sketch type
19 
20 // 2D and 3D position structs
21 struct Position2D {
22  float x, y;
23 };
24 
25 struct Position3D {
26  float x, y, z;
27 };
28 
29 // Quaternion struct
30 struct Quaternion {
31  float w, x, y, z;
32 };
33 
34 // Angular Velocity struct (in radians/second)
35 struct AngularVelocity {
36  float roll_rate, pitch_rate, yaw_rate;
37 };
38 
44 public:
50  TrackingProfile(std::string conf_path, int save_interval);
51 
60  void log_detection_confidence(float confidence);
61 
66  void log_track_length(int length);
67 
72  void log_iou(float iou);
73  void log_orientation_error(float orientation_error);
74  void log_angular_velocity_latency(float angular_velocity_latency);
75  // Methods for Data Sketches (KLL Sketch)
76  void log_position_error(float position_error);
77  void log_orientation_error(const Quaternion& orientation);
78  void log_angular_velocity_latency(const AngularVelocity& angular_velocity);
79  void log_quaternion_drift(float quaternion_drift);
80  void log_covariance_spread(float covariance_spread);
81  void log_anomalous_rotation(float anomalous_rotation);
82  void log_angular_divergence(float angular_divergance);
83 private:
84  Saver* saver;
85  std::map<std::string, std::string> modelConfig;
86  std::string statSavepath;
87 
88  // KLL sketches for tracking statistics
89  distributionBox confidence_sketch_;
90  distributionBox track_length_sketch_;
91  distributionBox iou_sketch_;
92  distributionBox positionError_sketch;
93  distributionBox orientationError_sketch;
94  distributionBox angularVelocityLatency_sketch;
95  distributionBox covarianceSpread_sketch;
96  distributionBox angularDivergence_sketch;
97  distributionBox anomalousRotation_sketch;
98  distributionBox quaternionDrift_sketch;
99 
100  float positionError2D, positionError3D;
101  float orientationError;
102  float angularVelocityLatency;
103  float quaternionDrift;
104  float covarianceSpread;
105  float angularDivergence;
106  bool anomalousRotation;
107 
111  void registerStatistics(const std::map<std::string, std::vector<std::string>> trackerConfig);
112  // Configurations read from the INI file
113  std::map<std::string, std::vector<std::string>> trackerConfig;
114 
118  void cleanup();
119 };
120 
121 #endif // TRACKING_PROFILE_H
Definition: saver.h:39
Definition: trackingprofile.h:43
TrackingProfile(std::string conf_path, int save_interval)
Constructor to initialize the TrackerProfile object.
Definition: trackingprofile.cpp:11
void log_iou(float iou)
Log IoU to the IoU sketch.
Definition: trackingprofile.cpp:107
~TrackingProfile()
Destructor to clean up resources.
Definition: trackingprofile.cpp:40
void log_detection_confidence(float confidence)
Log detection confidence to the confidence sketch.
Definition: trackingprofile.cpp:91
void log_track_length(int length)
Log track length to the track length sketch.
Definition: trackingprofile.cpp:99
Definition: trackingmetrics.h:18
Definition: trackingmetrics.h:10
Definition: trackingmetrics.h:14
Definition: trackingprofile.h:30