Lifecycle : ROS 2에서 Lifecycle이란 노드의 생명주기(lifecycle)를 명확하게 관리할 수 있도록 해주는 상태 기반 노드 관리 기능
-> ROS2에서는 노드의 상태 관리를 위해 Lifecycle 인터페이스 제공
- 개발자가 노드의 상태 전이(state transition) 를 제어할 수 있게 하여, 시스템을 더 예측 가능하고 안정적으로 구성할 수 있게 해준다.
- 노드는 주요 상태 (Unconfigured, Inactive, Active, Finalized)와 전환 상태(Configuring, CleaningUp 등)을 가진다.
- 노드를 체계적으로 관리 및 상태 전환을 통해 노드를 구성, 활성화, 비활성화, 정리 가능
-> 한마디로 노드가 비정상적으로 종료가 되면 다시 살아 날 수 있도록 관리해주고 정상적인 종료가 가능하도록 함
-> 뒤에서 적게 될 Nav2 패키지에서 Lifecycle Manager의 기능 중 하나이기 때문에 매우매우 중요하다.

- 노드의 상태와 상태 전환(Transition)
- 파란 박스 : 주요 상태
- 노란 박스 : 전환 상태
- 검정색 화살표 : 전환을 나타냄
- 파란색 화살표 : 전환 성공시 주요 상태의 변화
- 빨간색 화살표 : 전환 실패 시 주요 상태의 변화
- 빨간색 작은 원 : 에러가 발생할 수 있는 상태
- 주요 상태
- Unconfigured : 노드가 생성된 직후의 상태이거나 에러 발생 이후 다시 조정될 수 있는 상태
- Inactive : Node의 Publisher/Subscriber 및 Service 등이 (재)구성되어 있지만 노드가 아무런 동작을 수행하지 않는 상태
- Active : 노드가 동작을 수행하는 상태
- Finalized : 노드가 메모리에서 해제되기 직전 상태로 노드가 파괴되기 전 디버깅이나 내부 검사를 진행할 수 있는 상태
- 전환 상태(transition state)
- Configuring : 노드를 구성하기 위해 필요한 설정 수행
- CleaningUp : 노드가 처음 생성되었을 때 상태와 동일하게 만드는 과정 수행
- Activating : 노드가 동작을 수행하기 전 마지막 준비 과전 수행
- Deactivating : 노드가 동작을 수행하기 전으로 돌아가는 과정 수행
- ShuttingDown : 노드가 파괴되기 전 필요한 과정 수행
- ErrorProcessing : 사용자 코드가 동작되는 상태에서 발생하는 에러를 해결하기 위한 과정 수행
- 전환
- Create : 노드를 생성하고 초기 상태로 설정
- Configure : 노드를 구성하여 준비 상태로 만듦
- Cleanup : 노드를 초기화하여 이전 상태로 되돌림
- Activate : 노드를 활성화하여 기능을 수행할 수 있게 함
- Deactivate : 노드를 비활성화하여 동작을 멈춤
- Shutdown : 노드를 안전하게 종료하는 과정
- Destroy : 노드를 메모리에서 완전히 제거
- lifecycle 관련 명령어
ros2 lifecycle get # 실행 중인 노드의 lifecycle 상태를 가져오는 명령어
ros2 lifecycle list <노드명> # <노드명>의 상태 전이가 가능한 lifecycle 목록을 출력
ros2 lifecycle nodes # lifecycle 상태를 가지고 있는 노드 목록을 출력
ros2 lifecycle set <노드명> <전환할 상태 값> # <노드명>의 lifecycle 상태를 <전환할 상태 값> 로 트리거
- 간단하게 ros2에서 기본적으로 제공하는 패키지를 통해서 어떻게 노드가 관리되는지 확인해 볼 수 있다.
ros2 run lifecycle lifecycle_talker
ros2 run lifecycle lifecycle_listener
ros2 run lifecycle lifecycle_server_client

'ROS2 이론 정리' 카테고리의 다른 글
| Moveit 사용법 (0) | 2025.10.08 |
|---|---|
| QoS(Quilty of service) (0) | 2025.05.05 |
| 노드로 구성된 프로세스의 관리 방식(IPC와 Intra-process communication) (0) | 2025.05.05 |
| ROS2 CLI (0) | 2025.05.05 |
| Hangman을 통한 통신 노드들 구현(Action, Topic, Service) (0) | 2025.04.30 |