보기 좋은 지도보다 평가 입력을 먼저 고정한다
지도 품질은 한 숫자로 모두 설명되지 않는다. 벽이 정확한 곳에 있는지, 관측한 공간이 얼마나 되는지, 시간이 지나도 위치 추정이 이어지는지, 필요한 구역에서 실패하지 않는지 등 서로 다른 질문이 있다. 지도 자체의 기하와 로봇 궤적의 오차, 실제 주행 성공도 구분해야 한다. 지도를 만드는 데 사용한 관측에 다시 잘 맞는다는 사실은 새로운 독립 관측에서도 정확하다는 보장이 아니다.
평가를 시작하기 전에 기록의 센서·보정·지도 버전과 단위, 좌표 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로, 제곱 오차를 평균한 뒤 제곱근을 취한다.
합은 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 평가 설계에 연결해 조건별 오차·실패·미상을 남기자. 이 합성 기록 평가를 실제 지도 생성이나 현장 주행 성과로 바꾸어 주장하지 않는다.