Nav2 행동트리와 복구 동작: 경로 실패·막힘·센서 오류에서 다시 움직이는 방법
Nav2 행동트리는 ComputePath·FollowPath·ClearCostmap·Spin·Wait·BackUp 같은 동작을 성공·실패·실행 중 상태로 조합해 재계획과 복구 순서를 정합니다. 복구는 무조건 반복하는 기능이 아니라 오류 원인·공간 안전·재시도 한계와 운영자 호출 조건을 분리해야 합니다.
로봇 데이터셋, 센서, 엣지 AI 하드웨어 정리
Nav2 행동트리는 ComputePath·FollowPath·ClearCostmap·Spin·Wait·BackUp 같은 동작을 성공·실패·실행 중 상태로 조합해 재계획과 복구 순서를 정합니다. 복구는 무조건 반복하는 기능이 아니라 오류 원인·공간 안전·재시도 한계와 운영자 호출 조건을 분리해야 합니다.
Nav2 코스트맵은 SLAM 지도를 그대로 따라가는 화면이 아니라 static·obstacle·voxel·inflation layer와 keepout 같은 filter를 겹쳐 planner와 controller가 사용할 이동 비용으로 바꾼 격자입니다. 잘못된 장애물 누적은 marking·clearing·TF·센서 범위·레이어 결합 순서에서 찾아야 합니다.
URDF는 ROS에서 한 로봇의 링크·조인트·형상과 관성 구조를 공유하기 좋고, SDF는 로봇뿐 아니라 센서·마찰·조명·물리 엔진·여러 모델이 놓인 월드까지 표현합니다. 둘 중 하나를 고르는 문제라기보다 기준 모델과 시뮬레이션 확장을 어디에 둘지 정해야 변환 손실을 줄일 수 있습니다.
rosbag2는 timestamp가 붙은 ROS 2 메시지를 저장하고 재생하지만, 기록 성공 표시만으로 데이터 완전성이 보장되지는 않습니다. QoS 호환성, 수신 시각과 메시지 시각, 저장 장치 처리량, 캐시·분할·압축 정책과 재생 clock을 함께 검증해야 같은 실험을 재현할 수 있습니다.
로봇 센서 시간 동기화는 장치 시계·NIC의 PTP Hardware Clock·운영체제 시계·ROS timestamp가 같은 기준을 따르게 만드는 작업입니다. Offset·drift·jitter를 구분하고 PTP와 NTP, 하드웨어 타임스탬프의 경계를 검증해야 센서 융합과 데이터 기록이 실제 측정 순서를 보존합니다.
ROS 2 Lifecycle Node는 노드를 켜고 끄는 단순 스위치가 아니라 configure·activate·deactivate·cleanup·shutdown 전이를 통해 자원 준비와 실제 동작을 분리하는 상태 기계입니다. 의존 노드의 시작 순서와 오류 복구 정책을 명시하면 부분 장애를 전체 재부팅 없이 다룰 수 있습니다.
ROS 2 Executor는 구독·타이머·서비스 콜백을 운영체제 스레드에서 실행하고, Callback Group은 어떤 콜백이 병렬로 실행될 수 있는지 정합니다. Multi-Threaded Executor를 선택하는 것만으로 병렬성이 생기지 않으며, 기본 그룹·블로킹 호출·공유 잠금이 제어 주기를 막는지 측정해야 합니다.
ros2_control은 로봇 드라이버와 제어기를 state interface·command interface로 분리하고, Controller Manager가 자원 소유권과 read–update–write 주기를 관리하게 합니다. 연결 실패를 찾으려면 URDF 선언부터 실제 인터페이스 노출까지 같은 이름과 주기로 이어지는지 확인해야 합니다.
로봇 좌표계 문제는 숫자 하나가 틀린 것이 아니라 서로 다른 시각의 변환을 잘못 이어 붙일 때 생깁니다. map·odom·base_link·sensor·tool 프레임의 역할과 TF2 시간 버퍼를 함께 확인해야 합니다.
휴머노이드 균형 제어는 무게중심만 발 안에 두는 문제가 아닙니다. ZMP로 접촉 모멘트를 보고, 캡처 포인트로 멈추기 위한 발 위치를 예측하며, MPC로 발목·힙·스텝 전략을 제약 안에서 조율합니다.