본문으로 건너뛰기

M18.03 · 전역 경로·지역 제어·Recovery·도착 판정

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 전역 경로·지역 명령·실제 이동과 자료 갱신의 관계를 구분한다.
  • 주어진 goal·progress 정책의 위치·방향·시간 조건을 계산해 판정한다.
  • 실패 층위별 복구·재시도와 정지·재개에 필요한 근거를 제안한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M15의 위치 추정, M17의 계획과 M18.01~02의 서버·costmap을 연결한다. goal/progress checker와 복구 행동의 의미를 본문에서 보충한다. Jazzy의 합성 로그를 분석하며 실제 Nav2·복구 행동·로봇 실행은 없다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

전역 경로와 지역 제어는 서로 다른 질문에 답한다

전역 경로는 시작에서 목표까지 갈 기하적 경로를 제공한다. 지역 제어는 현재 pose·속도와 주변 자료를 사용해 그 경로를 따라갈 명령을 만든다. 경로는 모터에 적용된 결과가 아니며 명령 속도 역시 실제 속도 측정과 다르다. 같은 경로를 두고도 장애물 갱신, 위치 추정, 구동 제한과 제어 알고리즘에 따라 행동이 달라질 수 있다.

이 단위의 Nav2 기준은 Jazzy다. planner가 반환한 path와 controller가 사용하는 path의 ID·frame·갱신 시각을 연결한다. 새 장애물이 나타나면 지역 제어가 지금 낼 수 있는 명령이 없어질 수 있고, 더 넓은 경로 변경이 필요하면 재계획을 요청할 수 있다. 모든 장애물 변화에 반드시 같은 방식으로 반응하거나 항상 지나간 경로로 돌아간다고 일반화하지 않는다. 선택한 plugin과 BT가 처리 흐름을 정한다.

한 번의 경로 생성 성공은 이후 모든 시각의 유효성을 보장하지 않는다. 반대로 잠시 기다린다고 지도·TF 오류가 반드시 해결되는 것도 아니다. 현재 관측과 costmap, 경로·목표 버전, 적용 명령과 실제 pose를 함께 남기면 계획 실패인지 제어 실패인지, 자료 문제인지 과업 조건 문제인지 나눌 수 있다. 실패한 계층을 구분하는 것이 복구의 시작이다.

도착 조건은 plugin과 설정으로 정의한다

도착은 화면에서 목표 점에 가까워 보인다는 인상이 아니라 명시한 조건이다. Jazzy SimpleGoalChecker는 위치와 yaw 허용 오차를 검사한다. 여기서는 xy_goal_tolerance=0.1 m, yaw_goal_tolerance=0.2 rad, stateful=false, symmetric_yaw_tolerance=false라는 교육용 설정을 제공한다. 실제 기본값을 복사한 예가 아니다.

목표 (x_g,y_g,θ_g)=(1,0,0)를 같은 map 기준으로 주고 현재 pose가 (0.94,0.04,0.25)라면 위치 오차는 다음과 같다. x,y는 m이고 θ는 rad다.

exy=(x−xg)2+(y−yg)2=0.062+0.042≈0.072111 m.e_{xy}=\sqrt{(x-x_g)^2+(y-y_g)^2} =\sqrt{0.06^2+0.04^2}\approx0.072111\ \mathrm{m}.

위치는 0.1 m 이내지만 yaw 오차 0.25 rad가 0.2를 넘으므로 이 설정의 도착 조건은 실패다. 같은 위치에서 yaw만 0.15 rad가 되면 두 조건을 통과한다. 각도 차이는 원의 가장 짧은 방향으로 정규화해서 비교해야 하며 +π와 −π 부근의 단순 뺄셈을 그대로 쓰지 않는다. 이 예는 작은 각도여서 오차가 곧 0.25/0.15다.

