Chapter 660. Nav2 내비게이션 스택 (Nav2 Navigation Stack) Chapter 660. Nav2 내비게이션 스택 (Nav2 Navigation Stack) 660.1Nav2의 개요와 설계 목표 660.2Nav2의 아키텍처 전체 구조 660.3Nav2와 ROS1 navigation 스택의 비교 660.4Nav2의 핵심 구성 요소 개요 660.5Nav2의 의존성과 설치 절차 660.6Nav2 모듈 간 통신 흐름 660.7Nav2의 액션 서버/클라이언트 기반 인터페이스 660.8BT Navigator 서버 개요 660.9행동 트리 (Behavior Tree)의 개념과 구조 660.10행동 트리와 유한 상태 머신 (FSM)의 비교 660.11BehaviorTree.CPP 라이브러리 개요 660.12BehaviorTree.CPP의 노드 유형 분류 660.13Nav2 기본 행동 트리 XML 구조 660.14navigate_to_pose_w_replanning_and_recovery.xml 분석 660.15navigate_through_poses_w_replanning_and_recovery.xml 분석 660.16행동 트리의 조건 노드 (Condition Node) 660.17GoalReached 조건 노드 660.18IsPathValid 조건 노드 660.19IsBatteryLow 조건 노드 660.20행동 트리의 행동 노드 (Action Node) 660.21ComputePathToPose 행동 노드 660.22FollowPath 행동 노드 660.23NavigateToPose 행동 노드 660.24NavigateThroughPoses 행동 노드 660.25행동 트리의 제어 노드 (Control Node) 660.26Sequence 제어 노드 660.27Fallback (Selector) 제어 노드 660.28Parallel 제어 노드 660.29PipelineSequence 제어 노드 660.30RoundRobin 제어 노드 660.31행동 트리의 데코레이터 노드 (Decorator Node) 660.32RateController 데코레이터 노드 660.33DistanceController 데코레이터 노드 660.34SpeedController 데코레이터 노드 660.35GoalUpdater 데코레이터 노드 660.36행동 트리의 블랙보드 (Blackboard) 시스템 660.37커스텀 행동 트리 노드 작성 방법 660.38커스텀 행동 트리의 빌드와 등록 660.39행동 트리의 동적 로딩과 교체 660.40Groot2를 이용한 행동 트리 시각화와 편집 660.41Planner 서버 개요 660.42글로벌 경로 계획기의 역할과 인터페이스 660.43NavFn Planner 알고리즘 (A*/Dijkstra) 660.44NavFn Planner의 파라미터와 튜닝 660.45Theta* Planner 알고리즘 660.46Theta* Planner의 파라미터와 튜닝 660.47Smac Planner 2D 알고리즘 660.48Smac Planner 2D의 파라미터와 튜닝 660.49Smac Planner Hybrid-A* 알고리즘 660.50Smac Planner Hybrid-A*의 파라미터와 튜닝 660.51Smac Planner Lattice 알고리즘 660.52Smac Planner Lattice의 파라미터와 튜닝 660.53Planner 알고리즘별 성능 비교 660.54커스텀 Planner 플러그인 작성 방법 660.55Controller 서버 개요 660.56로컬 제어기의 역할과 인터페이스 660.57DWB (Dynamic Window Based) Controller 알고리즘 660.58DWB Controller의 Critics 시스템 660.59DWB Controller의 파라미터와 튜닝 660.60TEB (Timed Elastic Band) Controller 알고리즘 660.61TEB Controller의 파라미터와 튜닝 660.62RPP (Regulated Pure Pursuit) Controller 알고리즘 660.63RPP Controller의 파라미터와 튜닝 660.64MPPI (Model Predictive Path Integral) Controller 알고리즘 660.65MPPI Controller의 Critics 시스템 660.66MPPI Controller의 파라미터와 튜닝 660.67MPPI Controller의 GPU 가속 설정 660.68Rotation Shim Controller의 역할과 구성 660.69Controller 알고리즘별 성능 비교 660.70커스텀 Controller 플러그인 작성 방법 660.71Smoother 서버 개요 660.72경로 평활화 (Smoothing) 알고리즘의 필요성 660.73Simple Smoother 알고리즘 660.74Savitzky-Golay Smoother 알고리즘 660.75Constrained Smoother 알고리즘 660.76커스텀 Smoother 플러그인 작성 방법 660.77Costmap 2D 개요 660.78글로벌 코스트맵과 로컬 코스트맵의 차이 660.79코스트맵의 비용 값 정의와 의미 660.80Static Layer (정적 레이어) 구성 660.81Obstacle Layer (장애물 레이어) 구성 660.82Obstacle Layer의 센서 데이터 소스 설정 660.83Voxel Layer (복셀 레이어) 구성 660.84Voxel Layer의 3D 장애물 처리 660.85Inflation Layer (팽창 레이어) 구성 660.86Inflation Layer의 비용 함수와 파라미터 660.87Range Sensor Layer (거리 센서 레이어) 구성 660.88Denoise Layer (노이즈 제거 레이어) 660.89코스트맵 레이어 합성 (Combining) 전략 660.90커스텀 Costmap Layer 플러그인 작성 방법 660.91코스트맵 필터 (Costmap Filters) 시스템 개요 660.92Keepout Filter (금지 구역 필터) 660.93Speed Filter (속도 제한 필터) 660.94Binary Filter (이진 필터) 660.95코스트맵 필터 마스크 생성과 관리 660.96Recovery 서버 (Behavior 서버) 개요 660.97Spin Recovery 행동 660.98BackUp Recovery 행동 660.99Wait Recovery 행동 660.100AssistedTeleop Recovery 행동 660.101DriveOnHeading Recovery 행동 660.102커스텀 Recovery 플러그인 작성 방법 660.103Waypoint Follower 서버 개요 660.104웨이포인트 내비게이션 구현 660.105웨이포인트 도착 시 작업 (Task Executor) 플러그인 660.106GPS 웨이포인트 내비게이션 660.107Nav2 Lifecycle Manager 개요 660.108Nav2 노드의 순차적 시작 (Startup) 과정 660.109Nav2 노드의 순차적 종료 (Shutdown) 과정 660.110Lifecycle Manager의 장애 감지와 복구 660.111Map Server 개요 660.112지도 저장 (map_saver_cli) 660.113지도 로딩 (map_server) 660.114PGM/YAML 지도 파일 형식 660.115AMCL (Adaptive Monte Carlo Localization) 개요 660.116AMCL의 파티클 필터 알고리즘 660.117AMCL의 레이저 모델 설정 660.118AMCL의 오도메트리 모델 설정 660.119AMCL의 파라미터 설정과 튜닝 660.120AMCL의 초기 포즈 설정 660.121Nav2의 파라미터 설정과 YAML 구성 체계 660.122Nav2의 파라미터 네임스페이싱 660.123Nav2 런치 파일 구성 방법 660.124Nav2에서의 TF2 프레임 요구사항 660.125Nav2에서의 센서 데이터 통합 660.126Nav2의 시뮬레이션 환경 구성 (Gazebo) 660.127Nav2의 시뮬레이션 환경 구성 (Isaac Sim) 660.128Nav2의 RViz2 시각화 설정 660.129Nav2 Simple Commander API 사용법 660.130Nav2 Simple Commander API의 목표 전송 660.131Nav2 Simple Commander API의 경로 추적 660.132Nav2를 이용한 자율 주행 로봇 구현 660.133Nav2를 이용한 다중 로봇 내비게이션 660.134다중 로봇 내비게이션의 충돌 회피 660.135Nav2의 동적 장애물 회피 전략 660.136Nav2의 좁은 공간 내비게이션 전략 660.137Nav2의 야외 환경 내비게이션 적용 660.138Nav2의 비정형 지형 내비게이션 660.139Nav2의 3D 내비게이션 확장 660.140Nav2의 성능 최적화와 튜닝 가이드 660.141Nav2의 CPU 사용량 최적화 660.142Nav2의 메모리 사용량 최적화 660.143Nav2의 디버깅과 문제 해결 기법 660.144Nav2의 테스트 전략과 프레임워크 660.145Nav2의 플러그인 아키텍처와 확장성 660.146Nav2 플러그인 인터페이스 설계 규약 660.147Nav2의 향후 발전 방향