15from ament_index_python
import get_package_share_directory
16from launch.actions
import Shutdown
17from launch
import LaunchDescription
18from launch_ros.actions
import Node
19from launch_ros.actions
import ComposableNodeContainer
20from launch_ros.descriptions
import ComposableNode
21from launch.substitutions
import EnvironmentVariable
22from carma_ros2_utils.launch.get_current_namespace
import GetCurrentNamespace
23from launch.substitutions
import LaunchConfiguration
27from launch.actions
import IncludeLaunchDescription
28from launch.launch_description_sources
import PythonLaunchDescriptionSource
29from launch.actions
import GroupAction
30from launch_ros.actions
import set_remap
31from launch.actions
import DeclareLaunchArgument
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')
46 vehicle_config_param_file = LaunchConfiguration(
'vehicle_config_param_file')
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"
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"
64 inlanecruising_plugin_file_path = os.path.join(
65 get_package_share_directory(
'inlanecruising_plugin'),
'config/parameters.yaml')
67 route_following_plugin_file_path = os.path.join(
68 get_package_share_directory(
'route_following_plugin'),
'config/parameters.yaml')
70 stop_and_wait_plugin_param_file = os.path.join(
71 get_package_share_directory(
'stop_and_wait_plugin'),
'config/parameters.yaml')
73 light_controlled_intersection_tactical_plugin_param_file = os.path.join(
74 get_package_share_directory(
'light_controlled_intersection_tactical_plugin'),
'config/parameters.yaml')
76 cooperative_lanechange_param_file = os.path.join(
77 get_package_share_directory(
'cooperative_lanechange'),
'config/parameters.yaml')
79 platooning_strategic_ihp_param_file = os.path.join(
80 get_package_share_directory(
'platooning_strategic_ihp'),
'config/parameters.yaml')
82 sci_strategic_plugin_file_path = os.path.join(
83 get_package_share_directory(
'sci_strategic_plugin'),
'config/parameters.yaml')
85 lci_strategic_plugin_file_path = os.path.join(
86 get_package_share_directory(
'lci_strategic_plugin'),
'config/parameters.yaml')
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')
91 yield_plugin_file_path = os.path.join(
92 get_package_share_directory(
'yield_plugin'),
'config/parameters.yaml')
94 platoon_tactical_ihp_param_file = os.path.join(
95 get_package_share_directory(
'platooning_tactical_plugin'),
'config/parameters.yaml')
97 approaching_emergency_vehicle_plugin_param_file = os.path.join(
98 get_package_share_directory(
'approaching_emergency_vehicle_plugin'),
'config/parameters.yaml')
100 stop_controlled_intersection_tactical_plugin_file_path = os.path.join(
101 get_package_share_directory(
'stop_controlled_intersection_tactical_plugin'),
'config/parameters.yaml')
103 trajectory_follower_wrapper_param_file = os.path.join(
104 get_package_share_directory(
'trajectory_follower_wrapper'),
'config/parameters.yaml')
106 pure_pursuit_tuning_parameters = [vehicle_calibration_dir,
"/pure_pursuit/calibration.yaml"]
108 unique_vehicle_calibration_params = [vehicle_calibration_dir,
"/identifiers/UniqueVehicleParams.yaml"]
110 platooning_control_param_file = os.path.join(
111 get_package_share_directory(
'platooning_control'),
'config/parameters.yaml')
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=[
120 package=
'inlanecruising_plugin',
121 plugin=
'inlanecruising_plugin::InLaneCruisingPluginNode',
122 name=
'inlanecruising_plugin',
124 {
'use_intra_process_comms':
True},
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" ] ),
135 inlanecruising_plugin_file_path,
136 vehicle_config_param_file,
137 global_params_override_file
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=[
151 package=
'route_following_plugin',
152 plugin=
'route_following_plugin::RouteFollowingPlugin',
153 name=
'route_following_plugin',
155 {
'use_intra_process_comms':
True},
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" ] ),
168 route_following_plugin_file_path,
169 vehicle_config_param_file,
170 global_params_override_file
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=[
184 package=
'approaching_emergency_vehicle_plugin',
185 plugin=
'approaching_emergency_vehicle_plugin::ApproachingEmergencyVehiclePlugin',
186 name=
'approaching_emergency_vehicle_plugin',
188 {
'use_intra_process_comms':
True},
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" ])
208 approaching_emergency_vehicle_plugin_param_file,
209 vehicle_characteristics_param_file,
210 vehicle_config_param_file,
211 global_params_override_file
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=[
225 package=
'stop_and_wait_plugin',
226 plugin=
'stop_and_wait_plugin::StopandWaitNode',
227 name=
'stop_and_wait_plugin',
229 {
'use_intra_process_comms':
True},
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" ] ),
240 stop_and_wait_plugin_param_file,
241 vehicle_config_param_file,
242 global_params_override_file
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=[
255 package=
'sci_strategic_plugin',
256 plugin=
'sci_strategic_plugin::SCIStrategicPlugin',
257 name=
'sci_strategic_plugin',
259 {
'use_intra_process_comms':
True},
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" ] ),
275 sci_strategic_plugin_file_path,
276 vehicle_config_param_file,
277 global_params_override_file
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=[
290 package=
'lci_strategic_plugin',
291 plugin=
'lci_strategic_plugin::LCIStrategicPlugin',
292 name=
'lci_strategic_plugin',
294 {
'use_intra_process_comms':
True},
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" ] ),
309 lci_strategic_plugin_file_path,
310 vehicle_config_param_file,
311 unique_vehicle_calibration_params,
312 global_params_override_file
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=[
325 package=
'stop_controlled_intersection_tactical_plugin',
326 plugin=
'stop_controlled_intersection_tactical_plugin::StopControlledIntersectionTacticalPlugin',
327 name=
'stop_controlled_intersection_tactical_plugin',
329 {
'use_intra_process_comms':
True},
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" ] )
340 stop_controlled_intersection_tactical_plugin_file_path,
341 vehicle_config_param_file,
342 global_params_override_file
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=[
355 package=
'cooperative_lanechange',
356 plugin=
'cooperative_lanechange::CooperativeLaneChangePlugin',
357 name=
'cooperative_lanechange',
359 {
'use_intra_process_comms':
True},
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" ] )
377 cooperative_lanechange_param_file,
378 vehicle_characteristics_param_file,
379 vehicle_config_param_file,
380 global_params_override_file
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=[
393 package=
'yield_plugin',
394 plugin=
'yield_plugin::YieldPluginNode',
397 {
'use_intra_process_comms':
True},
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" ] ),
413 yield_plugin_file_path,
414 vehicle_config_param_file,
415 global_params_override_file
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=[
428 package=
'light_controlled_intersection_tactical_plugin',
429 plugin=
'light_controlled_intersection_tactical_plugin::LightControlledIntersectionTransitPluginNode',
430 name=
'light_controlled_intersection_tactical_plugin',
432 {
'use_intra_process_comms':
True},
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" ] )
443 vehicle_config_param_file,
444 vehicle_characteristics_param_file,
445 light_controlled_intersection_tactical_plugin_param_file,
446 global_params_override_file
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=[
459 package=
'pure_pursuit_wrapper',
460 plugin=
'pure_pursuit_wrapper::PurePursuitWrapperNode',
461 name=
'pure_pursuit_wrapper',
463 {
'use_intra_process_comms':
True},
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" ] ),
473 vehicle_characteristics_param_file,
474 vehicle_config_param_file,
475 pure_pursuit_tuning_parameters,
476 global_params_override_file
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=[
489 package=
'trajectory_follower_nodes',
490 plugin=
'autoware::motion::control::trajectory_follower_nodes::LatLonMuxer',
491 name=
'latlon_muxer_node',
493 {
'use_intra_process_comms':
False},
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")
501 {
'timeout_thr_sec':0.5},
502 global_params_override_file
506 package=
'trajectory_follower_nodes',
507 plugin=
'autoware::motion::control::trajectory_follower_nodes::LateralController',
508 name=
'lateral_controller_node',
510 {
'use_intra_process_comms':
True},
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" )
518 [vehicle_calibration_dir,
519 "/trajectory_follower/lateral_controller_defaults.yaml"],
520 global_params_override_file
524 package=
'trajectory_follower_nodes',
525 plugin=
'autoware::motion::control::trajectory_follower_nodes::LongitudinalController',
526 name=
'longitudinal_controller_node',
528 {
'use_intra_process_comms':
False},
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")
536 [vehicle_calibration_dir,
537 "/trajectory_follower/longitudinal_controller_defaults.yaml"],
538 global_params_override_file
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=[
550 package=
'trajectory_follower_wrapper',
551 plugin=
'trajectory_follower_wrapper::TrajectoryFollowerWrapperNode',
552 name=
'trajectory_follower_wrapper',
554 {
'use_intra_process_comms':
True},
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" ] ),
564 vehicle_characteristics_param_file,
565 trajectory_follower_wrapper_param_file,
566 global_params_override_file
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=[
579 package=
'platooning_strategic_ihp',
580 plugin=
'platooning_strategic_ihp::Node',
581 name=
'platooning_strategic_ihp_node',
583 {
'use_intra_process_comms':
True},
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" ] ),
605 platooning_strategic_ihp_param_file,
606 vehicle_config_param_file,
607 global_params_override_file
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=[
620 package=
'platooning_tactical_plugin',
621 plugin=
'platooning_tactical_plugin::Node',
622 name=
'platooning_tactical_plugin_node',
624 {
'use_intra_process_comms':
True},
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" ] ),
635 parameters=[platoon_tactical_ihp_param_file,
636 vehicle_config_param_file,
637 global_params_override_file]
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=[
649 package=
'platooning_control',
650 plugin=
'platooning_control::PlatooningControlPlugin',
651 name=
'platooning_control',
653 {
'use_intra_process_comms':
True},
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" ] ),
663 parameters=[ platooning_control_param_file,
664 vehicle_config_param_file,
665 unique_vehicle_calibration_params,
666 global_params_override_file]
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=[
678 package=
'stop_and_dwell_strategic_plugin',
679 plugin=
'stop_and_dwell_strategic_plugin::StopAndDwellStrategicPlugin',
680 name=
'stop_and_dwell_strategic_plugin',
682 {
'use_intra_process_comms':
True},
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" ] ),
696 stop_and_dwell_strategic_plugin_container_file_path,
697 vehicle_config_param_file,
698 global_params_override_file
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=[
711 package=
'intersection_transit_maneuvering',
712 plugin=
'intersection_transit_maneuvering::IntersectionTransitManeuveringNode',
713 name=
'intersection_transit_maneuvering',
715 {
'use_intra_process_comms':
True},
719 vehicle_config_param_file,
720 global_params_override_file
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,
743 platooning_tactical_plugin_container,
744 platooning_control_plugin_container,
745 intersection_transit_maneuvering_container,
746 trajectory_follower_container
def generate_launch_description()