From 8aa4a9d4b8dc9380a9b4f2b33fb555238c819567 Mon Sep 17 00:00:00 2001 From: Carl Delsey <carl.r.delsey@intel.com> Date: Wed, 24 Oct 2018 08:18:44 -0700 Subject: [PATCH] Do not let shared ptr delete transform buffer The transform buffer lifetime is part of the dwb controller. It can't be managed by shared_ptr. --- nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp b/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp index 405a4bce..d47db8a0 100644 --- a/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp +++ b/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp @@ -25,6 +25,8 @@ using nav2_tasks::TaskStatus; using dwb_core::DWBLocalPlanner; using dwb_core::CostmapROSPtr; +#define NO_OP_DELETER [](auto){} + namespace nav2_controller_dwb { @@ -49,7 +51,7 @@ DwbController::execute(const nav2_tasks::FollowPathCommand::SharedPtr command) try { auto path = nav_2d_utils::pathToPath2D(*command); auto nh = shared_from_this(); - planner_.initialize(nh, shared_ptr<tf2_ros::Buffer>(&tfBuffer_), cm_); + planner_.initialize(nh, shared_ptr<tf2_ros::Buffer>(&tfBuffer_, NO_OP_DELETER), cm_); planner_.setPlan(path); RCLCPP_INFO(get_logger(), "Initialized"); while (true) { -- GitLab