ROS 2

ros2 lifecycle이란?

정지홍 2025. 3. 24. 13:35

ros2 lifecycle

  • ros2에서 노드의 state(상태)를 명시적으로 관리할 수 있게 도와주는 기능.
    • 즉, lifecycle은 '노드의 상태(state) 전환과 관리'를 가능하게 해주는 기능
      노드가 단순히 '켜져 있는지'뿐만 아니라, 준비중인지 or 활성화인지 or 종료중인지 등을 알수 있다.
      또한 상태에 따라서 정확히 언제 어떠한 동작을 해야하는지 제어하는 것이 가능하다.
  • lifecycle node의 주요 특징
    • 1. 노드가 시작되면, 'unconfigured'상태에 있다.
      • 이때는 ROS 네트워크 설정이나 파라미터 로딩이 이루어지지 않음.
      • 노드는 단순히 생성자( constructor )만 실행됨.
    • 2. 'inactive' 상태로 전환되면서 on_configure()이 실행된다.
      • 이 과정에서 파라미터 설정과 네트워크 인터페이스 설정이 이루어짐.
    • 3. 'active' 상태로 전환되면서 on_activate()가 실행된다.
      • 이때부터 노드는 데이터 처리가 가능하다.
    • 4. 종료시에는 deactivating -> clean up -> shutting down -> finalized단계로 진행된다.
      • 이 과정에서, 네트워크 인터페이스 비활성화, 메모리 해제 등의 과정이 포함.
  • 왜 필요한가?
    • 로봇 시스템은 수많은 노드들이 존재하며, 해당 노드들이 임의로 실행되면 예상하지 못한 충돌,오류가 발생한다. 그래서 노드의 상태를 명확히 표현하기 위해서 이다. ( 초기화 -> 설정 -> 비활성화 -> 종료 )
┌───────────────────┐
│   unconfigured    │◄────────┐
└───────────────────┘         │
         │ configure()        │
         ▼                    │
┌───────────────────┐         │
│    inactive       │         │
└───────────────────┘         │
         │ activate()         │
         ▼                    │
┌───────────────────┐         │
│    active         │         │
└───────────────────┘         │
         │ deactivate()       │
         ▼                    │
┌───────────────────┐         │
│    inactive       │         │
└───────────────────┘         │
         │ cleanup()          │
         ▼                    │
┌───────────────────┐         │
│   unconfigured    │─────────┘
└───────────────────┘

  종료 경로
         │ shutdown()
         ▼
┌───────────────────┐
│   finalized       │
└───────────────────┘



# configue 설정 단계로 전환
# activate 활성 상태로 전환
# deactivate 비활성화 상태로 전환
# clean up 파라미터 및 리소스 초기화
# shutdown 노드 종료
  • unconfigured : 노드가 실행되었지만 아직 configure이 되지 않음
  • inactive : 노드가 설정되었지만 아직 active가 되지 않음
  • active : 노드가 publish / subscribe / service 등 모든 기능을 수행중
  • finalized : 완전히 종료된 상태 ( shutdown 호출에 의해서 )

 

 

명령어....

  • 1. configure ( 설정 단계로 전환 )

  • 2. activate

  • 3. 노드의 현재 상태 확인

  • 4. 현재 실행중인 lifecycle 노드 목록 보기
    • /amcl은 nav2에서 위치 추정
    • /map_server는 nav2에서 지도 제공
    • /panner_server는 nav2에서 경로 생성
    • /controller_server는 nav2에서 로봇 제어
    • /bt_navigator는 nav2에서 행동 트리 실행
    • /smoother_server는 경로 다듬어줌