diff --git a/crane_robot_skills/include/crane_robot_skills/skill_base.hpp b/crane_robot_skills/include/crane_robot_skills/skill_base.hpp index fffe99c5f..98cc8ed03 100644 --- a/crane_robot_skills/include/crane_robot_skills/skill_base.hpp +++ b/crane_robot_skills/include/crane_robot_skills/skill_base.hpp @@ -149,6 +149,8 @@ class SkillInterface command_base->latest_msg.skill_name = name; } + virtual ~SkillInterface() { visualizer->clearBuffer(); } + const std::string name; virtual Status run( diff --git a/session/crane_planner_plugins/include/crane_planner_plugins/planner_base.hpp b/session/crane_planner_plugins/include/crane_planner_plugins/planner_base.hpp index d3516fe91..f43bb02f3 100644 --- a/session/crane_planner_plugins/include/crane_planner_plugins/planner_base.hpp +++ b/session/crane_planner_plugins/include/crane_planner_plugins/planner_base.hpp @@ -54,6 +54,8 @@ class PlannerBase { } + virtual ~PlannerBase() { visualizer->clearBuffer(); } + crane_msgs::srv::RobotSelect::Response doRobotSelect( const crane_msgs::srv::RobotSelect::Request::SharedPtr request, const std::unordered_map & prev_roles, PlannerContext & context) diff --git a/utility/crane_msg_wrappers/include/crane_msg_wrappers/crane_visualizer_wrapper.hpp b/utility/crane_msg_wrappers/include/crane_msg_wrappers/crane_visualizer_wrapper.hpp index 938a04610..4418426f2 100644 --- a/utility/crane_msg_wrappers/include/crane_msg_wrappers/crane_visualizer_wrapper.hpp +++ b/utility/crane_msg_wrappers/include/crane_msg_wrappers/crane_visualizer_wrapper.hpp @@ -601,9 +601,12 @@ struct CraneVisualizerBuffer if (layer == "") { CraneVisualizerBuffer::buffer->message_buffer.svg_primitive_arrays.clear(); } else { - ranges::actions::remove_if( - CraneVisualizerBuffer::buffer->message_buffer.svg_primitive_arrays, - [&layer](const auto & layer_array) { return layer_array.layer == layer; }); + for (auto & svg_layer : CraneVisualizerBuffer::buffer->message_buffer.svg_primitive_arrays | + ranges::views::filter([&](auto svg_primitive_array) { + return svg_primitive_array.layer == layer; + })) { + svg_layer.svg_primitives.clear(); + } } } } @@ -633,6 +636,7 @@ struct CraneVisualizerBuffer void clearBuffer() { + clear(); if (CraneVisualizerBuffer::active()) { CraneVisualizerBuffer::clear(layer); }