37
38 route_file_folder = LaunchConfiguration('route_file_folder')
39 vehicle_calibration_dir = LaunchConfiguration('vehicle_calibration_dir')
40 vehicle_characteristics_param_file = LaunchConfiguration('vehicle_characteristics_param_file')
41 enable_guidance_plugin_validator = LaunchConfiguration('enable_guidance_plugin_validator')
42 strategic_plugins_to_validate = LaunchConfiguration('strategic_plugins_to_validate')
43 tactical_plugins_to_validate = LaunchConfiguration('tactical_plugins_to_validate')
44 control_plugins_to_validate = LaunchConfiguration('control_plugins_to_validate')
45
46 vehicle_config_param_file = LaunchConfiguration('vehicle_config_param_file')
47
48 vehicle_config_dir = LaunchConfiguration('vehicle_config_dir')
49 declare_vehicle_config_dir_arg = DeclareLaunchArgument(
50 name = 'vehicle_config_dir',
51 default_value = "/opt/carma/vehicle/config",
52 description = "Path to vehicle configuration directory populated by carma-config"
53 )
54
55
56
57 global_params_override_file = LaunchConfiguration('global_params_override_file')
58 declare_global_params_override_file_arg = DeclareLaunchArgument(
59 name = 'global_params_override_file',
60 default_value = [vehicle_config_dir, "/GlobalParamsOverride.yaml"],
61 description = "Path to global file containing the parameters overwrite"
62 )
63
64 inlanecruising_plugin_file_path = os.path.join(
65 get_package_share_directory('inlanecruising_plugin'), 'config/parameters.yaml')
66
67 route_following_plugin_file_path = os.path.join(
68 get_package_share_directory('route_following_plugin'), 'config/parameters.yaml')
69
70 stop_and_wait_plugin_param_file = os.path.join(
71 get_package_share_directory('stop_and_wait_plugin'), 'config/parameters.yaml')
72
73 light_controlled_intersection_tactical_plugin_param_file = os.path.join(
74 get_package_share_directory('light_controlled_intersection_tactical_plugin'), 'config/parameters.yaml')
75
76 cooperative_lanechange_param_file = os.path.join(
77 get_package_share_directory('cooperative_lanechange'), 'config/parameters.yaml')
78
79 platooning_strategic_ihp_param_file = os.path.join(
80 get_package_share_directory('platooning_strategic_ihp'), 'config/parameters.yaml')
81
82 sci_strategic_plugin_file_path = os.path.join(
83 get_package_share_directory('sci_strategic_plugin'), 'config/parameters.yaml')
84
85 lci_strategic_plugin_file_path = os.path.join(
86 get_package_share_directory('lci_strategic_plugin'), 'config/parameters.yaml')
87
88 stop_and_dwell_strategic_plugin_container_file_path = os.path.join(
89 get_package_share_directory('stop_and_dwell_strategic_plugin'), 'config/parameters.yaml')
90
91 yield_plugin_file_path = os.path.join(
92 get_package_share_directory('yield_plugin'), 'config/parameters.yaml')
93
94 platoon_tactical_ihp_param_file = os.path.join(
95 get_package_share_directory('platooning_tactical_plugin'), 'config/parameters.yaml')
96
97 approaching_emergency_vehicle_plugin_param_file = os.path.join(
98 get_package_share_directory('approaching_emergency_vehicle_plugin'), 'config/parameters.yaml')
99
100 stop_controlled_intersection_tactical_plugin_file_path = os.path.join(
101 get_package_share_directory('stop_controlled_intersection_tactical_plugin'), 'config/parameters.yaml')
102
103 trajectory_follower_wrapper_param_file = os.path.join(
104 get_package_share_directory('trajectory_follower_wrapper'), 'config/parameters.yaml')
105
106 pure_pursuit_tuning_parameters = [vehicle_calibration_dir, "/pure_pursuit/calibration.yaml"]
107
108 unique_vehicle_calibration_params = [vehicle_calibration_dir, "/identifiers/UniqueVehicleParams.yaml"]
109
110 platooning_control_param_file = os.path.join(
111 get_package_share_directory('platooning_control'), 'config/parameters.yaml')
112
113 carma_inlanecruising_plugin_container = ComposableNodeContainer(
114 package='carma_ros2_utils',
115 name='carma_lainlanecruising_plugin_container',
116 executable='carma_component_container_mt',
117 namespace=GetCurrentNamespace(),
118 composable_node_descriptions=[
119 ComposableNode(
120 package='inlanecruising_plugin',
121 plugin='inlanecruising_plugin::InLaneCruisingPluginNode',
122 name='inlanecruising_plugin',
123 extra_arguments=[
124 {'use_intra_process_comms': True},
125 ],
126 remappings = [
127 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
128 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
129 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
130 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
131 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
132 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
133 ],
134 parameters=[
135 inlanecruising_plugin_file_path,
136 vehicle_config_param_file,
137 global_params_override_file
138 ]
139 ),
140 ]
141 )
142
143 carma_route_following_plugin_container = ComposableNodeContainer(
144 package='carma_ros2_utils',
145 name='carma_route_following_plugin_container',
146 executable='carma_component_container_mt',
147 namespace=GetCurrentNamespace(),
148 composable_node_descriptions=[
149
150 ComposableNode(
151 package='route_following_plugin',
152 plugin='route_following_plugin::RouteFollowingPlugin',
153 name='route_following_plugin',
154 extra_arguments=[
155 {'use_intra_process_comms': True},
156 ],
157 remappings = [
158 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
159 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
160 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
161 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
162 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
163 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
164 ("current_velocity", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/vehicle/twist" ] ),
165 ("maneuver_plan", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/final_maneuver_plan" ] ),
166 ],
167 parameters=[
168 route_following_plugin_file_path,
169 vehicle_config_param_file,
170 global_params_override_file
171 ]
172 ),
173 ]
174 )
175
176 carma_approaching_emergency_vehicle_plugin_container = ComposableNodeContainer(
177 package='carma_ros2_utils',
178 name='carma_approaching_emergency_vehicle_plugin_container',
179 executable='carma_component_container_mt',
180 namespace=GetCurrentNamespace(),
181 composable_node_descriptions=[
182
183 ComposableNode(
184 package='approaching_emergency_vehicle_plugin',
185 plugin='approaching_emergency_vehicle_plugin::ApproachingEmergencyVehiclePlugin',
186 name='approaching_emergency_vehicle_plugin',
187 extra_arguments=[
188 {'use_intra_process_comms': True},
189 ],
190 remappings = [
191 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
192 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
193 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
194 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
195 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
196 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
197 ("state", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/state" ] ),
198 ("approaching_erv_status", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/approaching_erv_status" ] ),
199 ("hazard_light_status", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/hazard_light_status" ] ),
200 ("current_velocity", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/vehicle/twist" ] ),
201 ("incoming_bsm", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_bsm" ] ),
202 ("georeference", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/map_param_loader/georeference" ] ),
203 ("route_state", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route_state" ] ),
204 ("outgoing_emergency_vehicle_response", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_emergency_vehicle_response" ] ),
205 ("incoming_emergency_vehicle_ack", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_emergency_vehicle_ack" ])
206 ],
207 parameters=[
208 approaching_emergency_vehicle_plugin_param_file,
209 vehicle_characteristics_param_file,
210 vehicle_config_param_file,
211 global_params_override_file
212 ]
213 ),
214 ]
215 )
216
217 carma_stop_and_wait_plugin_container = ComposableNodeContainer(
218 package='carma_ros2_utils',
219 name='carma_stop_and_wait_plugin_container',
220 executable='carma_component_container_mt',
221 namespace=GetCurrentNamespace(),
222 composable_node_descriptions=[
223
224 ComposableNode(
225 package='stop_and_wait_plugin',
226 plugin='stop_and_wait_plugin::StopandWaitNode',
227 name='stop_and_wait_plugin',
228 extra_arguments=[
229 {'use_intra_process_comms': True},
230 ],
231 remappings = [
232 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
233 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
234 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
235 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
236 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
237 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
238 ],
239 parameters=[
240 stop_and_wait_plugin_param_file,
241 vehicle_config_param_file,
242 global_params_override_file
243 ]
244 ),
245 ]
246 )
247
248 carma_sci_strategic_plugin_container = ComposableNodeContainer(
249 package='carma_ros2_utils',
250 name='carma_sci_strategic_plugin_container',
251 executable='carma_component_container_mt',
252 namespace=GetCurrentNamespace(),
253 composable_node_descriptions=[
254 ComposableNode(
255 package='sci_strategic_plugin',
256 plugin='sci_strategic_plugin::SCIStrategicPlugin',
257 name='sci_strategic_plugin',
258 extra_arguments=[
259 {'use_intra_process_comms': True},
260 ],
261 remappings = [
262 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
263 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
264 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
265 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
266 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
267 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
268 ("maneuver_plan", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/final_maneuver_plan" ] ),
269 ("outgoing_mobility_operation", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_mobility_operation" ] ),
270 ("incoming_mobility_operation", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_mobility_operation" ] ),
271 ("bsm_outbound", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/bsm_outbound" ] ),
272 ("current_pose", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/current_pose" ] ),
273 ],
274 parameters=[
275 sci_strategic_plugin_file_path,
276 vehicle_config_param_file,
277 global_params_override_file
278 ]
279 ),
280 ]
281 )
282
283 carma_lci_strategic_plugin_container = ComposableNodeContainer(
284 package='carma_ros2_utils',
285 name='carma_lci_strategic_plugin_container',
286 executable='carma_component_container_mt',
287 namespace=GetCurrentNamespace(),
288 composable_node_descriptions=[
289 ComposableNode(
290 package='lci_strategic_plugin',
291 plugin='lci_strategic_plugin::LCIStrategicPlugin',
292 name='lci_strategic_plugin',
293 extra_arguments=[
294 {'use_intra_process_comms': True},
295 ],
296 remappings = [
297 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
298 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
299 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
300 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
301 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
302 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
303 ("maneuver_plan", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/final_maneuver_plan" ] ),
304 ("outgoing_mobility_operation", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_mobility_operation" ] ),
305 ("incoming_mobility_operation", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_mobility_operation" ] ),
306 ("bsm_outbound", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/bsm_outbound" ] ),
307 ],
308 parameters=[
309 lci_strategic_plugin_file_path,
310 vehicle_config_param_file,
311 unique_vehicle_calibration_params,
312 global_params_override_file
313 ]
314 ),
315 ]
316 )
317
318 carma_stop_controlled_intersection_tactical_plugin_container = ComposableNodeContainer(
319 package='carma_ros2_utils',
320 name='carma_stop_controlled_intersection_tactical_plugin_container',
321 executable='carma_component_container_mt',
322 namespace=GetCurrentNamespace(),
323 composable_node_descriptions=[
324 ComposableNode(
325 package='stop_controlled_intersection_tactical_plugin',
326 plugin='stop_controlled_intersection_tactical_plugin::StopControlledIntersectionTacticalPlugin',
327 name='stop_controlled_intersection_tactical_plugin',
328 extra_arguments=[
329 {'use_intra_process_comms': True},
330 ],
331 remappings = [
332 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
333 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
334 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
335 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
336 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
337 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] )
338 ],
339 parameters=[
340 stop_controlled_intersection_tactical_plugin_file_path,
341 vehicle_config_param_file,
342 global_params_override_file
343 ]
344 ),
345 ]
346 )
347
348 carma_cooperative_lanechange_plugins_container = ComposableNodeContainer(
349 package='carma_ros2_utils',
350 name='carma_cooperative_lanechange_plugins_container',
351 executable='carma_component_container_mt',
352 namespace=GetCurrentNamespace(),
353 composable_node_descriptions=[
354 ComposableNode(
355 package='cooperative_lanechange',
356 plugin='cooperative_lanechange::CooperativeLaneChangePlugin',
357 name='cooperative_lanechange',
358 extra_arguments=[
359 {'use_intra_process_comms': True},
360 ],
361 remappings = [
362 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
363 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
364 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
365 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
366 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
367 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
368 ("current_velocity", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/vehicle/twist" ] ),
369 ("cooperative_lane_change_status", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/cooperative_lane_change_status" ] ),
370 ("bsm_outbound", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/bsm_outbound" ] ),
371 ("outgoing_mobility_request", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_mobility_request" ] ),
372 ("incoming_mobility_response", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_mobility_response" ] ),
373 ("georeference", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/map_param_loader/georeference" ] ),
374 ("current_pose", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/current_pose" ] )
375 ],
376 parameters=[
377 cooperative_lanechange_param_file,
378 vehicle_characteristics_param_file,
379 vehicle_config_param_file,
380 global_params_override_file
381 ]
382 ),
383 ]
384 )
385
386 carma_yield_plugin_container = ComposableNodeContainer(
387 package='carma_ros2_utils',
388 name='carma_yield_plugin_container',
389 executable='carma_component_container_mt',
390 namespace=GetCurrentNamespace(),
391 composable_node_descriptions=[
392 ComposableNode(
393 package='yield_plugin',
394 plugin='yield_plugin::YieldPluginNode',
395 name='yield_plugin',
396 extra_arguments=[
397 {'use_intra_process_comms': True},
398 ],
399 remappings = [
400 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
401 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
402 ("external_object_predictions", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/external_object_predictions" ] ),
403 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
404 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
405 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
406 ("outgoing_mobility_response", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_mobility_response" ] ),
407 ("incoming_mobility_request", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_mobility_request" ] ),
408 ("cooperative_lane_change_status", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/cooperative_lane_change_status" ] ),
409 ("georeference", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/map_param_loader/georeference"]),
410 ("bsm_outbound", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/bsm_outbound" ] ),
411 ],
412 parameters=[
413 yield_plugin_file_path,
414 vehicle_config_param_file,
415 global_params_override_file
416 ]
417 ),
418 ]
419 )
420
421 carma_light_controlled_intersection_plugins_container = ComposableNodeContainer(
422 package='carma_ros2_utils',
423 name='carma_light_controlled_intersection_plugins_container',
424 executable='carma_component_container_mt',
425 namespace=GetCurrentNamespace(),
426 composable_node_descriptions=[
427 ComposableNode(
428 package='light_controlled_intersection_tactical_plugin',
429 plugin='light_controlled_intersection_tactical_plugin::LightControlledIntersectionTransitPluginNode',
430 name='light_controlled_intersection_tactical_plugin',
431 extra_arguments=[
432 {'use_intra_process_comms': True},
433 ],
434 remappings = [
435 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
436 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
437 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
438 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
439 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
440 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] )
441 ],
442 parameters=[
443 vehicle_config_param_file,
444 vehicle_characteristics_param_file,
445 light_controlled_intersection_tactical_plugin_param_file,
446 global_params_override_file
447 ]
448 ),
449 ]
450 )
451
452 carma_pure_pursuit_wrapper_container = ComposableNodeContainer(
453 package='carma_ros2_utils',
454 name='carma_pure_pursuit_wrapper_container',
455 executable='carma_component_container_mt',
456 namespace=GetCurrentNamespace(),
457 composable_node_descriptions=[
458 ComposableNode(
459 package='pure_pursuit_wrapper',
460 plugin='pure_pursuit_wrapper::PurePursuitWrapperNode',
461 name='pure_pursuit_wrapper',
462 extra_arguments=[
463 {'use_intra_process_comms': True},
464 ],
465 remappings = [
466 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
467 ("ctrl_raw", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/ctrl_raw" ] ),
468 ("pure_pursuit_wrapper/plan_trajectory", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugins/pure_pursuit/plan_trajectory" ] ),
469 ("current_pose", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/current_pose" ] ),
470 ("vehicle/twist", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/vehicle/twist" ] ),
471 ],
472 parameters=[
473 vehicle_characteristics_param_file,
474 vehicle_config_param_file,
475 pure_pursuit_tuning_parameters,
476 global_params_override_file
477 ]
478 ),
479 ]
480 )
481
482 trajectory_follower_container = ComposableNodeContainer(
483 package='carma_ros2_utils',
484 name='trajectory_follower_container',
485 executable='carma_component_container_mt',
486 namespace=GetCurrentNamespace(),
487 composable_node_descriptions=[
488 ComposableNode(
489 package='trajectory_follower_nodes',
490 plugin='autoware::motion::control::trajectory_follower_nodes::LatLonMuxer',
491 name='latlon_muxer_node',
492 extra_arguments=[
493 {'use_intra_process_comms': False},
494 ],
495 remappings = [
496 ("input/lateral/control_cmd", "trajectory_follower/lateral/control_cmd"),
497 ("input/longitudinal/control_cmd", "trajectory_follower/longitudinal/control_cmd"),
498 ("output/control_cmd", "trajectory_follower/control_cmd")
499 ],
500 parameters=[
501 {'timeout_thr_sec':0.5},
502 global_params_override_file
503 ]
504 ),
505 ComposableNode(
506 package='trajectory_follower_nodes',
507 plugin='autoware::motion::control::trajectory_follower_nodes::LateralController',
508 name='lateral_controller_node',
509 extra_arguments=[
510 {'use_intra_process_comms': True},
511 ],
512 remappings = [
513 ("output/lateral/control_cmd", "trajectory_follower/lateral/control_cmd"),
514 ("input/current_kinematic_state", "trajectory_follower/current_kinematic_state"),
515 ("input/reference_trajectory","trajectory_follower/reference_trajectory" )
516 ],
517 parameters = [
518 [vehicle_calibration_dir,
519 "/trajectory_follower/lateral_controller_defaults.yaml"],
520 global_params_override_file
521 ]
522 ),
523 ComposableNode(
524 package='trajectory_follower_nodes',
525 plugin='autoware::motion::control::trajectory_follower_nodes::LongitudinalController',
526 name='longitudinal_controller_node',
527 extra_arguments=[
528 {'use_intra_process_comms': False},
529 ],
530 remappings = [
531 ("output/longitudinal/control_cmd", "trajectory_follower/longitudinal/control_cmd"),
532 ("input/current_trajectory", "trajectory_follower/reference_trajectory"),
533 ("input/current_state", "trajectory_follower/current_kinematic_state")
534 ],
535 parameters = [
536 [vehicle_calibration_dir,
537 "/trajectory_follower/longitudinal_controller_defaults.yaml"],
538 global_params_override_file
539 ]
540 )
541 ]
542 )
543 carma_trajectory_follower_wrapper_container = ComposableNodeContainer(
544 package='carma_ros2_utils',
545 name='carma_trajectory_follower_wrapper_container',
546 executable='carma_component_container_mt',
547 namespace=GetCurrentNamespace(),
548 composable_node_descriptions=[
549 ComposableNode(
550 package='trajectory_follower_wrapper',
551 plugin='trajectory_follower_wrapper::TrajectoryFollowerWrapperNode',
552 name='trajectory_follower_wrapper',
553 extra_arguments=[
554 {'use_intra_process_comms': True},
555 ],
556 remappings = [
557 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
558 ("ctrl_raw", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/ctrl_raw" ] ),
559 ("trajectory_follower_wrapper/plan_trajectory", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugins/trajectory_follower_wrapper/plan_trajectory" ] ),
560 ("current_pose", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/current_pose" ] ),
561 ("vehicle/twist", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/vehicle/twist" ] ),
562 ],
563 parameters=[
564 vehicle_characteristics_param_file,
565 trajectory_follower_wrapper_param_file,
566 global_params_override_file
567 ]
568 ),
569 ]
570 )
571
572 platooning_strategic_plugin_container = ComposableNodeContainer(
573 package='carma_ros2_utils',
574 name='platooning_strategic_plugin_container',
575 executable='carma_component_container_mt',
576 namespace=GetCurrentNamespace(),
577 composable_node_descriptions=[
578 ComposableNode(
579 package='platooning_strategic_ihp',
580 plugin='platooning_strategic_ihp::Node',
581 name='platooning_strategic_ihp_node',
582 extra_arguments=[
583 {'use_intra_process_comms': True},
584 ],
585 remappings = [
586 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
587 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
588 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
589 ("georeference", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/map_param_loader/georeference" ] ),
590 ("outgoing_mobility_response", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_mobility_response" ] ),
591 ("outgoing_mobility_request", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_mobility_request" ] ),
592 ("outgoing_mobility_operation", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/outgoing_mobility_operation" ] ),
593 ("incoming_mobility_request", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_mobility_request" ] ),
594 ("incoming_mobility_response", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_mobility_response" ] ),
595 ("incoming_mobility_operation", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_mobility_operation" ] ),
596 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
597 ("twist_raw", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/twist_raw" ] ),
598 ("platoon_info", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/platoon_info" ] ),
599 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
600 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
601 ("current_velocity", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/vehicle/twist" ] ),
602 ("current_pose", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/current_pose" ] ),
603 ],
604 parameters=[
605 platooning_strategic_ihp_param_file,
606 vehicle_config_param_file,
607 global_params_override_file
608 ]
609 ),
610 ]
611 )
612
613 platooning_tactical_plugin_container = ComposableNodeContainer(
614 package='carma_ros2_utils',
615 name='platooning_tactical_plugin_container',
616 executable='carma_component_container_mt',
617 namespace=GetCurrentNamespace(),
618 composable_node_descriptions=[
619 ComposableNode(
620 package='platooning_tactical_plugin',
621 plugin='platooning_tactical_plugin::Node',
622 name='platooning_tactical_plugin_node',
623 extra_arguments=[
624 {'use_intra_process_comms': True},
625 ],
626 remappings = [
627 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
628 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
629 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
630 ("georeference", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/map_param_loader/georeference" ] ),
631 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
632 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
633 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
634 ],
635 parameters=[platoon_tactical_ihp_param_file,
636 vehicle_config_param_file,
637 global_params_override_file]
638 ),
639 ]
640 )
641
642 platooning_control_plugin_container = ComposableNodeContainer(
643 package='carma_ros2_utils',
644 name='platooning_control_container',
645 executable='carma_component_container_mt',
646 namespace=GetCurrentNamespace(),
647 composable_node_descriptions=[
648 ComposableNode(
649 package='platooning_control',
650 plugin='platooning_control::PlatooningControlPlugin',
651 name='platooning_control',
652 extra_arguments=[
653 {'use_intra_process_comms': True},
654 ],
655 remappings = [
656 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
657 ("ctrl_raw", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/ctrl_raw" ] ),
658 ("twist_raw", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/twist_raw" ] ),
659 ("platooning_control/plan_trajectory", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugins/platooning_control/plan_trajectory" ] ),
660 ("current_pose", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/current_pose" ] ),
661 ("vehicle/twist", [ EnvironmentVariable('CARMA_INTR_NS', default_value=''), "/vehicle/twist" ] ),
662 ],
663 parameters=[ platooning_control_param_file,
664 vehicle_config_param_file,
665 unique_vehicle_calibration_params,
666 global_params_override_file]
667 )
668 ]
669 )
670
671 carma_stop_and_dwell_strategic_plugin_container = ComposableNodeContainer(
672 package='carma_ros2_utils',
673 name='carma_stop_and_dwell_strategic_plugin_container',
674 executable='carma_component_container_mt',
675 namespace=GetCurrentNamespace(),
676 composable_node_descriptions=[
677 ComposableNode(
678 package='stop_and_dwell_strategic_plugin',
679 plugin='stop_and_dwell_strategic_plugin::StopAndDwellStrategicPlugin',
680 name='stop_and_dwell_strategic_plugin',
681 extra_arguments=[
682 {'use_intra_process_comms': True},
683 ],
684 remappings = [
685 ("semantic_map", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/semantic_map" ] ),
686 ("map_update", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/map_update" ] ),
687 ("roadway_objects", [ EnvironmentVariable('CARMA_ENV_NS', default_value=''), "/roadway_objects" ] ),
688 ("incoming_spat", [ EnvironmentVariable('CARMA_MSG_NS', default_value=''), "/incoming_spat" ] ),
689 ("plugin_discovery", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/plugin_discovery" ] ),
690 ("route", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/route" ] ),
691 ("maneuver_plan", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/final_maneuver_plan" ] ),
692 ("state", [ EnvironmentVariable('CARMA_GUIDE_NS', default_value=''), "/state" ] ),
693 ("current_pose", [ EnvironmentVariable('CARMA_LOCZ_NS', default_value=''), "/current_pose" ] ),
694 ],
695 parameters=[
696 stop_and_dwell_strategic_plugin_container_file_path,
697 vehicle_config_param_file,
698 global_params_override_file
699 ]
700 ),
701 ]
702 )
703
704 intersection_transit_maneuvering_container = ComposableNodeContainer(
705 package='carma_ros2_utils',
706 name='intersection_transit_maneuvering_container',
707 executable='carma_component_container_mt',
708 namespace=GetCurrentNamespace(),
709 composable_node_descriptions=[
710 ComposableNode(
711 package='intersection_transit_maneuvering',
712 plugin='intersection_transit_maneuvering::IntersectionTransitManeuveringNode',
713 name='intersection_transit_maneuvering',
714 extra_arguments=[
715 {'use_intra_process_comms': True},
716 ],
717 remappings = [],
718 parameters=[
719 vehicle_config_param_file,
720 global_params_override_file
721 ]
722 ),
723 ]
724 )
725
726 return LaunchDescription([
727 declare_vehicle_config_dir_arg,
728 declare_global_params_override_file_arg,
729 carma_inlanecruising_plugin_container,
730 carma_route_following_plugin_container,
731 carma_approaching_emergency_vehicle_plugin_container,
732 carma_stop_and_wait_plugin_container,
733 carma_sci_strategic_plugin_container,
734 carma_stop_and_dwell_strategic_plugin_container,
735 carma_lci_strategic_plugin_container,
736 carma_stop_controlled_intersection_tactical_plugin_container,
737 carma_cooperative_lanechange_plugins_container,
738 carma_yield_plugin_container,
739 carma_light_controlled_intersection_plugins_container,
740 carma_pure_pursuit_wrapper_container,
741 carma_trajectory_follower_wrapper_container,
742
743 platooning_tactical_plugin_container,
744 platooning_control_plugin_container,
745 intersection_transit_maneuvering_container,
746 trajectory_follower_container
747
748 ])
def generate_launch_description()