|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bobcamera repobob_auxiliary bob_camera bob_image_processing bob_interfaces bob_launch bob_monitor bob_observer bob_recorder bob_shared bob_visualizers bob_webapi rosapi rosapi_msgs rosbridge_library rosbridge_msgs rosbridge_server rosbridge_suite rosbridge_test_msgs |
ROS Distro
|
Package Summary
| Version | 1.2.16 |
| License | GPLv3 |
| Build type | AMENT_PYTHON |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bobcamera/bobcamera.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-02-27 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Bob Universal Object Tracker
Authors
Launch Package
Overview
Launch Files:
- Application Launch File
- Update Config Files Launch File
- Kernel Launch File
- Display Infrastructure Launch File
- Monitoring Infrastructure Launch File
- Web Infrastructure Launch File
- QHY Launch File
Application Launch File
This is the “entry point” launch file which defines several launch parameters which are driven using environment variables. These environment variables will determine which nodes are run using if launch conditions. Needless to say this launch file will in turn calls all the other launch files.
Update Config Files Launch File
A launch file whose primary purpose is to update both the application and camera yaml configuration files. The yaml configuration files contain all the node parameters which the nodes use to define their processing behaviour.
Kernel Launch File
Manages is the main image processing pipeline. It runs as a single container process and all nodes communicate via RPC, not network. As resolutions increase we have found ourselves in a position where the loopback address gets saturated and therefore slows down the processing pipeline. Passing data via IPC avoids this from happening. All images available external to the kernel should be resized appropriately therefore any node that requires the full image will need to be part of the kernel process.
Display Infrastructure Launch File
Manages all nodes required for display to work. This will include viewer and compressor nodes. Viewer nodes are used outside of the web ui while compressor nodes are used by the web ui to transform frames into compressed jpg images which a browser understands.
Monitoring Infrastructure Launch File
Manages all nodes dealing with monitoring and observing the system. These include for example nodes that determine if its day or night, what sort of cloud cover are we dealing with, what is the condition of the tracker and and also a node that is able to feed data into prometheus so that you can Visualise that data using Grafana.
Web Infrastructure Launch File
Manages nodes dealing with web stuff, currently the main ones are the ROS Bridge server as well as the WebApi nodes.
QHY Launch File
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bob_launch at Robotics Stack Exchange
|
bob_launch package from bob_launch repobob_launch |
ROS Distro
|
Package Summary
| Version | 1.0.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/bob-ros2/bob_launch.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-03-28 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Bob Ros
Authors
- Bob Ros
ROS Package bob_launch
bob_launch is a powerful meta-launcher for ROS 2 that enables dynamic system orchestration using YAML or JSON configuration files. It allows you to define, compose, and launch complex ROS 2 graphs without writing boilerplate Python launch files.
High-Level Capabilities
- Dynamic Orchestration: Spawn nodes or include other launch files based on external configuration.
- Composition over Coding: Define your entire ROS system in simple YAML.
-
Streamlined Workflow: Use the
launch.shwrapper or native ROS 2 launch arguments. - Auto-Abort Protection: Optionally shut down the entire launch tree if any critical node exits (ideal for Docker/CI).
- Global Parameters: Inject a shared parameter file into all nodes launched within a configuration.
-
Path Placeholders: Use
//PKGSHARE/(current node package) or//PKGSHARE:pkg/to dynamically resolve ROS 2 package share directories in parameters and arguments. -
Environment Substitution: Support for shell-like
${VAR}or${VAR:-default}syntax in all configuration fields and relevant launch arguments.
Native ROS 2 Usage (Preferred)
You can call the launch file directly using standard ROS 2 launch arguments:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml
To pass an optional global node parameter file:
ros2 launch bob_launch generic.launch.py config:=my_config.yaml config_nodes:=node_params.yaml
Note: You can also use the environment variable BOB_LAUNCH_CONFIG=./my_config.yaml as an alternative to the config:= argument.
Fast Execution: launch.sh
The launch.sh script is a convenient wrapper that simplifies execution by handling environment variables and temporary file management for you.
1. Launch from a file
ros2 run bob_launch launch.sh my_config.yaml
2. Launch with a global parameter file
ros2 run bob_launch launch.sh my_config.yaml global_params.yaml
3. Launch from a JSON config file
ros2 run bob_launch launch.sh my_config.json
Advanced Usage
bob_launch is designed to be highly scriptable, making it an ideal tool for AI Agents needing to spawn ROS components on the fly.
Pipe a String Directly (Dynamic Spawning)
An agent can generate a YAML string and pipe it directly to the launcher without creating a persistent file:
echo "- name: talker
package: demo_nodes_cpp
executable: talker" | ros2 run bob_launch launch.sh
Multi-File Composition
You can quickly composite different system “layers” (e.g., base drivers + perception + mission logic) by concatenating files into the pipe:
cat base_robot.yaml nav2_stack.yaml custom_logic.yaml | ros2 run bob_launch launch.sh
Dynamic Substitution & Placeholders
bob_launch supports powerful dynamic string substitution in all configuration fields and launcher arguments (like config:= and config_nodes:=).
Environment Variables (${VAR})
Supports shell-like syntax for dynamic values:
-
${MYVAR}: Replaces with the value or an empty string. -
${MYVAR:-/default/path/}: Replaces with the value or the specified default if unset.
Path Placeholders (//PKGSHARE)
Avoid hardcoded absolute paths by dynamically resolving ROS 2 package share directories:
-
//PKGSHARE/: Resolves to the share directory of the package defined for the current entity (implicit). -
//PKGSHARE:pkg_name/: Resolves to the share directory ofpkg_name(explicit).
Combination & CLI Usage
These mechanisms can be combined and even used directly in the ros2 launch command arguments:
ros2 launch bob_launch generic.launch.py \
config:='//PKGSHARE:my_pkg/config/${ROBOT_ENV:-dev}.yaml'
To disable environment substitution, set BOB_SUBSTITUTE_ENV_VARS=0.
Configuration Schema
Spawning Nodes
```yaml
- name: usb_cam # Optional: defaults to executable_name + random suffix
package: usb_cam
executable: usb_cam_node_exe
arguments: # Optional: list of CLI arguments
- –ros-args
File truncated at 100 lines see the full file
Changelog for package bob_launch
1.0.1 (2026-02-03)
- Fix linter and style issues for ROS2 compliance
- Standardize docstrings and copyright headers
- Refactor launch parameter
- Add support for 'prefix' parameter in configuration
- Add support for inline 'parameters' in node configuration
- Add support for '//PKGSHARE' and '//PKGSHARE:pkg' placeholders for dynamic path resolution
- Add support for environment variable substitution (${VAR} and ${VAR:-default}) in configuration files
- Enable dynamic placeholder resolution for 'config' and 'config_nodes' launch arguments
- Standardize placeholder resolution across all configuration fields including 'launch_ns'
- Add support for native ROS 2 remappings in node configurations
- Add support for [respawn_delay]{.title-ref} in node configurations
- Contributors: Bob Ros
1.0.0 (2026-02-02)
- Initial release
- Contributors: Bob Ros
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common |