Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion include/robot_localization/ros_robot_localization_listener.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@
namespace robot_localization
{

namespace detail
{
rclcpp::SubscriptionOptions
get_subscription_options_with_default_qos_override_policies()
{
auto subscription_options = rclcpp::SubscriptionOptions();
subscription_options.qos_overriding_options =
rclcpp::QosOverridingOptions::with_default_policies();
return subscription_options;
}
} // namespace detail

//! @brief RosRobotLocalizationListener class
//!
//! This class wraps the RobotLocalizationEstimator. It listens to topics over
Expand All @@ -70,7 +82,10 @@ class RosRobotLocalizationListener
//!
//! @param[in] node - rclcpp node shared pointer
//!
explicit RosRobotLocalizationListener(rclcpp::Node::SharedPtr node);
explicit RosRobotLocalizationListener(
rclcpp::Node::SharedPtr node,
rclcpp::SubscriptionOptions options =
detail::get_subscription_options_with_default_qos_override_policies());

//! @brief Destructor
//!
Expand Down
19 changes: 14 additions & 5 deletions src/navsat_transform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,23 +141,32 @@ NavSatTransform::NavSatTransform(const rclcpp::NodeOptions & options)

auto custom_qos = rclcpp::SensorDataQoS(rclcpp::KeepLast(1));

auto subscriber_options = rclcpp::SubscriptionOptions();
subscriber_options.qos_overriding_options =
rclcpp::QosOverridingOptions::with_default_policies();
odom_sub_ = this->create_subscription<nav_msgs::msg::Odometry>(
"odometry/filtered", custom_qos, std::bind(&NavSatTransform::odomCallback, this, _1));
"odometry/filtered", custom_qos, std::bind(
&NavSatTransform::odomCallback, this, _1), subscriber_options);

gps_sub_ = this->create_subscription<sensor_msgs::msg::NavSatFix>(
"gps/fix", custom_qos, std::bind(&NavSatTransform::gpsFixCallback, this, _1));
"gps/fix", custom_qos, std::bind(&NavSatTransform::gpsFixCallback, this, _1),
subscriber_options);

if (!use_odometry_yaw_ && !use_manual_datum_) {
imu_sub_ = this->create_subscription<sensor_msgs::msg::Imu>(
"imu", custom_qos, std::bind(&NavSatTransform::imuCallback, this, _1));
"imu", custom_qos, std::bind(&NavSatTransform::imuCallback, this, _1), subscriber_options);
}

rclcpp::PublisherOptions publisher_options;
publisher_options.qos_overriding_options = rclcpp::QosOverridingOptions::with_default_policies();
gps_odom_pub_ =
this->create_publisher<nav_msgs::msg::Odometry>("odometry/gps", rclcpp::QoS(10));
this->create_publisher<nav_msgs::msg::Odometry>(
"odometry/gps", rclcpp::QoS(10), publisher_options);

if (publish_gps_) {
filtered_gps_pub_ =
this->create_publisher<sensor_msgs::msg::NavSatFix>("gps/filtered", rclcpp::QoS(10));
this->create_publisher<sensor_msgs::msg::NavSatFix>(
"gps/filtered", rclcpp::QoS(10), publisher_options);
}

// Sleep for the parameterized amount of time, to give
Expand Down
7 changes: 5 additions & 2 deletions src/ros_filter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2002,14 +2002,17 @@ void RosFilter<T>::initialize()
tf2::toMsg(tf2::Transform::getIdentity());

// Position publisher
rclcpp::PublisherOptions publisher_options;
publisher_options.qos_overriding_options = rclcpp::QosOverridingOptions::with_default_policies();
position_pub_ =
this->create_publisher<nav_msgs::msg::Odometry>("odometry/filtered", rclcpp::QoS(10));
this->create_publisher<nav_msgs::msg::Odometry>(
"odometry/filtered", rclcpp::QoS(10), publisher_options);

// Optional acceleration publisher
if (publish_acceleration_) {
accel_pub_ =
this->create_publisher<geometry_msgs::msg::AccelWithCovarianceStamped>(
"accel/filtered", rclcpp::QoS(10));
"accel/filtered", rclcpp::QoS(10), publisher_options);
}

const std::chrono::duration<double> timespan{1.0 / frequency_};
Expand Down
7 changes: 4 additions & 3 deletions src/ros_robot_localization_listener.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,12 @@ FilterTypes::FilterType filterTypeFromString(
}

RosRobotLocalizationListener::RosRobotLocalizationListener(
rclcpp::Node::SharedPtr node)
rclcpp::Node::SharedPtr node,
rclcpp::SubscriptionOptions options)
: qos1_(1),
qos10_(10),
odom_sub_(node, "odom/filtered", qos1_.get_rmw_qos_profile()),
accel_sub_(node, "acceleration/filtered", qos1_.get_rmw_qos_profile()),
odom_sub_(node, "odom/filtered", qos1_.get_rmw_qos_profile(), options),
accel_sub_(node, "acceleration/filtered", qos1_.get_rmw_qos_profile(), options),
sync_(odom_sub_, accel_sub_, 10u),
node_clock_(node->get_node_clock_interface()->get_clock()),
node_logger_(node->get_node_logging_interface()),
Expand Down