diff --git a/carla_ros_bridge/launch/carla_ros_bridge_with_example_ego_vehicle.launch b/carla_ros_bridge/launch/carla_ros_bridge_with_example_ego_vehicle.launch index 3ce9dedb..4949e6ff 100644 --- a/carla_ros_bridge/launch/carla_ros_bridge_with_example_ego_vehicle.launch +++ b/carla_ros_bridge/launch/carla_ros_bridge_with_example_ego_vehicle.launch @@ -11,7 +11,7 @@ - + diff --git a/carla_ros_bridge/src/carla_ros_bridge/bridge.py b/carla_ros_bridge/src/carla_ros_bridge/bridge.py index 9e34f499..03a73169 100755 --- a/carla_ros_bridge/src/carla_ros_bridge/bridge.py +++ b/carla_ros_bridge/src/carla_ros_bridge/bridge.py @@ -18,7 +18,7 @@ except ImportError: import Queue as queue import sys -from distutils.version import LooseVersion +from packaging.version import Version from threading import Thread, Lock, Event import carla @@ -413,13 +413,12 @@ def main(args=None): # check carla version dist = pkg_resources.get_distribution("carla") - if LooseVersion(dist.version) != LooseVersion(CarlaRosBridge.CARLA_VERSION): + if Version(dist.version).release[0] != Version(CarlaRosBridge.CARLA_VERSION).release[0]: carla_bridge.logfatal("CARLA python module version {} required. Found: {}".format( CarlaRosBridge.CARLA_VERSION, dist.version)) sys.exit(1) - if LooseVersion(carla_client.get_server_version()) != \ - LooseVersion(carla_client.get_client_version()): + if Version(carla_client.get_server_version()) != Version(carla_client.get_client_version()): carla_bridge.logwarn( "Version mismatch detected: You are trying to connect to a simulator that might be incompatible with this API. Client API version: {}. Simulator API version: {}" .format(carla_client.get_client_version(), diff --git a/carla_ros_bridge/src/carla_ros_bridge/sensor.py b/carla_ros_bridge/src/carla_ros_bridge/sensor.py index 1bdd36c3..81e8858c 100644 --- a/carla_ros_bridge/src/carla_ros_bridge/sensor.py +++ b/carla_ros_bridge/src/carla_ros_bridge/sensor.py @@ -202,14 +202,15 @@ def sensor_data_updated(self, carla_sensor_data): "This function has to be implemented by the derived classes") def _update_synchronous_event_sensor(self, frame, timestamp): + buffer_size = 5 while True: try: carla_sensor_data = self.queue.get(block=False) - if carla_sensor_data.frame != frame: - self.node.logwarn("{}({}): Received event for frame {}" - " (expected {}). Process it anyways.".format( - self.__class__.__name__, self.get_id(), - carla_sensor_data.frame, frame)) + frame_difference = abs(carla_sensor_data.frame - frame) + if frame_difference > buffer_size: + self.node.logwarn("{}({}): Received event for frame {} (expected {}). Process it anyways.".format( + self.__class__.__name__, self.get_id(), + carla_sensor_data.frame, frame)) self.node.logdebug("{}({}): process {}".format( self.__class__.__name__, self.get_id(), frame)) self.publish_tf(trans.carla_transform_to_ros_pose(