Skip to content

Commit e728284

Browse files
Allowing QoS overrides to also be available for nodes using message filters (#5689)
Signed-off-by: SteveMacenski <[email protected]>
1 parent ebe9d7c commit e728284

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

nav2_amcl/include/nav2_amcl/amcl_node.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ class AmclNode : public nav2::LifecycleNode
412412
std::string scan_topic_{"scan"};
413413
std::string map_topic_{"map"};
414414
bool freespace_downsampling_ = false;
415+
bool allow_parameter_qos_overrides_ = true;
415416
};
416417

417418
} // namespace nav2_amcl

nav2_amcl/src/amcl_node.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,8 @@ AmclNode::initParameters()
947947
scan_topic_ = this->declare_or_get_parameter("scan_topic", std::string{"scan"});
948948
map_topic_ = this->declare_or_get_parameter("map_topic", std::string{"map"});
949949
freespace_downsampling_ = this->declare_or_get_parameter("freespace_downsampling", false);
950+
allow_parameter_qos_overrides_ = this->declare_or_get_parameter(
951+
"allow_parameter_qos_overrides", true);
950952

951953
save_pose_period_ = tf2::durationFromSec(1.0 / save_pose_rate);
952954
transform_tolerance_ = tf2::durationFromSec(tmp_tol);
@@ -1343,8 +1345,8 @@ AmclNode::initTransforms()
13431345
void
13441346
AmclNode::initMessageFilters()
13451347
{
1346-
auto sub_opt = rclcpp::SubscriptionOptions();
1347-
sub_opt.callback_group = callback_group_;
1348+
auto sub_opt = nav2::interfaces::createSubscriptionOptions(
1349+
scan_topic_, allow_parameter_qos_overrides_, callback_group_);
13481350

13491351
#if RCLCPP_VERSION_GTE(29, 6, 0)
13501352
laser_scan_sub_ = std::make_unique<message_filters::Subscriber<sensor_msgs::msg::LaserScan>>(

nav2_costmap_2d/include/nav2_costmap_2d/obstacle_layer.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ class ObstacleLayer : public CostmapLayer
262262
bool rolling_window_;
263263
bool was_reset_;
264264
nav2_costmap_2d::CombinationMethod combination_method_;
265+
bool allow_parameter_qos_overrides_;
265266
};
266267

267268
} // namespace nav2_costmap_2d

nav2_costmap_2d/plugins/obstacle_layer.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include "nav2_util/raytrace_line_2d.hpp"
4949
#include "nav2_costmap_2d/costmap_math.hpp"
5050
#include "nav2_ros_common/node_utils.hpp"
51+
#include "nav2_ros_common/interface_factories.hpp"
5152
#include "rclcpp/version.h"
5253

5354
PLUGINLIB_EXPORT_CLASS(nav2_costmap_2d::ObstacleLayer, nav2_costmap_2d::Layer)
@@ -95,6 +96,8 @@ void ObstacleLayer::onInitialize()
9596
throw std::runtime_error{"Failed to lock node"};
9697
}
9798

99+
allow_parameter_qos_overrides_ = nav2::declare_or_get_parameter(node,
100+
"allow_parameter_qos_overrides", true);
98101
node->get_parameter(name_ + "." + "enabled", enabled_);
99102
node->get_parameter(name_ + "." + "footprint_clearing_enabled", footprint_clearing_enabled_);
100103
node->get_parameter(name_ + "." + "min_obstacle_height", min_obstacle_height_);
@@ -133,9 +136,6 @@ void ObstacleLayer::onInitialize()
133136

134137
global_frame_ = layered_costmap_->getGlobalFrameID();
135138

136-
auto sub_opt = rclcpp::SubscriptionOptions();
137-
sub_opt.callback_group = callback_group_;
138-
139139
// now we need to split the topics based on whitespace which we can use a stringstream for
140140
std::stringstream ss(topics_string);
141141

@@ -235,6 +235,9 @@ void ObstacleLayer::onInitialize()
235235

236236
// create a callback for the topic
237237
if (data_type == "LaserScan") {
238+
auto sub_opt = nav2::interfaces::createSubscriptionOptions(
239+
topic, allow_parameter_qos_overrides_, callback_group_);
240+
238241
// For Kilted and Older Support from Message Filters API change
239242
#if RCLCPP_VERSION_GTE(29, 6, 0)
240243
std::shared_ptr<message_filters::Subscriber<sensor_msgs::msg::LaserScan>> sub;
@@ -289,6 +292,9 @@ void ObstacleLayer::onInitialize()
289292
tf_filter_tolerance));
290293

291294
} else {
295+
auto sub_opt = nav2::interfaces::createSubscriptionOptions(
296+
topic, allow_parameter_qos_overrides_, callback_group_);
297+
292298
// For Rolling and Newer Support from PointCloudTransport API change
293299
#if RCLCPP_VERSION_GTE(30, 0, 0)
294300
std::shared_ptr<point_cloud_transport::SubscriberFilter> sub;

0 commit comments

Comments
 (0)