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>       # 固定到论文报告所用的确切版本
git submodule update --init --recursive # 以防 checkout 移动了子模块

以及一次性回本所有 Git 学习投入的调试模式——针对数据集指标的自动化二分查找:

git bisect start
git bisect bad HEAD          # 这里精度已经出问题
git bisect good <old-tag>    # ……而这里还是好的
git bisect run ./scripts/check_ate.sh   # 当 ATE 超过阈值时以非零状态退出

Git 会遍历历史,在每一步运行你的评估脚本,并交给你导致轨迹回退的确切提交。

在 GitHub 这一侧:

实验的可复现性卫生习惯

对 SLAM 工作而言一个务实的习惯是:把每一次实验都当作一个提交来对待。估计系统对微小的参数变化很敏感,能够回答”我得到那条轨迹时代码到底是什么样子”这个问题,正是可复现研究与传说轶事之间的分界线。具体做法:

对SLAM的意义

没有 Git,你无法参与现代 SLAM 研究:获取系统、追踪每一个基准数字背后的确切代码版本、向上游贡献修复,以及在共享代码库上协作,这些全都要通过它来完成。版本管理的严谨性也与科研可信度直接相关——只有当产生轨迹指标的代码状态是可恢复的,这些指标才真正有意义。

相关条目