Chapter 645. ROS2 개론과 아키텍처 (ROS2 Introduction and Architecture) Chapter 645. ROS2 개론과 아키텍처 (ROS2 Introduction and Architecture) 645.1ROS2 개론 645.2ROS2의 탄생 배경과 동기 645.3ROS1의 한계와 ROS2의 필요성 645.4ROS1의 단일 장애점(Single Point of Failure) 문제 645.5ROS1의 실시간 지원 부재 645.6ROS1의 보안 메커니즘 부재 645.7ROS2의 설계 목표와 요구사항 645.8ROS2의 역사적 발전 과정 645.9ROS2 배포판(Distribution) 개요 645.10ROS2 Foxy Fitzroy 특성 645.11ROS2 Galactic Geochelone 특성 645.12ROS2 Humble Hawksbill 특성 645.13ROS2 Iron Irwini 특성 645.14ROS2 Jazzy Jalisco 특성 645.15ROS2 Rolling Ridley 특성 645.16ROS2 라이선스 정책과 오픈소스 생태계 645.17ROS2 전체 아키텍처 개요 645.18ROS2 계층 구조와 추상화 수준 645.19사용자 응용 계층 645.20클라이언트 라이브러리 계층 645.21rcl(ROS Client Library) 핵심 라이브러리 645.22rclcpp(C++ 클라이언트 라이브러리) 645.23rclpy(Python 클라이언트 라이브러리) 645.24rclrs(Rust 클라이언트 라이브러리) 645.25ROS2 미들웨어 인터페이스(rmw) 645.26rmw 추상화 계층의 설계 원리 645.27DDS(Data Distribution Service) 개론 645.28DDS 표준 아키텍처(DCPS, DLRL) 645.29DDS 기반 통신 아키텍처 645.30ROS2에서의 DDS 벤더 추상화 645.31Fast DDS(eProsima) 특성 645.32Cyclone DDS(Eclipse) 특성 645.33Connext DDS(RTI) 특성 645.34DDS 벤더 간 성능 비교 645.35Zenoh 기반 ROS2 통신 645.36rmw_zenoh 어댑터 645.37DDS 품질 서비스(QoS) 정책 개요 645.38QoS 신뢰성(Reliability) 정책 645.39QoS 내구성(Durability) 정책 645.40QoS 기록(History) 정책 645.41QoS 수명(Lifespan) 정책 645.42QoS 마감(Deadline) 정책 645.43QoS 생존성(Liveliness) 정책 645.44QoS 프로파일 설정과 호환성 규칙 645.45사전 정의 QoS 프로파일 645.46ROS2의 발견(Discovery) 메커니즘 645.47Simple Discovery Protocol(SDP) 645.48Discovery Server 기반 발견 645.49ROS2 그래프(Computation Graph) 구조 645.50ROS2 노드(Node) 개념과 역할 645.51ROS2 토픽(Topic) 기반 통신 모델 645.52게시-구독(Publish-Subscribe) 패턴 645.53ROS2 서비스(Service) 기반 요청-응답 모델 645.54ROS2 액션(Action) 기반 장기 실행 작업 모델 645.55액션 서버와 액션 클라이언트 구조 645.56ROS2 파라미터(Parameter) 시스템 개요 645.57ROS2 메시지 정의와 인터페이스 기술 언어(IDL) 645.58.msg, .srv, .action 파일 형식 645.59ROS2 빌드 시스템(ament) 개론 645.60ament_cmake 빌드 시스템 645.61ament_python 빌드 시스템 645.62colcon 빌드 도구의 구조와 사용법 645.63ROS2 패키지 구조와 package.xml 명세 645.64CMakeLists.txt 구성 645.65setup.py와 setup.cfg 구성 645.66ROS2 워크스페이스 관리 645.67오버레이 워크스페이스와 언더레이 워크스페이스 645.68ROS2 런치 시스템(Launch System) 개요 645.69Python 기반 런치 파일 645.70XML 기반 런치 파일 645.71YAML 기반 런치 파일 645.72ROS2 로깅 시스템(Logging) 645.73로그 레벨과 로거 구성 645.74ROS2 시간 관리(Time and Clock) 645.75시뮬레이션 시간과 실시간 시간의 구분 645.76ROS2 좌표 변환 시스템(tf2) 개요 645.77정적 변환과 동적 변환 645.78ROS2 진단 시스템(Diagnostics) 개요 645.79ROS2 실시간(Real-Time) 지원 아키텍처 645.80ROS2의 결정론적 실행을 위한 설계 645.81실시간 메모리 할당 전략 645.82ROS2 Executor 모델과 콜백 관리 645.83싱글 스레드 Executor 645.84멀티 스레드 Executor 645.85이벤트 기반 Executor 645.86콜백 그룹(Callback Group) 구성 645.87상호 배타적 콜백 그룹 645.88재진입 콜백 그룹 645.89ROS2 컴포넌트(Component) 기반 설계 645.90컴포넌트 컨테이너와 동적 로딩 645.91인트라프로세스(Intra-Process) 통신 645.92ROS2 생명주기 노드(Lifecycle Node) 개요 645.93생명주기 노드의 상태 전이 모델 645.94관리형 노드를 통한 시스템 시작 순서 제어 645.95ROS2 보안 아키텍처(SROS2) 645.96DDS 보안 플러그인과 인증 메커니즘 645.97접근 제어 정책과 권한 관리 645.98보안 키 관리와 인증서 배포 645.99ROS2 도메인 ID와 네트워크 격리 645.100ROS2 멀티 로봇 시스템에서의 네임스페이스 관리 645.101ROS2 리매핑(Remapping) 규칙 645.102ROS2 인트로스펙션(Introspection) 도구 645.103ros2 CLI 도구 모음 개요 645.104rqt 시각화 도구 모음 개요 645.105RViz2를 이용한 3D 시각화 645.106rosbag2를 이용한 데이터 기록 및 재생 645.107ROS2와 ROS1의 상호운용성(ros1_bridge) 645.108ROS1에서 ROS2로의 마이그레이션 전략 645.109ROS2 지원 플랫폼과 운영체제 645.110임베디드 시스템을 위한 micro-ROS 개요 645.111micro-ROS의 아키텍처와 제약 사항 645.112micro-ROS 에이전트(Agent) 구조 645.113ROS2와 클라우드 통합 아키텍처 645.114ROS2 기반 분산 시스템 설계 원칙 645.115ROS2 플러그인 아키텍처와 확장성 645.116pluginlib 기반 플러그인 시스템 645.117ROS2 테스트 프레임워크와 품질 보증 645.118단위 테스트와 통합 테스트 645.119launch_testing 기반 시스템 테스트 645.120ROS2 커뮤니티 거버넌스와 기여 절차 645.121ROS2 기술 진화 제안서(REP) 체계 645.122ROS2 응용 분야와 산업 적용 사례 645.123ROS2 생태계의 주요 패키지와 프레임워크 645.124ROS2 향후 발전 방향과 로드맵