diff --git a/launch/__pycache__/rover_launch.cpython-312.pyc b/launch/__pycache__/rover_launch.cpython-312.pyc new file mode 100644 index 0000000..a7099b2 Binary files /dev/null and b/launch/__pycache__/rover_launch.cpython-312.pyc differ diff --git a/launch/rover_launch.py b/launch/rover_launch.py new file mode 100644 index 0000000..2e2a759 --- /dev/null +++ b/launch/rover_launch.py @@ -0,0 +1,100 @@ +#!/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 + +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='screen', + parameters=[{'launch_arg': mode}] + ) + ) + nodes.append( + Node( + package='core_pkg', + executable='core', # change as needed + name='core', + output='screen', + parameters=[{'launch_arg': mode}] + ) + ) + # nodes.append( + # Node( + # package='bio_pkg', + # executable='bio', # change as needed + # name='bio', + # output='screen', + # parameters=[{'launch_arg': mode}] + # ) + # ) + nodes.append( + Node( + package='anchor_pkg', + executable='anchor', # change as needed + name='anchor', + output='screen', + parameters=[{'launch_arg': 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='screen', + parameters=[{'launch_arg': mode}] + ) + ) + elif mode == 'core': + nodes.append( + Node( + package='core_pkg', + executable='core', + name='core', + output='screen', + parameters=[{'launch_arg': mode}] + ) + ) + # elif mode == 'bio': + # nodes.append( + # Node( + # package='bio_pkg', + # executable='bio', + # name='bio', + # output='screen', + # parameters=[{'launch_arg': 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) + ]) diff --git a/src/anchor_pkg/anchor_pkg/__init__.py b/src/anchor_pkg/anchor_pkg/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/anchor_pkg/package.xml b/src/anchor_pkg/package.xml new file mode 100644 index 0000000..8366b03 --- /dev/null +++ b/src/anchor_pkg/package.xml @@ -0,0 +1,20 @@ + + + + anchor_pkg + 0.0.0 + TODO: Package description + tristan + TODO: License declaration + + rclpy + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/anchor_pkg/resource/anchor_pkg b/src/anchor_pkg/resource/anchor_pkg new file mode 100644 index 0000000..e69de29 diff --git a/src/anchor_pkg/setup.cfg b/src/anchor_pkg/setup.cfg new file mode 100644 index 0000000..9a77caa --- /dev/null +++ b/src/anchor_pkg/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/anchor_pkg +[install] +install_scripts=$base/lib/anchor_pkg diff --git a/src/anchor_pkg/setup.py b/src/anchor_pkg/setup.py new file mode 100644 index 0000000..376e0a1 --- /dev/null +++ b/src/anchor_pkg/setup.py @@ -0,0 +1,24 @@ +from setuptools import find_packages, setup + +package_name = 'anchor_pkg' + +setup( + name=package_name, + version='0.0.0', + packages=find_packages(exclude=['test']), + data_files=[ + ('share/ament_index/resource_index/packages', + ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer='tristan', + maintainer_email='tristanmcginnis26@gmail.com', + description='TODO: Package description', + license='TODO: License declaration', + entry_points={ + 'console_scripts': [ + ], + }, +)