stateful=true를 쓰는 경우에는 위치 허용 범위에 들어온 이력을 사용해 이후 yaw 정렬 중 xy 재검사를 생략할 수 있다. 따라서 현재 위치·방향을 매번 함께 검사하는 본문 설정과 같다고 가정하면 안 된다. 실제 선택한 checker와 reset·과업 경계, 상태 유지 조건을 함께 기록한다. 다른 goal checker에서는 도착의 의미가 달라질 수 있다.

SimpleGoalChecker의 이 함수는 속도 입력을 도착 조건으로 검사하지 않는다. 위 통과 순간의 실제 선속도가 0.2 m/s라면 pose 조건은 통과해도 정지했다는 사실은 확인되지 않는다. 정지·안정된 도킹이 과업 요구라면 그 조건을 처리하는 checker나 별도의 관측·검증이 필요하다. Action 결과도 선택한 조건과 자료에 따른 결과이며 실제 pose·구동 상태의 신뢰성을 대신하지 않는다.

진행 검사와 목표 접근·도착은 다르다

Jazzy SimpleProgressChecker는 기준 pose 이후 필요한 이동을 했는지 시간과 함께 본다. 이 단위의 설정은 required_movement_radius=0.05 m, movement_time_allowance=10 s다. baseline은 비교 기준 위치와 그 기준을 설정한 시각이다. 기준에서의 위치 이동이 0.05 m보다 클 때 기준을 새로 잡는다. 방향 회전만으로는 이 위치 이동을 만족하지 않는다.

별도의 합성 실행에서 기준은 t=0 s의 (0,0) m다. t=5 s의 위치가 (0.03,0), t=11 s가 (0.04,0)이라고 하자. 둘 다 기준 이동이 0.05 m보다 작아 기준이 갱신되지 않는다. 5 s에서는 허용 시간 안이지만 11 s에서는 10 s를 넘었으므로 진행 검사 실패다. 최신 pose가 주어졌다는 사실과 필요한 이동을 했다는 사실을 구별한다.

반대로 11 s의 위치가 (0.06,0)이고 그 검사 전까지 별도 실패 종료를 하지 않았다는 입력이면 이동이 반경보다 커 기준을 갱신하고 통과한다. 이 함수는 충분한 이동을 먼저 확인한 뒤 시간을 검사한다. 실제 제어기가 그 이전 시각에 이미 실패를 반환했는지까지 생략하고 이 한 호출을 전체 실행 성공으로 쓰면 안 된다. 정확히 0.05 m라면 '보다 크다'가 아니므로 기준을 갱신하지 않는다.

이 기준은 목표까지 거리가 줄었는지나 최단 경로를 따랐는지 직접 검사하지 않는다. 목표 반대쪽으로 움직이거나 제자리 주변을 도는 경우에도 위치 이동 기준이 갱신될 수 있다. progress 통과는 도착이나 충돌 회피의 충분조건이 아니다. 궤적과 목표 관계, goal checker 및 과업 결과를 함께 봐야 한다.

Recovery는 원인을 지우는 만능 동작이 아니다

복구는 실패 뒤 계속할 수 있는 조건을 회복하려는 과업 처리다. Jazzy Behavior Server는 Spin, BackUp, Wait 등 행동을 제공한다. 과거 자료에서 Recovery Server라는 이름을 보더라도 현재 선택 버전의 실제 패키지·노드·인터페이스를 확인한다. recovery라는 역할 이름과 어떤 행동을 수행하는 서버인지 구별한다.

TF나 clock이 틀렸다면 먼저 좌표·시각·추정 자료를 복구해야 한다. 그런 근거 없이 회전이나 후진을 요청한다고 좌표 연결이 생기지 않는다. 센서 단절이면 관측과 준비 상태를 확인하고, 일시적 통행 방해라면 새 관측으로 통로가 비었는지 확인하거나 적절한 대기·재계획을 검토할 수 있다. 실제로 막힌 통로를 무한히 같은 경로로 재시도하는 것은 원인을 해결하지 못한다.

