@@ -29,19 +29,27 @@ export default class Ros extends EventEmitter {
29
29
idCounter = 0 ;
30
30
isConnected = false ;
31
31
groovyCompatibility = true ;
32
+ namespace = '' ;
32
33
/**
33
34
* @param {Object } [options]
34
35
* @param {string } [options.url] - The WebSocket URL for rosbridge. Can be specified later with `connect`.
35
36
* @param {boolean } [options.groovyCompatibility=true] - Don't use interfaces that changed after the last groovy release or rosbridge_suite and related tools.
36
37
* @param {'websocket'|RTCPeerConnection } [options.transportLibrary='websocket'] - 'websocket', or an RTCPeerConnection instance controlling how the connection is created in `connect`.
37
38
* @param {Object } [options.transportOptions={}] - The options to use when creating a connection. Currently only used if `transportLibrary` is RTCPeerConnection.
39
+ * @param {string } [options.namespace = ""] - The namespace to use for internal ROS2 services. Defaults to an empty string. Must be the same as the namespace of rosbridge_suite.
38
40
*/
39
41
constructor ( options ) {
40
42
super ( ) ;
41
43
options = options || { } ;
42
44
this . transportLibrary = options . transportLibrary || 'websocket' ;
43
45
this . transportOptions = options . transportOptions || { } ;
44
46
this . groovyCompatibility = options . groovyCompatibility ?? true ;
47
+ this . namespace = options . namespace || '' ;
48
+
49
+ // Normalize namespace format: no leading slash, with trailing slash
50
+ if ( this . namespace ) {
51
+ this . namespace = this . namespace . replace ( / ^ \/ / , '' ) . replace ( / \/ ? $ / , '/' ) ;
52
+ }
45
53
46
54
// begin by checking if a URL was given
47
55
if ( options . url ) {
@@ -180,7 +188,7 @@ export default class Ros extends EventEmitter {
180
188
/** @satisfies {Service<any, any> } */
181
189
var getActionServers = new Service ( {
182
190
ros : this ,
183
- name : ' rosapi/action_servers' ,
191
+ name : ` ${ this . namespace } rosapi/action_servers` ,
184
192
serviceType : 'rosapi/GetActionServers'
185
193
} ) ;
186
194
@@ -220,7 +228,7 @@ export default class Ros extends EventEmitter {
220
228
getTopics ( callback , failedCallback ) {
221
229
var topicsClient = new Service ( {
222
230
ros : this ,
223
- name : ' rosapi/topics' ,
231
+ name : ` ${ this . namespace } rosapi/topics` ,
224
232
serviceType : 'rosapi/Topics'
225
233
} ) ;
226
234
@@ -259,7 +267,7 @@ export default class Ros extends EventEmitter {
259
267
getTopicsForType ( topicType , callback , failedCallback ) {
260
268
var topicsForTypeClient = new Service ( {
261
269
ros : this ,
262
- name : ' rosapi/topics_for_type' ,
270
+ name : ` ${ this . namespace } rosapi/topics_for_type` ,
263
271
serviceType : 'rosapi/TopicsForType'
264
272
} ) ;
265
273
@@ -299,7 +307,7 @@ export default class Ros extends EventEmitter {
299
307
getServices ( callback , failedCallback ) {
300
308
var servicesClient = new Service ( {
301
309
ros : this ,
302
- name : ' rosapi/services' ,
310
+ name : ` ${ this . namespace } rosapi/services` ,
303
311
serviceType : 'rosapi/Services'
304
312
} ) ;
305
313
@@ -338,7 +346,7 @@ export default class Ros extends EventEmitter {
338
346
getServicesForType ( serviceType , callback , failedCallback ) {
339
347
var servicesForTypeClient = new Service ( {
340
348
ros : this ,
341
- name : ' rosapi/services_for_type' ,
349
+ name : ` ${ this . namespace } rosapi/services_for_type` ,
342
350
serviceType : 'rosapi/ServicesForType'
343
351
} ) ;
344
352
@@ -380,7 +388,7 @@ export default class Ros extends EventEmitter {
380
388
getServiceRequestDetails ( type , callback , failedCallback ) {
381
389
var serviceTypeClient = new Service ( {
382
390
ros : this ,
383
- name : ' rosapi/service_request_details' ,
391
+ name : ` ${ this . namespace } rosapi/service_request_details` ,
384
392
serviceType : 'rosapi/ServiceRequestDetails'
385
393
} ) ;
386
394
var request = {
@@ -422,7 +430,7 @@ export default class Ros extends EventEmitter {
422
430
/** @satisfies {Service<{},{typedefs: string[]}> } */
423
431
var serviceTypeClient = new Service ( {
424
432
ros : this ,
425
- name : ' rosapi/service_response_details' ,
433
+ name : ` ${ this . namespace } rosapi/service_response_details` ,
426
434
serviceType : 'rosapi/ServiceResponseDetails'
427
435
} ) ;
428
436
var request = {
@@ -462,7 +470,7 @@ export default class Ros extends EventEmitter {
462
470
getNodes ( callback , failedCallback ) {
463
471
var nodesClient = new Service ( {
464
472
ros : this ,
465
- name : ' rosapi/nodes' ,
473
+ name : ` ${ this . namespace } rosapi/nodes` ,
466
474
serviceType : 'rosapi/Nodes'
467
475
} ) ;
468
476
@@ -522,7 +530,7 @@ export default class Ros extends EventEmitter {
522
530
getNodeDetails ( node , callback , failedCallback ) {
523
531
var nodesClient = new Service ( {
524
532
ros : this ,
525
- name : ' rosapi/node_details' ,
533
+ name : ` ${ this . namespace } rosapi/node_details` ,
526
534
serviceType : 'rosapi/NodeDetails'
527
535
} ) ;
528
536
@@ -563,7 +571,7 @@ export default class Ros extends EventEmitter {
563
571
getParams ( callback , failedCallback ) {
564
572
var paramsClient = new Service ( {
565
573
ros : this ,
566
- name : ' rosapi/get_param_names' ,
574
+ name : ` ${ this . namespace } rosapi/get_param_names` ,
567
575
serviceType : 'rosapi/GetParamNames'
568
576
} ) ;
569
577
var request = { } ;
@@ -601,7 +609,7 @@ export default class Ros extends EventEmitter {
601
609
getTopicType ( topic , callback , failedCallback ) {
602
610
var topicTypeClient = new Service ( {
603
611
ros : this ,
604
- name : ' rosapi/topic_type' ,
612
+ name : ` ${ this . namespace } rosapi/topic_type` ,
605
613
serviceType : 'rosapi/TopicType'
606
614
} ) ;
607
615
var request = {
@@ -642,7 +650,7 @@ export default class Ros extends EventEmitter {
642
650
getServiceType ( service , callback , failedCallback ) {
643
651
var serviceTypeClient = new Service ( {
644
652
ros : this ,
645
- name : ' rosapi/service_type' ,
653
+ name : ` ${ this . namespace } rosapi/service_type` ,
646
654
serviceType : 'rosapi/ServiceType'
647
655
} ) ;
648
656
var request = {
@@ -683,7 +691,7 @@ export default class Ros extends EventEmitter {
683
691
getMessageDetails ( message , callback , failedCallback ) {
684
692
var messageDetailClient = new Service ( {
685
693
ros : this ,
686
- name : ' rosapi/message_details' ,
694
+ name : ` ${ this . namespace } rosapi/message_details` ,
687
695
serviceType : 'rosapi/MessageDetails'
688
696
} ) ;
689
697
var request = {
@@ -775,7 +783,7 @@ export default class Ros extends EventEmitter {
775
783
getTopicsAndRawTypes ( callback , failedCallback ) {
776
784
var topicsAndRawTypesClient = new Service ( {
777
785
ros : this ,
778
- name : ' rosapi/topics_and_raw_types' ,
786
+ name : ` ${ this . namespace } rosapi/topics_and_raw_types` ,
779
787
serviceType : 'rosapi/TopicsAndRawTypes'
780
788
} ) ;
781
789
0 commit comments