Chapter 646. ROS2 노드와 생명주기 (ROS2 Nodes and Lifecycle) Chapter 646. ROS2 노드와 생명주기 (ROS2 Nodes and Lifecycle) 646.1ROS2 노드의 정의와 역할 646.2노드의 기본 구성 요소 646.3rclcpp를 이용한 C++ 노드 생성 646.4rclpy를 이용한 Python 노드 생성 646.5노드 이름 규칙과 명명 규약 646.6노드의 네임스페이스와 완전 한정 이름 646.7노드 내부의 콜백 함수 구조 646.8단일 노드 프로세스와 다중 노드 프로세스 646.9노드 컴포지션(Composition) 개념 646.10컴포넌트 노드와 독립 실행 노드의 비교 646.11동적 컴포넌트 로딩과 언로딩 646.12컴포넌트 컨테이너(Component Container) 구조 646.13프로세스 내 통신(Intra-Process Communication) 646.14제로 카피(Zero-Copy) 메시지 전달 646.15고유 포인터(unique_ptr) 기반 메시지 전달 646.16노드의 초기화 절차와 컨텍스트 관리 646.17rclcpp::init()과 rclcpp::shutdown() 646.18노드 옵션(NodeOptions) 설정 646.19노드의 시간 소스 설정 646.20노드의 클럭(Clock) 인터페이스 646.21노드의 로거(Logger) 설정과 활용 646.22로그 레벨 동적 변경 646.23노드 수준의 파라미터 선언과 관리 646.24파라미터 변경 콜백 등록 646.25파라미터 유효성 검사(Validation) 646.26노드의 QoS 이벤트 처리 646.27노드의 타이머(Timer) 생성과 관리 646.28월 타이머(Wall Timer)와 ROS 타이머 646.29노드의 구독자(Subscriber) 관리 646.30노드의 발행자(Publisher) 관리 646.31노드의 서비스 서버와 클라이언트 관리 646.32노드의 액션 서버와 클라이언트 관리 646.33노드의 콜백 그룹(Callback Group) 구성 646.34상호 배타적 콜백 그룹(MutuallyExclusive) 646.35재진입 콜백 그룹(Reentrant) 646.36Executor에 의한 노드 실행 모델 646.37싱글 스레드 Executor(SingleThreadedExecutor) 646.38멀티 스레드 Executor(MultiThreadedExecutor) 646.39이벤트 기반 Executor(EventsExecutor) 646.40커스텀 Executor 설계 방법 646.41스핀(spin) 함수의 동작 원리 646.42spin_once와 spin_some의 차이 646.43spin_until_future_complete 활용 646.44생명주기 노드(Lifecycle Node) 개론 646.45생명주기 관리의 필요성과 동기 646.46생명주기 노드의 상태 정의 646.47기본 상태: Unconfigured 646.48기본 상태: Inactive 646.49기본 상태: Active 646.50기본 상태: Finalized 646.51전이 상태: Configuring 646.52전이 상태: CleaningUp 646.53전이 상태: ShuttingDown 646.54전이 상태: Activating 646.55전이 상태: Deactivating 646.56전이 상태: ErrorProcessing 646.57상태 전이 콜백 함수 구현 개론 646.58on_configure() 콜백 구현 646.59on_activate() 콜백 구현 646.60on_deactivate() 콜백 구현 646.61on_cleanup() 콜백 구현 646.62on_shutdown() 콜백 구현 646.63on_error() 콜백 구현 646.64생명주기 노드의 상태 전이 트리거 646.65외부에서의 상태 전이 요청 646.66lifecycle_msgs 인터페이스 646.67LifecycleManager를 이용한 노드 관리 646.68다중 생명주기 노드의 순차적 시작 전략 646.69생명주기 노드와 런치 시스템의 통합 646.70launch_ros의 LifecycleNode 지원 646.71생명주기 노드의 이벤트 핸들러 등록 646.72생명주기 노드에서의 자원 할당과 해제 전략 646.73생명주기 노드와 실시간 시스템의 연계 646.74비관리형 노드에서 관리형 노드로의 마이그레이션 646.75노드 성능 모니터링과 인트로스펙션 646.76ros2 node CLI 명령어를 이용한 노드 관리 646.77ros2 lifecycle CLI 명령어를 이용한 상태 관리 646.78노드 간 의존성 관리 전략 646.79노드의 견고성(Robustness) 확보 방법 646.80노드의 오류 복구 패턴 646.81노드 기반 분산 시스템 설계 원칙 646.82대규모 시스템에서의 노드 구조화 전략 646.83노드 그래프 시각화와 디버깅 646.84생명주기 노드 활용 사례와 설계 패턴