Instrument metrics in GlobalTrajectoryBuilder. (#945)

RFC=[0014](https://github.com/googlecartographer/rfcs/blob/master/text/0014-monitoring.md)
master
gaschler 2018-03-14 14:51:40 +01:00 committed by GitHub
parent 0190e7cd99
commit 36df3eec19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 0 deletions

View File

@ -19,13 +19,18 @@
#include <memory> #include <memory>
#include "cartographer/common/make_unique.h" #include "cartographer/common/make_unique.h"
#include "cartographer/common/time.h"
#include "cartographer/mapping/local_slam_result_data.h" #include "cartographer/mapping/local_slam_result_data.h"
#include "cartographer/metrics/family_factory.h"
#include "glog/logging.h" #include "glog/logging.h"
namespace cartographer { namespace cartographer {
namespace mapping { namespace mapping {
namespace { namespace {
static auto* kLocalSlamMatchingResults = metrics::Counter::Null();
static auto* kLocalSlamInsertionResults = metrics::Counter::Null();
template <typename LocalTrajectoryBuilder, typename PoseGraph> template <typename LocalTrajectoryBuilder, typename PoseGraph>
class GlobalTrajectoryBuilder : public mapping::TrajectoryBuilderInterface { class GlobalTrajectoryBuilder : public mapping::TrajectoryBuilderInterface {
public: public:
@ -59,8 +64,10 @@ class GlobalTrajectoryBuilder : public mapping::TrajectoryBuilderInterface {
// The range data has not been fully accumulated yet. // The range data has not been fully accumulated yet.
return; return;
} }
kLocalSlamMatchingResults->Increment();
std::unique_ptr<InsertionResult> insertion_result; std::unique_ptr<InsertionResult> insertion_result;
if (matching_result->insertion_result != nullptr) { if (matching_result->insertion_result != nullptr) {
kLocalSlamInsertionResults->Increment();
auto node_id = pose_graph_->AddNode( auto node_id = pose_graph_->AddNode(
matching_result->insertion_result->constant_data, trajectory_id_, matching_result->insertion_result->constant_data, trajectory_id_,
matching_result->insertion_result->insertion_submaps); matching_result->insertion_result->insertion_submaps);
@ -149,5 +156,13 @@ std::unique_ptr<TrajectoryBuilderInterface> CreateGlobalTrajectoryBuilder3D(
local_slam_result_callback); local_slam_result_callback);
} }
void GlobalTrajectoryBuilderRegisterMetrics(metrics::FamilyFactory* factory) {
auto* results = factory->NewCounterFamily(
"/mapping/internal/global_trajectory_builder/local_slam_results",
"Local SLAM results");
kLocalSlamMatchingResults = results->Add({{"type", "MatchingResult"}});
kLocalSlamInsertionResults = results->Add({{"type", "InsertionResult"}});
}
} // namespace mapping } // namespace mapping
} // namespace cartographer } // namespace cartographer

View File

@ -25,6 +25,7 @@
#include "cartographer/mapping/internal/3d/pose_graph_3d.h" #include "cartographer/mapping/internal/3d/pose_graph_3d.h"
#include "cartographer/mapping/local_slam_result_data.h" #include "cartographer/mapping/local_slam_result_data.h"
#include "cartographer/mapping/trajectory_builder_interface.h" #include "cartographer/mapping/trajectory_builder_interface.h"
#include "cartographer/metrics/family_factory.h"
namespace cartographer { namespace cartographer {
namespace mapping { namespace mapping {
@ -41,6 +42,9 @@ std::unique_ptr<TrajectoryBuilderInterface> CreateGlobalTrajectoryBuilder3D(
const TrajectoryBuilderInterface::LocalSlamResultCallback& const TrajectoryBuilderInterface::LocalSlamResultCallback&
local_slam_result_callback); local_slam_result_callback);
void GlobalTrajectoryBuilderRegisterMetrics(
metrics::FamilyFactory* family_factory);
} // namespace mapping } // namespace mapping
} // namespace cartographer } // namespace cartographer

View File

@ -20,6 +20,7 @@
#include "cartographer/mapping/internal/2d/pose_graph/constraint_builder_2d.h" #include "cartographer/mapping/internal/2d/pose_graph/constraint_builder_2d.h"
#include "cartographer/mapping/internal/3d/local_trajectory_builder_3d.h" #include "cartographer/mapping/internal/3d/local_trajectory_builder_3d.h"
#include "cartographer/mapping/internal/3d/pose_graph/constraint_builder_3d.h" #include "cartographer/mapping/internal/3d/pose_graph/constraint_builder_3d.h"
#include "cartographer/mapping/internal/global_trajectory_builder.h"
namespace cartographer { namespace cartographer {
namespace metrics { namespace metrics {
@ -27,6 +28,7 @@ namespace metrics {
void RegisterAllMetrics(FamilyFactory* registry) { void RegisterAllMetrics(FamilyFactory* registry) {
mapping::pose_graph::ConstraintBuilder2D::RegisterMetrics(registry); mapping::pose_graph::ConstraintBuilder2D::RegisterMetrics(registry);
mapping::pose_graph::ConstraintBuilder3D::RegisterMetrics(registry); mapping::pose_graph::ConstraintBuilder3D::RegisterMetrics(registry);
mapping::GlobalTrajectoryBuilderRegisterMetrics(registry);
mapping::LocalTrajectoryBuilder2D::RegisterMetrics(registry); mapping::LocalTrajectoryBuilder2D::RegisterMetrics(registry);
mapping::LocalTrajectoryBuilder3D::RegisterMetrics(registry); mapping::LocalTrajectoryBuilder3D::RegisterMetrics(registry);
} }