@@ -23,6 +23,7 @@ import ros.impl.ParameterBooleanImpl
23
23
import ros.impl.ParameterSequenceImpl
24
24
import ros.impl.ParameterStructImpl
25
25
import ros.impl.ParameterStructMemberImpl
26
+ import java.util.ArrayList
26
27
27
28
class LaunchFileCompiler_ROS2 {
28
29
@@ -145,16 +146,10 @@ def generate_launch_description():
145
146
var to_sub = new Object
146
147
var to_srv = new Object
147
148
var to_action = new Object
149
+ var remapped_interfaces = new ArrayList
148
150
149
151
var rename = ""
150
-
151
- for (interface : node.rosinterfaces){
152
- var origin = interface.reference.eCrossReferences.toString
153
- var origin_name = origin.substring(origin.indexOf("name: ") + 6, origin.lastIndexOf(")]"))
154
- if (interface.name !== origin_name){
155
- remap_str += "\t (\" " + origin_name + "\" , \" " + interface.name + "\" ),\n ";
156
- }
157
- }
152
+
158
153
159
154
for (connection : connections){
160
155
var rosconnection = connection as RosSystemConnectionImpl
@@ -170,13 +165,15 @@ def generate_launch_description():
170
165
if ( (interface as RosInterfaceImpl).reference.toString.contains("RosPublisherReferenceImpl")){
171
166
if ((interface as RosInterfaceImpl).reference == from_pub){
172
167
if ((from_pub as RosPublisherReferenceImpl).from.name != interface.name) {
168
+ remapped_interfaces.add(interface)
173
169
remap_str += "\t (\" " + (from_pub as RosPublisherReferenceImpl).from.name + "\" , \" " + rename + "\" ),\n ";
174
170
}
175
171
}
176
172
}
177
173
if ( (interface as RosInterfaceImpl).reference.toString.contains("RosSubscriberReferenceImpl")){
178
174
if ((interface as RosInterfaceImpl).reference == to_sub){
179
175
if ((to_sub as RosSubscriberReferenceImpl).from.name != from_pub) {
176
+ remapped_interfaces.add(interface)
180
177
remap_str += "\t (\" " + (to_sub as RosSubscriberReferenceImpl).from.name + "\" , \" " + rename + "\" ),\n ";
181
178
}
182
179
}
@@ -195,13 +192,15 @@ def generate_launch_description():
195
192
if ( (interface as RosInterfaceImpl).reference.toString.contains("RosServiceServerReferenceImpl")){
196
193
if ((interface as RosInterfaceImpl).reference == from_srv){
197
194
if ((from_srv as RosServiceServerReferenceImpl).from.name != interface.name) {
195
+ remapped_interfaces.add(interface)
198
196
remap_str += "\t (\" " + (from_srv as RosServiceServerReferenceImpl).from.name + "\" , \" " + rename + "\" ),\n ";
199
197
}
200
198
}
201
199
}
202
200
if ( (interface as RosInterfaceImpl).reference.toString.contains("RosServiceClientReferenceImpl")){
203
201
if ((interface as RosInterfaceImpl).reference == to_srv){
204
202
if ((to_srv as RosServiceClientReferenceImpl).from.name != from_srv) {
203
+ remapped_interfaces.add(interface)
205
204
remap_str += "\t (\" " + (to_srv as RosServiceClientReferenceImpl).from.name + "\" , \" " + rename + "\" ),\n ";
206
205
}
207
206
}
@@ -220,21 +219,32 @@ def generate_launch_description():
220
219
if ( (interface as RosInterfaceImpl).reference.toString.contains("RosActionServerReferenceImpl")){
221
220
if ((interface as RosInterfaceImpl).reference == from_action){
222
221
if ((from_action as RosActionServerReferenceImpl).from.name != interface.name) {
222
+ remapped_interfaces.add(interface)
223
223
remap_str += "\t (\" " + (from_action as RosActionServerReferenceImpl).from.name + "\" , \" " + rename + "\" ),\n ";
224
224
}
225
225
}
226
226
}
227
227
if ( (interface as RosInterfaceImpl).reference.toString.contains("RosActionClientReferenceImpl")){
228
228
if ((interface as RosInterfaceImpl).reference == to_action){
229
229
if ((to_action as RosActionClientReferenceImpl).from.name != from_action) {
230
+ remapped_interfaces.add(interface)
230
231
remap_str += "\t (\" " + (to_action as RosActionClientReferenceImpl).from.name + "\" , \" " + rename + "\" ),\n ";
231
232
}
232
233
}
233
234
}
234
235
}
235
236
}
236
- // if ( con_publishers.contains(interface) ){
237
- // }
237
+
238
+ }
239
+
240
+ for (interface : node.rosinterfaces){
241
+ if (!remapped_interfaces.contains(interface)){
242
+ var origin = interface.reference.eCrossReferences.toString
243
+ var origin_name = origin.substring(origin.indexOf("name: ") + 6, origin.lastIndexOf(")]"))
244
+ if (interface.name !== origin_name){
245
+ remap_str += "\t (\" " + origin_name + "\" , \" " + interface.name + "\" ),\n ";
246
+ }
247
+ }
238
248
}
239
249
// for (rosPublisher : interfaces.toList) {
240
250
// if (!((prefix(NS)+rosPublisher.name).equals(compile_topic_name(rosPublisher.publisher, NS)))) {
0 commit comments