mirror of
https://github.com/SHC-ASTRA/rover-ros2.git
synced 2026-02-11 09:20:40 +00:00
107 lines
3.1 KiB
Python
107 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from launch import LaunchDescription
|
|
from launch.actions import DeclareLaunchArgument, OpaqueFunction
|
|
from launch.substitutions import LaunchConfiguration
|
|
from launch_ros.actions import Node
|
|
|
|
|
|
|
|
#Prevent making __pycache__ directories
|
|
from sys import dont_write_bytecode
|
|
dont_write_bytecode = True
|
|
|
|
def launch_setup(context, *args, **kwargs):
|
|
# Retrieve the resolved value of the launch argument 'mode'
|
|
mode = LaunchConfiguration('mode').perform(context)
|
|
nodes = []
|
|
|
|
if mode == 'anchor':
|
|
# Launch every node and pass "anchor" as the parameter
|
|
nodes.append(
|
|
Node(
|
|
package='arm_pkg',
|
|
executable='arm', # change as needed
|
|
name='arm',
|
|
output='both',
|
|
parameters=[{'launch_mode': mode}]
|
|
)
|
|
)
|
|
nodes.append(
|
|
Node(
|
|
package='core_pkg',
|
|
executable='core', # change as needed
|
|
name='core',
|
|
output='both',
|
|
parameters=[{'launch_mode': mode}]
|
|
)
|
|
)
|
|
nodes.append(
|
|
Node(
|
|
package='bio_pkg',
|
|
executable='bio', # change as needed
|
|
name='bio',
|
|
output='both',
|
|
parameters=[{'launch_mode': mode}]
|
|
)
|
|
)
|
|
nodes.append(
|
|
Node(
|
|
package='anchor_pkg',
|
|
executable='anchor', # change as needed
|
|
name='anchor',
|
|
output='both',
|
|
parameters=[{'launch_mode': mode}]
|
|
)
|
|
)
|
|
elif mode in ['arm', 'core', 'bio']:
|
|
# Only launch the node corresponding to the provided mode.
|
|
if mode == 'arm':
|
|
nodes.append(
|
|
Node(
|
|
package='arm_pkg',
|
|
executable='arm',
|
|
name='arm',
|
|
output='both',
|
|
parameters=[{'launch_mode': mode}]
|
|
)
|
|
)
|
|
elif mode == 'core':
|
|
nodes.append(
|
|
Node(
|
|
package='core_pkg',
|
|
executable='core',
|
|
name='core',
|
|
output='both',
|
|
parameters=[{'launch_mode': mode}]
|
|
)
|
|
)
|
|
elif mode == 'bio':
|
|
nodes.append(
|
|
Node(
|
|
package='bio_pkg',
|
|
executable='bio',
|
|
name='bio',
|
|
output='both',
|
|
parameters=[{'launch_mode': mode}]
|
|
)
|
|
)
|
|
else:
|
|
# If an invalid mode is provided, print an error.
|
|
# (You might want to raise an exception or handle it differently.)
|
|
print("Invalid mode provided. Choose one of: arm, core, bio, anchor.")
|
|
|
|
return nodes
|
|
|
|
def generate_launch_description():
|
|
declare_arg = DeclareLaunchArgument(
|
|
'mode',
|
|
default_value='anchor',
|
|
description='Launch mode: arm, core, bio, or anchor'
|
|
)
|
|
|
|
return LaunchDescription([
|
|
declare_arg,
|
|
OpaqueFunction(function=launch_setup)
|
|
])
|