Skip to content

Commit ad78a04

Browse files
authored
QoS (#225)
* Sensor and Reliable QoS Signed-off-by: Francisco Martín Rico <[email protected]>
1 parent b37b991 commit ad78a04

File tree

8 files changed

+44
-20
lines changed

8 files changed

+44
-20
lines changed

webots_ros2_core/webots_ros2_core/devices/camera_device.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,15 @@ def __init__(self, node, device_key, wb_device, params=None):
5252
self._recognition_webots_publisher = None
5353
self._image_publisher = None
5454

55+
qos_sensor_reliable = qos_profile_sensor_data
56+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
57+
5558
# Create topics
5659
if not self._disable:
5760
self._image_publisher = self._node.create_publisher(
5861
Image,
5962
self._topic_name + '/image_raw',
60-
qos_profile_sensor_data
63+
qos_sensor_reliable
6164
)
6265
self._camera_info_publisher = self._node.create_publisher(
6366
CameraInfo,
@@ -73,12 +76,12 @@ def __init__(self, node, device_key, wb_device, params=None):
7376
self._recognition_publisher = self._node.create_publisher(
7477
Detection2DArray,
7578
self._topic_name + '/recognitions',
76-
qos_profile_sensor_data
79+
qos_sensor_reliable
7780
)
7881
self._recognition_webots_publisher = self._node.create_publisher(
7982
WbCameraRecognitionObjects,
8083
self._topic_name + '/recognitions/webots',
81-
qos_profile_sensor_data
84+
qos_sensor_reliable
8285
)
8386

8487
# CameraInfo data

webots_ros2_core/webots_ros2_core/devices/distance_sensor_device.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
"""Webots DistanceSensor device wrapper for ROS2."""
1616

17-
from rclpy.qos import qos_profile_sensor_data
17+
from rclpy.qos import QoSReliabilityPolicy, qos_profile_sensor_data
1818
from sensor_msgs.msg import Range
1919
from webots_ros2_core.math.interpolation import interpolate_lookup_table
2020
from .sensor_device import SensorDevice
@@ -47,8 +47,11 @@ def __init__(self, node, device_key, wb_device, params=None):
4747

4848
# Create topics
4949
if not self._disable:
50+
qos_sensor_reliable = qos_profile_sensor_data
51+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
52+
5053
self._publisher = self._node.create_publisher(Range, self._topic_name,
51-
qos_profile_sensor_data)
54+
qos_sensor_reliable)
5255

5356
def __get_max_value(self):
5457
table = self._wb_device.getLookupTable()

webots_ros2_core/webots_ros2_core/devices/gps_device.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
"""Webots GPS device wrapper for ROS2."""
1616

17-
from rclpy.qos import qos_profile_sensor_data
17+
from rclpy.qos import QoSReliabilityPolicy, qos_profile_sensor_data
1818
from std_msgs.msg import Float32
1919
from sensor_msgs.msg import NavSatFix, NavSatStatus
2020
from geometry_msgs.msg import PointStamped
@@ -60,16 +60,19 @@ def __init__(self, node, device_key, wb_device, params=None):
6060
# Change default timestep
6161
self._timestep = 128
6262

63+
qos_sensor_reliable = qos_profile_sensor_data
64+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
65+
6366
# Create topics
6467
self.__speed_publisher = node.create_publisher(
65-
Float32, self._topic_name + '/speed', qos_profile_sensor_data)
68+
Float32, self._topic_name + '/speed', qos_sensor_reliable)
6669

6770
if self.__coordinate_system == GPS.WGS84:
6871
self.__gps_publisher = node.create_publisher(
69-
NavSatFix, self._topic_name + '/gps', qos_profile_sensor_data)
72+
NavSatFix, self._topic_name + '/gps', qos_sensor_reliable)
7073
else:
7174
self.__gps_publisher = node.create_publisher(
72-
PointStamped, self._topic_name + '/gps', qos_profile_sensor_data)
75+
PointStamped, self._topic_name + '/gps', qos_sensor_reliable)
7376

7477
def step(self):
7578
stamp = super().step()

webots_ros2_core/webots_ros2_core/devices/imu_device.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
"""Webots Accelerometer, Gyro and InertialUnit devices wrapper for ROS2."""
1616

17-
from rclpy.qos import qos_profile_sensor_data
17+
from rclpy.qos import QoSReliabilityPolicy, qos_profile_sensor_data
1818
from sensor_msgs.msg import Imu
1919
from webots_ros2_core.math.interpolation import interpolate_lookup_table
2020
from .sensor_device import SensorDevice
@@ -53,8 +53,11 @@ def __init__(self, node, device_key, wb_device, params=None):
5353
# Create topics
5454
self._publisher = None
5555
if not self._disable:
56+
qos_sensor_reliable = qos_profile_sensor_data
57+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
58+
5659
self._publisher = self._node.create_publisher(Imu, self._topic_name,
57-
qos_profile_sensor_data)
60+
qos_sensor_reliable)
5861

