Skip to content

Commit c6eedec

Browse files
committed
Add namespace to services names (backport #992)
1 parent 8cd4208 commit c6eedec

File tree

1 file changed

+48
-25
lines changed

1 file changed

+48
-25
lines changed

rosapi/scripts/rosapi_node

+48-25
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class Rosapi(Node):
7878
self.declare_parameter("topics_glob", "[*]")
7979
self.declare_parameter("services_glob", "[*]")
8080
self.declare_parameter("params_glob", "[*]")
81+
self.declare_parameter("use_private_service_names", False)
8182
self.globs = self.get_globs()
8283
self.register_services()
8384

@@ -89,47 +90,69 @@ class Rosapi(Node):
8990
else:
9091
full_name = self.get_namespace() + "/" + self.get_name()
9192
params.init(full_name)
92-
self.create_service(Topics, "/rosapi/topics", self.get_topics)
93-
self.create_service(Interfaces, "/rosapi/interfaces", self.get_interfaces)
94-
self.create_service(TopicsForType, "/rosapi/topics_for_type", self.get_topics_for_type)
93+
94+
use_private_service_names = (
95+
self.get_parameter("use_private_service_names").get_parameter_value().bool_value
96+
)
97+
if not use_private_service_names:
98+
if self.get_namespace() != "/":
99+
self.get_logger().warn(
100+
"You are running rosapi node under a namespace. The services will still use "
101+
"global /rosapi/ namespace. Starting from ROS Jazzy, the services will be "
102+
"namespaced under the node namespace. To use the new namespaced services, set "
103+
"the parameter 'use_private_service_names' to true."
104+
)
105+
service_prefix = "/rosapi/"
106+
else:
107+
service_prefix = "~/"
108+
109+
self.create_service(Topics, service_prefix + "topics", self.get_topics)
110+
self.create_service(Interfaces, service_prefix + "interfaces", self.get_interfaces)
111+
self.create_service(
112+
TopicsForType, service_prefix + "topics_for_type", self.get_topics_for_type
113+
)
95114
self.create_service(
96115
TopicsAndRawTypes,
97-
"/rosapi/topics_and_raw_types",
116+
service_prefix + "topics_and_raw_types",
98117
self.get_topics_and_raw_types,
99118
)
100-
self.create_service(Services, "/rosapi/services", self.get_services)
119+
self.create_service(Services, service_prefix + "services", self.get_services)
120+
self.create_service(
121+
ServicesForType, service_prefix + "services_for_type", self.get_services_for_type
122+
)
123+
self.create_service(Nodes, service_prefix + "nodes", self.get_nodes)
124+
self.create_service(NodeDetails, service_prefix + "node_details", self.get_node_details)
125+
self.create_service(
126+
GetActionServers, service_prefix + "action_servers", self.get_action_servers
127+
)
128+
self.create_service(TopicType, service_prefix + "topic_type", self.get_topic_type)
129+
self.create_service(ServiceType, service_prefix + "service_type", self.get_service_type)
130+
self.create_service(Publishers, service_prefix + "publishers", self.get_publishers)
131+
self.create_service(Subscribers, service_prefix + "subscribers", self.get_subscribers)
101132
self.create_service(
102-
ServicesForType, "/rosapi/services_for_type", self.get_services_for_type
133+
ServiceProviders, service_prefix + "service_providers", self.get_service_providers
103134
)
104-
self.create_service(Nodes, "/rosapi/nodes", self.get_nodes)
105-
self.create_service(NodeDetails, "/rosapi/node_details", self.get_node_details)
106-
self.create_service(GetActionServers, "/rosapi/action_servers", self.get_action_servers)
107-
self.create_service(TopicType, "/rosapi/topic_type", self.get_topic_type)
108-
self.create_service(ServiceType, "/rosapi/service_type", self.get_service_type)
109-
self.create_service(Publishers, "/rosapi/publishers", self.get_publishers)
110-
self.create_service(Subscribers, "/rosapi/subscribers", self.get_subscribers)
135+
self.create_service(ServiceNode, service_prefix + "service_node", self.get_service_node)
111136
self.create_service(
112-
ServiceProviders, "/rosapi/service_providers", self.get_service_providers
137+
MessageDetails, service_prefix + "message_details", self.get_message_details
113138
)
114-
self.create_service(ServiceNode, "/rosapi/service_node", self.get_service_node)
115-
self.create_service(MessageDetails, "/rosapi/message_details", self.get_message_details)
116139
self.create_service(
117140
ServiceRequestDetails,
118-
"/rosapi/service_request_details",
141+
service_prefix + "service_request_details",
119142
self.get_service_request_details,
120143
)
121144
self.create_service(
122145
ServiceResponseDetails,
123-
"/rosapi/service_response_details",
146+
service_prefix + "service_response_details",
124147
self.get_service_response_details,
125148
)
126-
self.create_service(SetParam, "/rosapi/set_param", self.set_param)
127-
self.create_service(GetParam, "/rosapi/get_param", self.get_param)
128-
self.create_service(HasParam, "/rosapi/has_param", self.has_param)
129-
self.create_service(DeleteParam, "/rosapi/delete_param", self.delete_param)
130-
self.create_service(GetParamNames, "/rosapi/get_param_names", self.get_param_names)
131-
self.create_service(GetTime, "/rosapi/get_time", self.get_time)
132-
self.create_service(GetROSVersion, "/rosapi/get_ros_version", self.get_ros_version)
149+
self.create_service(SetParam, service_prefix + "set_param", self.set_param)
150+
self.create_service(GetParam, service_prefix + "get_param", self.get_param)
151+
self.create_service(HasParam, service_prefix + "has_param", self.has_param)
152+
self.create_service(DeleteParam, service_prefix + "delete_param", self.delete_param)
153+
self.create_service(GetParamNames, service_prefix + "get_param_names", self.get_param_names)
154+
self.create_service(GetTime, service_prefix + "get_time", self.get_time)
155+
self.create_service(GetROSVersion, service_prefix + "get_ros_version", self.get_ros_version)
133156

134157
def get_globs(self):
135158
return glob_helper.get_globs(self)

0 commit comments

Comments
 (0)