Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.33.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version jazzy
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Aditya Pande
  • Audrow Nash

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo_launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.33.5 (2024-09-06)

0.33.4 (2024-06-27)

0.33.3 (2024-05-13)

0.33.2 (2024-03-28)

  • A few uncrustify fixes for 0.78. (#667)
  • Update maintainer list in package.xml files (#665)
  • Contributors: Chris Lalancette, Michael Jeronimo

0.33.1 (2024-02-07)

0.33.0 (2024-01-24)

  • Migrate std::bind calls to lambda expressions (#659)
  • Contributors: Felipe Gomes de Melo

0.32.1 (2023-12-26)

0.32.0 (2023-11-06)

0.31.1 (2023-09-07)

0.31.0 (2023-08-21)

  • Switch to using RCLCPP logging macros in the lifecycle package. (#644)
  • Contributors: Chris Lalancette

0.30.1 (2023-07-11)

0.30.0 (2023-06-12)

0.29.0 (2023-06-07)

0.28.1 (2023-05-11)

0.28.0 (2023-04-27)

0.27.0 (2023-04-13)

0.26.0 (2023-04-11)

  • update launch file name format to match documentation (#588)
  • Contributors: Patrick Wspanialy

0.25.0 (2023-03-01)

0.24.1 (2023-02-24)

0.24.0 (2023-02-14)

  • Update the demos to C++17. (#594)
  • [rolling] Update maintainers - 2022-11-07 (#589)
  • Contributors: Audrow Nash, Chris Lalancette

0.23.0 (2022-11-02)

0.22.0 (2022-09-13)

0.21.0 (2022-04-29)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.36.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version kilted
Last Updated 2025-05-30
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Aditya Pande
  • Audrow Nash

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo_launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.36.0 (2025-04-25)

  • Uniform CMAKE min VERSION (#714)
  • Use target_link_libraries instead of ament_target_dependencies (#707)
  • Contributors: Shane Loretz, mosfet80

0.35.1 (2024-11-20)

0.35.0 (2024-10-03)

0.34.2 (2024-07-29)

0.34.1 (2024-06-17)

0.34.0 (2024-04-26)

0.33.2 (2024-03-28)

  • A few uncrustify fixes for 0.78. (#667)
  • Update maintainer list in package.xml files (#665)
  • Contributors: Chris Lalancette, Michael Jeronimo

0.33.1 (2024-02-07)

0.33.0 (2024-01-24)

  • Migrate std::bind calls to lambda expressions (#659)
  • Contributors: Felipe Gomes de Melo

0.32.1 (2023-12-26)

0.32.0 (2023-11-06)

0.31.1 (2023-09-07)

0.31.0 (2023-08-21)

  • Switch to using RCLCPP logging macros in the lifecycle package. (#644)
  • Contributors: Chris Lalancette

0.30.1 (2023-07-11)

0.30.0 (2023-06-12)

0.29.0 (2023-06-07)

0.28.1 (2023-05-11)

0.28.0 (2023-04-27)

0.27.0 (2023-04-13)

0.26.0 (2023-04-11)

  • update launch file name format to match documentation (#588)
  • Contributors: Patrick Wspanialy

0.25.0 (2023-03-01)

0.24.1 (2023-02-24)

0.24.0 (2023-02-14)

  • Update the demos to C++17. (#594)
  • [rolling] Update maintainers - 2022-11-07 (#589)
  • Contributors: Audrow Nash, Chris Lalancette

0.23.0 (2022-11-02)

0.22.0 (2022-09-13)

0.21.0 (2022-04-29)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.37.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version rolling
Last Updated 2025-05-29
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Aditya Pande
  • Audrow Nash

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo_launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.37.0 (2025-04-25)

0.36.0 (2025-04-25)

  • Uniform CMAKE min VERSION (#714)
  • Use target_link_libraries instead of ament_target_dependencies (#707)
  • Contributors: Shane Loretz, mosfet80

0.35.1 (2024-11-20)

0.35.0 (2024-10-03)

0.34.2 (2024-07-29)

0.34.1 (2024-06-17)

0.34.0 (2024-04-26)

0.33.2 (2024-03-28)

  • A few uncrustify fixes for 0.78. (#667)
  • Update maintainer list in package.xml files (#665)
  • Contributors: Chris Lalancette, Michael Jeronimo

0.33.1 (2024-02-07)

0.33.0 (2024-01-24)

  • Migrate std::bind calls to lambda expressions (#659)
  • Contributors: Felipe Gomes de Melo

0.32.1 (2023-12-26)

0.32.0 (2023-11-06)

0.31.1 (2023-09-07)

0.31.0 (2023-08-21)

  • Switch to using RCLCPP logging macros in the lifecycle package. (#644)
  • Contributors: Chris Lalancette

0.30.1 (2023-07-11)

0.30.0 (2023-06-12)

0.29.0 (2023-06-07)

0.28.1 (2023-05-11)

0.28.0 (2023-04-27)

0.27.0 (2023-04-13)

0.26.0 (2023-04-11)

  • update launch file name format to match documentation (#588)
  • Contributors: Patrick Wspanialy

0.25.0 (2023-03-01)

0.24.1 (2023-02-24)

0.24.0 (2023-02-14)

  • Update the demos to C++17. (#594)
  • [rolling] Update maintainers - 2022-11-07 (#589)
  • Contributors: Audrow Nash, Chris Lalancette

0.23.0 (2022-11-02)

0.22.0 (2022-09-13)

0.21.0 (2022-04-29)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.4.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version ardent
Last Updated 2017-12-09
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Karsten Knese

Authors

No additional authors.
README
No README found. No README in repository either.
CHANGELOG
No CHANGELOG found.

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
desktop

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.5.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version bouncy
Last Updated 2018-10-30
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Karsten Knese

Authors

No additional authors.

Introduction

ROS2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes are scoped within a state machine of a finite amount of states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 different separate applications.

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as followed.

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

The principle is implemented in this demo as the typical talker/listener demo. However, imaging a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could image bringing up the device driver in the configuring state, start and stop only the publishing of the device's data and only in the cleanup/shutdown phase actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables the message publishing only in the active state and thus making the listener receiving only messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ————————————————————————————————————————– ————————————————————————————————————————– ————————————————————————————————————————– $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file (as of ROS 2 Bouncy):

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Converted launch files to the new launch style. (#262)
  • Updated to support remapping arguments to python nodes by passing unused arguments to rclpy from argparse. (#252)
  • Updated to handle change in signature to get_service_name. (#245)
  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Updated service client demos to handle multiple requests. (#228)
  • Contributors: Geoffrey Biggs, Kevin Allen, Shane Loretz, William Woodall, dhood

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
desktop

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.6.2
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version crystal
Last Updated 2019-01-15
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Karsten Knese

Authors

No additional authors.

Introduction

ROS2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes are scoped within a state machine of a finite amount of states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 different separate applications.

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as followed.

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

The principle is implemented in this demo as the typical talker/listener demo. However, imaging a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could image bringing up the device driver in the configuring state, start and stop only the publishing of the device's data and only in the cleanup/shutdown phase actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables the message publishing only in the active state and thus making the listener receiving only messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ————————————————————————————————————————– ————————————————————————————————————————– ————————————————————————————————————————– $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file (as of ROS 2 Bouncy):

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.6.2 (2019-01-15)

  • Added readme.rst (#300)
  • Contributors: Karsten Knese

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

  • Cleaned up lifecycle demo (#283)
  • Updated for refactoring in rclcpp (#276)
  • Added semicolons to all RCLCPP and RCUTILS macros. (#278)
  • Fixed typo in comment (#270)
  • Contributors: Chris Lalancette, Karsten Knese, Yutaka Kondo

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Converted launch files to the new launch style. (#262)
  • Updated to support remapping arguments to python nodes by passing unused arguments to rclpy from argparse. (#252)
  • Updated to handle change in signature to get_service_name. (#245)
  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Updated service client demos to handle multiple requests. (#228)
  • Contributors: Geoffrey Biggs, Kevin Allen, Shane Loretz, William Woodall, dhood

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
desktop

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.8.4
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version eloquent
Last Updated 2020-11-04
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Mabel Zhang
  • Michael Jeronimo

Authors

  • Karsten Knese

Introduction

ROS2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes are scoped within a state machine of a finite amount of states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 different separate applications.

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as followed.

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

The principle is implemented in this demo as the typical talker/listener demo. However, imaging a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could image bringing up the device driver in the configuring state, start and stop only the publishing of the device's data and only in the cleanup/shutdown phase actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables the message publishing only in the active state and thus making the listener receiving only messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file (as of ROS 2 Bouncy):

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

  • Remove unnecessary dependency on ros2run (#413)
  • Contributors: Michel Hidalgo

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

  • Fix lifecycle_service_client namespace (#369)
  • Contributors: Cameron Evans

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Update asciinema recordings (#360)
  • Use rate instead of thread::sleep to react to Ctrl-C (#348)
  • Contributors: Dirk Thomas, Karsten Knese

0.7.4 (2019-05-20)

  • Add lifecycle rostest (#336)
  • Contributors: Michel Hidalgo

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Contributors: William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll

0.6.2 (2019-01-15)

  • Added readme.rst (#300)
  • Contributors: Karsten Knese

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

  • Cleaned up lifecycle demo (#283)
  • Updated for refactoring in rclcpp (#276)
  • Added semicolons to all RCLCPP and RCUTILS macros. (#278)
  • Fixed typo in comment (#270)
  • Contributors: Chris Lalancette, Karsten Knese, Yutaka Kondo

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Converted launch files to the new launch style. (#262)
  • Updated to support remapping arguments to python nodes by passing unused arguments to rclpy from argparse. (#252)
  • Updated to handle change in signature to get_service_name. (#245)
  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Updated service client demos to handle multiple requests. (#228)
  • Contributors: Geoffrey Biggs, Kevin Allen, Shane Loretz, William Woodall, dhood

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
desktop

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.7.9
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version dashing
Last Updated 2020-10-28
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Mabel Zhang
  • Michael Jeronimo

Authors

  • Karsten Knese

Introduction

ROS2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes are scoped within a state machine of a finite amount of states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 different separate applications.

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as followed.

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

The principle is implemented in this demo as the typical talker/listener demo. However, imaging a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could image bringing up the device driver in the configuring state, start and stop only the publishing of the device's data and only in the cleanup/shutdown phase actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables the message publishing only in the active state and thus making the listener receiving only messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file (as of ROS 2 Bouncy):

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Update asciinema recordings (#360)
  • Use rate instead of thread::sleep to react to Ctrl-C (#348)
  • Contributors: Dirk Thomas, Karsten Knese

0.7.4 (2019-05-20)

  • Add lifecycle rostest (#336)
  • Contributors: Michel Hidalgo

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Contributors: William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll

0.6.2 (2019-01-15)

  • Added readme.rst (#300)
  • Contributors: Karsten Knese

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

  • Cleaned up lifecycle demo (#283)
  • Updated for refactoring in rclcpp (#276)
  • Added semicolons to all RCLCPP and RCUTILS macros. (#278)
  • Fixed typo in comment (#270)
  • Contributors: Chris Lalancette, Karsten Knese, Yutaka Kondo

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Converted launch files to the new launch style. (#262)
  • Updated to support remapping arguments to python nodes by passing unused arguments to rclpy from argparse. (#252)
  • Updated to handle change in signature to get_service_name. (#245)
  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Updated service client demos to handle multiple requests. (#228)
  • Contributors: Geoffrey Biggs, Kevin Allen, Shane Loretz, William Woodall, dhood

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Dependant Packages

Name Deps
desktop

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.14.4
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version galactic
Last Updated 2022-12-07
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Mabel Zhang
  • Michael Jeronimo

Authors

  • Karsten Knese

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.14.4 (2022-12-06)

0.14.3 (2021-05-10)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

  • Remove unnecessary dependency on ros2run (#413)
  • Contributors: Michel Hidalgo

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

  • Fix lifecycle_service_client namespace (#369)
  • Contributors: Cameron Evans

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Update asciinema recordings (#360)
  • Use rate instead of thread::sleep to react to Ctrl-C (#348)
  • Contributors: Dirk Thomas, Karsten Knese

0.7.4 (2019-05-20)

  • Add lifecycle rostest (#336)
  • Contributors: Michel Hidalgo

0.7.3 (2019-05-10)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.9.4
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version foxy
Last Updated 2022-07-25
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Mabel Zhang
  • Michael Jeronimo

Authors

  • Karsten Knese

Introduction

ROS2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes are scoped within a state machine of a finite amount of states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 different separate applications.

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as followed.

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

The principle is implemented in this demo as the typical talker/listener demo. However, imaging a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could image bringing up the device driver in the configuring state, start and stop only the publishing of the device's data and only in the cleanup/shutdown phase actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables the message publishing only in the active state and thus making the listener receiving only messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file (as of ROS 2 Bouncy):

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.9.4 (2022-07-25)

  • Update maintainer list for Foxy (#471)
  • Contributors: Michael Jeronimo

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

  • Remove unnecessary dependency on ros2run (#413)
  • Contributors: Michel Hidalgo

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

  • Fix lifecycle_service_client namespace (#369)
  • Contributors: Cameron Evans

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Update asciinema recordings (#360)
  • Use rate instead of thread::sleep to react to Ctrl-C (#348)
  • Contributors: Dirk Thomas, Karsten Knese

0.7.4 (2019-05-20)

  • Add lifecycle rostest (#336)
  • Contributors: Michel Hidalgo

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Contributors: William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll

0.6.2 (2019-01-15)

  • Added readme.rst (#300)
  • Contributors: Karsten Knese

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

  • Cleaned up lifecycle demo (#283)
  • Updated for refactoring in rclcpp (#276)
  • Added semicolons to all RCLCPP and RCUTILS macros. (#278)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.27.2
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version iron
Last Updated 2024-07-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Aditya Pande
  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo_launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.27.2 (2024-07-10)

0.27.1 (2023-05-11)

0.27.0 (2023-04-13)

0.26.0 (2023-04-11)

  • update launch file name format to match documentation (#588)
  • Contributors: Patrick Wspanialy

0.25.0 (2023-03-01)

0.24.1 (2023-02-24)

0.24.0 (2023-02-14)

  • Update the demos to C++17. (#594)
  • [rolling] Update maintainers - 2022-11-07 (#589)
  • Contributors: Audrow Nash, Chris Lalancette

0.23.0 (2022-11-02)

0.22.0 (2022-09-13)

0.21.0 (2022-04-29)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

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

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

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

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

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

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

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

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

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

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

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

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange

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

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2025-05-08
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Package containing demos for lifecycle implementation

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Karsten Knese
  • Mabel Zhang

Introduction

ROS 2 introduces the concept of managed nodes, also called LifecycleNodes. In the following tutorial, we explain the purpose of these nodes, what makes them different from regular nodes and how they comply to a lifecycle management. Managed nodes contain a state machine with a set of predefined states. These states can be changed by invoking a transition id which indicates the succeeding consecutive state. The state machine is implemented as described at the ROS 2 design page.

Our implementation differentiates between Primary States and Transition States. Primary States are supposed to be steady states in which any node can do the respected task. On the other hand, Transition States are meant as temporary intermediate states attached to a transition. The result of these intermediate states are used to indicate whether a transition between two primary states is considered successful or not. Thus, any managed node can be in one of the following states:

Primary States (steady states):

  • unconfigured
  • inactive
  • active
  • shutdown

Transition States (intermediate states):

  • configuring
  • activating
  • deactivating
  • cleaningup
  • shuttingdown

The possible transitions to invoke are:

  • configure
  • activate
  • deactivate
  • cleanup
  • shutdown

For a more verbose explanation on the applied state machine, we refer to the design page which provides an in-detail explanation about each state and transition.

The demo

What's happening

The demo is split into 3 separate applications:

  • lifecycle_talker
  • lifecycle_listener
  • lifecycle_service_client

The lifecycle_talker represents a managed node and publishes according to which state the node is in. We split the tasks of the talker node into separate pieces and execute them as follows:

  1. configuring: We initialize our publisher and timer
  2. activate: We activate the publisher and timer in order to enable a publishing
  3. deactivate: We stop the publisher and timer
  4. cleanup: We destroy the publisher and timer

This demo shows a typical talker/listener pair of nodes. However, imagine a real scenario with attached hardware which may have a rather long booting phase, i.e. a laser or camera. One could imagine bringing up the device driver in the configuring state, start and stop only the publishing of the device's data in active/deactive state, and only in the cleanup/shutdown state actually shutdown the device.

The lifecycle_listener is a simple listener which shows the characteristics of the lifecycle talker. The talker enables message publishing only in the active state and thus the listener only receives messages when the talker is in an active state.

The lifecycle_service_client is a script calling different transitions on the lifecycle_talker. This is meant as the external user controlling the lifecycle of nodes.

Run the demo

In order to run this demo, we open three terminals and source our ROS 2 environment variables either from the binary distributions or the workspace we compiled from source.

lifecycle_talker lifecycle_listener lifecycle_service_client ———————————————————————————— ———————————————————————————— ———————————————————————————— $ ros2 run lifecycle lifecycle_talker $ ros2 run lifecycle lifecycle_listener $ ros2 run lifecycle lifecycle_service_client asciicast asciicast asciicast

Alternatively, these three programs can be run together in the same terminal using the launch file:

ros2 launch lifecycle lifecycle_demo.launch.py

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package lifecycle

0.20.5 (2024-07-26)

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

  • Make lifecycle demo automatically exit when done (#558)
  • Contributors: Shane Loretz

0.20.0 (2022-03-01)

  • Use default on_activate()/on_deactivate() implemenetation of Node (#552)
  • Contributors: Ivan Santiago Paunovic

0.19.0 (2022-01-14)

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Contributors: Audrow Nash

0.17.0 (2021-10-18)

  • Fix use of future in lifecycle demo (#534)
  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha, Christophe Bedard

0.16.0 (2021-08-11)

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

  • Cleanup the README.rst for the lifecycle demo. (#508)
  • Contributors: Chris Lalancette

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

  • change ParameterEventHandler to take events as const ref instead of shared pointer (#494)
  • Contributors: William Woodall

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

  • Add missing required parameter in LifecycleNode launch action (#456)
  • Contributors: Ivan Santiago Paunovic

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

  • Fix typo (#445)
  • Replace ros2 msg command in lifecycle README (#446)
  • Contributors: Audrow Nash, Shota Aoki

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Replace deprecated launch_ros usage (#437)
  • Update launch_ros action usage (#431)
  • code style only: wrap after open parenthesis if not in one line (#429)
  • Contributors: Dirk Thomas, Jacob Perron

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged lifecycle at Robotics Stack Exchange