본문으로 건너뛰기

M15.06 · 기록 데이터로 지도 품질·경로 오차 평가

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

전체 커리큘럼

학습 안내

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

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

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

학습 목표

  • 기록의 좌표·시각·정합과 지도 잔차·관측 범위를 점검한다.
  • 정합된 합성 궤적에서 위치 오차와 구간 이동 오차의 RMSE를 계산한다.
  • 유효 표본 지표와 전체 실행의 추적 실패·미상을 구분해 평가 결과를 보고한다.

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

권장 선수

M15의 지도·위치 추정과 M02의 제곱합 기초를 연결한다. RMSE, 기준 정합, 절대·상대 오차와 실패 분모를 본문에서 보충한다. 기본은 합성 기록의 종이 계산이며 선택 표준 라이브러리 코드도 제공한다. 실제 SLAM·evo·ROS 실행이나 지도 성능 실증은 하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

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

보기 좋은 지도보다 평가 입력을 먼저 고정한다

지도 품질은 한 숫자로 모두 설명되지 않는다. 벽이 정확한 곳에 있는지, 관측한 공간이 얼마나 되는지, 시간이 지나도 위치 추정이 이어지는지, 필요한 구역에서 실패하지 않는지 등 서로 다른 질문이 있다. 지도 자체의 기하와 로봇 궤적의 오차, 실제 주행 성공도 구분해야 한다. 지도를 만드는 데 사용한 관측에 다시 잘 맞는다는 사실은 새로운 독립 관측에서도 정확하다는 보장이 아니다.

평가를 시작하기 전에 기록의 센서·보정·지도 버전과 단위, 좌표 frame, 취득 시각의 clock과 세대, 기준 궤적의 출처를 적는다. reference는 비교 기준이며 반드시 오차가 없는 참값이라는 뜻은 아니다. 기준의 측정 불확실성과 적용 구간도 남긴다. 같은 시각·같은 좌표의 두 위치를 비교해야 센서 지연이나 좌표 원점 차이를 기하 오차와 혼동하지 않는다.

시간 대응은 어떤 표본을 같은 사건으로 묶을지 정하는 규칙이다. 취득 시각과 수신 시각을 섞거나 잘 맞는 쌍만 사후 선택하면 결과가 달라진다. 보간을 했다면 방법과 허용 간격을 기록한다. reset 뒤 다른 clock 세대나 추적 단절 양쪽을 연속 이동처럼 이어서는 안 된다. 유효한 쌍이 없으면 오차는 미정이지 0이 아니다. 기존 4.4 멀티레이트 센서 시간 정합이 이 입력 점검을 보충한다.

좌표와 척도 정합이 무엇을 제거하는지 공개한다

정합은 추정과 기준의 좌표를 비교 가능한 관계로 맞추는 것이다. 처음 원점만 맞추는 방법, 전체 궤적에서 회전·이동을 가장 잘 맞추는 방법, 척도까지 조절하는 방법은 서로 다른 질문에 답한다. 순수 단안의 임의 척도를 제거해 형상을 비교하는 것은 가능하지만 그 결과를 외부 기준에서의 미터 정확도나 절대 위치 정확도와 동일시하지 않는다.

evo 저자 Metrics 문서는 회전·이동의 SE(3) 정합과 척도까지 포함한 Sim(3) 정합, 원점 정합을 구별한다. 여기서 SE(3)는 3D 강체 회전·이동의 집합이고 Sim(3)는 여기에 공통 척도 변화를 더한 것이다. 이 활동은 이미 같은 미터 좌표와 시각으로 정합된 2D 위치를 제공한다. 추가 최적 정합을 하지 않으며 방향은 모든 시각에서 동일한 0으로 알려졌다고 둔다. 따라서 아래 단순 이동 차이를 일반적인 회전 포함 3D pose 오차 공식으로 쓰지 않는다.

같은 시각의 위치 오차를 계산한다

시각 t=[0,1,2] s의 기준 위치 p는 [(0,0),(1,0),(2,0)] m이고 추정 위치 p̂는 [(0,0),(1.1,0),(2.1,0.2)] m다. i는 세 시각의 번호이고 위치 오차 벡터 e_i=p̂_i−p_i다. 각각 (0,0), (0.1,0), (0.1,0.2) m이며 벡터 길이 제곱은 0, 0.01, 0.05 m²다. RMSE는 Root Mean Square Error로, 제곱 오차를 평균한 뒤 제곱근을 취한다.

