보기
로보틱스·컴퓨터비전 · 연구 경험담

논문에 담기지 않는 로봇 연구의 실전 경험
Week 9 · 자율주행·로봇 위치추정 연구 회고 (최성록 교수)

영어 강의를 듣기 전에 읽는 예습 자료입니다. 왼쪽 슬라이드를 보며 오른쪽 설명을 읽어보세요. 슬라이드를 클릭하면 크게 볼 수 있습니다.

핵심 요약

한 연구자가 13년간 엔지니어로 일하며 부딪힌 주행·위치추정 문제들을 따라가며, 실패와 일반화로 어떻게 논문이 되었는지 보여주는 강의입니다.

경로 계획의 출발점

그리드맵에서 8방향 확장만 하면 직선 경로도 지그재그가 되고 비용도 똑같아진다. 더 멀리 직선으로 보는 any-angle 경로를 고안했지만 Theta*에 선수를 빼앗긴 경험에서, 남이 먼저 한 아이디어를 '일반화'로 피벗하는 법을 배운다.

GPS와 뒷축 좌표계

바퀴는 옆으로 안 미끄러진다는 가정 때문에 자동차·로봇의 기준점을 뒷축에 둔다. GPS를 앞에 달면 헤딩(방향) 정보가 생기지만, 위치를 뒤축으로 옮길 때 로봇의 방향각(세타)을 반드시 고려해야 한다.

센서의 약점 다루기

GPS는 평면보다 수직 오차가 크고 어반 캐년에서 신호가 가려진다. 기압계는 절대 고도가 계속 드리프트하지만, 미분해 '수직 속도계'로 쓰면 드리프트와 무관하게 유용해진다.

단안 카메라와 스케일 모호성

카메라 하나로는 '크고 빠른 움직임'과 '작고 느린 움직임'을 구분할 수 없다(스타워즈 샌드크롤러 미니어처). 지면과 카메라의 거리가 일정하다는 제약으로 이동 스케일을 복원한다.

휴리스틱을 논문으로

지면 피팅에서 아웃라이어가 위로만 생기니 비대칭 커널로 눌렀다. 같은 코드라도 '왜 그렇게 하는지'를 포뮬레이션으로 설득하면 리뷰어에게 가치가 달라진다 — 연구 글쓰기의 핵심.

GPS 없이 위치 찾기

전쟁·재밍·스푸핑으로 GPS가 무력화되는 상황에서, 드론 영상과 위성지도를 매칭(크로스뷰)해 위치를 추정한다. 글로벌 피처의 약점을 멀티스케일·회전 증강·시퀀셜 매칭으로 보완한다.

실패하고 선수를 빼앗긴 아이디어도 '일반화'하고 '설득력 있게 설명'하면 연구가 된다 — 주행·위치추정으로 배우는 연구의 태도.
Part 1슬라이드 1~5

01도입: 강사의 연구 여정

slide 1
슬라이드 1 · 강의 제목과 강사 소개
slide 2
슬라이드 2 · 강사의 연구 여정 한눈에 보기
slide 3
슬라이드 3 · uRON 로봇 내비게이션 라이브러리
slide 4
슬라이드 4 · 지그재그 경로 문제와 Theta*
slide 5
슬라이드 5 · Theta# — 빠르고 일반화된 버전
슬라이드 내용 정리

표지 슬라이드입니다. 강의 제목은 "Toward Better Robot Perception and Navigation"(더 나은 로봇 인지와 내비게이션을 향하여)이며, 강사는 서울과학기술대학교(SEOULTECH) 컴퓨터공학과의 최성록(Sunglok Choi) 조교수입니다. 연락처(sunglok@seoultech.ac.kr)와 연구실 페이지(mint-lab.github.io)가 함께 적혀 있습니다.

교수님 설명

이번 강의의 취지는 논문에는 담기 어려운 실제 경험들을 나누는 것입니다. 연구를 진행하면서 마주쳤던 여러 위험 요소와 시행착오, 그리고 그 과정에서 얻은 깨달음을 솔직하게 풀어놓고, 여러분의 연구 속도와 방향에 어떻게 적용할 수 있을지 함께 고민해 보는 시간을 가지려 합니다.

강사 본인도 처음에는 여러분과 똑같이 로봇 하나 제대로 못 만들던 시절에서 출발했다는 점을 강조하며, 완성된 결과물이 아니라 그 뒤에 숨은 실패와 우여곡절을 보여 주겠다는 의도를 밝힙니다.

슬라이드 내용 정리

강사의 연구 이력 지도입니다. 경력은 시간 순으로 Sigma Intelligence @ SNU(2001–2005)RIT Lab @ KAIST(2006–2007)Robotics Dept @ ETRI(2008–2020)CSE Dept @ SEOULTECH(2021–)로 이어집니다. 연구 주제는 위쪽의 "Autonomous Navigation"(자율 주행/내비게이션)과 아래쪽의 "3D Computer Vision"(3D 컴퓨터 비전) 두 축으로 나뉘며, 그 사이에 핵심 프로젝트로 uRON(범용 로봇 내비게이션 라이브러리), Theta#, Off-centered GPS, Adaptive RANSAC, Triangulation Toolbox, Milk(단안 시각 주행거리계, Visual Odometry) 등이 배치되어 있습니다.

교수님 설명

강사는 약 13년간 엔지니어로 일한 독특한 이력을 소개합니다. 석사를 마친 뒤 곧장 산업 현장의 엔지니어로 들어왔는데, 그렇게 오래 머물 줄은 몰랐다고 합니다. 회사를 다니면서 재직 중 박사학위(part-time)를 받았고, 박사를 따고 나서는 창업(스타트업)에도 도전했습니다.

이 과정에서 카메라를 이용한 인지자율 주행을 위한 플랫폼 제어를 두루 다루게 되었고, 이는 슬라이드의 두 축인 자율 내비게이션과 3D 비전으로 자연스럽게 연결됩니다. 오늘 강의는 이 지도에 표시된 프로젝트들을 따라가며, 각 연구가 어떤 실제 문제와 실패에서 비롯되었는지를 풀어 가는 형식으로 진행됩니다.

보충 설명

ETRI는 한국전자통신연구원으로, 로봇·통신 분야의 대표적 국책 연구기관입니다. 강사가 2008~2020년 이곳에 있었다는 점이 이후 등장하는 uRON·Theta# 같은 실제 로봇용 라이브러리 개발 경험의 배경이 됩니다. 즉, 슬라이드 2는 이후 모든 사례의 "지도" 역할을 한다고 보면 됩니다.

슬라이드 내용 정리

