diff --git a/cartographer/mapping/internal/global_trajectory_builder.cc b/cartographer/mapping/internal/global_trajectory_builder.cc index 81e4a9b..2296e10 100644 --- a/cartographer/mapping/internal/global_trajectory_builder.cc +++ b/cartographer/mapping/internal/global_trajectory_builder.cc @@ -19,13 +19,18 @@ #include #include "cartographer/common/make_unique.h" +#include "cartographer/common/time.h" #include "cartographer/mapping/local_slam_result_data.h" +#include "cartographer/metrics/family_factory.h" #include "glog/logging.h" namespace cartographer { namespace mapping { namespace { +static auto* kLocalSlamMatchingResults = metrics::Counter::Null(); +static auto* kLocalSlamInsertionResults = metrics::Counter::Null(); + template class GlobalTrajectoryBuilder : public mapping::TrajectoryBuilderInterface { public: @@ -59,8 +64,10 @@ class GlobalTrajectoryBuilder : public mapping::TrajectoryBuilderInterface { // The range data has not been fully accumulated yet. return; } + kLocalSlamMatchingResults->Increment(); std::unique_ptr insertion_result; if (matching_result->insertion_result != nullptr) { + kLocalSlamInsertionResults->Increment(); auto node_id = pose_graph_->AddNode( matching_result->insertion_result->constant_data, trajectory_id_, matching_result->insertion_result->insertion_submaps); @@ -149,5 +156,13 @@ std::unique_ptr CreateGlobalTrajectoryBuilder3D( 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 cartographer diff --git a/cartographer/mapping/internal/global_trajectory_builder.h b/cartographer/mapping/internal/global_trajectory_builder.h index a6fe399..754912d 100644 --- a/cartographer/mapping/internal/global_trajectory_builder.h +++ b/cartographer/mapping/internal/global_trajectory_builder.h @@ -25,6 +25,7 @@ #include "cartographer/mapping/internal/3d/pose_graph_3d.h" #include "cartographer/mapping/local_slam_result_data.h" #include "cartographer/mapping/trajectory_builder_interface.h" +#include "cartographer/metrics/family_factory.h" namespace cartographer { namespace mapping { @@ -41,6 +42,9 @@ std::unique_ptr CreateGlobalTrajectoryBuilder3D( const TrajectoryBuilderInterface::LocalSlamResultCallback& local_slam_result_callback); +void GlobalTrajectoryBuilderRegisterMetrics( + metrics::FamilyFactory* family_factory); + } // namespace mapping } // namespace cartographer diff --git a/cartographer/metrics/register.cc b/cartographer/metrics/register.cc index 4576693..283544d 100644 --- a/cartographer/metrics/register.cc +++ b/cartographer/metrics/register.cc @@ -20,6 +20,7 @@ #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/pose_graph/constraint_builder_3d.h" +#include "cartographer/mapping/internal/global_trajectory_builder.h" namespace cartographer { namespace metrics { @@ -27,6 +28,7 @@ namespace metrics { void RegisterAllMetrics(FamilyFactory* registry) { mapping::pose_graph::ConstraintBuilder2D::RegisterMetrics(registry); mapping::pose_graph::ConstraintBuilder3D::RegisterMetrics(registry); + mapping::GlobalTrajectoryBuilderRegisterMetrics(registry); mapping::LocalTrajectoryBuilder2D::RegisterMetrics(registry); mapping::LocalTrajectoryBuilder3D::RegisterMetrics(registry); }