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