RMSE⁡pos=1N∑i=1N∥p^i−pi∥2,N=3.\operatorname{RMSE}_{pos}=\sqrt{\frac{1}{N}\sum_{i=1}^{N}\|\hat p_i-p_i\|^2},\qquad N=3.

합은 0.06 m²이고 3으로 나누면 0.02 m²이므로 RMSE는 약 0.141421 m다. 좌표 성분이 두 개라고 6으로 나누지 않는다. 여기서는 각 위치의 공간 거리 제곱을 N개 평균하는 지표로 정의했기 때문이다. 최대 위치 오차는 마지막 표본의 √0.05≈0.223607 m다. 평균적 지표만 쓰면 특정 구간의 큰 오차를 놓칠 수 있으므로 최대값과 시각별 분포도 확인한다.

구간의 이동 오차는 다른 질문이다

위치 오차가 같은 상수만큼 치우쳐 있어도 구간별 이동은 정확할 수 있다. 상대 오차는 두 시점 사이의 이동을 비교해 누적 변화의 국소 정확도를 살펴본다. 이 예에서는 모든 방향이 같다는 조건에서 연속 1 s 구간의 위치 차이를 사용한다. 기준 이동은 두 구간 모두 (1,0) m이고 추정 이동은 (1.1,0), (1,0.2) m다. 이동 오차는 (0.1,0), (0,0.2) m이며 제곱 길이는 0.01, 0.04 m²다.

두 구간을 평균하면 구간 이동 오차 RMSE는 √(0.05/2)≈0.158114 m다. 위치 RMSE와 분모·질문이 다르므로 둘을 같게 만들 필요가 없다. 전체 RPE(Relative Pose Error)는 방향까지 포함한 두 pose 사이의 상대 변환을 비교한다. 이 단위는 방향 차이가 없는 특수한 입력에서 그 병진 부분을 단순화한 계산이다. 실제 평가에서는 간격을 초·거리·표본 수 중 무엇으로 고르는지, 어떤 pose 쌍을 쓰는지와 회전 오차 단위도 명시한다.

선택 실행은 아래 전체 코드를 Python 표준 라이브러리로 계산하면 된다. 종이 계산만으로도 모든 목표를 확인할 수 있다. 작성자는 Darwin/macOS의 Python 3.13.4 CPU에서 이 계산을 확인했다. evo나 ROS를 실행한 것은 아니다.

from math import sqrt

reference = [(0.0, 0.0), (1.0, 0.0), (2.0, 0.0)]
estimate = [(0.0, 0.0), (1.1, 0.0), (2.1, 0.2)]

def difference(a, b):
    return tuple(x - y for x, y in zip(a, b))

def vector_rmse(vectors):
    if not vectors:
        raise ValueError("no valid error vectors")
    return sqrt(sum(sum(c * c for c in v) for v in vectors)
                / len(vectors))

position_errors = [difference(e, r) for e, r in zip(estimate, reference)]
motion_errors = [
    difference(difference(estimate[i + 1], estimate[i]),
               difference(reference[i + 1], reference[i]))
    for i in range(2)
]
print(f"position_rmse_m={vector_rmse(position_errors):.6f}")
print(f"motion_rmse_m={vector_rmse(motion_errors):.6f}")
print(f"samples={len(position_errors)} pairs={len(motion_errors)}")

출력은 position_rmse_m=0.141421, motion_rmse_m=0.158114, samples=3 pairs=2다. 입력은 완전한 고정 2D 표로 제공했으며 코드는 일반 파일 로더·전수 무결성 검사기가 아니다. 실제 기록을 넣으려면 누락, 유한 수, 길이·차원과 시각·좌표 계약을 별도로 검사해야 한다.

지도 잔차와 관측 범위를 함께 본다

합성 평가 지도의 벽 네 개 중 독립 기준과 대응이 확인된 벽은 두 개이고, 알려진 단위 법선 방향의 위치 잔차는 +0.02와 −0.04 m라고 하자. 법선은 벽에 수직인 길이 1의 방향이며 부호는 같은 방향으로 정했다. 두 잔차의 RMS는 √((0.0004+0.0016)/2)≈0.031623 m다. 이 작은 값은 대응이 검증된 두 벽의 결과다. 나머지 두 벽은 관측되지 않아 평가하지 못했으며 벽 ID 기준 평가 범위는 2/4다.

