다중 센서 캘리브레이션
현대 SLAM 시스템은 단일 센서에 의존하는 경우가 드뭅니다. 카메라-IMU 리그, 카메라-LiDAR 차량, 또는 카메라-IMU-LiDAR-휠을 모두 갖춘 플랫폼은 센서들이 서로 어떻게 관계되어 있는지를 정확히 알아야만 작동합니다. 다중 센서 캘리브레이션은 두 가지를 추정합니다:
- 외부 캘리브레이션: 센서 A와 센서 B의 프레임 사이의 강체 변환 (예: IMU 대비 카메라가 어디에 위치하는지).
- 시간 캘리브레이션: 센서 클록 사이의 시간 오프셋. 센서는 서로 다른 지연으로 데이터에 타임스탬프를 찍으며, 빠르게 움직이는 플랫폼에서는 단 몇 밀리초의 오프셋도 치명적입니다.
가장 흔한 센서 쌍과 도구:
| 센서 쌍 | 일반적인 접근법 | 도구 |
|---|---|---|
| 카메라-IMU | 이미지와 관성 데이터에 공동으로 적합시킨 연속 시간 B-스플라인 궤적; 외부 파라미터, 시간 오프셋, IMU 잡음/바이어스 매개변수를 추정 | Kalibr (Furgale et al., 2013) |
| 카메라-LiDAR | 타깃 기반 (두 센서 모두에 보이는 체커보드 코너) 또는 타깃 없는 방법 (이미지와 포인트 클라우드 사이의 평면/에지 정렬) | Autoware 캘리브레이션 도구, 그리고 여러 연구용 툴킷 |
| 다중 카메라 | 캘리브레이션 타깃(AprilGrid/체커보드)의 겹치는 시야 | Kalibr 멀티캠 |
몇 가지 실용적인 참고 사항. 카메라-IMU 캘리브레이션은 *가진(excitation)*이 필요합니다: 외부 파라미터와 시간 오프셋이 관측 가능해지도록 리그를 모든 축에서 적극적으로 회전시키고 이동시켜야 합니다. 카메라-LiDAR 캘리브레이션은 두 센서가 동일한 기본 요소를 직접 관측하지 않기 때문에 더 어렵습니다 — LiDAR는 기하학을 보고, 카메라는 외형을 봅니다 — 따라서 방법들은 평면, 에지, 반사 타깃 같은 공유된 구조를 정렬합니다. 마지막으로, 캘리브레이션은 한 번으로 끝나는 사건이 아닙니다: 마운트는 휘어지고, 온도는 변하며, 좋은 VIO/SLAM 시스템(예: VINS-Mono, OpenVINS)은 온라인으로 외부 파라미터와 시간 오프셋을 정제합니다.
추정이 실제로 작동하는 방식
핸드-아이 형식화. 고전적인 시작점은 핸드-아이 캘리브레이션 방정식입니다. 리그를 일련의 자세를 통해 움직이면, 센서 A는 자신의 상대 운동 를 측정하고(예: 체커보드로부터의 카메라 자세) 센서 B는 자신의 를 측정합니다(예: 적분된 자이로 회전). 가 고정된 미지의 외부 파라미터라면, 모든 운동 쌍은 다음을 만족해야 합니다
왜냐하면 “A의 운동을 거쳐 리그를 가로지르는 것”은 “리그를 가로질러 B의 운동을 거치는 것”과 같아야 하기 때문입니다. 여러 운동 쌍을 쌓으면 풀 수 있는 시스템이 됩니다 — 먼저 회전(쿼터니언 또는 회전 행렬 형태의 선형 문제), 그다음 이동. 이것이 바로 가진이 중요한 이유입니다: 모든 운동이 순수한 이동이라면 의 회전 부분은 방정식에 전혀 나타나지 않으며, 단일 축에 대한 회전은 하나의 자유도를 관측 불가능하게 남깁니다.
연속 시간 공동 최적화 (Kalibr). 이산적인 자세 쌍은 정보를 낭비하며 비동기 센서를 잘 다루지 못합니다. Kalibr는 대신 리그 궤적을 연속 시간 B-스플라인 로 표현하며, 이는 임의의 타임스탬프에서 평가할 수 있고 — 미분하여 각속도와 각가속도를 얻을 수 있습니다. 그런 다음 하나의 큰 비선형 최소제곱 문제가 다음을 공동으로 최소화합니다:
- 각 이미지 타임스탬프에서 캘리브레이션 타깃 코너의 재투영 오차,
- 스플라인에서 유도된 가속도와 측정된 가속도(중력과 바이어스 포함) 사이의 가속도계 잔차,
- 스플라인에서 유도된 각속도와 측정된 각속도 사이의 자이로스코프 잔차,
스플라인, 외부 파라미터 , 중력 방향, IMU 바이어스, 그리고 스플라인을 에서 평가함으로써 단순히 도입되는 시간 오프셋 에 대해서입니다. 이것이 연속 시간 형식화가 시간 캘리브레이션을 그토록 자연스럽게 다루는 이유입니다.
캘리브레이션 검증하기. 확인하지 않은 캘리브레이션은 절대 신뢰하지 마십시오. 유용한 정합성 검사: 캘리브레이션 리포트의 재투영/잔차 플롯(잔차는 구조 없는 백색이어야 하며, 구조화되어 있으면 안 됩니다); LiDAR 점을 이미지에 투영하여 깊이 에지가 강도 에지와 정렬되는지 확인; VIO를 실행하며 추정기의 온라인 외부 파라미터/시간 오프셋 상태가 캘리브레이션된 값에서 표류하는지 관찰; 그리고 자로 리그를 직접 측정하는 것 — 5cm 리그에서 카메라-IMU 이동이 30cm로 나온다면, 최적화기가 뭐라고 하든 잘못된 것입니다.
흔한 함정
- 불충분한 가진 — 매끄럽고 느리고 평면적인 운동은 외부 파라미터와 시간 오프셋을 약하게 관측 가능한 상태로 남깁니다; Kalibr는 여전히 값을 반환하지만, 낙관적인 공분산과 함께 나쁜 값을 반환할 뿐입니다.
- 부실한 시간 동기화 가정 — 하드웨어 트리거링과 공유 클록은 어떤 소프트웨어적 해결책보다 우수합니다; 소프트웨어 타임스탬프를 써야 한다면 를 캘리브레이션하고 드라이버/OS 부하에 따라 변할 것을 예상해야 합니다.
- 롤링 셔터 무시 — 판독 중의 빠른 회전은 특징을 왜곡합니다; 캘리브레이션에는 글로벌 셔터 카메라를 사용하거나 롤링 셔터를 인식하는 모델을 사용해야 합니다.
- 한 번 캘리브레이션하고 영원히 배포 — 진동, 열 순환, 재장착은 외부 파라미터를 바꿉니다; 기계적 변경 후에는 재캘리브레이션하고 추정기가 온라인으로 정제하도록 두어야 합니다.
- 흐릿하거나 휘어지는 타깃 — 캘리브레이션은 타깃의 품질만큼만 좋습니다: AprilGrid를 단단하게(유리/알루미늄) 인쇄하여 장착하고, 완전히 보이고 초점이 맞도록 유지하며, 관측값으로 이미지 전체를 덮어야 합니다.
SLAM에서의 의미
모든 센서 융합 SLAM 형식화 — VIO, LiDAR-비전-관성 오도메트리, RADAR 융합 — 는 측정값을 공통 프레임에서 공통 시간으로 표현할 수 있다고 가정합니다. 외부 파라미터나 시간 오프셋의 오차는 최적화기가 자세와 바이어스로 흡수하려 드는 체계적이고 모델링되지 않은 잔차로 나타나며, 어떤 튜닝으로도 고칠 수 없는 드리프트와 비일관성을 만들어냅니다. 캘리브레이션을 올바르게 해내는 것(그리고 이를 검증하는 방법을 아는 것)은 보통 실제 SLAM 배포의 첫 단계입니다.