diff --git a/README.md b/README.md index 72445de..87e0022 100644 --- a/README.md +++ b/README.md @@ -72,41 +72,4 @@ Launch with an explicit plan path: ```bash source install/setup.bash ros2 launch fabric_server fabric.launch.py plan_file_path:=/absolute/path/to/plan.xml -``` - -## Composed launch - -Composed launch is a more efficient approach to spin up a system under a single process. Positives are IPC via shared memory, providing lower latency and optimized resoirce usage. Draw back of this approach is that, it becomes harder for debugging and fault tolerence. - -Use independent launch files with standard node based implementations for debugging. For deployment, utilize composed launch where ever possible. - -We provide several composed launch files for launching the system. - -### Non generative launch - -This launch file starts Fabric Server and [Capabilities2 Server](https://github.com/CollaborativeRoboticsLab/capabilities2). Suitable for non-generative use with predefined plans. - -```bash -source install/setup.bash -ros2 launch fabric_server nongenerative.launch.py -``` - -### Generative launch - -This launch file starts Fabric Server, [Capabilities2 Server](https://github.com/CollaborativeRoboticsLab/capabilities2), and [prompt_tools](https://github.com/CollaborativeRoboticsLab/prompt_tools). Suitable for generative use without perception. - -```bash -export OPENAI_API_KEY= -source install/setup.bash -ros2 launch fabric_server generative.launch.py -``` - -### Generative launch with perception - -This launch file starts Fabric Server, [Capabilities2 Server](https://github.com/CollaborativeRoboticsLab/capabilities2), [prompt_tools](https://github.com/CollaborativeRoboticsLab/prompt_tools), and [Perception Server](https://github.com/CollaborativeRoboticsLab/perception). Suitable for generative use with perception. - -```bash -export OPENAI_API_KEY= -source install/setup.bash -ros2 launch fabric_server generative_perception.launch.py ``` \ No newline at end of file diff --git a/fabric_server/launch/generative.launch.py b/fabric_server/launch/generative.launch.py deleted file mode 100644 index 03a7b05..0000000 --- a/fabric_server/launch/generative.launch.py +++ /dev/null @@ -1,48 +0,0 @@ -import os -from launch import LaunchDescription -from launch_ros.actions import Node -from launch_ros.actions import ComposableNodeContainer -from launch_ros.descriptions import ComposableNode -from ament_index_python.packages import get_package_share_directory - - -def generate_launch_description(): - - # load config file - capability_config = os.path.join(get_package_share_directory('capabilities2_server'), 'config', 'capabilities.yaml') - fabric_config = os.path.join(get_package_share_directory('fabric_server'), 'config', 'fabric.yaml') - prompt_config = os.path.join(get_package_share_directory('prompt_bridge'), 'config', 'prompt_bridge.yaml') - - # create bridge composition - nongenerative_container = ComposableNodeContainer( - name='nongenerative_container', - namespace='', - package='rclcpp_components', - executable='component_container_mt', - # prefix=['xterm -e gdb -ex run --args'], # Add GDB debugging prefix - arguments=['--ros-args', '--log-level', 'info'], - composable_node_descriptions=[ - ComposableNode( - package='capabilities2_server', - plugin='capabilities2_server::CapabilitiesServer', - name='capabilities', - parameters=[capability_config] - ), - ComposableNode( - package='fabric_server', - plugin='fabric::Fabric', - name='fabric_server', - parameters=[fabric_config] - ), - ComposableNode( - package='prompt_bridge', - plugin='prompt_bridge::PromptBridge', - name='prompt_bridge', - parameters=[prompt_config] - ) - ] - ) - - return LaunchDescription([ - nongenerative_container - ]) diff --git a/fabric_server/launch/generative_perception.launch.py b/fabric_server/launch/generative_perception.launch.py deleted file mode 100644 index 66fa122..0000000 --- a/fabric_server/launch/generative_perception.launch.py +++ /dev/null @@ -1,55 +0,0 @@ -import os -from launch import LaunchDescription -from launch_ros.actions import Node -from launch_ros.actions import ComposableNodeContainer -from launch_ros.descriptions import ComposableNode -from ament_index_python.packages import get_package_share_directory - - -def generate_launch_description(): - - # load config file - capability_config = os.path.join(get_package_share_directory('capabilities2_server'), 'config', 'capabilities.yaml') - fabric_config = os.path.join(get_package_share_directory('fabric_server'), 'config', 'fabric.yaml') - prompt_config = os.path.join(get_package_share_directory('prompt_bridge'), 'config', 'prompt_bridge.yaml') - perception_config = os.path.join(get_package_share_directory('perception'), 'config', 'config.yaml') - - # create bridge composition - nongenerative_container = ComposableNodeContainer( - name='nongenerative_container', - namespace='', - package='rclcpp_components', - executable='component_container_mt', - # prefix=['xterm -e gdb -ex run --args'], # Add GDB debugging prefix - arguments=['--ros-args', '--log-level', 'info'], - composable_node_descriptions=[ - ComposableNode( - package='capabilities2_server', - plugin='capabilities2_server::CapabilitiesServer', - name='capabilities', - parameters=[capability_config] - ), - ComposableNode( - package='fabric_server', - plugin='fabric::Fabric', - name='fabric_server', - parameters=[fabric_config] - ), - ComposableNode( - package='prompt_bridge', - plugin='prompt_bridge::PromptBridge', - name='prompt_bridge', - parameters=[prompt_config] - ), - ComposableNode( - package='perception', - plugin='perception::PerceptionServer', - name='perception', - parameters=[perception_config] - ) - ] - ) - - return LaunchDescription([ - nongenerative_container - ]) diff --git a/fabric_server/launch/nongenerative.launch.py b/fabric_server/launch/nongenerative.launch.py deleted file mode 100644 index e1830eb..0000000 --- a/fabric_server/launch/nongenerative.launch.py +++ /dev/null @@ -1,41 +0,0 @@ -import os -from launch import LaunchDescription -from launch_ros.actions import Node -from launch_ros.actions import ComposableNodeContainer -from launch_ros.descriptions import ComposableNode -from ament_index_python.packages import get_package_share_directory - - -def generate_launch_description(): - - # load config file - capability_config = os.path.join(get_package_share_directory('capabilities2_server'), 'config', 'capabilities.yaml') - fabric_config = os.path.join(get_package_share_directory('fabric_server'), 'config', 'fabric.yaml') - - # create bridge composition - nongenerative_container = ComposableNodeContainer( - name='nongenerative_container', - namespace='', - package='rclcpp_components', - executable='component_container_mt', - # prefix=['xterm -e gdb -ex run --args'], # Add GDB debugging prefix - arguments=['--ros-args', '--log-level', 'info'], - composable_node_descriptions=[ - ComposableNode( - package='capabilities2_server', - plugin='capabilities2_server::CapabilitiesServer', - name='capabilities', - parameters=[capability_config] - ), - ComposableNode( - package='fabric_server', - plugin='fabric::Fabric', - name='fabric_server', - parameters=[fabric_config], - ) - ] - ) - - return LaunchDescription([ - nongenerative_container - ])