No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro lyrical showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
rolling

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.
Package symbol

dispatcher package from dispatcher repo

dispatcher

ROS Distro
jazzy

Package Summary

Version 0.4.5
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/nasa-jpl/dispatcher.git
VCS Type git
VCS Version master
Last Updated 2026-09-23
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Qt-based ROS 2 application for launching and monitoring ROS nodes and arbitrary processes.

Additional Links

Maintainers

  • Kristopher Wehage
  • Daniel Pastor

Authors

  • Dennis Wai
  • Alex Brinkman
  • Preston Rogers

Dispatcher

A Qt-based ROS 2 widget for starting, stopping, and monitoring both ROS nodes and arbitrary shell processes.

dispatcher

dispatcher builds its UI from a YAML file. Each configured item is launched in its own detached tmux session, and the terminal button can attach a gnome-terminal window to that session when available.

Runtime Parameters

The dispatcher executable uses the following ROS parameters:

Name Type Default Description
dispatcher_config_path string "" Path to the dispatcher YAML file.
initial_configuration string "" Configuration name to select on startup.
start_checked_on_startup bool false Start all checked process items after loading the initial configuration.
ssh_timeout_sec int 10 Timeout used when building remote SSH commands.
target_loop_rate_hz double 100.0 Main process/status polling rate.

YAML Configuration

The top-level dispatcher YAML supports:

Key Required Description
workspace Yes Workspace path used by ROS process items before sourcing install/setup.bash.
nodes Yes Process and category definitions rendered in the main panel.
configurations No Named runtime configurations. Each entry may be a simple name or a map with name, cmd_prefix, environment_variables, and icon.
cmd_prefix No Default command prefix for the implicit all configuration.
environment_variables No Default environment variables for the implicit all configuration.
hide_unconfigured_processes No If true, items missing in the active configuration are hidden instead of disabled.
scripts No Script button definitions shown in the scripts panel.
variables No Variable selectors used for $VARIABLE command substitution.

Node Types

Each entry in nodes can be:

  • A ROS process item. If type is omitted, the item is treated as ROS by default.
  • A shell process item with type: shell.
  • A collapsible category with type: category and an items array. Entries in items follow the same rules, including the default to ROS when type is omitted.

Common item fields include:

Key Description
name UI label and tmux-session base name.
cmd Command used for the implicit all configuration.
configurations Per-configuration command definitions.
start_checked Whether the item starts checked in the UI. Optional, defaults to false.
stop_tmux_cmd Stop sequence sent to tmux. Optional, defaults to C-C.
hostname / user Optional remote execution target for local commands or configuration entries.
use_cmd_prefix Enables or disables command-prefix injection.
use_environment_variables Enables or disables environment-variable injection.
attach_on_start Opens a terminal automatically after launch.

ROS process items can additionally define node_name plus an optional namespace, or a ros_nodes array with the same monitoring fields for online-state monitoring. An omitted namespace resolves to the root namespace, so name: talker matches the graph’s /talker; a name that is already absolute, such as /fcat/fcat, carries its own namespace.

Shell process items use pgrep on the item name to infer online state.

Scripts and Variables

Script entries support:

Key Description
name Button label.
cmd or configurations Script command definition.
row, column Grid placement in the scripts panel.
icon Optional Qt resource path for the button icon.
use_terminal Whether to wrap execution in gnome-terminal --.

Variable entries support:

Key Description
name Variable name used in commands, for example $FCAT_LOOP_RATE_HZ.
choices Selectable values exposed in the UI.

Examples

The following examples build incrementally from a minimal configuration to a full-featured setup. Each one corresponds to a YAML file in config/ and a screenshot in doc/.

ROS 2 Demos (runnable out of the box)

Four examples run without any custom packages, using only the demos that ship with ROS 2. Each is self-contained and includes an rqt_graph button. Install the demo packages if needed:

```bash sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp \

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package dispatcher

Forthcoming

0.4.5 (2026-09-23 16:53)

  • Merge pull request #7 from nasa-jpl/fix-static-widget-lib

    fix: build dispatcher_widget as a static library

  • fix: build dispatcher_widget as a static library

    Under colcon, BUILD_SHARED_LIBS=ON turned dispatcher_widget into a shared library, but the only install rule installs the dispatcher executable. libdispatcher_widget.so was left in the build tree, so the installed (and Debian-packaged) executable had a dangling NEEDED entry and no RUNPATH:

    $ ros2 run dispatcher dispatcher .../dispatcher: error while loading shared libraries: libdispatcher_widget.so: cannot open shared object file

    The library is consumed only by the dispatcher executable and the in-tree gtest, and nothing ament_exports it, so linking it statically is the simplest fix. The icons qrc resource is still pulled in via the existing Q_INIT_RESOURCE(icons) call in src/dispatcher.cc.

    Verified in osrf/ros:rolling-desktop: the installed binary no longer references libdispatcher_widget.so, runs from a clean install tree, keeps its qrc resources, and the 22 unit tests pass. Reverting the STATIC keyword reproduces the loader failure.

    Co-Authored-By: Claude Opus 5 (1M context) <<noreply@anthropic.com>>

  • Contributors: Daniel Pastor

0.4.4 (2026-09-05 02:08)

  • Merge pull request #6 from nasa-jpl/copilot/fix-bump-github-actions-job

    Fix "bump" workflow: use pull_request_target so fork-based merges can push tags

  • Fix bump workflow: use pull_request_target to get write token for fork PRs

    Co-authored-by: PastorD <<7848129+PastorD@users.noreply.github.com>>

  • Initial plan

  • Merge pull request #4 from PastorD/feature/start-checked-on-startup

    Add checked-item startup parameter

  • improve config docs

  • fix category type default to match non-category behaviour

  • fix namespace resolution

  • add ros2 examples

  • Add checked-item startup parameter

  • Contributors: copilot-swe-agent[bot], Daniel Pastor

0.4.3 (2026-09-03 16:42)

  • Merge pull request #5 from nasa-jpl/update-authors

    update authors

  • fix author name

  • update authors

  • Contributors: Daniel Pastor

0.4.2 (2026-08-31 07:32)

  • Merge pull request #3 from nasa-jpl/fix-rolling

    Fix rolling

  • add changelo update

  • use target_link_libraries instead of deprecated

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged dispatcher at Robotics Stack Exchange