@@ -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