uRON: Universal Robot Navigation Library(범용 로봇 내비게이션 라이브러리)를 소개합니다. 무엇인가? 다양한 로봇과 서비스 시나리오에 적용할 수 있는 로봇 내비게이션 라이브러리로, 기능은 위치추정(Localization)·지도작성(mapping)·경로계획(path planning)·경로추종(path following)·장애물 회피(obstacle avoidance)를 포함합니다. 언어는 C++(C·C#·Java·Python), OS는 Windows·Linux·ROS·Android를 지원합니다.

왜 uRON인가?객체지향 설계 → 범용적·재구성 가능(Universal, reconfigurable): 2005년 이후 ETRI에서 20개 이상의 로봇과 10개 이상의 프로젝트에 적용, 2011년 이후 9개 기업에 기술이전(2016년 YTN 사이언스 방영). ② 설정 스크립트 → 쉬운 사용: 최소 사용은 C++ 코드 3줄. ③ 테스트 주도 개발(Test-driven Development) → 신뢰성: 테스트 커버리지 90% 이상.

교수님 설명

ETRI에 입사한 2008년, 강사는 다양한 로봇을 굴릴 수 있는 자율 주행 라이브러리를 의욕적으로 만들기 시작했습니다. 핵심 목표는 "한 번 만든 라이브러리를 여러 로봇에 그대로 재사용"하는 것이었습니다. 이를 위해 센서를 추상화(abstraction)하고 플랫폼을 추상화하여, 서로 다른 하드웨어라도 쉽게 갈아 끼울 수 있도록 설계했습니다.

지금은 ROS의 내비게이션 스택이 이런 역할을 표준으로 제공하지만, 당시에는 그런 것이 없었기 때문에 강사가 직접 ROS와 비슷한 구조를 만든 셈입니다. 즉 uRON은 "ROS 이전의 ROS 내비게이션"에 가까운 시도였고, 실제로 수많은 로봇과 기업에 적용되며 그 범용성이 검증되었습니다.

슬라이드 내용 정리

Theta#: 비균일 코스트맵 위에서의 빠른 임의각 경로계획을 다룹니다. 왜 지그재그(zig-zag) 경로가 생기나? 격자 지도(grid map) 위의 A* 알고리즘8-이웃 탐색(8-neighbor search)옥타일 거리(octile distance)를 비용 함수로 쓰기 때문에, 실제로는 직선으로 갈 수 있는 길도 계단처럼 꺾여서 표현됩니다.

해결책: 임의각 경로계획(Any-angle path planning), 예: Theta*. Theta*는 모든 방향의 시선 탐색(line-of-sight search)유클리드 거리(Euclidean distance)를 비용 함수로 사용해 직선에 가까운 자연스러운 경로를 만듭니다. 다만 충돌 검사(collision check)를 너무 많이 수행한다는 단점이 있습니다(Bresenham 직선 그리기 알고리즘 사용).

교수님 설명

uRON으로 로봇에 주행 서비스를 시켰을 때, 강사는 흥미로운 현상을 발견했습니다. 사람이라면 직선으로 갈 길을 로봇은 계속 비스듬히 계단처럼 꺾어서 가더라는 것입니다. 처음에는 "제어(control)가 잘못됐나"라고 의심했지만, 원인은 다른 곳에 있었습니다. 격자 지도에서 경로를 만드는 방식 자체가 문제였던 것입니다.

격자 위에서 한 점에서 출발해 주변 8개 칸으로만 확장하면, 시작점에서 목표점까지 가는 길이 여러 갈래 있는데 그 비용이 전부 똑같아집니다(예: 옆으로 한 칸 + 대각선 두 번이나, 다른 순서나 같은 비용). 그래서 직선으로 갈 수 있는데도 굳이 꺾인 경로가 선택되는 것이죠. 강사는 "그러면 8개 이웃에 한정하지 말고 더 멀리 직선으로 시선이 닿는 칸까지 길게 체크하면 되겠다"고 생각해 직접 알고리즘을 만들고 EU A*(Euclidean A*)라 이름 붙여 출판을 준비했습니다. 그런데 약 1년 전에 거의 똑같은 알고리즘이 Theta*라는 이름으로 이미 발표된 것을 발견하고 좌절했다고 합니다.

보충 설명

옥타일 거리(octile distance)는 가로·세로 1칸 비용을 1, 대각선 1칸 비용을 √2로 보는 8방향 격자용 거리입니다. 8방향만 허용하면 진짜 직선(임의 각도) 대신 이 8방향의 조합으로만 길을 표현해야 하므로 지그재그가 생깁니다. 임의각(any-angle) 경로계획은 격자에 갇히지 않고 두 점을 직접 잇는 직선이 막혀 있는지(시선/Line-of-sight)만 검사해 자연스러운 경로를 얻는 접근입니다. "남이 1~2년 먼저 같은 걸 냈다"는 경험은, 빠르게 발전하는 분야에서 아이디어 선점이 얼마나 중요한지를 보여 주는 사례이기도 합니다.

슬라이드 내용 정리

Theta#는 Theta*의 더 빠른 버전입니다. 동적 계획법(dynamic programming)을 사용해 중복되는 충돌 검사를 건너뜁니다(겹치는 부분 문제, overlapping sub-problems). 예시: CA가 자유로운지(통과 가능한지)는 CBBA가 자유로우면 알 수 있고, DADC, CA, BA가 자유로우면 알 수 있습니다.

또한 Theta#는 비균일 코스트맵(non-uniform costmap)에서의 일반화된 버전입니다. 시선 검사와 함께 비용 가중 유클리드 거리(cost-weighted Euclidean distance)를 추가 오버헤드 없이 계산할 수 있어, 지면마다 다른 통행 비용(uneven traversal cost)을 고려한 경로를 만듭니다.

교포님 설명

Theta*에 선점당한 뒤 강사는 포기하지 않고 그 단점을 개선하는 방향으로 연구를 이어 갔습니다. Theta*의 가장 큰 부담은 충돌 검사 비용이었습니다. 8-이웃 방식은 주변 8칸이 비었는지만 보면 되지만, 임의각 방식은 두 점을 잇는 직선 경로 전체에 장애물이 없는지 검사해야 하기 때문입니다.

핵심 아이디어는 "충돌 검사를 쪼개고 재사용한다"입니다. A에서 C까지의 검사는 사실 A→B, B→C 같은 작은 구간 검사로 나눌 수 있고, 이미 계산해 둔 부분 결과를 별도의 맵에 기억해 두면 동적 계획법처럼 다시 계산하지 않고 빠르게 재사용할 수 있습니다. 이렇게 중복 검사를 제거한 것이 "더 빠른 Theta#"이고, 여기에 더해 바닥 재질·경사처럼 칸마다 다른 통행 비용까지 반영하도록 확장한 것이 "일반화된 Theta#"입니다.

보충 설명

슬라이드의 CA가 CB·BA로 결정된다는 표현이 바로 동적 계획법의 "부분 문제 중복(overlapping subproblems)" 원리입니다. 긴 시선 검사를 0부터 다시 하지 않고, 이미 안전하다고 판명된 짧은 구간 결과를 쌓아 올려 재사용하는 것이죠. 비균일 코스트맵이란 모든 칸의 이동 비용이 1로 똑같지 않은 지도로, 예컨대 카펫·잔디·경사로처럼 "지나갈 수는 있지만 더 힘든" 영역에 높은 비용을 줍니다. Theta#는 이런 비용을 시선 검사와 한 번에 계산해 추가 부담 없이 더 현실적인 경로를 찾는다는 점이 핵심 기여입니다.

Part 2슬라이드 6~11

02로봇 주행 라이브러리 개발기

slide 6
슬라이드 6 · Off-centered GPS — 장착 위치와 활용
slide 7
슬라이드 7 · GPS 장착 구성 4종 (Centered~Off-centered)
slide 8
슬라이드 8 · 수학적 증명 — 관측성·불확실성 분석
slide 9
슬라이드 9 · 실험 검증 — Malaga 2009 데이터셋
slide 10
슬라이드 10 · 단일 기압계 GNSS 측위 — 동기
slide 11
슬라이드 11 · 단일 기압계 GNSS — 센서 퓨전 구조
슬라이드 내용 정리

Off-centered GPS: More Accurate GPS-based Localization [T-ITS 2020]. GPS(정확히는 GNSS)는 실외 측위에서 가장 널리 쓰는 센서로, 방향(orientation)은 빼고 위치(position)만 측정해 줍니다. 이 연구의 주제는 GPS를 어디에 다느냐(placement, 빨간 점 ●)그것을 localization에서 어떻게 쓰느냐(utilization, 파란 원 ◯)입니다.

두 사진으로 비교 — (a) Centered GPS: 차량 정중앙에 단 경우(KAIST Complex Urban Dataset), (b) Off-centered GPS: 차량용 인대시(in-dash) 내비처럼 중심을 벗어나 단 경우. 통념상 centered GPS가 선호되는데, 보정/변환(calibration/transformation)이 필요 없고 가장 정확해 보이기 때문입니다. 그러나 발표자의 결론은 정반대 — "off-centered GPS가 오히려 가장 정확한 localization을 가능하게 한다"는 것입니다.

교수님 설명

이 구간은 교수님이 옛 연구 경험을 쭉 풀어내는 대목으로 시작합니다. 2008년 입사 당시, 아직 ROS가 없던 시절여러 로봇에 재사용 가능한 주행 라이브러리를 직접 만들었다고 합니다. 요즘의 ROS Navigation처럼 센서와 플랫폼을 추상화(abstraction)해서 어떤 로봇에도 갖다 붙일 수 있게 한 것이죠. 그런데 막상 주행을 시켜 보니 로봇이 직선으로 가야 할 곳을 지그재그로 꺾어서 가는 현상이 보였고, 처음엔 "제어가 잘못됐나" 싶었지만 원인은 경로 계획(path planning)에 있었습니다.

이유는 grid map(격자 지도)에서 한 점을 주변 8개 이웃으로만 확장(expansion)하기 때문입니다. 그러면 출발점에서 목표점까지 가는 여러 경로의 비용(cost)이 전부 똑같아져, 직선으로 갈 수 있는데도 굳이 계단처럼 꺾인 경로가 선택됩니다. 그래서 "더 멀리·더 여러 방향으로 직선 연결을 확인하자"는 아이디어로 알고리즘을 만들어 "EU A*"라는 이름으로 출판하려 했는데, 알고 보니 1년쯤 전에 거의 똑같은 연구(Theta* 계열)가 이미 나와 있었다고 합니다. 여기서 교수님이 주는 교훈이 핵심입니다 — "내 아이디어를 누가 먼저 했으면, 그걸 피봇(pivot) 삼아 더 일반화(generalize)하라."

그래서 두 갈래로 연구를 확장합니다. ① 장애물 검사 가속: A에서 C까지 직선이 비었는지 확인하는 검사를 잘게 쪼개고(분할), 그 결과를 동적 계획법(dynamic programming)처럼 다른 맵에 미리 기억해 두어 빠르게 재사용. ② cost map 일반화: 지도를 단순히 "뚫림/막힘" 두 값이 아니라, 장애물 근처·계단·문턱처럼 이동 비용이 위치마다 다른 경우까지 다룰 수 있게 확장(이진 지도는 그 특수한 경우일 뿐) — 이렇게 일반화하여 논문을 냈습니다. 그리고 그 연장선의 또 다른 연구가 바로 이 슬라이드의 GPS 장착 위치 문제입니다.

슬라이드 내용 정리

GPS를 다는 위치에 따른 4가지 구성을 나란히 비교합니다. (a) Centered GPS — GPS가 로봇 좌표계 원점(중심)에 위치. (b) Pseudo-centered GPS — 실제로는 한쪽으로 치우쳐 달려 있지만 변환을 안 하고 그냥 중앙인 척 T(0,0,0)로 취급. (c) Transformed GPS — 오프셋과 로봇 방향각을 반영해 T(o_x, o_y, θ)로 좌표를 변환. (d) Off-centered GPS — 변환 없이 치우친 위치 그대로 활용하며, "the most accurate(가장 정확)"로 표시되어 있습니다.

교수님 설명

한 업체가 GPS로 로봇을 localization 하는데, 보통 GPS를 로봇의 정중앙에 답니다. 그런데 자동차를 보면 기준점(center)을 차의 기하학적 중앙이 아니라 뒷축(rear axle, B축)에 잡습니다. 왜 그럴까요? 핵심은 바퀴(wheel)의 가정입니다 — 메카넘 같은 특수 바퀴가 아닌 한, 바퀴는 주행(driving) 방향으로만 굴러가고 옆(lateral)으로는 미끄러지지 않는다고 가정합니다. 기준점을 뒷축에 두면 로봇이 곡선이든 직선이든 움직여도 그 점은 옆으로 가지 않아 기구학(kinematics)이 단순해집니다(차동구동, differential drive처럼). 반대로 기준점을 앞이나 다른 곳에 두면, 회전할 때 그 점이 옆으로 휩쓸려 다닙니다.

GPS도 같은 논리로 보통 이 원점(뒷축/중심)에 맞춰 답니다. 중심에 달면 GPS 위치 = 로봇 위치가 되어 그냥 갖다 쓰면 됩니다(슬라이드의 (a)). 하지만 한쪽에 치우쳐 달면(off-center) 그 좌표를 원점 기준으로 뒤로 빼주는 변환이 필요한데, 여기서 재미있는 점은 로봇의 방향각 θ를 반드시 고려해야 한다는 것입니다. 절대좌표계에서 로봇이 어느 쪽을 보고 있느냐에 따라 "어느 방향으로 얼마만큼 빼야 하는지"가 달라지기 때문이죠 — 이것이 (c) T(o_x, o_y, θ) 변환입니다. 그래서 다들 "중심에 달면 θ 신경 안 쓰고 편하다"며 centered를 선호하지만, 이 논문은 오히려 (d) off-centered를 그대로 쓰는 쪽이 더 정확하다고 주장합니다.

보충 설명

직관적으로, 중심에 단 GPS는 로봇이 제자리에서 회전해도 위치 값이 거의 그대로라 "지금 어느 쪽을 보는지(방향)"에 대한 정보를 못 줍니다. 반면 off-center GPS는 로봇이 회전하면 그 점이 원을 그리며 움직여, 위치 측정만으로도 방향각 θ를 간접적으로 관측할 수 있게 됩니다. 즉 "옆으로 치우친 것"이 단점이 아니라 추가 정보원이 되는 것 — 이것이 다음 슬라이드의 관측성(observability) 분석으로 이어집니다.

슬라이드 내용 정리

직관적 설명(Intuitive description) — 가는 선(—)은 Centered, 굵은 선(—)은 Off-centered GPS. (a) 한 점에서 회전할 때, (b) 살짝 굽은 경로를 이동할 때 두 경우의 점 분포가 다르게 나타납니다. 수학적 증명(Mathematical proof)은 두 갈래 — ① 관측성 분석(observability analysis)으로 관측성 결핍(deficiency)을 계산: r_d = n − rank(O_d(x₀)). 표는 전이 모델(Transition Models)과 GPS 측정 모델(GPS Measurement Models)을 CV / Gyro / Odom 조합별로 결핍 차수를 정리합니다. ② 불확실성 분석(uncertainty analysis)은 공분산 행렬로, 그래프는 오프셋 길이 o_x [m]가 커질수록 최소 고유값(The Minimal Eigen Value)이 증가함을 σ₀ = 0.1 / 0.5 / 1.0 세 경우로 보여줍니다. 마지막은 실험 검증(Experimental verification).

교수님 설명

이 슬라이드는 대본에서 직접 풀어 설명한 부분은 아니며, 앞에서 말한 "off-centered가 더 정확하다"는 주장을 이론적으로 증명하는 장표입니다. 앞 슬라이드의 직관(치우친 GPS는 회전·곡선 운동에서 방향 정보까지 준다)을 두 가지 수학 도구로 뒷받침합니다.

보충 설명

관측성(observability)은 "측정값만으로 상태(위치·방향)를 유일하게 알아낼 수 있는가"입니다. r_d가 0이면 상태가 완전히 관측 가능, 0보다 크면 그만큼 못 보는 차원이 있다는 뜻입니다(결핍). 중심 GPS는 방향각이 결핍되기 쉽지만, off-center GPS는 같은 센서 조합에서도 결핍 차수가 줄어듭니다. 불확실성 그래프의 핵심은 "공분산의 최소 고유값이 클수록 추정이 안정적(불확실성이 작음)"이라는 점인데, 오프셋이 길수록 그 값이 커지므로 — 즉 치우치게 달수록 추정이 더 단단해진다는 것을 정량적으로 보여줍니다.

슬라이드 내용 정리

실험 검증 (Cont'd)합성 데이터(Synthetic data)실제 데이터(Malaga 2009 dataset)로 검증합니다. 큰 표는 GPS 수신기(RTK_FL, RTK_FR, GPS_NORMAL)별로, 활용 방식(Pseudo-centered / Transformed / Off-centered)을 코스(campus_0L·2L·RT, parking_0L·2L·6L)마다 위치 오차 e_p와 방향 오차 e_o로 비교합니다. 표에서 Off-centered GPS 행의 오차가 대체로 가장 작게(굵게) 강조되어, 이론 예측이 실제로 들어맞음을 보입니다. 아래에는 실험 로봇 사진과 MMS·Delta DGPS·RTK-GPS 안테나 구성도 (출처: Blanco et al., AURO 2009).

교수님 설명

이 표 역시 대본에서 따로 짚지는 않았지만, 흐름상 결론에 해당합니다 — 합성 데이터에 그치지 않고 공개 데이터셋(Malaga 2009)으로도 off-centered GPS가 가장 작은 측위 오차를 낸다는 것을 수치로 확인했다는 의미입니다. 즉 "통념은 centered가 좋다지만, 증명도 실험도 off-centered 손을 들어준다"는 이 절의 메시지를 마무리 짓는 슬라이드입니다.

슬라이드 내용 정리

GNSS Localization with a Single Barometer: Motivation. GNSS 고도(altitude)가 심하게 망가지는 사례를 동기로 듭니다. 기압계(Barometer)는 고도 변화를 압력 변화로 감지하는데, 장점은 고정밀·저비용·소형, 단점은 드리프트(Drift)입니다. 그림 3개 — ① Testbed(경사로 보도 실험장), ② GNSS 고도 데이터(Z[m] vs Time[s]: SPS·DGPS·RTK-Float·RTK-Fix·Expected trajectory가 크게 출렁임), ③ 기압 데이터(P[hPa] vs Time[s]: 매끄러운 곡선).

교수님 설명

이 구간 대본은 앞의 주행 라이브러리·GPS 위치 이야기까지만 담겨 있어, 이 기압계 슬라이드에 대한 직접 설명은 포함되어 있지 않습니다(뒤에 이어지는 별도 연구 주제로 보입니다).

보충 설명

핵심 직관은 "두 센서의 약점이 서로 다르다"는 점입니다. GNSS 고도는 절대 기준은 있지만 건물·반사 때문에 순간순간 크게 튑니다(노이즈). 기압계는 순간 변화에는 매우 부드럽고 정밀하지만 시간이 지나면 기준이 서서히 밀립니다(드리프트 — 날씨·온도 변화로 기압 기준 자체가 이동). 그래서 둘을 합치면 "절대 기준은 GNSS, 부드러운 단기 변화는 기압계"로 서로의 빈틈을 메울 수 있다는 것이 다음 슬라이드의 퓨전(fusion) 아이디어입니다.

슬라이드 내용 정리

GNSS Localization with a Single Barometer: Sensor Fusion Approach. (Heo et al., "Leveraging GNSS Accuracy with a Barometer," IEEE Sensors Journal, Vol. 25, No. 13, 2025.) 4족 보행 로봇에 적용. 구조도 — GNSS Measurement(부정확·심한 노이즈) → GNSS CorrectionEKF Localization(정확·매끄러움), 그리고 Barometer Measurement(정밀하나 드리프트) → Barometric Velocity Correction (BVC) → EKF로 결합. 주요 기여 — ① 기압 모델을 단순화: 온도를 prior로 고정(T_{k−1}T₀)하고 압력을 미분해 수직 속도를 계산. ② 이 모델링 가정을 합성·실제 실험으로 검증.

교수님 설명

이 슬라이드도 대본에는 직접 언급되지 않았습니다(GNSS+기압계 퓨전은 별도 연구 주제). 슬라이드는 앞에서 본 두 센서의 상호 보완을 확장 칼만 필터(EKF)로 묶는 방법을 정리합니다.

보충 설명

여기서 영리한 부분은 기압계를 위치(고도)가 아니라 "속도(BVC, Barometric Velocity Correction)"로 쓴다는 점입니다. 기압의 절대값은 드리프트로 못 믿지만, 짧은 시간 동안의 변화율(미분)은 정밀하므로, 압력을 미분해 얻은 수직 속도를 EKF에 보정 입력으로 넣습니다. 그러면 드리프트(느린 오차)는 GNSS의 절대 기준이 잡아 주고, GNSS의 순간 튐(빠른 노이즈)은 기압계의 부드러운 속도가 눌러 줍니다. 또 기압→고도 변환식은 본래 온도에 민감한데, 온도를 직전 값/기준값으로 고정해 모델을 단순화한 것이 두 번째 기여입니다.

Part 3슬라이드 12~17

03경로 계획과 Any-angle 알고리즘 (1)

slide 12
슬라이드 12 · BVC 전체 구조와 EKF 예측 단계
slide 13
슬라이드 13 · GNSS 보정 (correction #1)
slide 14
슬라이드 14 · 기압계 속도 보정 BVC (correction #2)
slide 15
슬라이드 15 · 합성 데이터 실험 (Case 1~3)
slide 16
슬라이드 16 · Case 3 높이 추정 결과 비교
slide 17
슬라이드 17 · 정량 평가 표
슬라이드 내용 정리

제목: 단일 기압계를 이용한 GNSS 측위 — BVC(Barometric Velocity Correction, 기압계 속도 보정). 위 그림이 전체 구조입니다.

  • GNSS Measurement: 부정확함(심한 잡음, Inaccurate, severe noise) → GNSS Correction으로 EKF에 입력
  • Barometer Measurement: 정밀하지만 드리프트함(Precise but drifting) → BVC로 EKF에 입력
  • 두 입력을 융합한 EKF Localization이 정확하고 매끄러운(Accurate and smooth) 결과를 만듦

EKF 예측(prediction) 단계: 상태예측 x̄_k = f(x_{k-1}, u_k), 공분산 Σ̄_k = F_{k-1} Σ_{k-1} F_{k-1}ᵀ + Q_k. 상태는 위치·속도 6차원이며 등속 모델로 전이합니다.

f(x_k) = [ x_k + v_{x_k}Δt ; y_k + v_{y_k}Δt ; z_k + v_{z_k}Δt ; v_{x_k} ; v_{y_k} ; v_{z_k} ],   Q = diag(σ²_x, σ²_y, σ²_z, σ²_{v_x}, σ²_{v_y}, σ²_{v_z})

교수님 설명

교수님은 GPS로 위치를 추정할 때 가장 큰 약점이 수직(높이) 오차라는 점을 강조합니다. GPS 위성들이 하늘에 넓게 퍼져 있기 때문에, 위성이 퍼진 방향과 수직인 평면 방향으로 움직이면 위성까지의 거리 변화가 크게 잡혀 위치를 잘 추정합니다. 반대로 위아래(수직)로 움직이면 거리 변화가 작아 높이를 잘 잡지 못합니다. 그래서 같은 거리를 움직여도 평면 오차는 작고, 수직 오차는 크게 남는다는 것입니다.

이 수직 약점을 메우려고 기압계(barometer)를 도입합니다. 기압계는 고도에 따라 기압이 달라지는 성질을 이용해 높이를 아주 정밀하게 잡을 수 있지만, 시간이 지나면 값이 서서히 변하는(drift) 문제가 있다고 했습니다. 그래서 그림처럼 '잡음은 크지만 절대 위치를 주는 GNSS'와 '정밀하지만 드리프트하는 기압계'를 EKF로 융합해, 정확하고 매끄러운 추정을 만드는 것이 이 연구의 핵심 아이디어입니다.

보충 설명

EKF(확장 칼만 필터)는 ‘예측 → 보정’을 반복합니다. 이 슬라이드는 그중 예측 단계입니다. 상태에 위치뿐 아니라 속도를 함께 넣은 이유는, 뒤(슬라이드 14)에서 기압계를 ‘높이’가 아니라 ‘수직 속도’로 쓰기 때문입니다. Q(프로세스 잡음)는 모델이 완벽하지 않다는 불확실성을 더해 주는 항입니다.

슬라이드 내용 정리

상태 보정 #1 — GNSS (표준 EKF 측정 갱신).

x_k = x̄_k + K_k( z_k − h(x̄_k) ),   Σ_k = (I − K_k H_k) Σ̄_k,   K_k = Σ̄_k H_kᵀ ( H_k Σ̄_k H_kᵀ + R_k )⁻¹

GNSS 측정값은 z^G = [x^G, y^G, z^G]로 위치를 직접 줍니다. 측정 모델 z^G = h^G(x) = H^G x, 여기서 H^G = [ I_{3×3} 0_{3×3} ] — 즉 상태의 위치 부분만 관측합니다. 잡음 R^G_k = diag((σ^G_{x,k})², (σ^G_{y,k})², (σ^G_{z,k})²). 그림에서는 GNSS→EKF 경로가 강조되어 있습니다.

교수님 설명

GNSS 측정을 EKF에 넣기 전에, 교수님은 GPS를 로봇 어디에 다느냐가 중요하다는 실무 경험을 들려줍니다. 보통은 로봇 중심(center)에 달아서 ‘GPS 위치 = 로봇 위치’로 편하게 쓰지만, 자동차나 일부 로봇은 뒷축(rear axle)을 기준점으로 잡습니다. 바퀴는 옆(lateral)으로는 미끄러지지 않는다는 가정 때문에 뒷축을 중심으로 보면 운동학이 단순해지기 때문입니다.

만약 GPS가 중심이 아니라 앞쪽에 달려 있다면, 측정값을 그대로 쓰면 안 되고 로봇의 방향각 θ만큼 회전시켜 기준점으로 ‘뒤로 빼서’ 보정해야 합니다. 재미있는 부수효과로, 앞에 달린 GPS는 제자리 회전 시 점이 아니라 호(arc)를 그리므로 로봇의 방향(heading) 정보까지 얻을 수 있다고 했습니다. 위치를 사전에 알고 오프셋을 보정하면(=캘리브레이션), 중심에 단 것보다 더 정확한 위치를 줄 수 있다는 것이 교수님의 결론입니다.

보충 설명

식 자체는 교과서적인 칼만 갱신입니다. z_k − h(x̄_k)는 ‘측정 − 예측’의 차이(innovation), K_k는 그 차이를 얼마나 믿고 반영할지 정하는 칼만 이득입니다. GNSS의 잡음 R^G_k가 크면 이득이 작아져 측정을 덜 믿고, 작으면 더 끌려갑니다.

슬라이드 내용 정리

상태 보정 #2 — BVC(기압계 속도 보정). 기압계를 높이가 아니라 수직 속도로 변환해 사용합니다.

z^{BVC}_k = [ v^B_z(P_k, P_{k-1}) ],   여기서 v^B_z(P_k, P_{k-1}) = Δz^B(P_k, P_{k-1}) / Δt

두 시점의 기압 P_k, P_{k-1} 차이로부터 고도차 Δz^B를 구하고(표준대기 기압-고도 공식: Δz^B = (T_0/Γ_grad)(1 − (P_k/P_{k-1})^{Γ_grad·R_grad/g}) 형태), 이를 Δt로 나눠 수직 속도로 만듭니다.

측정 모델 H^{BVC} = [0 0 0 0 0 1] — 상태의 수직 속도 v_z에만 대응. 잡음 R^{BVC}_k = [(σ^B_{v_z,k})²], 그리고 (σ^B_{v_z,k})² = (α_k²/Δt²)(σ^B_P)², α_k = ∂Δz^B(P,P_{k-1})/∂P |_{P=P_k} (오차 전파).

교수님 설명

교수님은 기압계가 정밀하지만 드리프트한다는 점을 다시 짚습니다. 그래서 절대 고도값을 그대로 믿어 쓰면 시간이 지날수록 어긋나 버립니다. 핵심 아이디어는 기압을 차이(기압차)로 쓰는 것입니다 — 두 시점의 기압차로 ‘얼마나 올라갔는지/내려갔는지’만 뽑아 수직 속도로 사용하면, 천천히 변하는 드리프트 성분은 차분 과정에서 상당 부분 상쇄됩니다.

이렇게 만든 수직 속도는 GPS가 가장 약한 높이 방향을 직접 보강합니다. 측정 행렬이 [0 0 0 0 0 1]인 것도 ‘오직 수직 속도만 관측한다’는 뜻으로, 기압계를 위치 센서가 아니라 속도 센서처럼 쓰겠다는 설계가 식에 그대로 드러납니다.

보충 설명

왜 ‘위치’가 아니라 ‘속도’인지 직관: 드리프트는 천천히 누적되는 저주파 편향이라 절대값에는 크게 섞이지만, 짧은 두 시점의 차분에는 거의 안 들어옵니다. 그래서 차분→속도가 드리프트에 강합니다. σ^B_{v_z} 식은 ‘기압 측정오차 σ^B_P가 고도차로 전파될 때의 민감도 α’를 미분으로 구해 잡음 크기를 정하는, 정석적인 오차 전파입니다.

슬라이드 내용 정리

합성 데이터(synthetic data) 실험. 난이도를 올려 가며 세 가지 케이스를 설정:

  • Case 1: GNSS와 기압계에 가우시안 잡음을 추가
  • Case 2: Case 1 + 기압계에 편향(bias) 추가
  • Case 3: Case 2 + GNSS 모드를 무작위로 변경

그래프는 (좌)X–Y 궤적, (중)Z–시간, (우)기압–시간을 위·아래 두 행으로 보여 줍니다. 아래 행이 주황 박스로 강조되어 있고, 우하단 기압 그래프의 하늘색 원은 모드 변경 구간을 가리킵니다. 파란 점은 GNSS 데이터, 초록선은 참값(Truth).

교수님 설명

이 실험 설계는 앞에서 이야기한 현실의 골칫거리를 그대로 재현한 것입니다. 기압계는 시간이 지나면 값이 변하므로 bias 케이스(Case 2)를 넣었고, GPS는 “데모할 때는 기도를 해야 한다”고 할 만큼 잘 되다가도 갑자기 망가지기 때문에 모드가 무작위로 바뀌는 케이스(Case 3)를 넣어 가장 가혹하게 만든 것입니다.

보충 설명

‘GNSS 모드 변경’이란 단독측위(SPS)·DGPS·RTK 등 정확도가 다른 측위 모드가 중간에 바뀌는 상황을 흉내 낸 것입니다. 이때 위치 정확도가 갑자기 변해 추정기가 흔들리기 쉽습니다. 따라서 Case 3은 ‘기압계 편향 + GNSS 불안정’이 겹친 최악 시나리오로, 제안 기법의 강건성을 시험하는 무대입니다.

슬라이드 내용 정리

Case 3 결과 — 가장 어려운 시나리오에서의 높이(Z)–시간 추정 비교. 네 개의 패널:

  • GNSS-only (기압계 미사용)
  • BAC-FR, BAC-DC (기존 기압계 고도보정 방식 비교군)
  • BVC (ours) — 제안 기법

각 그림에서 파란 점은 GNSS 데이터, 초록선은 참값, 빨간선이 각 방법의 추정입니다. GNSS-only·BAC-FR·BAC-DC는 하늘색 영역처럼 참값에서 벗어나는 구간이 크지만, BVC(ours)의 빨간선은 참값(초록)에 가장 잘 붙어 있습니다.

교수님 설명

이 슬라이드는 앞선 아이디어의 ‘성과 확인’에 해당합니다. GPS만 쓰면(특히 모드가 흔들리는 Case 3에서) 높이 추정이 크게 출렁이지만, 기압계 속도(BVC)를 더하면 그 출렁임이 눌리면서 참값을 매끄럽게 따라간다는 것을 시각적으로 보여 줍니다.

보충 설명

비교군 BAC는 기압을 ‘고도(altitude)’로 변환해 보정하는 계열입니다(FR/DC는 드리프트를 처리하는 방식 차이). 이들은 기압의 절대값에 의존하므로 편향·드리프트에 취약합니다. 반면 BVC는 기압을 속도로만 쓰기 때문에 같은 편향 환경에서도 덜 흔들린다는 점이 그래프의 차이를 만듭니다.

슬라이드 내용 정리

정량 평가 (단위: m). 오차 지표:

e_{p,k} = ‖p_k − p_k^{GT}‖ (위치 오차),   e_{z,k} = |z_k − z_k^{GT}| (높이 오차),   e_p = median(e_{p,1},…,e_{p,N}),   e_z = median(e_{z,1},…,e_{z,N}).

표(Case 1/2/3 × e_p, e_z):

  • GNSS-only: 0.187/0.069, 0.187/0.069, 0.161/0.059
  • BAC-FR, BAC-DC: 0.179/0.060, 0.191/0.081, 0.156/0.055 (두 방식 동일 수치)
  • BVC (ours): 0.173/0.052, 0.173/0.050, 0.150/0.039 — 모든 케이스에서 최소(굵게)
교수님 설명

표는 제안 기법의 우수성을 숫자로 못 박습니다. BVC(ours)가 모든 케이스에서 위치 오차 e_p와 높이 오차 e_z 모두 가장 작습니다. 특히 높이 오차 e_z의 개선 폭이 큰데(예: Case 3에서 0.059 → 0.039), 이는 처음에 지적한 ‘GPS의 약점은 수직’이라는 문제의식과 정확히 맞아떨어집니다.

흥미로운 점은 기압계의 편향이 추가된 Case 2에서 비교군 BAC 계열은 오히려 오차가 커지는데(0.081), BVC는 거의 변화 없이 낮은 값을 유지한다는 것입니다. 기압을 속도로만 쓴 설계가 편향에 강하다는 주장이 데이터로 확인되는 셈입니다.

보충 설명

지표를 median(중앙값)으로 잡은 이유는, GNSS 모드 변경 같은 순간적 튐(outlier)이 평균을 왜곡하기 때문입니다. 중앙값은 그런 이상치에 둔감해 ‘평소 성능’을 더 공정하게 보여 줍니다.

Part 4슬라이드 18~19

04경로 계획과 Any-angle 알고리즘 (2)

slide 18
슬라이드 18 · 수직오차 누적확률분포(CDF), 세 가지 케이스
slide 19
슬라이드 19 · 제어변수에 따른 중앙값 위치오차 변화
슬라이드 내용 정리

제목: 단일 기압계를 이용한 GNSS 측위 — 합성 데이터 실험 결과 (GNSS Localization with a Single Barometer: Experimental Results with Synthetic Data).

주제는 누적확률분포(cumulative probability distribution). 세 가지 케이스(Case 1·2·3)에 대해, 가로축은 수직 위치오차 e_z [m], 세로축은 누적확률(cumulative probability)인 CDF 곡선을 그렸습니다.

비교 대상은 네 가지: GNSS-only(GPS만 사용), BAC-FR, BAC-DC, 그리고 제안 기법인 BVC (ours). 곡선이 왼쪽 위로 빠르게 솟을수록(작은 오차에서 확률 1에 도달) 정확한 방법입니다. 세 케이스 모두에서 빨간 BVC(ours) 곡선이 가장 가파르게 올라가 작은 오차 영역에 결과가 몰려 있고, 파란 GNSS-only는 오차가 크게 퍼져 가장 완만합니다.

교수님 설명

이 그래프들의 배경에는 GPS 오차의 비대칭성이라는 핵심 관찰이 깔려 있습니다. 교수님은 "GPS 에러는 평면(수평) 에러보다 수직(높이) 에러가 훨씬 나쁘다"고 강조합니다. 이유는 위성의 기하학적 배치 때문입니다. 위성들이 하늘에 넓게 퍼져 있어서, 내가 좌우로 움직이면 위성까지의 거리(의사거리) 변화가 크게 나타나 위치를 잘 잡아낼 수 있지만, 위아래로 움직이는 경우엔 같은 거리만큼 움직여도 거리 변화가 작아서 추정이 어렵다는 것입니다.

그래서 수직 방향을 보강하기 위해 기압계(barometer)를 끌어들인 것이 이 연구의 동기입니다. 슬라이드의 CDF는 그 효과를 보여줍니다 — 가로축이 바로 수직오차 e_z이고, 제안 기법(BVC)이 GNSS-only 대비 수직오차를 확연히 줄여 곡선이 왼쪽으로 바짝 붙는 모습입니다. 세 케이스에 걸쳐 일관되게 우수하다는 점을 보여 주어, 특정 조건에서 우연히 좋았던 게 아니라는 점을 입증하려는 구성입니다.

보충 설명

CDF 읽는 법: 어떤 오차값 x에서의 세로축 높이는 "오차가 x 이하일 확률"입니다. 예컨대 곡선이 e_z = 0.1 m에서 0.9에 도달했다면, 측정의 90%가 수직오차 10 cm 이내라는 뜻입니다. 따라서 같은 높이를 더 왼쪽(작은 오차)에서 달성할수록 좋은 방법이고, BVC 곡선이 바로 그런 모양입니다.

대본에서 교수님이 따로 길게 설명한 GPS 장착 위치(중심 vs 앞/뒤 차축) 이야기와도 같은 결의 문제입니다. GPS를 로봇 중심에 달면 위치가 곧 로봇 위치라 편하지만, 앞쪽에 달면 제자리 회전 시 점이 아니라 호(arc)를 그리며 진행 방향(heading) 정보까지 덤으로 얻을 수 있다는 통찰입니다. 즉, 센서를 어디에/어떻게 두고 그 정보를 어떻게 해석하느냐로 측위 정확도를 끌어올린다는, 이 슬라이드와 동일한 사고방식입니다.

슬라이드 내용 정리

같은 제목 아래, 이번엔 제어변수(control variable)에 따라 중앙값 위치오차 e_p가 어떻게 변하는지를 분석합니다. 기본값(default)은 σ_z^G = 1 m, σ_B^B = 0.01 hPa, b_B^B = 0.032 Pa/s, P_ref = 1007 hPa, T_ref = 292.35 K입니다.

네 개의 그래프가 각각 하나의 변수를 바꿔가며 e_p [m]를 측정합니다 — GPS 수직 잡음 σ_z^G, 기압계 바이어스 변화율 b_B^B [Pa/s], 기준 기압 P_ref [hPa], 기준 온도 T_ref [K]. 대부분의 곡선은 가운데가 푹 꺼진 U자(볼록) 형태로, 특정 값에서 오차가 최소가 됩니다. 여기서도 BVC (ours)(빨강)가 전 구간에서 가장 낮은 오차를 유지하고, GNSS only(파랑)는 가장 높은 수준에 머뭅니다.

교수님 설명

이 민감도 분석의 핵심은 대본 후반의 기압계 사용법 아이디어와 직결됩니다. 교수님은 기압(atmospheric pressure)을 절대 높이로 환산하려는 시도가 왜 어려운지를 길게 설명합니다 — 기압은 고기압·저기압에 따라 매일, 심지어 매 분 단위로 계속 바뀌기 때문에, "이 기압이면 몇 미터"라고 고정해 두는 절대 기준이 성립하지 않는다는 것입니다. 레퍼런스 기압계를 한 곳에 고정 설치하면 가능하지만, 돌아다니는 로봇에는 그런 기준점을 둘 수 없습니다.

그래서 발상을 바꿉니다. 기압을 거리(고도)가 아니라 속도로 쓰는 것입니다. 절대 높이 대신 0.01초 같은 짧은 구간의 기압 변화를 시간으로 나누어 수직 속도계로 만들면, 기압의 절대값이 누적되어 표류하든 말든 상관이 없어집니다 — 직전 순간 대비 내 움직임만 보기 때문입니다. 이 슬라이드의 변수들(P_ref, T_ref, 기압계 바이어스 b_B^B 등)은 바로 그 기압 모델의 파라미터이고, 곡선이 U자를 그리며 최적값을 갖는다는 점, 그리고 그 최적 부근에서 제안 기법이 GNSS-only를 크게 앞선다는 점이 이 분석의 결론입니다.

보충 설명

왜 U자 곡선인가: 가로축 변수가 너무 작아도, 너무 커도 오차가 커지고 중간 어딘가에서 최소가 되는 형태입니다. 예를 들어 P_ref(기준 기압)·T_ref(기준 온도)는 기압을 고도로 환산하는 모델의 가정값인데, 이 가정이 실제 환경과 어긋나면(좌우 어느 쪽이든) 변환 오차가 누적되어 위치오차 e_p가 커집니다. 곡선의 바닥(최솟값)이 그 변수의 "올바른 설정"에 해당합니다.

여기서 제안 기법(BVC)이 GNSS-only보다 단순히 낮을 뿐 아니라, 변수가 흔들려도 완만하게(robust) 낮은 오차를 유지한다면, 그것은 "파라미터를 정확히 몰라도 잘 동작한다"는 강력한 장점입니다. 앞 슬라이드의 CDF가 "평균적으로 정확하다"를 보였다면, 이 슬라이드는 "다양한 조건·설정 변화에도 견고하다"를 보이는, 서로를 보완하는 두 가지 실험 결과입니다.

Part 5슬라이드 20~25

05장애물 검사 가속화와 코스트맵 일반화

slide 20
슬라이드 20 · Testbed 1 — 주변 건물로 인한 다중경로(multipath) 환경
slide 21
슬라이드 21 · Testbed 1 결과 — 4가지 기법의 고도 추정 비교
slide 22
슬라이드 22 · Testbed 2 — 개활지 장거리 주행
slide 23
슬라이드 23 · Testbed 2 결과 — 4가지 기법의 고도 추정 비교
slide 24
슬라이드 24 · Milk 단안 비주얼 오도메트리 — 차량 측위 센서 비교
slide 25
슬라이드 25 · 문제 #1 무거운 연산량 — VO 파이프라인
슬라이드 내용 정리

단일 기압계(Single Barometer)를 이용한 GNSS 측위 — 실제 데이터 실험 결과. Testbed 1주변 건물에 의한 다중경로(multipath effect) 환경입니다(왼쪽 사진: 건물로 둘러싸인 안뜰).

그래프 3종이 제시됩니다. ① 평면 궤적 Y[m] vs X[m], ② 고도(수직) Z[m] vs Time[s], ③ 기압 P[hPa] vs Time[s]. 범례는 GNSS 측위 모드들로, SPS(일반 단독측위) → DGPS(보정측위) → RTK-FloatRTK-Fix 순으로 정밀도가 높아집니다. 고도 그래프의 분홍·주황 박스는 다중경로로 수직 오차가 크게 튀는 구간을, 기압 그래프의 청록 원은 출발고도로 되돌아오는 종료 구간을 강조합니다.

교수님 설명

GPS 오차에는 방향성이 있습니다. 특히 평면(수평) 오차보다 수직 오차가 훨씬 나쁩니다. 위성들이 하늘 위쪽으로 퍼져 있어서, 내가 옆으로 움직이면 위성까지의 거리(레인지) 변화가 크게 잡히지만, 위아래로 움직이면 거리 변화가 작게 잡히기 때문입니다. 거리 변화가 잘 안 잡히는 방향이 곧 추정이 부정확한 방향이라, 수직 성분이 가장 취약한 것이죠.

그래서 떠올린 아이디어가 기압계(barometer)입니다. 고도가 올라가고 내려갈 때 기압차가 생기니, 이를 수직 정보로 쓰자는 발상입니다. 다만 기압은 절대값으로 쓰기 어렵습니다 — 오늘 측정한 기압과 내일 측정한 기압이 다르고, 고기압·저기압이 매 순간 바뀌어서 "이 기압이면 몇 미터"라고 못 박을 수가 없어요. 레퍼런스 기압계를 따로 설치하면 되지만, 로봇이 그걸 들고 다닐 수는 없죠.

핵심 트릭은 기압을 거리(고도)가 아니라 속도로 쓰는 것입니다. 기압 변화를 시간으로 나눠 수직 속도계로 만들면(dP/dt), 기압이 하루 종일 드리프트해도 상관없습니다. 절대 기준이 아니라 0.01초 사이의 내 움직임에 따른 변화량(미분값)만 보기 때문이죠. 이렇게 만든 수직 속도 정보를 칼만 필터/파티클 필터에 보태 GNSS 측위를 더 정확하게 만드는 것이 이 실험의 골자입니다.

보충 설명

참고로 센서를 어디에 다느냐도 정보가 됩니다. GPS를 로봇 중심에 달면 제자리 회전 시 한 점으로 보이지만, 앞쪽에 달면 회전 시 호(arc)를 그려 로봇이 바라보는 방향(heading)을 알 수 있습니다. 또 앞에 달면 흔들림(쉐이킹)이 궤적에 더 크게 드러나 실제 움직임을 더 잘 느낄 수 있고요. 오프셋을 미리 알면 앞단 GPS가 중심보다 더 정확한 위치를 줄 수 있습니다.

슬라이드 내용 정리

Testbed 1의 결과를 4가지 기법으로 비교한 고도(Z[m]Time[s]) 그래프 4장입니다.

GNSS-only: GNSS 단독 측위. ② BAC-FR: 기압 고도 보정(barometric altitude correction)으로 고도 정확도를 보강. ③ BAC-DC: 기압 고도 보정 + 드리프트 제어(Drift Control) — 추가 IMU가 각도 기반 임계값(angle-based threshold)으로 기압 보정을 켜고/끄도록 함. ④ BVC (ours): 제안 기법(기압을 수직 속도로 활용하는 방식). 각 그래프의 초록 점선은 기준이 되는 Closure(시작·종료 고도 일치 기준)이고, 청록 원은 종료 시점에 추정값이 기준에 얼마나 맞아드는지를 강조합니다.

교수님 설명

여기서 비교하는 네 가지는 점점 정교해지는 단계라고 보면 됩니다. 아무 보정 없는 GNSS-only는 다중경로 구간에서 고도가 크게 튀고, 단순히 기압 고도를 더하는 BAC-FR은 개선되지만 기압 자체의 드리프트가 그대로 따라옵니다. BAC-DC는 IMU로 "지금 경사가 임계값을 넘었는가" 같은 조건을 보고 기압 보정을 켰다 껐다 해서 드리프트를 억제합니다.

제안 기법 BVC(ours)는 앞서 말한 대로 기압을 절대 고도가 아니라 수직 속도로 쓰기 때문에, 기압이 시간에 따라 계속 변해도(드리프트가 있어도) 영향을 받지 않는 것이 강점입니다. 그래서 종료 시점(청록 원)에서 시작 고도로 가장 깔끔하게 닫히는(closure에 잘 맞는) 결과를 기대할 수 있습니다.

슬라이드 내용 정리

Testbed 2 — 개활지(open field)에서의 장거리 주행입니다(왼쪽 사진: 트인 운동장). Testbed 1과 달리 건물에 의한 다중경로가 없는 환경입니다.

그래프 구성은 동일합니다. ① 평면 궤적(긴 직선 왕복), ② 고도 Z[m]Time[s](완만한 산 모양으로 올라갔다 내려옴), ③ 기압 P[hPa]Time[s](고도와 반대로 내려갔다 올라오는 모양). 범례는 SPS/DGPS/RTK-Float/RTK-Fix이며, 청록 원은 종료 구간을 표시합니다.

교수님 설명

두 번째 테스트베드는 하늘이 잘 트인 개활지라 GPS 자체 성능이 좋은 조건입니다. GPS는 실외에서 정말 유용하고 — 전역 위치를 드리프트 없이 주며 요즘은 가격도 많이 싸졌습니다. 다만 항상 잘 되는 건 아니어서, 시연 때는 "하늘에 기도해야 한다"는 농담이 나올 정도로 날씨가 좋아도 가끔 불안정합니다.

이 환경에서 의미 있는 것은 장거리·장시간 동안 고도 추정이 누적 오차 없이 유지되는가입니다. 기압을 속도로 쓰는 방식은 절대 기준에 의존하지 않으므로, 긴 구간에서 기압이 서서히 드리프트해도 수직 추정이 안정적으로 닫히는지를 여기서 확인합니다. 고도 곡선과 기압 곡선이 서로 거울처럼 반대 모양(올라가면 기압 내려감)인 점에 주목하면 됩니다.

슬라이드 내용 정리

Testbed 2의 결과. 슬라이드 21과 똑같이 GNSS-only / BAC-FR / BAC-DC / BVC(ours) 4가지의 고도(Z[m]Time[s]) 추정을 비교합니다. 곡선은 산 모양(상승 후 하강)이며, 초록 점선 Closure 기준과 종료 구간(청록 원)에서의 일치도를 봅니다.

교수님 설명

개활지에서는 GNSS 자체가 좋기 때문에 네 기법의 차이가 Testbed 1보다는 작게 보일 수 있습니다. 하지만 장거리 주행이라 미세한 누적/드리프트가 종료 구간에서 드러나기 쉽고, 바로 그 지점에서 제안 기법(BVC)이 기준선에 가장 잘 닫히는지가 핵심 비교 포인트입니다.

정리하면, 다중경로가 심한 도심형(Testbed 1)과 트인 개활지형(Testbed 2) 두 상반된 환경 모두에서 "기압을 수직 속도로 활용하는" 방식이 단순 고도 보정이나 드리프트 제어보다 안정적인 수직 측위를 준다는 것을 실험으로 보인 셈입니다.

슬라이드 내용 정리

주제 전환 — Milk: 실시간·실척도 단안(Monocular) 비주얼 오도메트리 [IJCAS 2015, IVC 2018, URAI 2013]. 차량 측위(Vehicular localization) 사례입니다.

지도에 세 가지 궤적이 겹쳐 있습니다: 휠 오도메트리(Wheel odometry, via CAN)=파랑, 비주얼 오도메트리(Visual Odometry)=초록, 저가형 GPS(Consumer-grade GPS)=빨강. 오른쪽은 센서별 장단점 비교입니다. GPS: + 전역 위치(드리프트 없음) / − 방향(orientation) 없음 / − 도심 협곡(urban canyon)·터널(tunnel) 블랙아웃에서 부정확. IMU·휠 인코더: − 드리프트 오차(미분값 누적), − 바이어스 오차(IMU) / + 외부 의존성 없음, + 정밀.

교수님 설명

실제 로봇을 돌려보면 센서마다 성격이 정반대입니다. 휠 오도메트리는 로컬하게 보면 매우 정밀하지만, 조금씩 누적되어 글로벌하게는 드리프트가 쭉 쌓입니다 — 한 바퀴 돌면 시작점으로 닫히지 않고 벌어지죠. 반대로 GPS는 전역적으로는 밀림이 없지만 특정 구간에서 갑자기 크게 튑니다.

그 "특정 구간"의 원인이 어반 캐년(urban canyon)입니다. 높은 건물들이 위성 신호를 가려서 — 빌딩이 절벽·숲처럼 작용해 — 신호 품질이 나빠지는 것이죠. 터널에 들어가면 아예 신호가 끊깁니다. 즉 GPS는 전역 기준은 주지만 방향이 없고 가림에 약하며, 휠/IMU는 외부 의존 없이 정밀하지만 드리프트가 쌓입니다.

그래서 떠올린 연구가 카메라(블랙박스 카메라) 한 대로 오도메트리를 얻는 비주얼 오도메트리입니다. 요즘 차량에 블랙박스 카메라가 흔하니, 그 한 대로 휠 오도메트리처럼 움직임을 추정해 서로의 약점을 메우자는 발상입니다. 두 센서의 장단점이 분명하니 보완적으로 융합하는 것이 자연스럽습니다.

보충 설명

"오도메트리(odometry)"란 센서로 자기 움직임을 한 스텝씩 적분해 위치를 추정하는 방식입니다. 단안(monocular) VO는 카메라 한 대만 쓰므로 본질적으로 척도(scale) 모호성이 있어 "실제 몇 미터인지"를 알기 어렵습니다. 제목의 real-scale은 이 척도 문제를 실제 단위로 풀었다는 의미이고, 휠 오도메트리(CAN으로 받는 바퀴 속도)나 GPS 같은 보조 정보가 척도·전역 기준을 잡아주는 데 쓰입니다.

슬라이드 내용 정리

문제 #1: 무거운 연산량(Heavy computation). 예시는 특징 기반 단안 VO입니다. 두 가지 파이프라인을 비교합니다.

Two-view Motion Estimation 단계별 시간: 2D-2D 특징 대응 찾기 75 msec(56%) → 이상치(outlier) 대응 제거 54 msec(40%) → (척도화된) 상대 자세 추정 0.2 msec(0.1%) → 자세 갱신 5.6 msec(4%), 합계 134.8 msec(100%). 예: LIBVISO2 [Geiger et al., IV 2011].

PnP/BA Pose Estimation: 2D-2D 대응2D-3D 점 대응이상치 제거자세 추정3D 점 지도 갱신. "점이 적으면(If few points)" 2D-3D 대응으로, "인라이어가 적으면(If few inliers)" 2-view 추정을 시도하는 피드백 구조. 예: PTAM [Klein et al., ISMAR 2007], ORB-SLAM2 [Mur-Artal et al., T-RO 2017].

교수님 설명

비주얼 오도메트리의 첫 번째 난관은 연산량입니다. 시간 분해를 보면 전체 134.8 msec 중 대부분이 앞쪽 두 단계, 즉 특징 대응 찾기(56%)이상치 제거(40%)에서 소모됩니다. 정작 핵심처럼 보이는 상대 자세 추정은 0.2 msec로 거의 공짜죠. 즉 "어디가 어디에 대응되는가"를 맞추고, 그중 틀린 대응을 걸러내는 전처리가 병목입니다.

오른쪽 PnP/BA 방식은 3D 점 지도를 유지하며 2D-3D 대응으로 자세를 추정하고, 점이나 인라이어가 부족하면 2-view 추정으로 되돌아가는 식의 분기를 둡니다. PTAM이나 ORB-SLAM2 같은 대표적 SLAM 시스템이 이 계열입니다. 어느 쪽이든 실시간으로 돌리려면 이 무거운 대응·정제 과정을 가볍게 만드는 것이 관건이고, 이후 슬라이드에서 그 가속화 방법으로 이어집니다.

보충 설명

용어 정리: 2D-2D 대응은 두 영상 프레임 사이에서 같은 점을 매칭하는 것, 2D-3D 대응(PnP, Perspective-n-Point)은 이미 만들어 둔 3D 지도점과 현재 영상의 2D 점을 매칭해 카메라 자세를 구하는 것입니다. BA(Bundle Adjustment)는 여러 프레임의 자세와 3D 점을 한꺼번에 최적화해 누적 오차를 줄이는 후처리이고, 이상치 제거는 보통 RANSAC 같은 기법으로 잘못된 매칭을 솎아냅니다. 134.8 msec ≈ 초당 7프레임 수준이라, 실시간(보통 30 fps)을 노리면 반드시 가속이 필요하다는 점이 이 슬라이드의 동기입니다.

Part 6슬라이드 26~31

06GPS 로컬라이제이션과 뒷축 좌표계 (1)

slide 26
슬라이드 26 · KLT 트래커와 2D-2D 특징점 대응
slide 27
슬라이드 27 · 단순화된 모션 모델 (간이 에피폴라 기하)
slide 28
슬라이드 28 · 알고리즘별 연산속도 벤치마크
slide 29
슬라이드 29 · 스케일 모호성 문제
slide 30
슬라이드 30 · 일정한 카메라 높이로 스케일 추정
slide 31
슬라이드 31 · 점군에서 지면 평면 찾기
슬라이드 내용 정리

교수님 연구 Milk: Real-time and Real-scale Monocular Visual Odometry (단안 카메라 영상만으로 자기 위치를 추정하는 비주얼 오도메트리)의 첫 슬라이드입니다.

핵심 주제는 빠른 2D-2D 특징점 대응 (feature correspondence)을 위한 KLT 트래커입니다.

  • 특징점 선택 (Feature): Good-Feature-to-Track (Shi et al., 1994) — 추적하기 좋은 코너점을 고름. 버켓팅 (bucketing)으로 화면 전체에 특징점을 고르게 분산.
  • 직접 추적 (Direct tracking): Lucas-Kanade optical flow — 이미지 평면 위에서 특징점을 추적 (2D 평행이동, 2 DOF).
  • 비교 (c.f.): 직접법(Direct method)은 3차원 공간의 픽셀을 추적 (3D 모션, 6 DOF) → 더 무거움.

아래 영상은 거리 주행 장면 위에 추적된 특징점들의 흐름(옵티컬 플로우)이 그려진 모습입니다.

교수님 설명

(앞부분 도입) 야외에서는 GPS가 정말 잘 됩니다. 커버리지가 넓고, 예전엔 수천만 원 하던 GPS가 이제는 백만 원 정도면 쓸 만하죠. 그런데 GPS는 늘 불안정한 경우가 많아서 "하늘에 기도하듯" 위성 신호에 의존해야 합니다. 실제로 휠 오도메트리(wheel odometry, 바퀴 회전으로 거리 측정)로 궤적을 그려 보면, 한 바퀴 돌고 출발점으로 돌아와야 하는데 조금씩 오차가 누적돼 궤적이 벌어집니다 — 로컬하게는 매우 정밀하지만 글로벌하게는 드리프트(drift)가 발생하는 거죠.

그래서 교수님이 연구한 것 중 하나가 "카메라 영상으로 오도메트리를 만들 수 없을까"였습니다. 요즘 자동차에 블랙박스 카메라가 흔히 달려 있으니, 카메라 한 대만으로 바퀴 오도메트리처럼 이동량을 얻어내자는 것이죠. 그 핵심이 영상에서 옵티컬 플로우(optical flow, 광학 흐름)를 보는 것입니다. 내가 앞으로 쭉 가면 화면의 점들이 바깥으로 퍼져 흐르고, 옆으로 가면 옆으로 흐르고 — 이 흐름의 움직임으로부터 카메라(=차량)가 어떻게 움직였는지를 기하학적으로 복원합니다.

이때 빠르게 하려면 매 프레임마다 특징점을 새로 찾는 게 아니라 KLT 트래커로 이전 점을 계속 추적하는 편이 효율적이고, 화면 전체에 점이 몰리지 않도록 버켓팅으로 분산시킵니다.

보충 설명

드리프트 vs 절대값 — "미분으로 쓰면 된다"는 직관: 앞서 기압계(barometer) 이야기가 좋은 비유입니다. 기압은 날씨에 따라 매 순간 변해서, 절대 기압값으로 "지금 고도 몇 m"를 알기는 어렵습니다. 하지만 기압의 변화량을 시간으로 나누면(미분하면) "지금 수직으로 얼마나 빠르게 올라가는가"라는 속도는 알 수 있죠. 절대 기준이 필요 없으니 기압이 천천히 드리프트해도 상관없습니다. 비주얼 오도메트리도 같은 발상입니다 — 절대 위치가 아니라 직전 프레임 대비 상대 이동을 누적하는 방식이라, 한 스텝 한 스텝은 매우 정확하지만 누적될수록 드리프트가 쌓입니다. 그래서 GPS(글로벌은 정확) + VO/오도메트리(로컬은 정밀)를 서로 보완하는 게 핵심입니다.

DOF (Degree of Freedom, 자유도): 풀어야 하는 미지수의 개수입니다. 자유도가 낮을수록 필요한 점의 개수가 적고 계산이 빠릅니다. 이미지 평면 추적은 2 DOF(평행이동), 일반적인 3D 카메라 운동은 6 DOF입니다.

슬라이드 내용 정리

주제: 단순화된 모션 모델 (simplified motion models)로 더 빠르고 정확하게 움직임을 추정하기 — 일명 간이 에피폴라 기하 (simplified epipolar geometry).

왼쪽 그림들이 핵심 가정입니다.

  • 평면 원호 운동 (Planar circular motion): 차량 뒷바퀴를 중심으로 호를 그리며 도는 모델. 그림의 각도 관계 θ = 2φ 가 성립 → 2 DOF.
  • 평면 운동 (Planar motion): 바닥 평면 위 운동 → 3 DOF.
  • 작은 운동 (Small motion) / 일반 운동(General motion) → 6 DOF.

아래 자유도 축(2 DOF → 6 DOF)에 각 가정별 대표 알고리즘이 정렬돼 있습니다: 2 DOF에 1-point RANSAC 계열, 3 DOF에 2-point / 3-point 알고리즘 계열, 6 DOF에 5-point / Structure-from-Small-Motion. 오른쪽 위 필름 스트립은 프레임 간 움직임이 작은(small inter-frame motion) 상황을 나타냅니다.

교수님 설명

대학원생이면 누구나 "최애 논문"이 하나쯤 생깁니다. 논문을 읽다 보면 "이거 정말 잘 썼다" 싶은 게 생기죠. 교수님이 꽂힌 건 1-point RANSAC 류의 기하학적 해석이었습니다.

아이디어는 이렇습니다. 원래 카메라와 로봇은 3차원 공간을 자유롭게 움직입니다 — X, Y, Z 이동에 롤(roll)·피치(pitch)·요(yaw) 회전까지 6 DOF죠. 그런데 로봇이나 자동차는 대부분 바닥 평면 위를 움직인다는 점을 이용하면, Z나 롤·피치는 무시하고 X, Y, θ 만 생각하는 평면(planar) 모델로 충분합니다. 더 극단적으로 자동차는 핸들을 꺾으면 뒷차축을 중심으로 원호(circular)를 그리며 돕니다(Ackermann 조향 기하). 그러면 그림의 각도 θ = 2φ 같은 관계가 성립해, 미지수가 단 하나로 줄어 1개의 점 대응만으로도 운동을 풀 수 있게 됩니다. 6 DOF 일반 문제를 2 DOF로 떨어뜨리니 훨씬 빠르고 쉬워지는 것이죠.

여기에 교수님은 "한 프로젝트(한 점)만으로도 이만큼 아는데, 점이 수백 개면 시너지로 훨씬 잘 알게 된다"는 식의 비유까지 덧붙였습니다 — 단순화 가정이 주는 강력함을 강조한 것입니다.

보충 설명

"5년간 사기당한 줄 알았다" 에피소드: 교수님은 이 단순화 모델 연구를 무려 5년 했고, 중간에 "내가 사기당한 거 아닌가" 싶었다고 합니다. 평면·원호 가정이 너무 이상적이라, 실제 로봇이 2차원 평면을 달릴 때조차 카메라가 엄청 떨리기(흔들리기) 때문입니다. KITTI 같은 깔끔한 데이터셋에서는 잘 맞지만, 실제 주행에서는 노면 진동 등으로 카메라가 위아래·좌우로 흔들려 순수 평면 가정이 깨집니다. 결론적으로 단순화는 유효하되, 흔들림 같은 현실 요소를 보정해 줘야 한다는 점을 5년간의 삽질로 배운 것입니다.

RANSAC (RANdom SAmple Consensus): 데이터에 섞인 이상치(outlier)를 걸러내며 모델을 추정하는 기법. 필요한 점이 적을수록(1-point) 무작위 샘플 조합 수가 급감해 훨씬 빠릅니다.

Ackermann 조향 기하: 자동차가 회전할 때 안쪽·바깥쪽 바퀴의 조향각이 달라 모든 바퀴가 하나의 회전 중심을 공유하는 구조. 덕분에 차량 궤적이 뒷차축 기준 원호로 근사됩니다 (비-횡슬립 가정과 연결).

슬라이드 내용 정리

앞 슬라이드와 같은 그림에, 알고리즘별 연산 시간 벤치마크 표가 추가되었습니다 (단위 μs, 그리고 1.000을 기준으로 정규화한 Scaled Time).

3 DOF (평면 운동) 표 — 2점 알고리즘들 비교:

  • 2pt ellipse (Choi15): 7.698 / 9.004
  • 2pt null (Hong16): 2.994 / 3.502
  • 2pt circle: 5.987 / 7.002
  • 2pt line: 0.855 / 1.000 (가장 빠름, 기준)
  • 2pt iterative / 2pt linear (Ortin11): 2.994 / 3.502
  • (6 DOF) 5pt (Stewenius06) 80.827, 8pt (Hartley97) 20.100 — 훨씬 느림

6 DOF 표 — 5점 알고리즘들: 5pt approx 5.8 / 1.00(기준), 5pt iterative 6.5 / 1.12, 5pt [U06; OpenCV] 532.4 / 91.79, 5pt (Stewenius06) 77.0 / 13.28, 8pt (Hartley97) 18.3 / 3.16.

교수님 설명

이 표가 단순화 모델의 실익을 숫자로 보여 줍니다. 자유도를 낮추면(점 개수를 줄이면) 연산 속도가 수십~수백 배 빨라집니다. 예컨대 3 DOF에서 가장 빠른 2pt line은 OpenCV의 일반적인 5pt 알고리즘(532.4 μs)에 비해 비교가 안 될 만큼 빠릅니다(0.855 μs). 같은 5점 문제라도 구현에 따라 5.8 μs vs 532 μs로 90배 이상 차이가 나죠.

핵심 메시지는 "제약(가정)을 더 걸수록 더 빠르고 안정적으로 푼다"는 것입니다. 로봇·자동차처럼 평면 위를 도는 상황에선 6 DOF 일반 문제를 풀 필요가 없으니, 평면·원호 제약을 적극 활용해 실시간(real-time) 성능을 얻는 것이 이 연구의 지향점입니다.

슬라이드 내용 정리

주제: Problem #2 — 스케일 모호성 (Scale ambiguity). 단안 카메라의 근본적 한계입니다.

왼쪽 두 그림은 (a) 2m 폭 터널과 (b) 1m 폭 터널을 지나는 상황인데, 이미지 위의 옵티컬 플로우(optical flow)는 완전히 똑같이 보입니다. 즉 영상만으로는 "큰 공간을 천천히" 지나는지 "작은 공간을 빠르게" 지나는지 구분할 수 없습니다 — 절대 크기(스케일)를 알 수 없는 것. (오른쪽 위 사진은 스타워즈의 거대한 샌드크롤러로, 크기 기준이 없으면 거대 구조물인지 모형인지 모른다는 비유.)

스케일 모호성 해결 방법 (오른쪽 아래):

  • 추가 센서: 속도계(odometers), IMU, GPS
  • 초기값 알기: 초기 이동량, 초기 랜드마크(또는 그 크기)
  • 추가 제약: 일정한 카메라 높이, Ackermann 조향 기하
교수님 설명

단안 카메라의 가장 큰 한계는 실제 크기를 모른다는 것입니다. 사진 한 장만 보면 그것이 2m짜리인지 1m짜리인지 알 수 없죠. 두 터널 그림처럼, 폭이 다른 공간을 지나도 화면에 맺히는 옵티컬 플로우 패턴이 동일하기 때문에 영상만으로는 절대 스케일을 복원할 수 없습니다. 그래서 비주얼 오도메트리는 항상 "up to scale(스케일을 모르는 채로)" 까지만 풉니다.

이걸 해결하려면 외부 정보를 넣어야 합니다. 가장 직관적인 건 속도계·IMU·GPS 같은 추가 센서로 실제 거리를 알려 주는 것입니다. 또는 출발 시점의 이동량이나 랜드마크 크기를 미리 알거나, 물리적 제약을 거는 방법이 있습니다. 교수님 연구가 택한 우아한 방법은 마지막 것 — "카메라(차량)의 지면으로부터의 높이는 항상 일정하다"는 제약을 쓰는 것입니다. 이건 추가 센서 없이 영상만으로 스케일을 복원할 수 있게 해 줍니다.

슬라이드 내용 정리

주제: 일정한 카메라 높이로 모션 스케일 추정 (constant camera height).

  • 목표 (Goal): 두 시점(view) 사이의 모션 스케일 ρ 를 찾기.
  • 이미 아는 것 (Known): 스케일을 모르는 채(up to scale) 복원된 3D 점군 (point cloud). 정규 이미지 평면 위의 점 대응 x_i, x'_i. 두 시점 간 상대 자세 R(회전), t(이동) — 단, up to scale.
  • 제약 (Constraint): 카메라 높이 L 이 일정.

그림: 실제 카메라 높이는 L, 복원된 점군에서 측정되는(스케일 모르는) 높이는 l. 따라서 스케일은

∴ ρ = L / l

아래 새 문제 정의 (New problem formulation): "3D 점군으로부터 3차원 지면 평면(ground plane)을 찾는 것"으로 문제가 바뀜.

교수님 설명

핵심 아이디어는 간단합니다. 비주얼 오도메트리로 복원한 3D 점군은 진짜 크기를 모릅니다(up to scale). 하지만 그 점군 속에서 지면(바닥)을 찾아내면, 복원된 좌표계에서 카메라가 바닥으로부터 떨어진 높이 l 을 잴 수 있습니다. 그런데 실제 카메라 높이 L 은 우리가 이미 알고 있죠(차에 장착한 높이는 고정). 그러면 "복원된 높이 l 이 실제로는 L 이어야 한다"는 비례 관계에서 전체 스케일 ρ = L/l 이 곧바로 나옵니다.

즉, "스케일을 어떻게 구할까?"라는 어려운 문제가 "3D 점군에서 지면 평면을 어떻게 찾을까?"라는 더 다루기 쉬운 기하 문제로 바뀝니다. 한 번 지면을 찾으면 스케일은 나눗셈 한 번으로 끝나는 거죠.

슬라이드 내용 정리

주제: 점군에서 지면 평면 찾기 (New problem formulation 이어서).

  • 목표: 3D 점군으로부터 3차원 지면 평면을 찾기.
  • 방법 (기존, 취소선): 가우시안 커널 (Gaussian kernel) 을 쓴 커널 밀도 추정 (KDE) — LIBVISO2 방식. (슬라이드에 줄이 그어져 "이게 아니다"라고 표시)
  • 방법 (제안): 비대칭 커널 (asymmetric kernels) 또는 비대칭 RANSAC (asymmetric RANSAC) 을 쓴 커널 밀도 추정.
  • 이유 (∵): 물체는 지면 위에 있지, 지면 아래에 있지 않다 (Objects are above the ground, not under the ground).

오른쪽 그래프와 거리 영상: 높이(세로축)에 따른 점들의 밀도(density) 분포. 위쪽(기존) vs 아래쪽(제안)의 지면 추정 결과를 비교.

교수님 설명

지면을 찾는다는 건, 결국 3D 점들의 높이 분포에서 "바닥에 해당하는 평면"을 골라내는 문제입니다. 기존 LIBVISO2 방식은 좌우 대칭인 가우시안 커널로 밀도를 추정해 가장 점이 몰린 높이를 지면으로 봤습니다. 하지만 여기엔 비대칭성이 있습니다 — 물체(자동차, 건물, 보행자)는 항상 지면 위에 솟아 있지, 지면 아래로는 거의 없습니다.

그래서 대칭 커널을 쓰면 지면 위쪽에 많이 분포한 점들 때문에 추정된 지면이 실제보다 위로 끌려 올라가는 편향이 생깁니다. 교수님 제안은 이 물리적 사실을 반영해 비대칭 커널 / 비대칭 RANSAC 을 쓰는 것입니다 — 지면 아래쪽 점에는 다르게(더 엄격하게) 가중치를 줘서, 진짜 바닥 평면에 더 정확히 맞추는 것이죠. 이렇게 지면을 정확히 잡아야 앞 슬라이드의 ρ = L/l 스케일 복원도 정확해집니다.

보충 설명

커널 밀도 추정 (KDE, Kernel Density Estimation): 흩어진 데이터 점들로부터 연속적인 확률밀도(어디에 점이 몰려 있는가)를 추정하는 기법. 각 점에 작은 종 모양 커널을 얹고 모두 합쳐 부드러운 분포 곡선을 만듭니다. 여기서는 "높이 값"의 분포에서 가장 밀집한 봉우리를 지면 높이로 봅니다.

왜 "비대칭"이 중요한가: 측정 잡음은 지면 위/아래로 대칭일 수 있지만, 실제 물체의 분포는 위로만 치우쳐 있습니다(나무·차·건물). 대칭 모델은 이 한쪽으로 쏠린 데이터를 잘못 해석하므로, 분포의 비대칭성을 모델에 직접 넣어 주는 것이 더 정확합니다. "절벽 같은 도심(어반 캐년)에서 위성 신호가 가리듯", 환경의 구조적 특성을 알고리즘에 반영하는 같은 맥락의 접근입니다.

Part 7슬라이드 32~33

07GPS 로컬라이제이션과 뒷축 좌표계 (2)

slide 32
슬라이드 32 · Milk 비주얼 오도메트리 — KITTI 정량 평가표
slide 33
슬라이드 33 · KITTI 시퀀스 #00 영상 시연 (PnP+BA vs +WheelOdo)
슬라이드 내용 정리

교수님 박사 논문(2019)의 결과 슬라이드입니다. 제목은 Milk: Real-time and Real-scale Monocular Visual Odometry — 실시간으로 동작하면서 실제 스케일까지 복원하는 단안 카메라(monocular) 기반 비주얼 오도메트리입니다.

KITTI odometry 데이터셋에서 여러 방법을 비교한 표입니다. 세 가지 지표를 봅니다:

· Tran. Error [%] — 이동 거리 대비 위치 오차(낮을수록 좋음)
· Rot. Error [deg/m] — 단위 거리당 회전 오차
· Comp. Time [sec] — 계산 시간

분류는 Previous Stereo(스테레오), DL(딥러닝), Previous Monocular(기존 단안), 그리고 맨 아래 빨간 글씨의 Proposed Monocular(제안 기법)입니다. 제안 기법은 모두 WheelOdo(휠 오도메트리)를 결합했고, 그중 PnP+BA+WheelOdo1.02% / 0.0036으로 가장 좋습니다. 단안인데도 스테레오 최상위권(S-DSO 0.93, DVSO 0.90)에 근접한 수치라는 점이 핵심입니다.

교수님 설명

먼저 측위 방식의 장단점을 짚으셨습니다. 어떤 방법은 좁은 구역만 보면 아주 정밀하지만, 어떤 방법(예: GPS류)은 그만큼 정밀하지 않습니다. 서로 장단점이 분명해서 보통은 여러 센서를 같이 씁니다. (이 대목에서 "당연한 걸 왜 이렇게 길게 설명하시지?" 하는 농담을 길게 하셨는데, 본 내용과는 무관한 잡담입니다.)

본론은 교수님의 연구 동기입니다. 차에 흔히 달려 있는 블랙박스/카메라 영상만으로 오도메트리를 얻어보자는 발상에서 출발했습니다. 카메라가 앞으로 가면 영상이 바깥으로 퍼지고, 옆으로 가면 옆으로 흐르는 광류(optical flow)의 움직임을 기하학적으로 해석해 "차가 어떻게 움직였는가"를 복원하는 연구입니다. 교수님이 특히 꽂힌 것은 One-point RANSAC이라는 접근이었습니다.

핵심 직관은 이렇습니다. 카메라·로봇은 원래 3차원 공간에서 XYZ와 roll·pitch·yaw 6자유도로 움직이지만, 자동차·로봇은 대부분 평면(planar) 위를 움직이므로 XYZ가 아니라 X, Y, θ(세타)만 생각하면 충분합니다. 더 극단적으로 자동차는 매 순간 평면 위의 원호(circular) 운동으로 근사할 수 있어서, 회전각·중심·반경 사이의 관계가 묶입니다. 그 덕분에 원래 3자유도 문제를 2자유도(점 하나)로 풀 수 있고, 훨씬 빠르고 간단하게 자세를 얻습니다. 교수님은 이 아이디어에 무려 5년을 매달렸고, "혹시 사기당한 거 아닌가" 싶을 만큼 고생했지만, 결국 사기가 아니었다고 합니다 — 실제 로봇은 KITTI처럼 깔끔하게 가지 않고 카메라가 심하게 떨리기 때문에, 평면 가정만으로는 부족하고 이런 모델링과 보정이 실제로 필요했다는 결론입니다.

보충 설명

휠 오도메트리(WheelOdo)를 굳이 결합할까요? 단안 카메라는 영상 한 장만으로는 스케일(절대 거리)을 알 수 없는 근본적 한계가 있습니다(가까운 작은 물체와 멀리 있는 큰 물체가 똑같이 보임). 바퀴 회전수로 얻는 휠 오도메트리는 "실제로 몇 미터 갔는지"를 알려주므로, 슬라이드 제목의 Real-scale(실제 스케일 복원)이 가능해집니다. 앞 섹션에서 다룬 비횡슬립 가정·뒷축 기준 자전거 모델이 바로 이 평면·원호 운동 가정과 같은 뿌리이며, 카메라 추정과 휠 추정을 합쳐 정확도를 끌어올린 것이 제안 기법입니다.

슬라이드 내용 정리

KITTI 시퀀스 #00에 대한 실제 주행 영상 시연입니다. 위·아래 두 화면으로 PnP+BA(휠 오도메트리 없음)와 PnP+BA+WheelOdo(결합)를 나란히 비교합니다.

각 화면은 왼쪽에 도로 주행 카메라 영상, 오른쪽·아래에 추정된 궤적 플롯(trajectory)이 함께 표시되어 두 방식이 그리는 경로 차이를 눈으로 확인할 수 있게 한 것입니다.

교수님 설명

앞 표가 숫자라면, 이 슬라이드는 그 숫자를 실제 영상으로 보여주는 데모입니다. 휠 오도메트리를 더했을 때 궤적이 얼마나 더 안정적이고 정확하게 그려지는지를 직접 비교해 보여주는 장면입니다.

대본의 "데이터셋은 너무 깔끔하게 다 같이 가는데 실제 로봇은 세로로 마구 떨린다"는 이야기가 바로 이 데모와 연결됩니다. 이상적으로 정제된 데이터에서는 카메라만으로도 잘 되는 것처럼 보이지만, 실주행의 떨림·노이즈 환경에서는 휠 오도메트리 같은 보조 정보를 결합해야 궤적이 무너지지 않는다는 점을, 같은 시퀀스를 켜고 끄며 대조해 보여주는 것입니다.

Part 8슬라이드 34~39

08GPS 오차·어반 캐년과 기압계 속도계 (1)

slide 34
슬라이드 34 · Milk: 단안 비주얼 오도메트리, KITTI #07 (PnP+BA vs +WheelOdo)
slide 35
슬라이드 35 · Personal Driving Diary: 블랙박스 영상 기반 주행 이벤트 검출
slide 36
슬라이드 36 · Personal Driving Diary 시스템 구조
slide 37
슬라이드 37 · TileLoc 동기: GNSS 불안정(어반 캐년)·SLAM 한계
slide 38
슬라이드 38 · TileLoc 문제 정의: 항공영상과의 시각 지오로컬라이제이션
slide 39
슬라이드 39 · 관련 연구: 시각적 장소 인식(VPR)
슬라이드 내용 정리

Milk: Real-time and Real-scale Monocular Visual Odometry (박사학위논문, 2019). KITTI sequence #07 영상으로 실시간 데모를 보여줌. 비교 대상은 PnP+BA(원근-n-점 + 번들 조정)와 PnP+BA+WheelOdo(여기에 휠 오도메트리를 결합한 것). 두 개의 흑백 주행 영상에서 추적된 특징점과 추정 궤적이 함께 표시됨.

교수님 설명

자동차에 블랙박스 카메라가 흔히 달려 있으니, 카메라 한 대만으로 바퀴 오도메트리처럼 움직임을 얻어내는 연구를 많이 했다고 합니다. 카메라 영상에서 화면이 흘러가는 모습(광학 흐름, optical flow)을 보면, 앞으로 직진할 때와 옆으로 돌 때의 흐름 패턴이 다릅니다. 이 국소적인 흐름의 움직임만으로 자동차가 어떻게 움직였는지를 기하적으로 복원하는 것이 핵심 아이디어입니다.

한 가지 교수님의 '최애 주제'가 있었는데, 카메라와 로봇이 실제로는 3차원 공간에서 X, Y, Z롤·피치·요(roll, pitch, yaw)까지 모두 움직이지만, 자동차나 로봇은 대부분 평면 위를 달린다는 점입니다. 그래서 (X, Y, θ)만 생각하는 평면 가정(planar motion)으로 단순화하고, 더 나아가 자동차는 평면 위에서 원호(circular) 형태로 움직인다고 보면, 회전 각도와 곡률 중심 사이의 관계로 문제를 6자유도가 아니라 2~3자유도로 풀 수 있습니다. 모델이 단순해지니 훨씬 빠르고 쉽게 해를 얻는다는 직관입니다.

보충 설명

비주얼 오도메트리(VO)는 카메라 영상만으로 자기 이동량(위치·자세 변화)을 누적 추정하는 기법입니다. PnP는 3D 점들이 2D 영상에 맺힌 위치로부터 카메라 자세를 푸는 문제, BA(번들 조정)는 여러 프레임의 점·자세를 동시에 최적화해 오차를 줄이는 단계입니다. 여기에 바퀴 회전수로 얻는 휠 오도메트리를 더하면, 카메라 단독으로는 알기 어려운 '실제 이동 거리(스케일)'를 보정할 수 있어 더 정확해집니다.

슬라이드 내용 정리

Personal Driving Diary: Driving Event Detection from First-person Videos (CVIU 2013). 대시 카메라(블랙박스) 영상을 입력으로, 시간 축의 Video (Temporal)와 공간 축의 Map (Spatial)을 결합해 의미 있는 이벤트 로그(Event Log, Semantic)를 만든다. 예시: 추월(Overtake) — 시각 10:21:31~10:21:33, 위치 (2.1, 0.1) km, 평균속도 60km/h. 급정거(Sudden Stop) — 시각 10:42:18~10:42:21, 위치 (3.8, −3.1) km, 원인: 사람, 평균속도 15km/h, 정지거리 0.01km.

교수님 설명

이 작업이 바로 블랙박스 카메라 한 대로 주행을 기록·해석하려던 흐름의 대표 사례입니다. 영상 흐름으로 차량의 국소적인 움직임을 추정하고, 그 움직임을 지도 위에 얹어 "여기서 추월했다", "여기서 급정거했다" 같은 사람이 이해할 수 있는 이벤트로 변환합니다.

대학원생이라면 논문을 읽다 보면 '최애 논문', 정말 잘 썼다고 감탄하는 논문이 생기기 마련이라고 합니다. 교수님은 평면·원호 모션으로 기하 문제를 단순화하는 아이디어에 꽂혀 무려 5년을 매달렸고, 중간에 "내가 5년 동안 사기를 당한 게 아닌가" 싶을 만큼 회의도 들었다고 솔직히 털어놓습니다.

슬라이드 내용 정리

같은 Personal Driving Diary의 시스템 구조. 입력 Video가 두 갈래로 들어간다. Geometry Component(Visual Odometry, On-plane Localization)와 Detection Component(Pedestrian Detector, Vehicle Detector). 이어 Tracking Component궤적(Trajectories)을 만들고, Event Analysis Component시간 구간(Time intervals)이벤트 분류기(Event classifier)로 사건을 판정한다. 부제: "Constructing A Video Archive of Everyday Driving Events" (ETRI 로봇/인지연구부).

교스님 설명

구조도에서 Geometry Component의 'On-plane Localization'이 앞서 말한 평면 가정의 실제 구현입니다. 카메라가 평면 위에 있다고 보고 위치를 추정하는 것이지요. 여기서 추정한 궤적과, 보행자·차량 검출 결과를 합쳐 주행 이벤트를 분류합니다.

5년의 삽질 끝에 깨달은 점은, 평면 가정이 완전히 사기는 아니었다는 것입니다. 다만 현실에서는 로봇이 2차원 평면을 달려도 카메라가 실제로는 심하게 흔들린다는 함정이 있었습니다. KITTI 같은 깔끔한 데이터셋만 보면 영상이 안정적이지만, 실제 로봇 영상은 진동 때문에 화면이 위아래로 출렁여서 평면 가정이 그대로 들어맞지 않더라는 것입니다.

보충 설명

그래도 쓸모 있었던 한 가지는 소동작 가정(small-motion approximation)이었다고 합니다. 카메라가 1초에 10장 넘게 찍으므로 인접한 두 프레임 사이의 움직임은 아주 작습니다. 움직임이 작다고 가정하면, 복잡한 전역(global) 기하 해를 푸는 대신 매 프레임마다 국소 최적화(local optimization)로 빠르게 모션을 갱신할 수 있어, 정확하면서도 가벼운 실시간 추정이 가능해집니다.

슬라이드 내용 정리

TileLoc: Sequential Visual Place Recognition of UAVs using Public Tile Maps. Motivation(동기) — ① GNSS의 불안정성: 도심/자연 협곡(urban/natural canyons)에서는 다중경로(multi-path)에 취약하고, 실내·지하에서는 신호 차단(signal blockage) 발생. ② SLAM의 한계: 사전 탐사가 필요해 비용이 크고(high cost), 미리 지도화된 영역에만 동작해 확장성이 낮음(low scalability). 하단 이미지: GPS DENIED 환경 — 실내, 수목 차폐, 도심 협곡, 자연 협곡, 지하 교통, 광산·동굴. 우측: UAV LiDAR Hovermap.

교수님 설명

이 슬라이드가 이 섹션 제목의 '어반 캐년(urban canyon)' 문제와 직접 연결됩니다. 도심의 고층 빌딩 사이나 깊은 협곡에서는 GPS(GNSS) 신호가 건물에 반사돼 엉뚱한 경로로 들어오는 다중경로 오차가 커지고, 실내·지하·터널에서는 아예 신호가 끊깁니다. 그래서 GPS만 믿을 수 없는 'GPS 차단(GPS denied)' 환경이 많다는 것입니다.

대안으로 SLAM이 있지만, 미리 그 지역을 돌아다니며 지도를 만들어 두어야 하므로 비용이 크고, 지도화되지 않은 새 지역으로 가면 무력해지는 확장성 한계가 있습니다. TileLoc은 이런 한계를 공개된 타일 지도(tile map)를 활용해 극복하려는 연구입니다.

슬라이드 내용 정리

TileLoc 문제 정의(Problem Formulation): 항공 영상(Aerial Images)을 이용한 시각 지오로컬라이제이션(Visual Geo-Localization). 목표: 웹 타일 지도로 지리적 위치(+줌)를 추정. 입력: UAV 영상, 웹 타일 영상들(대략적 고도). 출력: 웹 타일 인덱스(→ latitude, longitude)와 현재 UAV의 줌 레벨 — 즉 시각적 장소 인식(VPR)·영상 검색 문제. 교차 시점(cross-view) 정합의 난점: 스케일·커버리지 불일치, 시점 차이, 외관 변화(조명, 식생, 구조). 이미지: UAV vs 항공영상의 이질성(heterogeneity)스케일 변화(scale variation).

교수님 설명

여기 '스케일 변화'가 카메라 한 대를 쓸 때 늘 따라붙는 근본 문제, 즉 스케일 모호성(scale ambiguity)과 직결됩니다. 카메라만 보면 공간의 크기나의 이동 크기가 서로 묶여(coupled) 있어 분리할 수가 없습니다. 예를 들어 2m 폭의 터널에서 앞으로 가며 보는 광학 흐름과, 1m 폭의 터널에서 그 절반만큼 가며 보는 광학 흐름이 똑같이 보입니다. 큰 공간에서 빠르게 움직이는 것과 작은 공간에서 느리게 움직이는 것을, 카메라 영상만으로는 구분할 수 없다는 뜻입니다.

이 모호성을 거꾸로 이용한 유명한 사례가 스타워즈 4편(1977)샌드크롤러(sandcrawler)입니다. 화면에서는 병사 수백 명이 탄 거대한 탱크처럼 보이지만, 실제로는 조그만 모형을 만들어 천천히 움직여 촬영했습니다. 작은 물체를 느리게 찍은 영상이, 큰 물체를 빠르게 찍은 영상과 구분되지 않는다는 바로 그 원리를 이용한 것입니다.

슬라이드 내용 정리

관련 연구: 시각적 장소 인식(Visual Place Recognition, VPR). UAV용 VPR을 두 갈래로 정리 — 지역 특징 방식(Local Feature Approaches) vs 전역 특징 방식(Global Feature Approach). 지역 방식 예: HSM-Net(위성·드론 영상 쌍, 1단계 ELoFTR 매칭 + 2단계 신뢰도 기반 필터). 전역 방식 예: AnyLoc(전역 특징 추출·집성 후 인덱싱·매칭으로 Top-N 검색), Revisit Anything(SuperSegment 기술자 기반 영상 세그먼트 검색).

교수님 설명

VPR은 "지금 보이는 장면이 데이터베이스의 어느 위치인가"를 영상 검색으로 맞추는 문제입니다. 크게 두 갈래인데, 지역 특징 방식은 영상 속 개별 특징점(landmark)들을 정밀하게 매칭해 정확도를 높이고(HSM-Net처럼 2단계로 거른다), 전역 특징 방식은 영상 한 장을 하나의 벡터로 요약해 빠르게 후보를 검색합니다(AnyLoc, Revisit Anything).

앞서 본 단안 VO의 스케일 모호성·어반 캐년 같은 한계 때문에, 절대 위치를 잡아주는 외부 기준이 필요합니다. TileLoc은 그 기준을 공개 타일 지도로 삼고, 이런 VPR 기법들 위에서 UAV 영상을 항공 타일과 정합해 위경도를 복원하려는 접근입니다.

Part 9슬라이드 40~41

09GPS 오차·어반 캐년과 기압계 속도계 (2)

slide 40
슬라이드 40 · VPR: 지역 특징 vs 전역 특징 비교표
slide 41
슬라이드 41 · 예비실험 #1: 베이스라인 선정 (Local vs Global)
슬라이드 내용 정리

제목: Related Works — Visual Place Recognition (VPR). UAV(무인 항공기)용 VPR을 지역 특징 방식(Local Feature Approaches)전역 특징 방식(Global Feature Approaches)으로 나눠 항목별로 비교한 표입니다.

  • 매칭 방식(Matching mechanism) — 지역: 이미지 쌍 매칭(pairwise) / 전역: 전체 유사도 매칭(global similarity)
  • 특징 수준(Feature Level) — 지역: 지역 키포인트 또는 밀집 픽셀 대응(dense correspondences) / 전역: 이미지 전체 맥락(entire image context)
  • 검증(Verification) — 지역: 기하 검증(geometric verification, 예: RANSAC) / 전역: 코사인 유사도·유클리드 거리
  • 효율(Efficiency) — 지역: 나쁨(전수 탐색, exhaustive search) / 전역: 우수(최근접 이웃, nearest neighbor)
  • 강점(Strengths) — 지역: 기하 변형(회전·가림·스케일)에 강건 / 전역: 높은 연산 효율
  • 약점(Weakness) — 지역: 연산 비용(기하 검증) / 전역: 기하 변형에 민감

요지: 지역 방식은 정확·강건하지만 느리고, 전역 방식은 빠르지만 기하 변형에 약하다는 트레이드오프 정리입니다.

교수님 설명

이 부분에서 교수님은 본인 연구 회고를 곁들이며 한 가지 유용했던 통찰을 강조합니다. 영상은 카메라가 1초에 10장 넘게 찍기 때문에 프레임 사이 움직임이 매우 작다는 점입니다. 움직임이 작다는 가정을 쓰면 복잡한 전역(global) 해를 찾는 무거운 기하 계산 대신, 로컬 옵티컬 플로우(local optical flow) 같은 가벼운 방법으로 모션을 빠르게 추정할 수 있다고 말합니다. "6자유도(6-DoF)에서 2자유도로 근사"하는 식의 단순화가 실제로 쓸모 있었다는 취지입니다.

이어서 교수님은 카메라 하나로 공간과 운동을 파악할 때 늘 따라붙는 핵심 난제인 스케일 모호성(scale ambiguity)을 길게 설명합니다. 단일 카메라에서는 공간의 크기와 내 움직임의 크기가 서로 결합(coupled)되어 구분이 안 됩니다. 예를 들어 "2m 터널을 1m 전진"한 영상과 "1m 터널을 0.5m 전진"한 영상이 똑같이 보입니다. 즉 큰 공간에서 빠르게 움직이는 것과 작은 공간에서 느리게 움직이는 것을, 카메라 영상만으로는 절대 구별할 수 없습니다.

비유로 1977년 <스타워즈> 4편의 거대한 샌드크롤러 탱크를 듭니다. 실제로는 작게 만들어 천천히 움직였지만, 영상에서는 엄청나게 크고 빠른 것처럼 보입니다. 정확히 이 스케일 모호성을 역이용한 특수효과라는 것입니다.

보충 설명

스케일 모호성을 풀려면 추가 정보(absolute scale cue)가 필요합니다. 교수님이 든 방법은 "지면과 카메라 사이의 거리는 일정하다"는 가정을 쓰는 것입니다. 차량·로봇에 단 카메라의 지면 높이를 미리 알고 있으면, 3차원 복원 후 지면을 찾아 그 거리로 실제 이동 스케일을 역산할 수 있습니다. 결국 "이동 스케일을 찾는 문제"가 "지면을 찾는 문제"로 바뀌는 셈입니다. (다른 방법으로는 별도의 속도계·기압 변화 등 외부 센서를 더하는 방식도 있습니다.)

이 배경이 VPR 표와 연결되는 지점: 지역 특징(local)은 키포인트 대응과 기하 검증으로 이런 스케일·회전·가림 변형에 강하지만 느리고, 전역 특징(global)은 빠르지만 그런 변형에 약합니다. 다음 슬라이드의 실험은 바로 이 둘 중 무엇을 베이스라인으로 쓸지 고르는 비교입니다.

슬라이드 내용 정리

제목: Preliminary Experiments #1 — Baseline Selection (Local vs. Global Feature).

데이터셋: VPAIR 샘플 (query 200 / reference 200 / distractor 200).

잠정 매칭(Putative matching) 정의:

  • SC_e = √( (n_P/n_th)² + (n_M/n_th)² )
  • p_c = { (u,v) | ∀(u,v) ∈ M_z, C_c(u,v) ≥ c_th }
  • c_th = 0.6 (매칭 신뢰도 점수, matching confidence score)
  • n_th = 500 (최소 매칭 수, minimum number of matches)
  • M_z: 매칭된 키포인트, C_c: 매칭 키포인트의 신뢰도

기하 검증(Geometric verification): 방법 MAGSAC++, 최대 재투영 오차(reprojection error) 2, 최대 반복 10000, 신뢰도 0.995.

결과 표 (Recall@1;2;5 / 처리시간 s) — Local: ELoFTR, ELoFTR(MatchAnything) 96.5/97.0/97.5, RoMa, RoMa(MatchAnything)+검증 96.5/98.5/99.5, HSM-Net. Global: AnyLoc 98.5/99.5/100, 0.586s, Revisit Anything 99.0/99.5/100, 1.688s. G_eo 열은 기하 검증 적용 여부 표시.

교수님 설명

이 슬라이드는 앞에서 설명한 지역/전역 특징의 트레이드오프를 실제 수치로 확인하는 베이스라인 선정 실험입니다. 같은 VPAIR 데이터에서 여러 매칭 모델을 돌려, 정확도(Recall)처리 시간을 함께 비교합니다.

핵심은 표 오른쪽의 대비입니다. 지역 특징 모델들은 기하 검증(MAGSAC++)을 붙이면 Recall이 올라가지만 한 쿼리에 수십 초가 걸립니다(RoMa는 약 77~78초). 반면 전역 특징인 AnyLoc(0.586초)·Revisit Anything(1.688초)은 거의 만점에 가까운 Recall을 1초 안팎에 냅니다. 즉 이 데이터·과제에서는 전역 특징 쪽이 속도와 정확도를 모두 잡아 베이스라인으로 유리하다는 결론을 뒷받침합니다.

Part 10슬라이드 42~47

10비주얼 오도메트리와 평면 운동 모델 (1)

slide 42
슬라이드 42 · 스케일 변화에 따른 전역 특징 성능 저하
slide 43
슬라이드 43 · 회전 변화에 따른 성능
slide 44
슬라이드 44 · 종횡비 변화 — 거의 불변
slide 45
슬라이드 45 · TileLoc 전체 구조
slide 46
슬라이드 46 · 데이터베이스 생성
slide 47
슬라이드 47 · 이미지 매칭과 줌 레벨 추정
슬라이드 내용 정리

예비 실험 #2: 전역 특징(global feature)의 스케일 변화. 영상을 점점 축소(size ratio 1.0 → 0.3)했을 때 원본과의 유사도(similarity)가 어떻게 떨어지는지 측정한 그래프입니다. 유사도는 1.0에서 시작해 0.3 비율에서 약 0.63까지 꾸준히 하락하며, 스케일이 작아질수록 전역 특징이 크게 열화됨을 보여줍니다. 오른쪽 예시: size ratio 0.4일 때 코사인 유사도 0.7178, 0.9일 때 0.9499. 즉 전역 특징은 스케일 변화에 취약합니다.

교수님 설명

교수님은 자신의 옛 연구 중 그래도 쓸모 있었던 것 하나를 소개합니다. 6자유도(6DOF)에서 3DOF·2DOF로 줄이는 작업은 이미 많이들 했지만, 움직임이 작다는 가정(small motion approximation)을 추가로 넣어 6DOF를 2자유도까지 단순화해 푸는 접근이 유용했다는 것입니다.

핵심 직관은 이렇습니다. 카메라는 1초에 10장 이상을 찍으므로 연속한 두 프레임 사이의 움직임은 매우 작습니다. 움직임이 작으니 복잡한 전역 기하 해(global geometric solution)를 푸는 대신, 그냥 옵티컬 플로우(optical flow)로 모션을 빠르게 알아내면 됩니다. 그러면 무겁고 복잡한 해를 찾지 않고도 아주 쉽고 빠르게 자세(pose)를 계속 추정할 수 있다는 것이 장점입니다.

보충 설명

여기서 말하는 것이 사실상 1-point RANSAC 계열 아이디어입니다. 일반 카메라 모션은 6DOF(회전 3 + 이동 3)이지만, 차량처럼 평면·원호 운동(planar/circular motion)을 가정하면 미지수가 2개로 줄고, 작은 움직임에서는 단 한 점의 대응만으로도 모션을 추정해 매 프레임 빠르게 풀 수 있습니다. 슬라이드의 스케일 실험은 "왜 스케일이 중요한가"를 보여주는 배경으로, 이어지는 스케일 모호성 이야기와 직접 연결됩니다.

슬라이드 내용 정리

예비 실험 #3: 전역 특징의 회전 변화. 왼쪽 그래프는 회전각(−180°~180°)에 따른 유사도로, 0°에서 가장 높고 회전이 커질수록 떨어지는 모습입니다. 오른쪽은 원본·90°·180°·270° 회전본 각각에 대해 스케일을 줄였을 때의 유사도 곡선으로, 회전과 스케일이 함께 작용하면 성능이 더 낮아집니다. 옅은 색 띠는 표준편차(standard deviation)를 나타냅니다.

교수님 설명

이어서 카메라 하나로 공간과 움직임을 파악할 때 항상 생기는 스케일 모호성(scale ambiguity) 문제를 설명합니다. 단안 카메라(monocular camera)만으로는 공간의 크기나의 움직임 크기가 서로 묶여(coupled) 있어 구분할 수 없다는 것입니다.

예시: 2m짜리 터널을 2m 전진하며 본 영상과, 1m짜리 터널을 1m 전진하며 본 영상은 양옆 특징의 옵티컬 플로우가 완전히 똑같이 관찰됩니다. 공간과 이동량이 같은 비율로 줄면 영상은 동일하므로, "큰 공간에서 빠르게"와 "작은 공간에서 느리게"를 카메라만으로는 구별할 수 없습니다. 영화 〈스타워즈〉(1977)의 거대한 샌드크롤러도 사실은 작은 모형을 천천히 움직여 찍은 것으로, 관객이 거대하고 빠르게 느끼는 것이 바로 이 스케일 모호성의 실제 사례라고 합니다.

슬라이드 내용 정리

예비 실험 #4: 전역 특징의 종횡비(aspect ratio) 변화. 종횡비를 0.37~2.7로 바꿔도 유사도가 약 0.75 부근에서 거의 평평하게 유지됩니다. 결론은 전역 특징이 종횡비에는 거의 불변(invariant)이라는 것 — 스케일·회전과 달리 종횡비 변화는 성능에 별 영향을 주지 않습니다. x축은 등간격 눈금(equally spaced ticks)으로 표시했습니다.

교수님 설명

그렇다면 스케일 모호성은 어떻게 푸는가? 카메라만으로는 안 되므로 추가 정보가 필요합니다. 속도계 같은 센서를 쓰거나, 처음에 알고 있는 정보를 활용하는 방법입니다.

교수님이 썼던 방법은 지면과 카메라 사이의 거리는 일정하다는 가정입니다. 카메라 높이를 숫자로 알고 그 값이 일정하다고 두면, 3차원으로 복원한 뒤 지면(ground plane)을 찾아 그때의 거리를 다시 계산하고, 이를 기준(1)으로 삼아 비례적으로 이동의 절대 스케일을 복원할 수 있습니다. 즉 "움직임의 스케일을 찾는 문제"가 "지면을 찾는 문제"로 바뀌며, 이는 닮음비로 크기를 정하는 문제와 본질적으로 같다고 설명합니다.

슬라이드 내용 정리

TileLoc 전체 구조(Overview). 베이스라인은 AnyLoc(DINOv2[13] + VLAD[14])입니다. 파이프라인: 질의 영상 → 전역 특징 추출(DINOv2) → VLAD 집계(query vector) → 매칭. 데이터베이스 쪽은 멀티줌 타일맵(multi-zoom tile map) → DINOv2 → 코드북 생성(codebook, DB vector) → 매칭 → raw 검색 결과 → 순차 매칭(sequential matching) → 정제된 Top@K 결과. TileLoc의 세 가지 기여: ① 멀티줌 타일맵, ② 회전 질의 배치(rotated query batch), ③ 순차 매칭.

교수님 설명

지면을 찾을 때 쓴 기법도 회상합니다. 보통 대칭(symmetric) 가우시안 커널로 평면을 피팅하는데, 지면 위에는 물체(차, 사물)들이 솟아 있어 이들이 아웃라이어(outlier)가 됩니다. 그래서 대칭 피팅을 하면 평면이 진짜 바닥보다 살짝 위로 떠오릅니다. 그는 비대칭(asymmetric) 커널을 써서 "위쪽 아웃라이어는 허용하고 아래쪽은 날카롭게" 가중치를 줘, 평면이 진짜 지면에 딱 꽂히게 만들었습니다.

그런데 리뷰어는 "방법이 너무 휴리스틱하다"고 지적했죠. 여기서 교수님이 강조하는 논문 작성의 교훈: 똑같은 주먹구구식 방법이라도 "지면 위는 아웃라이어, 지면 자체는 가우시안 노이즈"라는 노이즈 모델·포뮬레이션(formulation)으로 포장해 설명하면 리뷰어를 설득할 수 있고 가치가 올라간다는 것입니다.

슬라이드 내용 정리

TileLoc: 데이터베이스 생성. 계획된 UAV(드론) 경로를 따라 출발지에서 목적지까지 멀티줌 웹 타일맵을 생성합니다. 그런 다음 DINOv2로 전역 특징을 추출하여 DB 벡터, 즉 코드북(codebook)을 만듭니다.

교수님 설명

논문 작성 이야기를 이어갑니다. 결국 코드는 똑같아도 어떻게 설명하느냐에 따라 좋은 연구로도, 나쁜 연구로도 평가된다는 것입니다. 같은 물건이라도 학교 매점에서 파는 것과 백화점에서 파는 것이 "아우라"와 설명 때문에 다르게 평가되는 것과 같다고 비유합니다.

그래서 학생들에게 조언합니다 — 좋은 방법을 찾았다면 거기서 멈추지 말고 그 뒤에 깔린 직관(behind-story)을 곁들여 조금만 더 그럴싸하게 표현하는 데 공을 들이라는 것. 그러면 같은 결과라도 리뷰어를 설득할 때 연구의 가치를 훨씬 높게 인정받을 수 있다고 강조합니다.

슬라이드 내용 정리

TileLoc: 이미지 매칭. ① 회전 질의 영상 집합(rotated query set)에서 전역 특징을 추출하고, ② 코드북 기반으로 질의 영상의 기술자(descriptor)를 계산한 뒤, ③ 유사도·거리로 질의와 DB를 매칭합니다.

줌 레벨 추정(Zoom level estimation): Z = log₂( (cos(φ)·2πR / g) · (tile_size/256) ), 여기서 지상 커버리지 g = 2·z_prior·tan(fov_min/2). 그리고 최소 시야각 fov_min = 2·arctan( min(W,H) / (2f) )f는 초점거리, W,H는 영상의 가로·세로 크기입니다.

교수님 설명

마지막으로 이런 기술을 실제 적용한 사례를 소개합니다. 블랙박스(dashcam) 영상에 올린 주행 다이어리(driving diary)입니다. 블랙박스 영상에 그대로 처리를 얹어 대략적인 특징점을 잡고, 앞쪽의 차량·사람을 추적(tracking)하면 3차원적으로 나의 움직임과 주변의 움직임을 알 수 있습니다.

이 데이터를 모으면 내가 과격하게 주행했는지, 추월을 했는지 당했는지 같은 주행 이벤트를 마치 일기처럼 자동으로 기록해 줄 수 있습니다. 결국 단안 비주얼 오도메트리 + 스케일 복원 기술이 실제 제품 형태의 응용으로 이어진 사례입니다.

보충 설명

줌 레벨 추정식의 직관: 웹 타일맵은 줌 단계마다 해상도가 정해져 있으므로, 드론의 고도(z_prior)와 카메라 시야각(fov_min)으로 지상에서 몇 m가 한 화면에 담기는지(g)를 구하고, 위도 φ·지구 반경 R로 정해지는 지도 척도와 비교해 드론 영상과 같은 스케일의 타일맵 줌 레벨을 고릅니다. 이는 앞서 교수님이 길게 설명한 스케일 모호성 문제를, 고도라는 사전정보로 풀어 질의와 DB의 스케일을 맞추는 것 — 슬라이드 42의 스케일 취약성 실험과 정확히 맞물리는 해법입니다.

Part 11슬라이드 48~49

11비주얼 오도메트리와 평면 운동 모델 (2)

slide 48
슬라이드 48 · TileLoc 순차 매칭 + 누클리어스 샘플링 기반 적응적 이미지 선택
slide 49
슬라이드 49 · 양(+)의 로그-오즈 보팅으로 위치 신뢰도 누적
슬라이드 내용 정리

TileLoc: 순차 매칭(Sequential Matching) 파이프라인입니다. 위쪽 경로는 회전된 질의 배치(Rotated query batch)전역 특징 추출(Global Feature Extraction, DINOv2)VLAD 집계(VLAD Aggregation, Query Vector)로 질의 영상을 하나의 벡터로 만듭니다. 아래쪽 경로는 멀티줌 타일 지도(Multi-zoom tile map)를 같은 DINOv2로 특징 추출한 뒤 코드북 생성(Codebook Generation, DB Vector)으로 데이터베이스 벡터를 만들고, 둘을 Matching하여 후보 영상(Raw retrieved images)을 뽑습니다. 이 후보들에 Sequential Matching을 적용해 최종 정제된 검색 결과(Refined retrieved images, Top@K)를 얻습니다.

핵심은 누클리어스 샘플링(nucleus sampling)을 이용한 적응적 이미지 선택으로, 누적 유사도 임계값 τ를 씁니다. 유사도가 높은(확신이 큰) 환경에서는 적은 수의 이미지만으로 위치를 추정하고, 유사도가 낮은 환경에서는 많은 이미지로 탐색 범위를 넓힙니다. 선택 개수는 k = min{ n : Σ_{j=1..n} s_{t,j} ≥ τ }로 정하며, 후보는 s_{t,1} ≥ s_{t,2} ≥ … ≥ s_{t,n}처럼 유사도 내림차순으로 정렬돼 있습니다. 여기서 t는 시간, s는 유사도 점수, τ는 누적 유사도, n은 top@k 후보 수입니다.

교수님 설명

이 대목에서 교수님은 슬라이드 자체보다 모노큘러(단안) 비주얼 오도메트리의 스케일 모호성(scale ambiguity) 이야기로 잠시 빠지셨습니다. 영화의 특수효과 비유가 나왔는데, 거대한 괴물처럼 보이는 장면도 실제로는 작은 모형을 천천히 움직여 찍는다는 겁니다. 카메라 영상만으로는 작은 물체가 느리게 움직이는 것큰 물체가 빠르게 움직이는 것을 구분할 수 없습니다. 바닥 질감만 보면 둘이 똑같이 보이기 때문에, 절대적인 이동량(스케일)을 알려면 반드시 추가 정보가 필요합니다.

교수님이 실제로 쓰신 방법은 "지면과 카메라 사이의 거리는 일정하다"는 가정입니다. 차량/로봇에 달린 카메라의 지면까지 높이를 숫자로 알고 있으면, 영상에서 3차원 구조를 복원한 뒤 그 안에서 지면(평면)을 찾고 그때의 거리를 다시 계산해, 알고 있는 실제 높이와 비교(비례)함으로써 내 이동의 절대 스케일을 정할 수 있습니다. 즉 "움직임의 스케일을 찾는 문제"가 사실상 "지면을 찾는 문제"로 바뀌는 거죠. 그런데 지면 위에는 차·사람 같은 물체가 있어서 평면을 대칭(가우시안) 커널로 피팅하면 그 아웃라이어(outlier)들 때문에 추정 평면이 살짝 위로 떠버립니다. 그래서 교수님은 비대칭(asymmetric) 커널을 써서, 위쪽(물체가 있을 수 있는 방향)에는 너그럽게 가중치를 주고 아래쪽은 날카롭게 눌러 평면이 바닥에 딱 붙도록 했다고 설명하셨습니다.

보충 설명

누클리어스 샘플링(top-p)은 원래 언어모델에서 확률 상위 토큰을 누적 확률이 임계값을 넘을 때까지만 모으는 기법입니다. 여기서는 같은 아이디어를 영상 검색에 옮겨, "유사도 점수를 큰 순서로 더하다가 합이 τ를 넘는 순간까지의 상위 k장만 신뢰한다"로 쓴 것입니다. 그래서 확신이 크면 자동으로 적은 장수, 애매하면 많은 장수가 선택되어 탐색 폭이 상황에 맞게 조절됩니다.

스케일 모호성을 직관적으로 보면, 단안 카메라의 투영은 거리×속도를 하나로 뭉뚱그리기 때문에 (물체 크기, 거리, 속도)를 동시에 2배·절반으로 바꿔도 같은 영상이 나옵니다. "카메라 높이 일정" 같은 한 개의 실제 길이(metric anchor)를 끼워 넣으면 비로소 전체 스케일이 고정됩니다 — 1-point RANSAC류 평면운동 기법이 적은 정보로 빠르게 스케일을 푸는 것도 이런 제약을 이용하는 원리입니다.

슬라이드 내용 정리

같은 TileLoc 파이프라인 위에 이번에는 양(+)의 로그-오즈 보팅(Positive log-odds voting)을 얹습니다. 먼저 유사도 s를 확률 p로 바꾸는데 p(s) = p_min + (p_max − p_min)·σ(α(s − m))이고 시그모이드는 σ(x) = 1/(1+e^{−x})입니다. 즉 유사도를 [p_min, p_max] 범위의 확률로 부드럽게 사상(mapping)합니다. 그 확률을 다시 로그-오즈로 바꾸는 식이 l(s) = log( p(s) / (1−p(s)) )입니다.

탐색은 두 단계입니다. 전역 탐색(Global search)에서는 처음에 전역 영역 전체에서 영상 매칭을 수행하며 히트맵(heatmap)을 갱신하고, 지역 탐색(Local search)에서는 강한 확신이 감지되면 매칭 범위를 좁혀 해당 영역에 집중합니다.

교수님 설명

이 슬라이드 구간에서도 교수님은 논문 쓰기의 자세에 대한 조언을 길게 하셨습니다. 앞의 비대칭 커널처럼 주먹구구(휴리스틱)로 찾은 방법이라도, 그냥 "올라가는 게 싫어서 눌렀다"가 아니라 설득력 있는 포뮬레이션과 스토리로 포장해야 한다는 겁니다. 예컨대 "지면 위에는 물체(아웃라이어)가 있고 지면 아래엔 노이즈만 있으니, 이 비대칭성을 데이터 분포 가정으로 반영해 위쪽엔 관대하고 아래쪽엔 날카로운 커널을 쓴다"라고 설명하면, 코드는 똑같아도 리뷰어를 훨씬 잘 설득할 수 있습니다. 감기약이 열은 내리되 기침은 남기듯, 같은 물건도 "어디서, 어떤 아우라로 설명하느냐"에 따라 평가가 달라진다는 비유로 마무리하셨습니다.

이어서 실제 응용 사례로 드라이빙 다이어리(driving diary)를 소개하셨습니다. 블랙박스 영상에 비주얼 오도메트리를 얹어 대략적인 자기 위치를 잡고, 앞차·보행자를 객체 추적으로 따라가면 나와 주변의 3차원 움직임을 알 수 있어, "내가 추월했는지/추월당했는지, 과속했는지" 같은 주행 기록을 일기처럼 남길 수 있다는 것입니다. 마지막으로 GPS가 안 터지는 환경(터널, 드론 비행, 전시 상황의 GPS 재밍/스푸핑)과 와이파이 채널이 강한 가짜 신호에 먹혀 무력화되는 사례를 들며, 그런 곳에서 영상 기반 측위가 왜 필요한지를 강조하셨습니다.

보충 설명

로그-오즈(log-odds) 보팅은 로보틱스의 점유 격자 지도(occupancy grid mapping)에서 쓰는 베이즈 누적과 같은 트릭입니다. 확률을 그대로 곱하면 0~1 사이에서 수치가 불안정하지만, l = log(p/(1−p))로 바꾸면 여러 관측의 증거를 덧셈으로 누적할 수 있어 계산이 안정적이고 빠릅니다. 매 프레임 유사도를 양의 로그-오즈로 더해 히트맵 칸마다 "여기일 확률"을 쌓고, 한 칸의 누적값이 충분히 커지면 전역 탐색에서 지역 탐색으로 전환하는 구조입니다.

시그모이드 사상 p(s) = p_min + (p_max − p_min)·σ(α(s−m))에서 m은 유사도의 중심(임계) 위치, α는 경사의 가파름을 조절합니다. p_min·p_max로 0과 1을 피해 확률을 가둬 두는 이유는, 단 한 번의 관측이 로그-오즈를 무한대로 보내 잘못된 확신으로 굳어버리는 것을 막기 위함입니다.

Part 12슬라이드 50~55

12스케일 모호성과 지면 제약 추정 (1)

slide 50
슬라이드 50 · 실험 설정: UAV-VisLoc, AnyLoc, Recall@top-k
slide 51
슬라이드 51 · 실험 결과: O·Z·R·L 구성요소 ablation
slide 52
슬라이드 52 · 데모: TileLoc 순수 시각 위치인식
slide 53
슬라이드 53 · 일반화 카메라 캘리브레이션 동기 (정합)
slide 54
슬라이드 54 · 카메라 모델 비교: RMSE vs 추정 높이
slide 55
슬라이드 55 · (앞 슬라이드와 동일) 모델별 정량 비교
슬라이드 내용 정리

실험 설정 (Experiments: Configuration)

  • 데이터셋(Dataset): UAV-VisLoc [13] — UAV(드론) 영상 기반 위치추정용 대규모 데이터셋.
  • 비교 기준(Baseline): AnyLoc [11].
  • 평가지표(Evaluation metric): Recall @ top-k = 1 (if min_{i∈{1,…,k}} ||p_Q − p_{R_i}||₂ ≤ τ_d), 0 (otherwise)
  • τ_d: 리콜 판정용 거리 임계값(distance threshold)
  • p: UTM 좌표계의 2D 위치 벡터, Q: 질의 영상(query image), R: 검색된 영상(retrieved image)

오른쪽 그림: 질의 UAV 영상을 위성/항공 영상 DB와 비교해 유사도(similarity) 순으로 후보를 뽑고, 가장 유력한 후보의 2D 위치를 추정 위치로 삼아 실제 위치(ground truth)와 비교한다.

교수님 설명

앞부분에서 다룬 스케일 모호성(scale ambiguity) 문제를 정리하면서 넘어갑니다. 단안 영상에서 움직임의 스케일을 찾는 문제는 결국 지면(ground)을 찾는 문제로 환원됩니다. 그런데 지면을 찾을 때 흔히 쓰는 대칭(symmetric) 가우시안 커널로 피팅하면 문제가 생깁니다. 지면 에는 자동차·구조물 같은 물체(점들)가 있지만 지면 아래에는 아무것도 없기 때문에, 대칭으로 평면을 맞추면 위쪽 물체들에 끌려 추정 지면이 실제보다 살짝 위로 떠오릅니다.

그래서 교수님은 비대칭(asymmetric) 커널을 썼습니다. 위쪽으로 벗어나는 점은 “물체일 수 있다”고 보아 너그럽게(웨이트를 약하게) 처리하고, 아래쪽은 날카롭게(sharp) 눌러서 평면이 바닥에 딱 꽂히도록 비대칭 분포를 설계한 것이죠. 코드상으로는 단순한 가중치 트릭입니다.

여기서 진짜 교훈은 논문 쓰기입니다. 처음엔 “너무 휴리스틱(heuristic)하다”는 리뷰어 지적을 받았는데, 똑같은 방법을 “지면 위에는 아웃라이어(outlier)가, 아래에는 가우시안 노이즈(Gaussian noise)가 있다”는 데이터 분포 가정으로 재설명하니 설득력이 생겼다고 합니다. 코드는 똑같아도 어떤 포뮬레이션(formulation)으로 포장해 설득하느냐에 따라 평가가 달라진다 — 같은 물건도 매점에서 파느냐 명품관에서 파느냐로 가치가 달라지는 것과 같다는 비유였습니다.

보충 설명

이 슬라이드부터 이어지는 위치추정 연구의 큰 배경은 “GPS 없이 위치를 알아내기”입니다. 터널·지하나, 특히 전시 상황에서는 적이 가짜 신호를 세게 쏘는 GPS 스푸핑/재밍(spoofing/jamming)으로 GPS가 무력화됩니다(같은 주파수 대역을 센 신호로 덮어버리면 다 먹힘 — 와이파이가 사람 몰리면 채널이 지저분해져 안 터지는 것과 같은 원리).

그래서 GPS 없이도 위치를 찾는 비주얼 SLAM / 비주얼 위치인식이 필요합니다. 그런데 보통 SLAM은 먼저 한 번 돌아다니며 지도를 만들어야 하는데, 드론은 한 번 부딪히면 끝이라 “미리 한 바퀴 돌기”가 불가능합니다. 그래서 이 연구의 핵심 아이디어는 SLAM 지도 대신 이미 존재하는 위성/항공 지도(satellite map)를 지도처럼 쓰고, 드론 영상과 위성 영상을 매칭해 위치를 알아내는 것입니다. 다만 같은 장소라도 위성뷰와 드론뷰는 시각적으로 매우 달라서 매칭이 어렵다는 점이 큰 난제(challenge)입니다.

슬라이드 내용 정리

실험 결과 (Experiments: Results) — 시퀀스 01·04·09에서 τ_d(거리 임계값, m)별 Recall@1/2/5 (R@k) 비교.

  • O: Overlapped database(겹치는 DB 구성)
  • Z: Best zoom selection(최적 줌 선택)
  • R: Rotated query batch(질의 회전 배치)
  • L: Local search(국소 탐색)

기준선 AnyLoc 위에 O → O,Z → O,Z,R → O,Z,R,L 을 차례로 더할수록 R@k가 크게(예: +40 이상) 향상되는 구성요소 추가(ablation) 표.

교수님 설명

위성–드론 영상 매칭에는 크게 두 가지 접근이 있다고 설명합니다. 첫째는 로컬 피처(local feature) 매칭 — 위성 영상과 드론 영상에서 국소 특징점을 뽑아 직접 대응시켜 위치를 알아내는 방식입니다. 둘째는 글로벌 피처(global feature) 비교 — 각 영상을 풀링(pooling)해 하나의 전역 특징 벡터로 만든 뒤 그 벡터들을 비교하는 방식입니다.

두 방식을 실험해 본 결과 글로벌 피처도 장점은 있지만 속도가 느린 것이 문제였다고 합니다. 한 장의 질의 영상을 기존 DB의 모든 영상과 일일이 매칭해야 하기 때문이죠. 이 표의 O·Z·R·L 같은 구성요소들은 이런 검색을 더 정확하고 효율적으로 만들기 위한 엔지니어링 장치들로, 하나씩 더할 때마다 리콜이 뚜렷하게 올라가는 것을 보여줍니다.

슬라이드 내용 정리

데모 (Experiments: Demonstration)TileLoc 결과 @ UAV-VisLoc. 순수 시각 위치인식(pure visual place recognition)으로, 6-DoF 자세 추정/정밀화(pose estimation/refinement) 없이 위치만 인식. 화면 좌상단 MODE: GLOBAL, 위성지도 위 파란 마커가 인식된 타일 위치, 오른쪽은 드론 영상 시퀀스.

교수님 설명

이 데모는 정밀한 6자유도 자세까지 풀지 않고, 드론이 위성지도 상의 어느 타일(영역)에 있는지만 전역적으로 맞히는 결과입니다. 파란 마커들이 예측된 위치이고, 오른쪽의 드론 영상들이 각 시점의 질의 영상에 해당합니다.

실제 응용도 함께 소개했습니다. 과거 블랙박스 영상으로 만든 “퍼스널 드라이빙 다이어리(driving diary)”가 그 예인데, 블랙박스 영상에 그대로 얹어 대략 위치를 추정하고, 앞차·보행자를 검출·추적(엔오틱 = NMS/tracking류)해 내 움직임과 주변의 움직임을 3차원적으로 복원합니다. 그렇게 해서 “내가 과속했는지, 추월을 했는지/당했는지” 같은 주행 기록을 다이어리처럼 남기는 형태였다고 합니다.

슬라이드 내용 정리

일반화 카메라 캘리브레이션: 동기 (Generalized Camera Calibration: Motivation)

  • 데이터셋: ETRI Landing Marker Dataset
  • 카메라 캘리브레이션(camera calibration): 위성 영상과 카메라 영상 양쪽에 보이는 도로 마커(road markers)를 이용하는 프레임워크.
  • 시각 위치추정(visual localization): ROMA [CVPR 2024] 특징 매칭 기반의 RANSAC PnP.

아래 영상 패널: 카메라 영상, 항공사진, 카메라 영상(변환), 그리고 항공사진 + 카메라 영상 정합 및 위치추정. 추정 결과 Position: [−2.230, −3.759, 47.249] [m].

교수님 설명

앞의 위성–드론 매칭 아이디어를 카메라 캘리브레이션으로 확장한 연구입니다. 핵심은 위성 영상과 카메라 영상 둘 다에서 보이는 도로 마커를 단서로 삼는 것입니다. 이를 이용해 카메라 영상을 항공사진 좌표로 변환·정합(registration)하고, ROMA로 특징을 매칭한 뒤 RANSAC 기반 PnP로 카메라의 위치·자세를 추정합니다.

여기서 같은 장소라도 시점이 크게 달라 시각적으로 매우 달라 보이는 두 영상을 매칭해야 하는 어려움이 다시 등장합니다. 다행히 최근 매칭 기술(ROMA 등)이 발전해 이런 극단적 시점 차이도 어느 정도 극복할 수 있게 되었다고 설명합니다.

슬라이드 내용 정리

같은 동기 슬라이드에 핵심 난점과 정량 비교가 추가됨.

  • 캘리브레이션: 최적의 카메라 모델과 복잡도에 대한 정답(ground truth)이 없다.
  • 위치추정: 카메라 자세의 정답은 매우 정밀한 RTK-GPS로 확보. 초기 카메라 높이 GT = 47.82 m.

모델별 비교(RMSE / 추정 카메라 높이):

  • 1위: Kannala-Brandt (DOF 4) — RMSE 1.174 px, 높이 ≈47.40 m (정답 47.82 m에 근접)
  • 2위: Brown-Conrady (DOF 5) — RMSE 1.152 px, 높이 ≈364.48 m
  • 3위: Brown-Conrady (DOF 6) — RMSE 1.141 px, 높이 ≈666.10 m
  • OpenCV 기본: Brown-Conrady (DOF 9) — RMSE 1.258 px, 높이 ≈633.42 m

가로축 BC0~BC4·KB0~KB2(모델 종류), 셀 값은 모델별 추정치 히트맵.

교수님 설명

이 표가 던지는 메시지가 핵심입니다. 재투영 오차(RMSE)만 보면 Brown-Conrady의 DOF 5·6 모델이 1.152·1.141 px로 1위 모델(Kannala-Brandt, 1.174 px)보다 오히려 약간 “더 좋아” 보입니다. 그런데 그 모델들이 추정한 카메라 높이는 364 m, 666 m처럼 물리적으로 말이 안 되는 값이 나옵니다. 반면 RMSE가 미세하게 높은 Kannala-Brandt는 높이 47.40 m로 RTK-GPS 정답(47.82 m)에 거의 정확히 맞습니다.

자유도(DOF)를 늘리면 RMSE는 낮아지지만 과적합(overfitting)되어 실제 물리량은 엉뚱해진다는 것입니다. “최적 모델에 대한 정답이 없다”는 앞의 문제의식과 연결되는 대목으로, 단순히 오차 수치가 가장 낮은 모델을 고르면 안 된다는 점을 보여줍니다.

보충 설명

슬라이드 55는 슬라이드 54와 사실상 동일한 화면으로, 발표에서 같은 표를 한 번 더 강조하는 단계입니다. 직관적으로 보면, 파라미터(왜곡 계수)가 많은 모델일수록 주어진 매칭점들을 더 “잘 구부려” 맞출 수 있어 재투영 오차는 줄지만, 그 대신 초점거리·높이 같은 외부에서 검증 가능한 물리량이 비현실적으로 튑니다. 그래서 캘리브레이션 모델 선택에서는 RMSE 같은 내적 지표뿐 아니라 RTK-GPS 높이처럼 독립적인 기준으로 교차 검증하는 것이 중요하다는 것이 이 사례의 교훈입니다.

Part 13슬라이드 56~56

13스케일 모호성과 지면 제약 추정 (2)

slide 56
슬라이드 56 · 일반화 카메라 캘리브레이션 동기와 MINT 툴박스
슬라이드 내용 정리

제목은 일반화 카메라 캘리브레이션의 동기(Generalized Camera Calibration: Motivation)입니다. 카메라 보정(calibration)을 수행할 때 고려해야 할 핵심 질문 네 가지를 제시합니다.

  • 적합한 카메라 모델 선택(Choosing the Suitable Camera Model): 어떤 카메라 모델이 가장 적합한가?
  • 데이터셋 크기(Dataset Size): 정확한 보정을 위해 몇 장의 이미지가 필요한가?
  • 최적 시점(Optimal Viewpoints): 포괄적인 데이터셋을 만들려면 어떤 촬영 시점이 최적인가?
  • 이미지 품질(Image Quality): 신뢰할 만한 보정을 위해 어느 정도의 화질이 필요한가?

아래쪽은 MINT 카메라 캘리브레이션 툴박스 소개입니다. 일반화 캘리브레이션 프레임워크는 세 가지 구성 요소 — 이미지 샘플링(Image Sampling), 카메라 모델 선택 및 보정(Camera Model Selection and Calibration), 시각화(Visualization) — 로 이루어집니다. 이 방법은 신뢰할 만한 데이터셋 생성을 자동화하고, 여러 모델에 대해 카메라 파라미터를 보정한 뒤 최적 모델을 찾아냅니다. 툴박스는 이미 오픈소스로 공개되어 있습니다(https://github.com/mint-lab/mint_camera_calib).

우측 다이어그램은 파이프라인을 보여줍니다. 이미지 샘플링(광도 기반 점 품질 검사 → 기하 기반 점 분포 검사) → 가설 모델 생성(Hypothesis Model Generation)모델 파라미터 추정(Model Parameter Estimation)가설 모델 평가(Hypothesis Model Evaluation), 그리고 시각화(카메라 포즈 Cam Pose, 오차 Error)로 이어집니다.

교수님 설명

슬라이드는 카메라 캘리브레이션 툴박스를 가리키지만, 이 대목에서 교수님은 연구실의 다른 연구 흐름을 곁들여 설명합니다. 먼저 차량 주행 데이터를 주행 다이어리(driving diary)처럼 — 추월을 했는지 추월을 당했는지 등 — 자동으로 기록해 주는 형식의 연구를 소개합니다. 이어서 본 주제로 들어가는데, 핵심은 GPS가 통하지 않는 환경(GPS-denied)에서의 위치 추정입니다. 터널이나 실내처럼 신호가 안 잡히는 곳도 있고, 전쟁 상황에서는 적이 일부러 가짜 GPS 신호를 강하게 송출(GPS 스푸핑/재밍, spoofing/jamming)해 진짜 신호를 덮어버립니다. 교수님은 이를 와이파이에 비유합니다 — 주변에서 같은 대역(2.4/5GHz)으로 강한 거짓 신호를 쏘면 채널이 지저분해져 통신이 사실상 마비되는 것과 같은 원리입니다. 그래서 미사일·드론을 무력화하려면 GPS부터 끊는 것이 전쟁의 첫 수가 됩니다.

이런 상황을 대비해 GPS 없이 위치를 알아내는 기술이 필요하고, 대표적인 것이 비주얼 슬램(Visual SLAM)·비주얼 오도메트리입니다. 그런데 일반 SLAM은 먼저 한 번 지나가며 지도를 만들어야 쓸 수 있다는 한계가 있습니다. 드론처럼 한 번 들어가면 부딪혀 끝나거나 되돌아올 수 없는 임무에서는 "지도부터 만들고 다시 가기"가 불가능하죠. 그래서 교수님 연구실이 떠올린 아이디어는 SLAM 지도 대신 이미 존재하는 위성·항공 지도(satellite/aerial map)를 지도처럼 쓰는 것입니다. 네이버·다음에 흔히 있는 위성사진을 기준 지도로 삼고, 드론 영상과 위성 지도를 매칭(matching)해서 자기 위치를 알아내는 방식입니다.

여기서 생기는 큰 도전은, 같은 위치라도 위성사진과 드론 영상이 시각적으로 매우 다르게 보인다는 점입니다(같은 운동장·건물인데도 외형 차이가 큼). 매칭에 쓸 수 있는 두 접근이 있는데, 첫째는 로컬 피처(local feature)를 뽑아 두 영상의 특징점을 직접 대응시키는 방법, 둘째는 영상 전체를 하나의 글로벌 피처(global feature)로 요약해 비교하는 방법입니다. 글로벌 피처는 빠르지만 결정적 약점이 있습니다 — 두 영상의 시야 범위(화각)가 다르면, 같은 장소라도 전체를 요약한 특징 벡터가 서로 달라져 "다른 장소"로 판정됩니다. 반대로 로컬 피처는 후보가 많을 때 일일이 매칭해야 해 느리지만, 화각 차이에 강해 더 안정적으로 위치를 잡아냅니다.

보충 설명

로컬 피처 vs 글로벌 피처를 직관적으로 비교하면 이렇습니다. 로컬 피처는 영상 속 모서리·점 같은 국소적 키포인트와 그 주변 패턴(디스크립터)을 다수 추출해 두 영상 사이에서 점 대 점으로 맞춰보는 방식입니다(SIFT, SuperPoint+매칭 등). 장면이 일부만 겹쳐도, 화각이 달라도 겹치는 점들만 맞으면 위치를 추정할 수 있어 강건하지만, 비교할 후보가 많으면 연산량이 큽니다.

글로벌 피처는 영상 한 장 전체를 고정 길이 벡터 하나로 압축(NetVLAD 등)해, 데이터베이스의 수많은 영상과 벡터 거리만 비교하면 되므로 매우 빠릅니다. 대규모 위치 인식(place recognition)에서 "후보를 빠르게 추리는" 1차 검색에 적합하죠. 다만 교수님 지적처럼 같은 장소라도 시야가 다르면 요약 벡터가 어긋난다는 약점이 있어, 실무에서는 글로벌 피처로 후보를 좁힌 뒤 로컬 피처로 정밀 매칭하는 계층적(coarse-to-fine) 방식을 흔히 씁니다. 드론-위성 매칭의 어려움은 화각뿐 아니라 시점(공중에서 내려다보는 각도)·조명·계절·촬영 시기 차이까지 겹쳐, 같은 위치임에도 외형이 크게 달라지는 도메인 차이(domain gap)를 함께 극복해야 한다는 데 있습니다.

Part 14슬라이드 57~59

14좋은 논문 쓰기: 휴리스틱의 설득력

slide 57
슬라이드 57 · 캘리브레이션 파이프라인 — 이미지 샘플링과 광도 품질 검사
slide 58
슬라이드 58 · 기하학적 점 분포 검사 (분포 점수·분포 거리)
slide 59
슬라이드 59 · 카메라 모델 선택과 BIC 기반 평가
슬라이드 내용 정리

제목은 일반화된 카메라 캘리브레이션(Generalized Camera Calibration)의 전체 파이프라인입니다. 상단 다이어그램은 4단계로 이어집니다: 이미지 획득(Image Acquisition) → 이미지 샘플링(Image Sampling) → 카메라 모델 선택·캘리브레이션(Camera Model Selection and Calibration) → 시각화(Visualization). 이 슬라이드는 두 번째 Image Sampling 단계를 강조합니다.

이미지 샘플링은 "샘플 품질을 보장하면서 최적의 촬영 시점(viewpoint)을 선택"하는 단계로, 두 가지 검사로 구성됩니다: 광도 기반 점 품질 검사(Photometric Point Quality Check)와 기하학적 점 분포 검사(Geometric Point Distribution Check).

이 슬라이드가 다루는 광도 기반 점 품질 검사Laplacian filter(라플라시안 필터)로 이미지의 선명도를 확인해, 흐릿함이 코너 검출(corner detection)을 방해하지 못하도록 막습니다. 아래 예시는 선명한 체커보드 패턴(✓)과 흐릿한 패턴(✗)을 비교합니다.

교수님 설명

이 섹션의 주제는 "같은 결과라도 어떻게 포뮬레이션하고 '비하인드 스토리'로 설득하느냐"입니다. 교수님은 본인 연구 사례로 이를 풀어 설명합니다(슬라이드는 또 다른 휴리스틱 예시인 캘리브레이션 파이프라인을 보여줍니다). 출발점은 GPS가 안 터지는 상황입니다. 터널·실내·드론 운용 환경에서 GPS가 안 잡히고, 특히 전쟁 같은 상황에서는 GPS 재밍/스푸핑(jamming·spoofing)으로 가짜 신호를 강하게 쏘아 GPS를 무력화합니다.

비유로 와이파이를 드는데, 같은 5GHz 대역에 거짓 신호를 세게 쏘면 채널이 지저분해져 통신이 막히는 것과 같은 원리입니다. 그래서 전쟁에서 가장 먼저 하는 일이 GPS 스푸핑·재밍이고, 그러면 미사일 유도나 드론 조종이 불가능해집니다. 그 대응으로 GPS 없이 위치를 알아내는 기술이 필요해집니다.

대표적인 방법이 비주얼 SLAM(Visual SLAM)입니다. 다만 원래 SLAM은 미리 한 번 돌아다니며 지도를 만들어야 하는데, 드론은 한 번 부딪히면 끝이라 사전 매핑이 어렵습니다. 그래서 교수님 팀의 아이디어는 SLAM 지도 없이 위성 지도(항공사진)를 지도처럼 사용하는 것입니다. 네이버·다음 등에 흔한 위성 지도와 드론 영상을 매칭해 위치를 추정하는 기술인데, 핵심 난관은 위성사진과 드론사진이 같은 위치라도 시각적으로 매우 다르게 보인다는 점입니다.

보충 설명

라플라시안 필터는 영상의 2차 미분(밝기 변화의 변화)을 측정합니다. 선명한 영상은 엣지가 강해 라플라시안 응답의 분산이 크고, 흐릿한 영상은 분산이 작습니다. 그래서 "라플라시안 분산"으로 흐림(blur) 정도를 정량화해 품질이 떨어지는 샘플을 걸러냅니다. 흐린 영상에서는 체커보드 코너의 위치가 부정확해져 캘리브레이션 오차가 커지므로, 입력 단계에서 미리 거르는 것이 핵심 휴리스틱입니다.

슬라이드 내용 정리

같은 파이프라인에서 기하학적 점 분포 검사(Geometric Point Distribution Check)를 다룹니다. 목표는 "데이터셋의 다양성 극대화"이며, 두 가지 지표를 씁니다.

점 분포 점수(Point Distribution Score, D_x↑): 한 샘플 안에서 코너들의 배치와 가시성을 평가합니다. 예시에서 코너가 한쪽에 몰린 경우 D_x = 90, 화면 전체에 고르게 퍼진 경우 D_x = 244로 점수가 높습니다(높을수록 좋음).

분포 거리(Distribution Distance, D_d↑): 서로 다른 샘플들끼리 점 분포가 비슷해지는 것을 막습니다. 아래 항공 영상 예시에서 분포가 겹치는 쌍(D_d = 1/2, ✗)과, 충분히 다른 쌍(D_d = 0.32, ✓)을 비교합니다.

교수님 설명

위성-드론 매칭에서 쓸 수 있는 접근은 크게 두 가지입니다. 첫째는 로컬 피처(local feature) 매칭으로, 위성 영상과 드론 영상에서 국소 특징점을 뽑아 대응시켜 위치를 알아냅니다. 둘째는 글로벌 피처(global feature) 비교로, 각 영상 전체를 하나의 특징 벡터로 임베딩한 뒤 비교합니다.

두 방법을 실험해 보면 로컬 피처는 정확하지만, 가지고 있는 모든 위성 타일과 일일이 매칭해야 해서 계산량이 너무 큰 단점이 있습니다(어디 있는지 모르니 후보가 너무 많음). 반대로 글로벌 피처는 빠르지만, 앞서 본 문제—같은 위치인데도 드론의 클로즈업 영상과 위성의 광역 영상이 담는 정보가 달라 글로벌 피처 자체가 서로 다르게 뽑히는 약점이 있습니다. 단순 비교하면 같은 위치가 다른 위치로 나옵니다.

그래서 교수님 팀은 글로벌 피처를 메인으로 쓰되, 그 약점을 보완하는 휴리스틱을 얹는 전략을 택했습니다. 첫 보완책이 바로 이 슬라이드의 분포 다양성 개념과 통하는데, 위성 지도를 단일 스케일이 아니라 멀티 스케일로, 그리고 타일 사이에 오버랩(겹침)을 주어 잘라 사용한 것입니다. 그래야 두 타일 경계 사이에 끼는 영역도 놓치지 않습니다.

슬라이드 내용 정리

이제 파이프라인의 세 번째 단계인 카메라 모델 선택·캘리브레이션이 강조됩니다. 세 하위 단계로 나뉩니다.

가설 모델 생성(Hypothesis Model Generation): 서로 다른 자유도(DOF)를 가진 여러 후보 카메라 모델을 만듭니다. ② 모델 파라미터 추정(Model Parameter Estimation): 각 후보의 내부·외부 행렬(intrinsic·extrinsic matrix) 등 파라미터를 추정합니다. ③ 가설 모델 평가(Hypothesis Model Evaluation): 재투영 오차(reprojection error)와 모델 복잡도를 함께 따져 최적 모델을 고릅니다.

평가 기준으로 베이즈 정보 기준(Bayesian Information Criterion, BIC)을 사용합니다:

BIC = k ln(n) − 2 ln(L̂)

여기서 는 모델 우도함수(likelihood)의 최대값, n은 데이터 점의 개수, k는 파라미터의 개수입니다.

교수님 설명

글로벌 피처를 보완하는 두 번째 휴리스틱은 8방향 회전입니다. 비전 파운데이션 모델(visual foundation model)은 보통 "똑바로 선" 평범한 사진들로 학습되어, 예컨대 집은 항상 지붕이 위·몸체가 아래인 형태로만 배웁니다. 그래서 위성 영상이 회전되어 있으면 같은 물체인데도 다른 피처가 나옵니다. 이를 막기 위해 입력 위성 타일을 여덟 방향으로 회전시켜 넣어, 회전에 따른 피처 차이를 없애줍니다.

세 번째는 시퀀셜 매칭(sequential matching)입니다. 직전 프레임에서 매칭이 잘 됐던 구조를 활용해 다음 위치를 좁혀가는 방식으로 확장하니 결과가 더 좋아졌습니다. 최종적으로 드론 영상이 어느 위성 타일 위에 있는지를 찾고, 그 타일 정보만 주어지면 거기서 6자유도(6-DOF) 카메라 포즈까지 추정할 수 있습니다.

이 사례가 이 섹션의 메시지를 압축합니다. "멀티 스케일·오버랩·8방향 회전·시퀀셜 매칭"은 모두 휴리스틱입니다. 논문에서는 이런 휴리스틱을 그냥 나열하는 게 아니라, 왜 글로벌 피처가 약한지(문제 정의) → 그 약점을 어떤 직관으로 보완했는지(비하인드 스토리)의 흐름으로 풀어야 같은 결과가 훨씬 설득력 있게 보입니다. 슬라이드의 캘리브레이션 파이프라인 역시 같은 구조로, 각 휴리스틱(품질 검사·분포 검사·BIC)을 "왜 필요한가"의 논리로 엮어 정당화하는 좋은 예입니다.

보충 설명

BIC는 모델 선택 기준입니다. −2 ln(L̂) 항은 데이터에 얼마나 잘 맞는지(적합도)를 나타내 작을수록 좋고, k ln(n) 항은 파라미터가 많을수록 커지는 복잡도 페널티입니다. 즉 BIC가 낮을수록 "잘 맞으면서도 단순한" 모델이라는 뜻으로, 과적합(overfitting)을 막아줍니다. 카메라마다 필요한 왜곡 모델의 복잡도(자유도)가 다르므로, 무조건 복잡한 모델을 쓰는 대신 BIC로 가장 균형 잡힌 모델을 자동 선택하는 것이 이 단계의 핵심입니다. AIC와 비슷하지만, 데이터 수 n이 클수록 복잡도 페널티가 더 강하게 걸린다는 점이 다릅니다.

Part 15슬라이드 60~65

15GPS-denied 환경과 위성지도 크로스뷰 매칭

slide 60
슬라이드 60 · 일반화 카메라 캘리브레이션 파이프라인 — 모델 선택 (RMSE vs BIC)
slide 61
슬라이드 61 · 캘리브레이션 오차 시각화 (point-wise / model-wise 히트맵)
slide 62
슬라이드 62 · 카메라 포즈/광선 시각화 — 데이터 품질 점검
slide 63
슬라이드 63 · 실험 결과 (합성 데이터셋 · 실제 데이터셋)
slide 64
슬라이드 64 · 요약 — 연구 트리에서 얻은 교훈
slide 65
슬라이드 65 · 토의 — 연구 방향 (진화적 vs 혁명적)
슬라이드 내용 정리

일반화 카메라 캘리브레이션(Generalized Camera Calibration)의 전체 파이프라인을 보여줍니다. 흐름은 Image Acquisition → Image Sampling → Camera Model Selection and Calibration → Visualization이고, 이 슬라이드는 가운데 모델 선택·캘리브레이션 단계(Hypothesis Model Generation → Model Parameter Estimation → Hypothesis Model Evaluation)를 강조합니다.

아래 두 히트맵은 후보 카메라 모델(BC0~BC4, KB0~KB2) 중 어느 것을 고르는지 비교한 것입니다. RMSE 기준으로 고르면 정답 모델 GT(초록, BC1)가 아니라 다른 모델(빨강, BC2)을 선택합니다 — RMSE는 모델이 복잡할수록 오차가 줄어드는 경향이 있어 과적합된 모델을 고르기 쉽기 때문입니다. 반면 BIC(Bayesian Information Criterion) 점수로 고르면 초록과 빨강이 일치, 즉 정답 모델을 정확히 선택합니다.

교수님 설명

카메라는 3차원 공간을 2차원 평면에 투영(projection)하는데, 그 투영 모델이 하나만 있는 게 아니라 여러 종류가 있습니다. 기존 캘리브레이션은 모델을 미리 하나로 고정해 두고 그 파라미터만 추정했죠. 여기서는 그렇게 하지 않고, 여러 후보 모델로 전부 캘리브레이션을 해 본 다음 그중 가장 좋은 모델을 골라내는 방식으로 문제를 확장했습니다.

이때 "가장 좋은 모델"을 무엇으로 고르느냐가 핵심입니다. 단순히 오차(RMSE)가 가장 작은 걸 고르면 불필요하게 복잡한 모델이 뽑힙니다. 그래서 모델 복잡도에 페널티를 주는 BIC 같은 고전적인 모델 선택(model selection) 기준을 써서, 데이터를 잘 설명하면서도 과하지 않은 카메라 모델을 선택하도록 했습니다.

슬라이드 내용 정리

파이프라인의 마지막 Visualization(시각화) 단계, 그중 캘리브레이션 오차 시각화(Calibration Error Visualization)입니다.

두 가지 히트맵을 제공합니다. Point-wise Heatmap은 각 샘플(점)별 캘리브레이션 오차를 이미지 인덱스 × 포인트 인덱스로 펼쳐 보여 주고, Model-wise Heatmap은 여러 모델에 걸친 오차를 한눈에 비교해 줍니다.

교수님 설명

연구에서 막히는 "함정(trap)"에서 빠져나오는 한 가지 방법이 상태 정보를 최대한 눈에 보이게 만드는 것이라고 강조하신 부분과 연결됩니다. 어느 점, 어느 이미지, 어느 모델에서 오차가 크게 나는지를 색으로 펼쳐 보면, 숫자만 봐서는 안 보이던 문제(특정 샘플의 품질 불량 등)를 바로 짚어낼 수 있습니다.

즉 이 시각화는 단순한 결과 출력이 아니라, 다음에 어떤 데이터를 더 모으고 어떤 샘플을 버려야 하는지를 판단하는 도구로 쓰입니다.

슬라이드 내용 정리

시각화의 두 번째 종류인 카메라 포즈/광선 시각화(Camera Pose/Ray Visualization)입니다. 기준 물체(reference object)에 대한 카메라의 위치와 방향을 보여 주어, 구성된 데이터셋을 검토하고 데이터 품질 개선 전략을 세우는 데 도움을 줍니다.

(a) Random dataset과 (b) Our method dataset을 나란히 비교합니다. 빨간 + 표시는 체스보드(체크보드) 코너, 빨강·초록·파랑 화살표는 각각 카메라의 X, Y, Z 축을 나타냅니다.

교수님 설명

결국 좋은 캘리브레이션은 좋은 영상(데이터)에서 나옵니다. 카메라를 클릭하면 코너가 잘 잡히는 잘 정렬된 데이터만 쓰는 게 아니라, 더 품질 좋은 데이터를 골라 쓸 수 있는 환경을 만들어 두었다는 이야기입니다.

특히 체크보드 패턴이 크게 보일 때는 캘리브레이션이 잘 되지만, 작게 보이면 잘 안 됩니다. 왜냐하면 패턴이 작으면 "카메라(또는 보드)의 위치 변화로 생긴 변형"과 "렌즈 왜곡(distortion)으로 생긴 변형"이 뒤섞여서 둘을 분리해 추정하기 어렵기 때문입니다. 그래서 포즈/광선을 직접 그려 보고 어떤 샘플이 추정에 유리한지 가려내는 것이죠.

슬라이드 내용 정리

일반화 카메라 캘리브레이션의 실험 결과입니다. 합성 데이터셋(Synthetic)에서는 AIC와 BIC로 선택한 모델의 RMSE, 초점거리 오차(focal length error), 주점 오차(principal point error)를 데이터 크기(이미지 5/10/20/40장)별로 비교합니다. 결론: BIC가 AIC보다 일관되게 우수하며 이미지 40장에서 93.18% 정확도(205/220)로 정답 모델을 선택합니다.

실제 데이터셋(Real)에서는 Zhang's 방법, GeoCalib(CVPR 2024)와 비교합니다. ISAW Edge, Logitech Webcam, XNO-6080R 3종 카메라에서 RMSE·초점거리 등에서 제안 방법(Ours)이 큰 개선을 보입니다.

교수님 설명

앞서 말한 "여러 모델로 다 캘리브레이션한 뒤 BIC로 최적 모델을 고른다"는 아이디어가 실제로 통하는지 검증한 부분입니다. 합성 데이터에서 정답 모델을 알고 있는 상태로 맞춰 보니, AIC보다 BIC를 쓸 때 정답 모델을 훨씬 잘 골라냅니다.

즉 이 연구는 (1) 좋은 데이터를 얻어내고, (2) 카메라 모델을 자동으로 선택하고, (3) 그 모델에 맞는 캘리브레이션까지 한 번에 푸는 형태로, 고전적인 캘리브레이션 문제를 "모델 선택까지 포함한 더 큰 문제"로 확장한 것입니다. 실제 카메라들에서도 기존 방법(Zhang's, GeoCalib) 대비 정확도가 좋아졌습니다.

슬라이드 내용 정리

강의 전체를 관통하는 연구 트리 요약(Summary)입니다. "어떻게 더 좋은 연구를 만들 것인가"를 네 가지로 정리합니다.

#1 유용한 사전 제약(prior constraints) 포착: GNSS 위치/기압계 데이터 → 정확도↑, 평면/소운동 → 단순화된 에피폴라 기하, 일정한 카메라 높이 → 스케일 모호성 해결, 지면 위 아웃라이어 → 비대칭 커널, 웹 타일 지도 → TileLoc: SLAM 지도 없는 항공 VPR. #2 문제를 더 작게 쪼개기: 분할정복 → Theta#(비균일 비용지도에서의 임의 각도 경로계획). #3 문제를 더 크게 만들기: 카메라 캘리브레이션 → 일반화 카메라 캘리브레이션. #4 함정에서 빠져나오기: 실험 환경을 편리하게 만들기, 상태 정보를 최대한 시각화하기.

교수님 설명

거의 1시간이 다 되어 마무리하는 부분입니다. 교수님은 오늘 소개한 연구들이 각자 따로인 듯 보여도 결국 본인의 연구 여정을 합친 하나의 트리라고 설명합니다. 그러면서 "내가 한 연구를 똑같이 하는 사람은 거의 없을 것이다. 여러분은 각자 자기 연구를 할 것이다"라고 합니다.

그래서 연구 내용 자체보다, 그 안에서 얻은 일반화된 교훈·노하우를 가져가길 바란다는 메시지입니다. 즉 "더 나은 결과를 만들려고 할 때 나는 어떻게 했었나"를 곱씹어 정리한 것이 위 네 가지 항목입니다.

보충 설명

이 섹션의 주제인 GPS-denied 환경의 위성지도 크로스뷰 매칭은 위 #1의 "Web tiles maps → TileLoc" 항목에 해당합니다. 재밍(jamming)·스푸핑(spoofing)으로 GPS를 못 쓰는 상황에서, 네이버·다음 등에서 받을 수 있는 위성/항공 지도(웹 타일맵)를 SLAM 지도 대신 사용해 드론 영상과 매칭함으로써 자기 위치를 알아내는 기술입니다.

가장 큰 난점은 같은 위치라도 위성사진과 드론사진의 외형이 매우 다르다는 점입니다(촬영 각도·시기·해상도 차이). 접근법은 두 가지입니다. ① 로컬 피처(local feature) 매칭 — 두 영상의 국소 특징점을 직접 대응시켜 위치 추정, ② 글로벌 피처(global feature) 비교 — 영상 전체를 하나의 벡터로 뽑아 비교(검색). 글로벌 방식은 빠르지만, 드론이 본 부분 영역과 위성 타일의 전체 영역이 표현하는 글로벌 피처가 달라져 같은 곳인데도 다르게 나오는 약점이 있습니다.

이를 보완하려고 ① 위성지도를 한 스케일이 아니라 멀티스케일 + 오버랩(겹침) 타일로 잘라 두어 부분/전체 불일치를 줄이고, ② 타일을 8방향으로 회전 증강합니다(파운데이션 모델이 정렬된 평범한 항공사진으로만 학습돼 회전에 약하기 때문 — 예: 지붕이 위, 몸체가 아래인 집만 학습됨), ③ 직전에 잘 매칭된 위치를 활용하는 시퀀셜 매칭(sequential matching)으로 후보를 좁힙니다. 이렇게 하면 "여기가 비슷하다"가 아니라 "여기와만 정렬이 맞는다"를 인식해, 어떤 타일 위에 있는지 → 6자유도 카메라 포즈까지 추정할 수 있습니다. 이것이 곧 SLAM 지도 없는 항공 VPR(Visual Place Recognition)입니다.

슬라이드 내용 정리

마지막 연구 방향에 대한 토의(Discussion about Research Directions)입니다. 연구를 두 축으로 나눕니다.

진화적 연구(Evolutionary research) — 특정 문제를 깊이 파는 전문화(Specialization)와, 더 넓은 문제로 묶는 일반화(Generalization). 혁명적 연구(Revolutionary research) — 아예 새로운 문제 정의(New problem formulation). 오른쪽에는 앞 슬라이드의 "더 좋게 만드는 법 #1~#4"가 다시 연결되어, 사전 제약 포착·문제 쪼개기·문제 키우기가 이 두 축의 구체적 사례임을 보여 줍니다.

교수님 설명

연구를 크게 두 갈래로 볼 수 있다는 마무리 토의입니다. 기존 문제를 점점 더 잘 풀어 가는 진화적 방향(전문화하거나 일반화하거나)과, 기존 틀을 벗어나 새로운 문제 자체를 정의하는 혁명적 방향입니다.

앞에서 정리한 네 가지 교훈은 대부분 진화적 연구를 잘하는 노하우(좋은 사전 정보 활용, 분할정복, 문제 확장, 시각화)에 해당하고, 마지막으로 학생들에게 던지는 화두는 "그렇다면 새로운 문제 정의는 어떻게 할 것인가"입니다. 강의를 자신의 연구 트리를 통해 얻은 일반적 교훈으로 마무리하는 대목입니다.

Part 16슬라이드 66~67

16카메라 모델 선택·캘리브레이션과 마무리

slide 66
슬라이드 66 · Take-Home Presents (연구실 공개 자료 모음)
slide 67
슬라이드 67 · Thank You! (마무리 및 연락처)
슬라이드 내용 정리

제목은 Take-Home Messages Presents — "메시지" 대신 "선물"이라고 농담조로 적은 슬라이드로, 교수님 연구실(MINT-Lab)에서 공개한 학습용 자료(GitHub 저장소)들을 소개합니다.

  • Programming Meets Mathematicsgithub.com/mint-lab/prog_meets_math (프로그래밍과 수학을 잇는 자료)
  • ML/DL Tutorialgithub.com/mint-lab/dl_tutorial (머신러닝·딥러닝 튜토리얼)
  • Computer Vision Tutorialgithub.com/mint-lab/cv_tutorial (컴퓨터 비전 튜토리얼)
  • An Invitation to 3D Visiongithub.com/mint-lab/3dv_tutorial (3차원 비전 입문)
  • Bayesian Filtering Tutorialgithub.com/mint-lab/filtering_tutorial (베이지안 필터링 튜토리얼)
교수님 설명

이 슬라이드 직전까지 교수님은 본인 연구 사례를 마저 정리했습니다. 항공/위성 영상과 드론 영상을 매칭할 때, 비전 파운데이션 모델(vision foundation model)이 보통 똑바로 선 일반 사진으로만 학습되어 있어서 회전·정렬(alignment)이 안 맞으면 같은 물체도 다르게 인식한다는 점을 지적했습니다. 그래서 입력을 여덟 방향으로 회전(rotation)시켜 글로벌 특징(global feature)을 뽑고, 멀티 스케일·오버랩과 순차 매칭(sequential matching)(직전에 잘 매칭된 구조를 이어서 활용)까지 더해 성능을 끌어올렸다고 했습니다. 이를 통해 드론이 어느 타일 위에 있는지만 알려주면 6자유도(6-DoF) 카메라 포즈까지 추정하고, 실제 위성 영상과도 정렬해 둘을 합칠 수 있었다고 정리했습니다.

이어 카메라 모델 선택(camera model selection) 이야기를 했습니다. 3차원 공간을 2차원에 투영(projection)하는 모델은 하나가 아니라 여러 가지인데, 기존 캘리브레이션(calibration) 도구들은 모델을 고정해 둔 채 보정값만 구할 뿐 어떤 투영 모델이 그 카메라에 맞는지는 고르지 못한다는 한계가 있습니다. 교수님 팀은 여러 모델로 모두 캘리브레이션을 해 본 뒤 BIC(베이지안 정보 기준, Bayesian Information Criterion) 같은 고전적 모델 선택(model selection) 기법으로 가장 적합한 카메라 모델을 자동으로 골라내도록 문제를 확장했다고 설명했습니다.

또 하나는 좋은 캘리브레이션 영상 고르기입니다. 체커보드(checkerboard) 패턴이 화면에서 크게 잡힌 영상은 잘 되지만, 작게 보이는 영상은 잘 안 됩니다. 작게 보이면 카메라/체커보드의 위치 변화와 렌즈 왜곡(lens distortion) 효과가 뒤섞여 분리 추정이 안 되기 때문입니다. 그래서 패턴이 크고 다양한 위치에 잡힌, 왜곡을 잘 표현해 줄 수 있는 양질의 데이터를 자동으로 샘플링하는 기능을 만들었다고 했습니다. 마지막으로 1시간이 다 되어 강의를 마무리하며, 이 슬라이드들은 연구실에서 공개한 학습 자료라 청중이 각자 연구에 가져가 쓸 수 있다는 점을 강조했습니다.

보충 설명

BIC가 왜 모델 선택에 쓰이나: 투영 모델을 복잡하게(파라미터를 많이) 만들수록 보정 오차(잔차)는 줄어들지만 과적합(overfitting) 위험이 커집니다. BIC는 "오차를 얼마나 줄였나"에서 "파라미터를 몇 개 썼나"에 대한 벌점(penalty)을 빼는 점수로, 데이터에 잘 맞으면서도 불필요하게 복잡하지 않은 모델을 고르게 해 줍니다. 그래서 핀홀(pinhole)·어안(fisheye) 등 여러 투영 모델 중 그 카메라에 진짜 맞는 것을 객관적 기준으로 자동 선택할 수 있습니다.

패턴이 작으면 왜 왜곡 추정이 안 되나: 렌즈 왜곡은 화면 중심에서 멀어질수록 크게 나타납니다. 체커보드가 화면 가장자리까지 크게 펼쳐져 다양한 위치를 덮어야 왜곡 계수를 안정적으로 풀 수 있는데, 패턴이 가운데에 작게만 보이면 왜곡 정보가 거의 담기지 않아 카메라 자세 변화와 구분되지 않습니다. 캘리브레이션을 할 때 "보드를 화면 구석구석 크게 채우라"고 하는 것도 같은 이유입니다.

슬라이드 내용 정리

마무리 슬라이드입니다. 큰 글씨로 Thank You!, 아래에 발표자 정보가 적혀 있습니다.

  • Sunglok Choi, Assistant Professor, Ph.D.
  • Dept. of Computer Science and Engineering, SEOULTECH(서울과학기술대학교)
  • 연락처: sunglok@seoultech.ac.kr | https://mint-lab.github.io/
교수님 설명

강의를 닫으며 교수님이 청중에게 남긴 메시지가 핵심입니다. 오늘 소개한 연구들이 듣는 사람의 연구 주제와 정확히 같은 경우는 거의 없다는 점을 인정하면서도, 자신이 문제를 어떻게 풀어왔는지를 곱씹어 보면 그 "태도와 방법"은 가져갈 만하다고 했습니다. 즉 개별 결과보다, 더 나은(넓은) 연구 공간을 만들기 위해 문제를 어떻게 정의하고 확장했는지를 공유하고 싶다는 취지입니다.

그 첫 번째 교훈을 막 꺼내려는 지점에서 이 섹션의 대본이 끝납니다. 슬라이드 66의 연구실 공개 자료(수학·ML/DL·컴퓨터 비전·3D 비전·베이지안 필터링 튜토리얼)는 청중이 직접 학습에 활용하도록 제공한 것이고, 슬라이드 67은 감사 인사와 함께 이메일·연구실 홈페이지를 안내하며 강의를 마무리합니다.

용어표 · English ↔ 한글

English
한글
의미
Grid Map / Costmap
그리드맵 / 코스트맵
공간을 격자로 표현해 이동 비용을 부여한 지도.
A* / Theta* (Any-angle path planning)
에이스타 / 세타스타(임의각 경로계획)
격자 8방향에 묶이지 않고 직선에 가까운 경로를 찾는 탐색 기법.
Localization
로컬라이제이션(위치추정)
센서로 로봇의 현재 위치·자세를 추정하는 것.
Rear axle / non-holonomic
뒷축 / 비횡슬립 운동
바퀴가 옆으로 미끄러지지 않는다는 가정과 그에 따른 기준 좌표계.
Urban Canyon
어반 캐년
고층 건물이 위성 신호를 가려 GPS 정밀도가 나빠지는 도심 구간.
Barometer as velocity sensor
기압계 수직 속도계
절대 고도 대신 기압 변화를 미분해 수직 속도를 얻는 방식.
Wheel Odometry
휠 오도메트리
바퀴 회전으로 이동을 추정 — 국소적으론 정밀하나 누적 드리프트 발생.
Visual Odometry / Optical Flow
비주얼 오도메트리 / 옵티컬 플로우
영상 속 움직임 흐름으로 카메라·로봇의 이동을 추정.
Scale Ambiguity
스케일 모호성
단안 카메라에서 공간 크기와 이동 크기가 커플되어 구분 불가한 문제.
One-point RANSAC
원포인트 RANSAC
평면 운동 가정으로 최소 대응점만으로 모션을 빠르게 추정하는 기법.
Visual SLAM
비주얼 슬램
카메라로 동시에 지도를 만들고 자기 위치를 추정하는 기술.
Cross-view Matching
크로스뷰 매칭
시점이 다른 드론 영상과 위성지도를 대응시켜 위치를 찾는 것.
Global vs Local Features
글로벌/로컬 피처
영상 전체 요약 vs 국소 특징점 — 매칭 속도와 정확도의 트레이드오프.
Camera Calibration / BIC
카메라 캘리브레이션 / BIC
투영 모델의 파라미터를 추정하고 후보 모델을 BIC로 선택하는 과정.

스스로 점검

  1. 그리드맵에서 8방향 확장만 쓰면 왜 직선 경로가 지그재그가 되고 여러 경로의 비용이 똑같아지는지 설명할 수 있는가?
  2. GPS를 로봇 센터가 아닌 뒷축(또는 앞)에 달았을 때 위치를 보정하려면 왜 방향각 세타가 필요한가?
  3. GPS는 왜 평면 오차보다 수직 오차가 크며, 어반 캐년에서 무슨 일이 일어나는가?
  4. 기압계를 '거리계'가 아니라 '속도계'로 쓰면 드리프트 문제가 왜 사라지는가?
  5. 단안 카메라의 스케일 모호성이란 무엇이고, 지면 제약으로 어떻게 이동 스케일을 복원하는가?
  6. 같은 결과(코드)라도 휴리스틱을 포뮬레이션으로 설득하는 것이 왜 논문 가치를 바꾸는가?
  7. GPS-denied 상황에서 드론-위성지도 크로스뷰 매칭의 어려움과, 멀티스케일·회전 증강으로 무엇을 보완하는가?