비슷한 모양을 찾는 것과 같은 물리점을 찾는 것은 다르다
스캔 매칭은 서로 다른 시점의 거리 관측이 공간에서 잘 겹치도록 상대 변환을 추정하는 과정이다. 특징 매칭은 영상 등의 국소 모양을 요약한 descriptor를 비교해 대응 후보를 만든다. 두 과정 모두 관측 간 연결을 사용하지만, 후보를 고르는 일과 그 후보에 맞는 이동을 계산하는 일은 구분해야 한다. 반복되는 문이나 기둥의 다른 점을 연결하면 계산이 정밀해도 물리적으로 틀릴 수 있다.
상대 이동은 두 시점 사이의 관계다. 어느 축의 점을 어느 축으로 옮기는지 정하지 않고 +0.4 m라는 숫자만 전달하면 반대 이동을 적용할 수 있다. 여기서는 회전 없는 같은 +x 방향의 1D 축에서 현재 점 b를 과거 축의 점 a로 옮기는 변환 a=b+t를 사용한다. 모든 좌표와 t의 단위는 m이고, 정적 환경·같은 물리점이라는 대응을 합성 입력으로 제공한다. 이 가정은 실제 센서가 자동으로 보장하는 것이 아니다.
잔차는 선택한 모델이 관측과 얼마나 어긋나는지다
과거 점 a=[0,2] m와 현재 대응점 b=[−0.4,1.6] m를 보자. 이동 후보 t에 대한 잔차 e_i는 현재 점을 옮긴 값에서 과거 점을 뺀 것이다. i는 두 대응점의 번호다. 제곱합 S는 두 잔차를 제곱해 더한 값이며 단위는 m²다.
t=0이면 잔차가 둘 다 −0.4 m이므로 S=0.16+0.16=0.32 m²다. t=0.4 m이면 두 잔차가 0이고 S=0이다. 현재 점에 +0.4 m를 더하면 과거 점이 복원되므로 이 후보가 주어진 대응에 맞는다. 로봇이 앞으로 이동해 현재 축에서 물체가 뒤로 보인 상황과 일관된다. 다만 작은 잔차는 선택한 대응과 모델 안에서의 적합도다. 다른 물리점을 대응시킨 경우까지 참이라고 인증하지 않는다.
둘째 현재 점만 1.0 m로 바뀐 변형을 보자. 첫 쌍은 t=0.4 m, 둘째 쌍은 t=1.0 m를 요구하므로 동시에 잔차 0으로 맞출 수 없다. 동일 가중 제곱합을 최소로 하는 평균 이동 t=0.7 m에서는 잔차가 +0.3, −0.3 m이고 S=0.18 m²다. 둘째 대응이 잘못되었다는 별도 근거가 있다면 첫 쌍만의 t=0.4 m가 더 타당할 수 있다. 두 쌍만 보고 어느 쪽이 원인인지는 확정할 수 없다. 평균을 내면 오차가 자동으로 없어지는 것이 아니라 충돌하는 제약 사이에서 타협한 것이다.
ICP는 대응과 변환을 번갈아 개선한다
ICP는 Iterative Closest Point의 약자로, 초기 변환에서 가까운 점 등의 대응을 정하고 그 대응의 오차를 줄이는 변환을 찾는 과정을 반복하는 계열이다. Rusinkiewicz와 Levoy의 저자 논문은 점 선택, 대응, 가중, 이상 대응 제거, 오차 척도와 최소화 등 여러 선택이 결과에 영향을 준다고 설명한다. 위 두 점 계산은 대응이 이미 고정된 이동 추정만 보여 주며 ICP 전체를 실행한 것이 아니다.
초기 위치가 너무 다르면 가까운 점이 다른 물체일 수 있다. 겹치는 영역이 적거나 긴 평면만 보이면 어떤 방향의 이동을 구분할 근거가 약해진다. 이전 이동 추정과 센서 보정은 초기 후보를 만드는 데 도움이 되지만 그 자체도 틀릴 수 있다. 반복을 더 오래 수행하거나 점 개수를 늘리는 것만으로 잘못된 대응이 반드시 해결되지는 않는다. 점과 평면의 거리 등 다른 오차 척도도 있으므로 여기의 점 간 제곱합을 모든 구현의 공식으로 쓰지 않는다.
영상 특징에서도 descriptor 거리가 작다는 것은 정한 표현에서 비슷하다는 뜻이다. 여러 점이 하나의 강체 이동과 투영 기하에 함께 맞는지 검사하고 이상치를 배제해야 한다. 유리 반사나 움직이는 물체, 반복 무늬는 거짓 대응을 만들 수 있다. 최종 잔차뿐 아니라 사용한 대응 수와 분포, 제거한 관측, 초기값, 변환 방향과 불확실성을 기록한다. 비교할 때는 같은 대응 집합과 오차 정의인지도 확인한다.
루프 폐쇄는 과거와 현재를 다시 묶는 제약이다
pose graph에서는 각 시점의 위치·방향이 점이고, 두 시점 사이의 관측된 상대 이동이 연결선이다. 이 점은 지도상의 장애물 점이 아니라 로봇 pose라는 차이가 있다. 가까운 시점의 이동을 계속 누적하면 오차가 쌓여 출발점으로 돌아와도 추정 끝점이 어긋날 수 있다. 과거 장소를 다시 관측하고 상대 관계를 검증해 연결하는 것이 루프 폐쇄다. 같은 장소에서 다른 방향으로 보았다면 단순히 두 pose를 같다고 놓지 않고 실제 상대 위치·방향을 사용해야 한다.
그림 M15.04-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
작은 수치 예는 방향이 고정된 1D에서 시작 x_0=0 m를 기준으로 둔다. 관측된 두 이동은 d_01=+1.0 m와 d_12=−0.8 m다. 그대로 누적하면 x_1=1.0 m, x_2=0.2 m다. 이제 마지막 pose가 시작과 같은 위치라는 제약 x_2=x_0=0을 정확한 합성 입력으로 제공한다. 실제 루프 관측은 불확실하지만 이 예에서는 오차가 어떻게 분배되는지 보기 위해 정확하다고 정한 것이다.
기준 x_0와 끝 x_2를 고정하고 두 이동 잔차에 같은 가중치를 주면 남은 x_1을 고른다. 이동 잔차는 추정한 이동에서 관측 이동을 뺀 값이다. x_1=1.0이면 첫 잔차 0, 둘째는 −1.0−(−0.8)=−0.2 m라 제곱합 0.04 m²다. x_1=0.9이면 첫 잔차 −0.1, 둘째도 −0.1 m라 제곱합 0.02 m²로 작아진다. 대칭인 두 제약이 같은 양을 나누어 부담한 결과다.
이를 식으로 쓰면 S(x_1)=(x_1−1)²+(0.8−x_1)²=2(x_1−0.9)²+0.02이므로 최소는 x_1=0.9 m다. 이 식은 좌표를 m 단위 수치로 넣은 표현이다. 수정 이동은 +0.9 m와 −0.9 m이고 끝점은 0이다. 모든 pose에 같은 −0.2 m를 더하는 것과 다르다. 전체를 평행 이동하면 시작도 −0.2 m로 바뀌고, 처음과 끝 사이의 0.2 m 차이는 여전히 남는다.
그림 M15.04-2. 숫자는 시간 순서의 pose 노드다. 주황 점선은 마지막 관측과 과거 장소 사이에서 검증한 추가 제약을 뜻한다. 그림은 참 궤적/최적화 결과가 아니며 잘못된 루프도 생길 수 있다. 직접 제작.
제약의 신뢰와 잘못된 루프를 함께 생각한다
실제 최적화는 보통 루프도 오차가 있는 관측으로 취급하고 각 제약의 불확실성에 따른 가중을 사용한다. 더 신뢰하는 제약의 잔차를 크게 만들지 않도록 타협하므로 모든 이동에 항상 똑같이 오차를 나누지 않는다. Grisetti 등의 저자 튜토리얼은 관측 제약과 일관되는 pose 배치를 찾는 그래프 기반 접근을 설명한다. 본문 숫자는 그 구조를 단순화한 예이며 특정 패키지의 결과가 아니다.
반복된 복도를 시작점으로 잘못 인식해 x_2=0을 강제로 넣으면 틀린 지도를 매우 매끈하게 만들 수도 있다. 루프 후보의 유사도와 기하 검증, 다른 시점의 관측, 시간·외부 보정, 독립 위치 기준을 확인한다. 루프를 잠시 제외했을 때의 결과와 채택 후의 변형도 비교하되 모양이 예뻐졌다는 사실만으로 승인하지 않는다. 기존 4.3 TF2 트리 설계와 6.2 정량 진단로 좌표와 잔차 점검을 연결한다. 아래 계산을 완료해도 실제 데이터 연관이나 SLAM 정확도를 검증한 것은 아니다.