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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

Package symbol

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange

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

rqt_lifecycle_manager package from rqt_lifecycle_manager repo

rqt_lifecycle_manager

ROS Distro
jazzy

Package Summary

Version 0.1.0
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ajtudela/rqt_lifecycle_manager.git
VCS Type git
VCS Version jazzy
Last Updated 2026-07-13
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

rqt plugin to list ROS 2 lifecycle nodes and change their states from a non-blocking graphical interface.

Maintainers

  • Alberto Tudela

Authors

  • Alberto Tudela

rqt_lifecycle_manager

ROS2 License Build codecov

Overview

rqt_lifecycle_manager is an [rqt] plugin to inspect and control ROS 2 lifecycle nodes from a graphical interface. It lets you:

  • List all lifecycle nodes currently present on the graph (auto-discovered).
  • See the current state of the selected node, color-coded.
  • Change to any available state through dynamically generated buttons (only valid transitions for the current state are shown).

The interface never blocks: every ROS 2 service call is issued asynchronously and its result is delivered back to the Qt GUI thread through signals, so the window stays responsive even if a node is slow to transition or does not answer at all.

Lifecycle Manager interface

Keywords: ROS2, rqt, lifecycle, lifecycle_msgs, state machine, GUI

Author: Alberto Tudela

The package has been tested under ROS2 Jazzy on Ubuntu 24.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

How it works

ROS 2 lifecycle nodes expose their [managed state machine][lifecycle] through three services: ~/get_state, ~/get_available_transitions and ~/change_state. This plugin:

  1. Discovers lifecycle nodes with a fast, local graph query (get_service_names_and_types), filtering for nodes that offer a ~/get_state service of type lifecycle_msgs/srv/GetState.
  2. Queries the selected node’s state and available transitions.
  3. Requests a transition when you press a button.

All service calls use call_async. The plugin reuses the ROS 2 node that rqt_gui_py already spins in a background executor thread, so responses are processed off the GUI thread and marshaled back with Qt signals. The result is a non-blocking UI by design.

Installation

Building from Source

Dependencies

  • Robot Operating System (ROS) 2 (middleware for robotics)
  • rqt_gui, rqt_gui_py, python_qt_binding (rqt framework)
  • lifecycle_msgs (lifecycle service and message types)

Building

To build from source, clone the latest version from this repository into your colcon workspace and compile the package using:

cd colcon_workspace/src
git clone https://github.com/ajtudela/rqt_lifecycle_manager.git
cd ../
rosdep install -i --from-path src --rosdistro jazzy -y
colcon build --symlink-install

Usage

Source your workspace, then launch it in one of two ways.

Inside the generic rqt container (Plugins → Lifecycle → Lifecycle Manager):

rqt

Or as a standalone window:

ros2 run rqt_lifecycle_manager rqt_lifecycle_manager

Trying it out

Bring up any lifecycle node, for example the demo talker:

ros2 run lifecycle_py lifecycle_talker   # or any of your lifecycle nodes

It will appear in the node list. Select it, and use the transition buttons (configure, activate, deactivate, cleanup, shutdown, …) to move it through its states. The state label updates automatically, even when the node is transitioned from another tool.

Nodes

This package does not provide a runtime node; it provides an rqt plugin. The plugin acts as a client of the standard lifecycle services of every managed node:

Services called (per managed node)

  • <node>/get_state (lifecycle_msgs/srv/GetState) Reads the current lifecycle state.

  • <node>/get_available_transitions (lifecycle_msgs/srv/GetAvailableTransitions) Lists the transitions valid from the current state.

  • <node>/change_state (lifecycle_msgs/srv/ChangeState) Triggers a lifecycle transition.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rqt_lifecycle_manager

0.1.0 (12-07-2026)

  • Initial release.
  • Added LifecycleManager backend in lifecycle_manager.py that discovers lifecycle nodes and performs fully asynchronous get_state, get_available_transitions and change_state service calls.
  • Added LifecycleManagerWidget in lifecycle_manager_widget.py with a node list, color-coded state display and dynamic per-transition buttons.
  • Added LifecycleManagerPlugin in lifecycle_manager_plugin.py as the rqt_gui_py entry class, plus a standalone entry point in main.py.
  • Registered the rqt plugin through plugin.xml.
  • Added a test suite reaching 99% statement coverage (71 tests, all passing under ROS 2 Jazzy):
    • test/test_lifecycle_manager.py with 21 cases covering node discovery, the asynchronous get_state / get_available_transitions / change_state paths, in-flight request de-duplication, service-failure handling, client caching and shutdown().
    • test/test_lifecycle_manager_widget.py with 31 cases driving the view headlessly: node listing, selection, color-coded states, transition buttons, transition results and the auto-refresh timer.
    • test/test_lifecycle_manager_plugin.py with 13 cases covering widget registration, instance numbering and settings save/restore.
    • test/test_main.py with 2 cases for the standalone entry point.
    • test/conftest.py selecting the Qt offscreen platform so the GUI tests run without a display server.
    • The standard ament linter tests (flake8, pep257, copyright, xmllint).
  • Added GitHub Actions CI workflow in .github/workflows/build.yml.
  • Added LICENSE (Apache-2.0) and CONTRIBUTING.md.
  • Added interface screenshot in doc/interface.png.
  • Contributors: Alberto Tudela

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged rqt_lifecycle_manager at Robotics Stack Exchange