@@ -78,6 +78,7 @@ class Rosapi(Node):
78
78
self .declare_parameter ("topics_glob" , "[*]" )
79
79
self .declare_parameter ("services_glob" , "[*]" )
80
80
self .declare_parameter ("params_glob" , "[*]" )
81
+ self .declare_parameter ("use_private_service_names" , False )
81
82
self .globs = self .get_globs ()
82
83
self .register_services ()
83
84
@@ -89,47 +90,69 @@ class Rosapi(Node):
89
90
else :
90
91
full_name = self .get_namespace () + "/" + self .get_name ()
91
92
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
+ )
95
114
self .create_service (
96
115
TopicsAndRawTypes ,
97
- "/rosapi/ topics_and_raw_types" ,
116
+ service_prefix + " topics_and_raw_types" ,
98
117
self .get_topics_and_raw_types ,
99
118
)
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 )
101
132
self .create_service (
102
- ServicesForType , "/rosapi/services_for_type " , self .get_services_for_type
133
+ ServiceProviders , service_prefix + "service_providers " , self .get_service_providers
103
134
)
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 )
111
136
self .create_service (
112
- ServiceProviders , "/rosapi/service_providers " , self .get_service_providers
137
+ MessageDetails , service_prefix + "message_details " , self .get_message_details
113
138
)
114
- self .create_service (ServiceNode , "/rosapi/service_node" , self .get_service_node )
115
- self .create_service (MessageDetails , "/rosapi/message_details" , self .get_message_details )
116
139
self .create_service (
117
140
ServiceRequestDetails ,
118
- "/rosapi/ service_request_details" ,
141
+ service_prefix + " service_request_details" ,
119
142
self .get_service_request_details ,
120
143
)
121
144
self .create_service (
122
145
ServiceResponseDetails ,
123
- "/rosapi/ service_response_details" ,
146
+ service_prefix + " service_response_details" ,
124
147
self .get_service_response_details ,
125
148
)
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 )
133
156
134
157
def get_globs (self ):
135
158
return glob_helper .get_globs (self )
0 commit comments