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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
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
Additional Links
Maintainers
- Aditya Pande
- Audrow Nash
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing | |
lifecycle_msgs | |
rclcpp | |
rclcpp_lifecycle | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
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
Additional Links
Maintainers
- Aditya Pande
- Audrow Nash
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing | |
lifecycle_msgs | |
rclcpp | |
rclcpp_lifecycle | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
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
Additional Links
Maintainers
- Aditya Pande
- Audrow Nash
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing | |
lifecycle_msgs | |
rclcpp | |
rclcpp_lifecycle | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
![]() |
lifecycle package from demos repocomposition demo_nodes_cpp demo_nodes_cpp_native demo_nodes_py dummy_map_server dummy_robot_bringup dummy_sensors image_tools intra_process_demo lifecycle logging_demo pendulum_control pendulum_msgs topic_monitor |
ROS Distro
|
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
Additional Links
Maintainers
- Karsten Knese
Authors
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ros2run | |
ament_lint_auto | |
ament_lint_common |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
![]() |
lifecycle package from demos repocomposition demo_nodes_cpp demo_nodes_cpp_native demo_nodes_py dummy_map_server dummy_robot_bringup dummy_sensors image_tools intra_process_demo lifecycle logging_demo pendulum_control pendulum_msgs topic_monitor |
ROS Distro
|
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
Additional Links
Maintainers
- Karsten Knese
Authors
Introduction
ROS2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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.
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ros2run | |
ament_lint_auto | |
ament_lint_common |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
![]() |
lifecycle package from demos repocomposition demo_nodes_cpp demo_nodes_cpp_native demo_nodes_py dummy_map_server dummy_robot_bringup dummy_sensors image_tools intra_process_demo lifecycle logging_demo pendulum_control pendulum_msgs topic_monitor |
ROS Distro
|
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
Additional Links
Maintainers
- Karsten Knese
Authors
Introduction
ROS2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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.
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ros2run | |
ament_lint_auto | |
ament_lint_common |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
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
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Karsten Knese
Introduction
ROS2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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.
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
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
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Karsten Knese
Introduction
ROS2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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.
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ros2run | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
desktop |
Launch files
Messages
Services
Plugins
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
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Karsten Knese
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
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
Additional Links
Maintainers
- Mabel Zhang
- Michael Jeronimo
Authors
- Karsten Knese
Introduction
ROS2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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.
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
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
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
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |
Launch files
Messages
Services
Plugins
Recent questions tagged lifecycle at Robotics Stack Exchange
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
Additional Links
Maintainers
- Audrow Nash
- Michael Jeronimo
Authors
- Karsten Knese
- Mabel Zhang
Introduction
ROS 2 introduces the concept of managed nodes, also called
LifecycleNode
s. 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:
- configuring: We initialize our publisher and timer
- activate: We activate the publisher and timer in order to enable a publishing
- deactivate: We stop the publisher and timer
- 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
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 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
Package Dependencies
Deps | Name |
---|---|
lifecycle_msgs | |
rclcpp_lifecycle | |
std_msgs | |
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
ros_testing |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
lifecycle_py | |
test_launch_ros | |
desktop |