Git/GitHub

Git은 거의 모든 SLAM 연구 및 산업 코드에서 사용되는 버전 관리 시스템이며, GitHub은 그 코드가 존재하는 곳입니다. SLAM은 유독 오픈소스 중심적입니다 — 이후 레벨에서 공부하게 될 시스템들(ORB-SLAM3, VINS-Fusion, OpenVINS, DSO 등 수백 가지)은 모두 GitHub 저장소이며, 여러분의 일상적인 작업 흐름은 이들을 클론하고, 빌드하고, 수정하는 것을 중심으로 돌아가게 됩니다.

익숙해져야 할 핵심 Git 기술들:

앞으로 수백 번은 입력하게 될 클론 패턴입니다:

git clone --recursive https://github.com/<org>/<slam-system>.git
cd <slam-system>
git checkout <tag-from-the-paper>       # pin the exact version being reported
git submodule update --init --recursive # in case the checkout moved submodules

그리고 Git을 배운 모든 노력을 한 번에 보상해주는 디버깅 패턴 — 데이터셋 지표에 대한 자동화된 이분 탐색(bisection)입니다:

git bisect start
git bisect bad HEAD          # accuracy is broken here
git bisect good <old-tag>    # ...and was fine here
git bisect run ./scripts/check_ate.sh   # exits non-zero when ATE exceeds a threshold

Git은 히스토리를 순회하며 각 단계에서 여러분의 평가 스크립트를 실행하고, 궤적을 나빠지게 만든 정확한 커밋을 알려줍니다.

GitHub 쪽에서는:

실험의 재현성 관리

SLAM 작업을 위한 실용적인 습관은 모든 실험을 커밋으로 취급하는 것입니다. 추정 시스템은 아주 작은 파라미터 변화에도 민감하며, “그 궤적을 얻었을 때 코드가 정확히 어떤 상태였는가?”에 답할 수 있는 능력이 재현 가능한 연구와 구전(folklore)을 구분합니다. 구체적으로는:

SLAM에서의 의미

Git 없이는 현대 SLAM에 참여할 수 없습니다: 시스템을 얻는 것, 모든 벤치마크 수치 뒤의 정확한 코드 버전을 추적하는 것, 업스트림에 수정을 기여하는 것, 공유 코드베이스에서 협업하는 것 모두 Git을 통해 이루어집니다. 버전 관리 규율은 과학적 신뢰성과도 직접 연결됩니다 — 궤적 지표는 그것을 만들어낸 코드 상태를 복원할 수 있을 때만 의미가 있습니다.

관련 문서