From bc896cecd29ef8a2d80aff584d1986a6602f2741 Mon Sep 17 00:00:00 2001 From: Victor Lopez Date: Wed, 18 Nov 2020 11:25:39 +0100 Subject: [PATCH] remove duplicate services and msgs Signed-off-by: Victor Lopez --- ros1_bridge/__init__.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ros1_bridge/__init__.py b/ros1_bridge/__init__.py index 9f89c706..82fed34f 100644 --- a/ros1_bridge/__init__.py +++ b/ros1_bridge/__init__.py @@ -245,7 +245,10 @@ def get_ros1_messages(rospack=None): pkgs = sorted(x for x in rosmsg.iterate_packages(rospack, rosmsg.MODE_MSG)) for package_name, path in pkgs: for message_name in rosmsg._list_types(path, 'msg', rosmsg.MODE_MSG): - msgs.append(Message(package_name, message_name, path)) + # iterate_packages might return ROS2 paths for already found ROS1 pkgs + msg = Message(package_name, message_name, path) + if msg not in msgs: + msgs.append(msg) return msgs @@ -626,14 +629,15 @@ def determine_common_services( 'cpptype': ros2_type.rstrip('[]').replace('/', '::msg::') } }) - if match: - services.append({ + service_data = { 'ros1_name': pair[0].message_name, 'ros2_name': pair[1].message_name, 'ros1_package': pair[0].package_name, 'ros2_package': pair[1].package_name, 'fields': output - }) + } + if match and service_data not in services: + services.append(service_data) return services