trajectory_optimization
v1.3.1
Loading...
Searching...
No Matches
performance_logger.hpp
Go to the documentation of this file.
1
// Copyright Institute for Automotive Engineering (ika), RWTH Aachen University
2
// SPDX-License-Identifier: Apache-2.0
3
4
#pragma once
5
6
#include <cstdint>
7
#include <filesystem>
8
#include <fstream>
9
#include <string>
10
11
#include <acados_c/ocp_nlp_interface.h>
12
13
namespace
trajectory_optimization
{
14
15
struct
PerformanceMetrics
{
16
uint64_t
cycle
= 0;
17
int64_t
ego_stamp_ns
= 0;
18
int64_t
reference_stamp_ns
= 0;
19
int64_t
route_stamp_ns
= 0;
20
int
status
= 0;
21
int
sqp_iter
= 0;
22
int
qp_iter
= 0;
23
int
qp_status
= 0;
24
int
reference_points
= 0;
25
int
objects
= 0;
26
bool
published
=
false
;
27
28
double
cycle_ms
= 0.0;
29
double
preprocessing_ms
= 0.0;
30
double
solve_wall_ms
= 0.0;
31
double
postprocessing_ms
= 0.0;
32
double
acados_total_ms
= 0.0;
33
double
acados_lin_ms
= 0.0;
34
double
acados_sim_ms
= 0.0;
35
double
acados_qp_ms
= 0.0;
36
double
acados_qp_solver_ms
= 0.0;
37
double
acados_qp_xcond_ms
= 0.0;
38
double
acados_reg_ms
= 0.0;
39
double
acados_glob_ms
= 0.0;
40
double
acados_preparation_ms
= 0.0;
41
double
acados_feedback_ms
= 0.0;
42
43
double
cost_value
= 0.0;
44
double
nlp_res
= 0.0;
45
double
kkt_norm_inf
= 0.0;
46
double
res_stat
= 0.0;
47
double
res_eq
= 0.0;
48
double
res_ineq
= 0.0;
49
double
res_comp
= 0.0;
50
};
51
52
class
PerformanceLogger
{
53
public
:
59
explicit
PerformanceLogger
(
const
std::string& node_name);
60
64
~PerformanceLogger
();
65
69
PerformanceLogger
(
const
PerformanceLogger
&) =
delete
;
70
76
PerformanceLogger
&
operator=
(
const
PerformanceLogger
&) =
delete
;
77
81
PerformanceLogger
(
PerformanceLogger
&&) =
delete
;
82
88
PerformanceLogger
&
operator=
(
PerformanceLogger
&&) =
delete
;
89
95
void
write
(
const
PerformanceMetrics
& metrics);
96
107
static
void
collectSolverStatistics
(
PerformanceMetrics
& metrics,
108
ocp_nlp_solver* solver,
109
ocp_nlp_config* config,
110
ocp_nlp_dims* dims,
111
ocp_nlp_in* input,
112
ocp_nlp_out* output);
113
119
const
std::filesystem::path&
path
()
const
{
return
path_
; }
120
121
private
:
122
static
constexpr
uint64_t
FLUSH_INTERVAL
= 100;
123
124
std::filesystem::path
path_
;
125
std::ofstream
stream_
;
126
uint64_t
records_since_flush_
= 0;
127
};
128
129
}
// namespace trajectory_optimization
trajectory_optimization::PerformanceLogger
Definition
performance_logger.hpp:52
trajectory_optimization::PerformanceLogger::operator=
PerformanceLogger & operator=(PerformanceLogger &&)=delete
Move assignment is disabled to keep the log stream bound to one logger.
trajectory_optimization::PerformanceLogger::PerformanceLogger
PerformanceLogger(const std::string &node_name)
Creates a CSV performance log for the given node.
Definition
performance_logger.cpp:36
trajectory_optimization::PerformanceLogger::PerformanceLogger
PerformanceLogger(const PerformanceLogger &)=delete
Copy construction is disabled because the logger owns a file stream.
trajectory_optimization::PerformanceLogger::path
const std::filesystem::path & path() const
Returns the path of the CSV performance log.
Definition
performance_logger.hpp:119
trajectory_optimization::PerformanceLogger::PerformanceLogger
PerformanceLogger(PerformanceLogger &&)=delete
Move construction is disabled to keep the log stream bound to one logger.
trajectory_optimization::PerformanceLogger::path_
std::filesystem::path path_
Definition
performance_logger.hpp:124
trajectory_optimization::PerformanceLogger::operator=
PerformanceLogger & operator=(const PerformanceLogger &)=delete
Copy assignment is disabled because the logger owns a file stream.
trajectory_optimization::PerformanceLogger::write
void write(const PerformanceMetrics &metrics)
Appends one set of performance metrics to the CSV log.
Definition
performance_logger.cpp:104
trajectory_optimization::PerformanceLogger::collectSolverStatistics
static void collectSolverStatistics(PerformanceMetrics &metrics, ocp_nlp_solver *solver, ocp_nlp_config *config, ocp_nlp_dims *dims, ocp_nlp_in *input, ocp_nlp_out *output)
Reads timing, iteration, cost, and residual statistics from acados.
Definition
performance_logger.cpp:67
trajectory_optimization::PerformanceLogger::FLUSH_INTERVAL
static constexpr uint64_t FLUSH_INTERVAL
Definition
performance_logger.hpp:122
trajectory_optimization::PerformanceLogger::~PerformanceLogger
~PerformanceLogger()
Flushes and closes the performance log.
Definition
performance_logger.cpp:62
trajectory_optimization::PerformanceLogger::records_since_flush_
uint64_t records_since_flush_
Definition
performance_logger.hpp:126
trajectory_optimization::PerformanceLogger::stream_
std::ofstream stream_
Definition
performance_logger.hpp:125
trajectory_optimization
Namespace for trajectory_optimization package.
Definition
ocp_model_handler.hpp:21
trajectory_optimization::PerformanceMetrics
Definition
performance_logger.hpp:15
trajectory_optimization::PerformanceMetrics::acados_glob_ms
double acados_glob_ms
Definition
performance_logger.hpp:39
trajectory_optimization::PerformanceMetrics::res_ineq
double res_ineq
Definition
performance_logger.hpp:48
trajectory_optimization::PerformanceMetrics::published
bool published
Definition
performance_logger.hpp:26
trajectory_optimization::PerformanceMetrics::res_eq
double res_eq
Definition
performance_logger.hpp:47
trajectory_optimization::PerformanceMetrics::cost_value
double cost_value
Definition
performance_logger.hpp:43
trajectory_optimization::PerformanceMetrics::acados_reg_ms
double acados_reg_ms
Definition
performance_logger.hpp:38
trajectory_optimization::PerformanceMetrics::cycle_ms
double cycle_ms
Definition
performance_logger.hpp:28
trajectory_optimization::PerformanceMetrics::kkt_norm_inf
double kkt_norm_inf
Definition
performance_logger.hpp:45
trajectory_optimization::PerformanceMetrics::res_stat
double res_stat
Definition
performance_logger.hpp:46
trajectory_optimization::PerformanceMetrics::res_comp
double res_comp
Definition
performance_logger.hpp:49
trajectory_optimization::PerformanceMetrics::acados_qp_solver_ms
double acados_qp_solver_ms
Definition
performance_logger.hpp:36
trajectory_optimization::PerformanceMetrics::acados_lin_ms
double acados_lin_ms
Definition
performance_logger.hpp:33
trajectory_optimization::PerformanceMetrics::status
int status
Definition
performance_logger.hpp:20
trajectory_optimization::PerformanceMetrics::acados_preparation_ms
double acados_preparation_ms
Definition
performance_logger.hpp:40
trajectory_optimization::PerformanceMetrics::nlp_res
double nlp_res
Definition
performance_logger.hpp:44
trajectory_optimization::PerformanceMetrics::acados_qp_ms
double acados_qp_ms
Definition
performance_logger.hpp:35
trajectory_optimization::PerformanceMetrics::objects
int objects
Definition
performance_logger.hpp:25
trajectory_optimization::PerformanceMetrics::acados_total_ms
double acados_total_ms
Definition
performance_logger.hpp:32
trajectory_optimization::PerformanceMetrics::sqp_iter
int sqp_iter
Definition
performance_logger.hpp:21
trajectory_optimization::PerformanceMetrics::ego_stamp_ns
int64_t ego_stamp_ns
Definition
performance_logger.hpp:17
trajectory_optimization::PerformanceMetrics::preprocessing_ms
double preprocessing_ms
Definition
performance_logger.hpp:29
trajectory_optimization::PerformanceMetrics::qp_iter
int qp_iter
Definition
performance_logger.hpp:22
trajectory_optimization::PerformanceMetrics::solve_wall_ms
double solve_wall_ms
Definition
performance_logger.hpp:30
trajectory_optimization::PerformanceMetrics::qp_status
int qp_status
Definition
performance_logger.hpp:23
trajectory_optimization::PerformanceMetrics::postprocessing_ms
double postprocessing_ms
Definition
performance_logger.hpp:31
trajectory_optimization::PerformanceMetrics::reference_points
int reference_points
Definition
performance_logger.hpp:24
trajectory_optimization::PerformanceMetrics::route_stamp_ns
int64_t route_stamp_ns
Definition
performance_logger.hpp:19
trajectory_optimization::PerformanceMetrics::acados_sim_ms
double acados_sim_ms
Definition
performance_logger.hpp:34
trajectory_optimization::PerformanceMetrics::acados_qp_xcond_ms
double acados_qp_xcond_ms
Definition
performance_logger.hpp:37
trajectory_optimization::PerformanceMetrics::cycle
uint64_t cycle
Definition
performance_logger.hpp:16
trajectory_optimization::PerformanceMetrics::acados_feedback_ms
double acados_feedback_ms
Definition
performance_logger.hpp:41
trajectory_optimization::PerformanceMetrics::reference_stamp_ns
int64_t reference_stamp_ns
Definition
performance_logger.hpp:18
trajectory_optimization
include
trajectory_optimization
performance_logger.hpp
Generated by
1.12.0