5962
def __enable_imu(self):
6063
for wb_device in self._wb_device:

webots_ros2_core/webots_ros2_core/devices/led_device.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"""LED device."""
1616

1717
from std_msgs.msg import Int32
18-
from rclpy.qos import qos_profile_sensor_data
18+
from rclpy.qos import QoSReliabilityPolicy, qos_profile_sensor_data
1919
from .device import Device
2020

2121

@@ -48,12 +48,15 @@ def __init__(self, node, device_key, wb_device, params=None):
4848
# Determine default params
4949
self._topic_name = self._get_param('topic_name', self._create_topic_name(wb_device))
5050

51+
qos_sensor_reliable = qos_profile_sensor_data
52+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
53+
5154
# Create subscribers
5255
self.__led_subscriber = self._node.create_subscription(
5356
Int32,
5457
self._topic_name,
5558
self.__callback,
56-
qos_profile_sensor_data
59+
qos_sensor_reliable
5760
)
5861

5962
def __callback(self, msg):

webots_ros2_core/webots_ros2_core/devices/lidar_device.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
"""Lidar device."""
1616

17-
from rclpy.qos import qos_profile_sensor_data
17+
from rclpy.qos import QoSReliabilityPolicy, qos_profile_sensor_data
1818
from sensor_msgs.msg import LaserScan, PointCloud2, PointField
1919
from tf2_ros import StaticTransformBroadcaster
2020
from geometry_msgs.msg import TransformStamped
@@ -60,14 +60,17 @@ def __init__(self, node, device_key, wb_device, params=None):
6060
# Change default timestep
6161
self._timestep = 128
6262

63+
qos_sensor_reliable = qos_profile_sensor_data
64+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
65+
6366
# Create topics
6467
if wb_device.getNumberOfLayers() > 1:
6568
wb_device.enablePointCloud()
6669
self.__publisher = node.create_publisher(PointCloud2, self._topic_name,
67-
qos_profile_sensor_data)
70+
qos_sensor_reliable)
6871
else:
6972
self.__publisher = node.create_publisher(LaserScan, self._topic_name,
70-
qos_profile_sensor_data)
73+
qos_sensor_reliable)
7174
self.__static_broadcaster = StaticTransformBroadcaster(node)
7275
transform_stamped = TransformStamped()
7376
transform_stamped.header.frame_id = self._frame_id

webots_ros2_core/webots_ros2_core/devices/light_sensor_device.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
"""Webots LightSensor device wrapper for ROS2."""
1616

17-
from rclpy.qos import qos_profile_sensor_data
17+
from rclpy.qos import QoSReliabilityPolicy, qos_profile_sensor_data
1818
from sensor_msgs.msg import Illuminance
1919
from webots_ros2_core.math.interpolation import interpolate_lookup_table
2020
from .sensor_device import SensorDevice
@@ -49,8 +49,11 @@ def __init__(self, node, device_key, wb_device, params=None):
4949
# Create topics
5050
self._publisher = None
5151
if not self._disable:
52+
qos_sensor_reliable = qos_profile_sensor_data
53+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
54+
5255
self._publisher = self._node.create_publisher(Illuminance, self._topic_name,
53-
qos_profile_sensor_data)
56+
qos_sensor_reliable)
5457

5558
def __get_variance(self, raw_value):
5659
table = self._wb_device.getLookupTable()

webots_ros2_core/webots_ros2_core/devices/range_finder_device.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import numpy as np
1818
from sensor_msgs.msg import Image
19-
from rclpy.qos import qos_profile_sensor_data
19+
from rclpy.qos import QoSReliabilityPolicy, qos_profile_sensor_data
2020
from .sensor_device import SensorDevice
2121

2222

@@ -44,12 +44,15 @@ def __init__(self, node, device_key, wb_device, params=None):
4444
super().__init__(node, device_key, wb_device, params)
4545
self._image_publisher = None
4646

47+
qos_sensor_reliable = qos_profile_sensor_data
48+
qos_sensor_reliable.reliability = QoSReliabilityPolicy.RELIABLE
49+
4750
# Create topics
4851
if not self._disable:
4952
self._image_publisher = self._node.create_publisher(
5053
Image,
5154
self._topic_name + '/image_depth',
52-
qos_profile_sensor_data
55+
qos_sensor_reliable
5356
)
5457

5558
# Load parameters

0 commit comments

Comments
 (0)