costmap 지움은 장애물의 실제 제거가 아니다. 오래된 흔적을 다시 관측하도록 모델을 초기화할 수 있지만, 사람이 계속 앞에 있다면 새 관측으로 다시 표시되어야 한다. 지운 화면을 근거로 통행 가능을 확정하거나 충돌 검사를 약하게 만들어 실패를 숨기지 않는다. 실제 복구 동작에도 현재 형상·공간과 자료의 유효성, 적용·정지 관측이 필요하다. 이 활동은 그런 동작을 실행하는 지시가 아니라 로그로 근거를 구분하는 연습이다.

재시도의 범위와 재개 조건을 기록한다

Jazzy 기본 재계획·복구 BT XML은 주기적 계획과 제어, 오류에 따른 복구 분기와 유한 재시도를 구성한다. 이 파일의 설정을 모든 Nav2 실행의 고정 정책이라고 쓰지 않는다. 어떤 XML과 plugin·오류 조건이 적용됐는지 확인하고 실패를 복구 가능한 것으로 분류한 근거를 남긴다.

합성 로그 P는 유효한 path가 있지만 map→odom 조회 실패와 clock 세대 변경을 기록했다. Q는 TF·센서가 유효하고 앞 통로에 사람이 계속 관측돼 제어 명령을 찾지 못했다. R은 pose 조건을 통과했지만 속도 0.2 m/s와 정지 확인 기록 없음이다. P에서는 시각·추정·TF 준비를 먼저 확인하고 과거 명령의 세대를 구분한다. Q에서는 사람과 공간에 관한 새 근거, 유효한 대안·대기와 제한된 재시도 정책이 필요하다. R은 pose 조건 통과와 안정 정지를 별도로 보고한다.

취소 수락이나 노드 비활성화도 물리 정지의 관측은 아니다. 복구 종료 후에는 현재 pose·속도, 최신 센서·TF와 지도·목표 버전, 이전 동작의 종료·명령 적용 상태를 확인해 재개를 판단한다. 기존 6.4 안전 배포 감독기 및 6.7 트러블슈팅 매트릭스으로 단계별 진단을 연결한다. 아래 계산 통과는 실제 Nav2 주행·복구 성과를 뜻하지 않는다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

입력은 본문의 목표와 두 현재 pose, stateful=false인 goal 설정이다. 진행 검사는 별도 실행의 t=0/5/11 s와 위치 0/0.03/0.04 m이며 중간에 다른 기준 갱신은 없다. 변형은 마지막 위치만 0.06 m로 바꾼 한 호출의 비교이고 이전 실패 종료는 없다고 준다. 복구 로그 P/Q/R도 본문과 같다.

  1. path 생성, 현재 자료, controller 명령, 실제 이동과 checker·과업 결과의 관계를 표로 나눈다.
  2. 두 goal pose의 위치·각도 오차와 진행 검사의 기준·시간을 계산한다. 0.05/0.06 m 경계와 정지 미상을 구별한다.
  3. P/Q/R에 필요한 복구·추가 관측과 유한 재시도·재개 근거를 제안한다. 실제 행동을 실행하지 않는다.

관찰은 역할, 조건 계산, 실패 진단으로 나눈다. 막히면 goal과 progress 표를 따로 만들고 어느 기준·시각과 비교하는지 적는다. ROS·장비 설치는 필요하지 않다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

전역 경로를 얻었고 FollowPath를 수락했다. 지역 제어·실제 이동·도착까지 모두 성공했다고 할 수 있는가? 새 장애물과 자료 갱신도 포함해 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

같은 goal 설정에서 현재 pose=(0.95,0.05,−0.2)다. pose 조건을 판정하라. 별도 progress의 기준에서 정확히 0.05 m 이동했고 11 s가 지났다면 어떤가? pose 통과가 정지 보장인가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

TF 조회가 실패했으니 costmap을 지우고 무한히 Spin을 재시도하면 복구된다고 한다. 실패 층위와 복구·정지·재개 근거를 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.