Lifecycle

Hyuna·2024년 10월 24일
0

ROS2

목록 보기
13/15
post-thumbnail

📕 참고: ROS2로 시작하는 로봇 프로그래밍




Lifecycle


Lifecycle은 ROS2 노드의 상태를 관리하고 제어할 수 있는 기능을 제공한다. 이 기능을 통해 노드 상태 확인, 재실행, 교체 등이 가능하다.


노드 상태

📌 파란 박스 : 주요 상태
📌 노란 박스 : 전환 상태
📌 검정색 화살표 : 전환
📌 파란색 화살표 : 전환 성공 시 주요 상태 변화
📌 빨간색 화살표 : 전환 실패 시 주요 상태 변화
📌 빨간색 작은 원 : 에러가 발생할 수 있는 상태


주요상태

✔ Unconfigured

  • 노드가 생성되었지만 활성화되지 않은 초기 상태
  • configure - Inactive 전환가능

✔ Inactivate

  • 노드가 준비되었지만 활성화 되지 않은 상태
  • active-Activating 으로 전환하거나, cleanup-Unconfigured로 돌아가기 가능
    < br>

✔ Activate

  • 노드가 활성화되어 동작중인 상태
  • 모든 콜백(퍼블리셔, 서브스크라이버, 서비스, 액션 등)이 동작하여 실제 작업 수행
  • deactivate-Inactive 로 돌아가기 가능

✔ Finalized

  • 노드가 종료되어 더 이상 사용 불가
  • 시스템이 종료되어 다른 상태로 전환 불가능

전환 상태

✔ Configuring

  • Unconfigured - configuring-Inactive
  • 노드를 초기화하여 필요한 자원을 설정

✔ Activating

  • Inactive-Activating-Active
  • 노드를 활성하여 실제 동작 가능하도록 만듦

✔ Deactivating

  • Active -Deactivating-Inactive
  • 노드를 비활성하고 자원 정리

✔ Cleanup

  • Inactive-Cleanup-Unconfigured
  • 노드를 초기화하고 자원 정리

✔ ShuttingDown

  • 모든 상태에서 Finalized
  • 노드를 종료하고 모든 자원 해제

✔ ErrorProcessing

  • 오류가 발생했을 때 전환 상태
  • 오류 처리가 가능하면 Unconfigured, 불가능하면 Finalized로 전환

상태 전환 동작

✔ Create : 노드를 생성하고 초기 상태로 설정

✔ Configure : 노드를 구성하여 준비상태로 전환

✔ Cleanup : 노드를 초기화

✔ Activate : 노드를 활성화

✔ Deactivate : 노드를 비활성화

✔ Shutdown : 노드를 안전하게 종료

✔ Destroy : 노드를 메모리에서 완전 제거



실행


다음 명령어로 노드를 실행시킨다.
ros2 run lifecycle lifecycle_talker
ros2 run lifecycle lifecycle_listener
ros2 run lifecycle lifecycle_service_client


lc_client를 실행시켰을 때 lc_talkerConfigure-Inactive-Active-Inactive-Finalized로 전환되는 것을 확인할 수 있디.

0개의 댓글