diff --git a/cartographer/cloud/internal/map_builder_server.cc b/cartographer/cloud/internal/map_builder_server.cc index d298be3..88ca1a1 100644 --- a/cartographer/cloud/internal/map_builder_server.cc +++ b/cartographer/cloud/internal/map_builder_server.cc @@ -110,8 +110,11 @@ MapBuilderServer::MapBuilderServer( << "Set either use_trajectory_builder_2d or use_trajectory_builder_3d"; } map_builder_->pose_graph()->SetGlobalSlamOptimizationCallback( - std::bind(&MapBuilderServer::OnGlobalSlamOptimizations, this, - std::placeholders::_1, std::placeholders::_2)); + [this](const std::map& last_optimized_submap_ids, + const std::map& last_optimized_node_ids) { + OnGlobalSlamOptimizations(last_optimized_submap_ids, + last_optimized_node_ids); + }); } void MapBuilderServer::Start() { diff --git a/cartographer/mapping/internal/2d/pose_graph_2d.cc b/cartographer/mapping/internal/2d/pose_graph_2d.cc index 55d0238..c3825e0 100644 --- a/cartographer/mapping/internal/2d/pose_graph_2d.cc +++ b/cartographer/mapping/internal/2d/pose_graph_2d.cc @@ -149,8 +149,10 @@ void PoseGraph2D::AddWorkItem( if (work_queue_ == nullptr) { if (work_item() == WorkItem::Result::kRunOptimization) { work_queue_ = common::make_unique(); - constraint_builder_.WhenDone(std::bind(&PoseGraph2D::HandleWorkQueue, - this, std::placeholders::_1)); + constraint_builder_.WhenDone( + [this](const constraints::ConstraintBuilder2D::Result& result) { + HandleWorkQueue(result); + }); } } else { const auto now = std::chrono::steady_clock::now(); @@ -437,7 +439,9 @@ void PoseGraph2D::HandleWorkQueue( LOG(INFO) << "Remaining work items in queue: " << work_queue_->size(); // We have to optimize again. constraint_builder_.WhenDone( - std::bind(&PoseGraph2D::HandleWorkQueue, this, std::placeholders::_1)); + [this](const constraints::ConstraintBuilder2D::Result& result) { + HandleWorkQueue(result); + }); } void PoseGraph2D::WaitForAllComputations() { diff --git a/cartographer/mapping/internal/3d/pose_graph_3d.cc b/cartographer/mapping/internal/3d/pose_graph_3d.cc index b221efb..7cb473e 100644 --- a/cartographer/mapping/internal/3d/pose_graph_3d.cc +++ b/cartographer/mapping/internal/3d/pose_graph_3d.cc @@ -152,7 +152,9 @@ void PoseGraph3D::AddWorkItem( } else if (work_item() == WorkItem::Result::kRunOptimization) { work_queue_ = common::make_unique(); constraint_builder_.WhenDone( - std::bind(&PoseGraph3D::HandleWorkQueue, this, std::placeholders::_1)); + [this](const constraints::ConstraintBuilder3D::Result& result) { + HandleWorkQueue(result); + }); } } @@ -452,7 +454,9 @@ void PoseGraph3D::HandleWorkQueue( LOG(INFO) << "Remaining work items in queue: " << work_queue_->size(); // We have to optimize again. constraint_builder_.WhenDone( - std::bind(&PoseGraph3D::HandleWorkQueue, this, std::placeholders::_1)); + [this](const constraints::ConstraintBuilder3D::Result& result) { + HandleWorkQueue(result); + }); } void PoseGraph3D::WaitForAllComputations() { diff --git a/cartographer/mapping/internal/constraints/constraint_builder_2d_test.cc b/cartographer/mapping/internal/constraints/constraint_builder_2d_test.cc index 8913d84..c19fcaa 100644 --- a/cartographer/mapping/internal/constraints/constraint_builder_2d_test.cc +++ b/cartographer/mapping/internal/constraints/constraint_builder_2d_test.cc @@ -60,7 +60,9 @@ TEST_F(ConstraintBuilder2DTest, CallsBack) { EXPECT_CALL(mock_, Run(::testing::IsEmpty())); constraint_builder_->NotifyEndOfNode(); constraint_builder_->WhenDone( - std::bind(&MockCallback::Run, &mock_, std::placeholders::_1)); + [this](const constraints::ConstraintBuilder2D::Result& result) { + mock_.Run(result); + }); thread_pool_.WaitUntilIdle(); EXPECT_EQ(constraint_builder_->GetNumFinishedNodes(), 1); } @@ -98,7 +100,9 @@ TEST_F(ConstraintBuilder2DTest, FindsConstraints) { &PoseGraphInterface::Constraint::tag, PoseGraphInterface::Constraint::INTER_SUBMAP))))); constraint_builder_->WhenDone( - std::bind(&MockCallback::Run, &mock_, std::placeholders::_1)); + [this](const constraints::ConstraintBuilder2D::Result& result) { + mock_.Run(result); + }); thread_pool_.WaitUntilIdle(); constraint_builder_->DeleteScanMatcher(submap_id); } diff --git a/cartographer/mapping/internal/constraints/constraint_builder_3d_test.cc b/cartographer/mapping/internal/constraints/constraint_builder_3d_test.cc index 6da38c8..d849509 100644 --- a/cartographer/mapping/internal/constraints/constraint_builder_3d_test.cc +++ b/cartographer/mapping/internal/constraints/constraint_builder_3d_test.cc @@ -63,7 +63,9 @@ TEST_F(ConstraintBuilder3DTest, CallsBack) { EXPECT_CALL(mock_, Run(::testing::IsEmpty())); constraint_builder_->NotifyEndOfNode(); constraint_builder_->WhenDone( - std::bind(&MockCallback::Run, &mock_, std::placeholders::_1)); + [this](const constraints::ConstraintBuilder3D::Result& result) { + mock_.Run(result); + }); thread_pool_.WaitUntilIdle(); EXPECT_EQ(constraint_builder_->GetNumFinishedNodes(), 1); } @@ -108,7 +110,9 @@ TEST_F(ConstraintBuilder3DTest, FindsConstraints) { &PoseGraphInterface::Constraint::tag, PoseGraphInterface::Constraint::INTER_SUBMAP))))); constraint_builder_->WhenDone( - std::bind(&MockCallback::Run, &mock_, std::placeholders::_1)); + [this](const constraints::ConstraintBuilder3D::Result& result) { + mock_.Run(result); + }); thread_pool_.WaitUntilIdle(); constraint_builder_->DeleteScanMatcher(submap_id); }