이 50%는 면적 관측률이 아니다. 벽 개수와 면적의 분모가 다르기 때문이다. 지도 전체가 정확하다거나 미관측 영역이 빈 공간이라고 보고하지 않는다. 올바른 대응 자체가 미상인 최근접 점 거리는 반복 구조에서 과도하게 작을 수 있다. 잔차가 작은 표면만 고르지 않고 평가할 대상과 대응·제외 규칙을 먼저 정한다.

추적 실패를 평균 밖으로 숨기지 않는다

세 합성 실행 R1/R2/R3은 모두 위 세 시각에 pose 출력을 요구했다. R1은 세 개 모두 유효하고, R2는 첫 두 시각만 같은 추정값을 내고 마지막에 추적을 잃었다. R3은 출력이 전혀 없다. 유효 위치는 3+2+0=5개로 계획 9개 중 5개다. 전체 구간을 완료한 실행은 R1 하나이므로 완료율은 1/3이다. 실패 둘을 지우고 100%라고 발표하면 안 된다.

유효한 다섯 위치만 모은 RMSE는 √(0.07/5)≈0.118322 m로 R1의 0.141421보다 작다. 어려운 마지막 구간이 누락되었기 때문에 숫자가 좋아진 것일 수 있다. 따라서 유효 표본 조건부 지표와 누락·추적 실패·완료 분모를 함께 보고한다. 추적 재시작 전후를 하나의 연속 구간으로 연결하지 않으며, 같은 데이터에서 설정을 골랐다면 독립 시험 결과와 분리한다. 기존 6.6 평가 설계에 연결해 조건별 오차·실패·미상을 남기자. 이 합성 기록 평가를 실제 지도 생성이나 현장 주행 성과로 바꾸어 주장하지 않는다.

학습 범위와 한계

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

실습 필수

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

입력은 본문의 동일 좌표·동일 시각·동일 방향을 가진 세 위치 쌍과 두 벽 잔차다. 벽은 전체 4개 중 2개만 대응이 확인됐다. R1/R2/R3의 출력 상태도 본문과 같고 실제 SLAM 자료는 아니다.

  1. 좌표·시각·정합 가정을 정리하고 두 벽 잔차 RMS 및 평가 범위를 계산한다. 지도 전체의 정확도를 확정할 수 있는지 판정한다.
  2. R1의 위치 오차와 두 연속 구간 이동 오차를 단계별로 계산한다. 최대 위치 오차와 각 분모도 적는다. 선택 코드로 확인해도 된다.
  3. 세 실행의 유효 표본 수·완료율과 유효 표본 조건부 RMSE를 보고한다. 추적 실패가 평균을 어떻게 바꾸는지 설명하고 실제 평가에 필요한 추가 기록을 제안한다.

관찰은 입력·지도, 궤적 계산, 전체 실행 보고로 나눈다. 막히면 벡터 차이→길이 제곱→분모→제곱근 순으로 계산한다. 누락값을 (0,0)으로 채우거나 실제 ROS를 설치할 필요는 없다.

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

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

학습 범위와 한계

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

평가·해설 필수

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

확인 문제 Q1

두 벽의 독립 기준 잔차가 +0.02/−0.04 m이고 전체 네 벽 중 이 둘만 확인했다. RMS와 평가 범위를 보고하라. 이를 지도 면적의 50% 정확도라고 불러도 되는가?

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

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

확인 문제 Q2

R1의 마지막 추정 위치만 (2.2,0) m로 바꾼다. 위치와 구간 이동 오차의 RMSE를 다시 구하라. 방향 차이가 있는 3D pose에도 단순 위치 차이만 쓰면 되는가?

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

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

확인 문제 Q3

R2와 R3을 제외하면 RMSE도 좋고 실행 완료율은 100%라는 보고를 평가하라. 전체 분모와 누락·재시작·정합에서 필요한 정보를 제안하라.

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

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

학습 범위와 한계

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

참고 자료

학습 확인

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

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

학습 이동

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

전체 목차로 돌아가기 →

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