[ROS2] Lifecycle

TaerinLog·2025년 10월 25일

Lifecycle

  • 노드의 상태(state)를 명확히 구분해서 관리하기 위한 시스템
  • ROS2 노드가 켜지고(생성되고), 준비되고, 실행되고, 종료되는 과정을 관리

라이프사이클(Lifecycle)이 필요한 이유

  • 라이프사이클이 없을 시 노드의 시작과 종료가 관리되지 않음
    • ros2 run으로 실행하면 바로 구독/퍼블리쉬 시작
    • 노드를 끄면 그냥 종료
  • But, 산업용 로봇이나 자율주행 시스템처럼 복잡한 시스템에서는 이런 방식이 위험함
    • 센서가 아직 초기화되지 않았는데 제어 노드가 이미 구동되면 오작동할 수 있음
    • 전체 시스템 중 일부만 재시작하고 싶을 때 제어가 어려움

그래서 ROS2에서는 “Lifecycle Node” (또는 Managed Node) 개념을 도입

Lifecycle Node의 주요 상태 (state)

상태설명비고
unconfigured노드가 막 만들어졌지만 설정이나 실행에 필요한 구성이 완료되지 않은 상태“기계의 전원은 켜졌지만 아직 설정 안 한 상태”
inactive노드의 발행자(Publisher), 구독자(Subscriber), 서비스 등이 구성되었지만, 주요 기능을 수행하지 않는 상태“시동은 걸렸지만 기어는 중립에 있는 상태”
active실제로 동작 중 (토픽 퍼블리시, 구독 등)“주행 중인 자동차”
finalized완전히 종료된 상태“시동 끄고 주차 완료”

Lifecycle Node의 상태 전환 (Transition)

명령전이 전 상태전이 후 상태 설명
configureunconfigured → configuring → inactive초기 설정 수행
activateinactive → activating → active퍼블리셔/구독자 실제 활성화
deactivateactive → deactivating → inactive퍼블리셔 중단, 안전하게 멈춤
cleanupinactive → cleaningup → unconfigured설정 해제, 리셋
shutdown(어떤 상태든) → shuttingdown → finalized노드 종료

ㄴ 명령어 : ros2 lifecycle set /노드이름 activate

Lifecycle Manager란?

  • 여러 개의 Lifecycle Node를 순서대로 상태 전환(configure, activate, deactivate, shutdown 등) 시켜 전체 시스템을 안정적으로 제어하는 노드 상태 관리자
  • 주로 Launch 파일 안에서 Lifecycle Manager를 설정
profile
taerin

0개의 댓글