@@ -820,6 +820,11 @@ void UkfWrapper::loadParams()
820820 // Get the plugin name, if any
821821 const std::string param_prefix = plugin_name_.empty () ? " " : plugin_name_ + " ." ;
822822
823+ // Get callback_group
824+ auto rt_cbg = parent_node_->get_real_time_cbg ();
825+ rclcpp::SubscriptionOptions options;
826+ options.callback_group = rt_cbg;
827+
823828 double alpha = parent_node_->declare_parameter (param_prefix + " alpha" , 0.001 );
824829 double kappa = parent_node_->declare_parameter (param_prefix + " kappa" , 0.0 );
825830 double beta = parent_node_->declare_parameter (param_prefix + " beta" , 2.0 );
@@ -1169,7 +1174,7 @@ void UkfWrapper::loadParams()
11691174 set_pose_sub_ =
11701175 parent_node_->create_subscription <geometry_msgs::msg::PoseWithCovarianceStamped>(
11711176 " set_pose" , rclcpp::QoS (1 ),
1172- std::bind (&UkfWrapper::setPoseCallback, this , std::placeholders::_1));
1177+ std::bind (&UkfWrapper::setPoseCallback, this , std::placeholders::_1), options );
11731178
11741179 // Create a service for manually setting/resetting pose
11751180 set_pose_service_ =
@@ -1305,7 +1310,7 @@ void UkfWrapper::loadParams()
13051310 topic_subs_.push_back (
13061311 parent_node_->create_subscription <nav_msgs::msg::Odometry>(
13071312 odom_topic, custom_qos,
1308- odom_callback));
1313+ odom_callback, options ));
13091314 } else {
13101315 std::stringstream stream;
13111316 stream << odom_topic << " is listed as an input topic, but all update "
@@ -1443,7 +1448,7 @@ void UkfWrapper::loadParams()
14431448 topic_subs_.push_back (
14441449 parent_node_->create_subscription <
14451450 geometry_msgs::msg::PoseWithCovarianceStamped>(
1446- pose_topic, custom_qos, pose_callback));
1451+ pose_topic, custom_qos, pose_callback, options ));
14471452
14481453 if (differential) {
14491454 twist_var_counts[StateMemberVx] += pose_update_vec[StateMemberX];
@@ -1526,9 +1531,9 @@ void UkfWrapper::loadParams()
15261531 std::numeric_limits<double >::max ());
15271532
15281533 // Set optional custom queue size
1529- int queue_size = parent_node_->declare_parameter (param_prefix +
1530- gps_topic_name +
1531- std::string (" _queue_size" ), 10 );
1534+ // int queue_size = parent_node_->declare_parameter(param_prefix +
1535+ // gps_topic_name +
1536+ // std::string("_queue_size"), 10);
15321537
15331538 // Pull in the sensor's config, zero out values that are invalid for the
15341539 // gps type
@@ -1660,7 +1665,7 @@ void UkfWrapper::loadParams()
16601665 topic_subs_.push_back (
16611666 parent_node_->create_subscription <
16621667 geometry_msgs::msg::TwistWithCovarianceStamped>(
1663- twist_topic, custom_qos, twist_callback));
1668+ twist_topic, custom_qos, twist_callback, options ));
16641669
16651670 twist_var_counts[StateMemberVx] += twist_update_vec[StateMemberVx];
16661671 twist_var_counts[StateMemberVy] += twist_update_vec[StateMemberVy];
@@ -1869,7 +1874,7 @@ void UkfWrapper::loadParams()
18691874 auto custom_qos = rclcpp::SensorDataQoS (rclcpp::KeepLast (queue_size));
18701875 topic_subs_.push_back (
18711876 parent_node_->create_subscription <sensor_msgs::msg::Imu>(
1872- imu_topic, custom_qos, imu_callback));
1877+ imu_topic, custom_qos, imu_callback, options ));
18731878 } else {
18741879 RCLCPP_ERROR_STREAM (
18751880 parent_node_->get_logger (),
@@ -1950,11 +1955,11 @@ void UkfWrapper::loadParams()
19501955 if (stamped_control_) {
19511956 stamped_control_sub_ = parent_node_->create_subscription <geometry_msgs::msg::TwistStamped>(
19521957 " cmd_vel" , rclcpp::QoS (1 ),
1953- std::bind (&UkfWrapper::controlStampedCallback, this , std::placeholders::_1));
1958+ std::bind (&UkfWrapper::controlStampedCallback, this , std::placeholders::_1), options );
19541959 } else {
19551960 control_sub_ = parent_node_->create_subscription <geometry_msgs::msg::Twist>(
19561961 " cmd_vel" , rclcpp::QoS (1 ),
1957- std::bind (&UkfWrapper::controlCallback, this , std::placeholders::_1));
1962+ std::bind (&UkfWrapper::controlCallback, this , std::placeholders::_1), options );
19581963 }
19591964 }
19601965
0 commit comments