diff --git a/docs/design/launch_system.md b/docs/design/launch_system.md index 32ad38e5..670f8884 100644 --- a/docs/design/launch_system.md +++ b/docs/design/launch_system.md @@ -1,6 +1,6 @@ # Launch System -The launch system is used to help spin up all the nodes associated with a given experiement (e.g. simulation, reality). This page describes the file structure and how files are designed. +The launch system is used to help spin up all the nodes associated with a given experiement (e.g. simulation, reality). This page describes the file structure and how files are designed, as well as how new launch dependencies should be added. > [!NOTE] > The term "orchestrator" is going to be used to describe a launch file that includes other launch files or does house keeping (defines `LaunchConfigurations`, etc.). @@ -12,7 +12,9 @@ The file structure is as follows: ``` autonomy-research-testbed/ ├── art_launch/ +├── art_dev_launch/ ├── launch_utils/ +├── art__launch/ └── art__launch/ ``` @@ -22,20 +24,27 @@ Each folder contains a `launch/` folder where all the launch files should be pla ### File Naming Convention -All launch files end in `.launch.py`. Furthermore, all launch files specific to the a vehicle platform or orchastrator launch files are prefixed with `art_`. +All launch files end in `.launch.py`. Furthermore, all launch files specific to a vehicle platform or orchastrator launch files are prefixed with `art_`. ## `art_launch/` -This is where the main launch file is held: [`art.launch.py`](../../workspace/src/common/launch/art_launch/launch/art.launch.py). This file will do a few things. +This is where the main launch file is held: [`art.launch.py`](../../workspace/src/common/launch/art_launch/launch/art.launch.py). This is a common launch file through which most services will go through. `art_launch` accomplishes two tasks: -1. It will first define system wide parameters (e.g. `LaunchConfigurations`, `LaunchDescriptions`, etc.). -2. It will create a [composable node container](https://docs.ros.org/en/galactic/How-To-Guides/Launching-composable-nodes.html). -3. It will include all other orchestration launch files. +1. It will create a [composable node container](https://docs.ros.org/en/galactic/How-To-Guides/Launching-composable-nodes.html). +2. It will include all other orchestration launch files. + +## `art_dev_launch/` + +The purpose of this file is to define system wide parameters (e.g. `LaunchConfigurations`, `LaunchDescriptions`, etc.) for the `dev` service. This will allow all orchestrators to know which specific packages to launch, and which to ignore. This is currently set up to run a cone-based path following demo, but can be used to test any other packages. ## `launch_utils/` The `launch_utils` folder contains helper functions for creating launch files. These helpers should be used throughout the launch system. +## `art__launch/` + +Vehicle-specific launch files should be named following the above naming convention (`art__launch`), and should be structured in a similar way to `art_dev_launch`. This means they should only define launch arguments, leaving the process of actually launching modules to `art_launch`. This is defined to allow for multiple vehicles with various missions, sensor suites, etc. to all be launched in similar ways and all live in the same repository. + ## `art__launch/` This folders deal directly with the subfolders defined in the [ROS Workspace](./ros_workspace.md) page. For instance, the [`art_control_launch`](../../workspace/src/common/launch/art_control_launch/) folder contains launch files for the control nodes.