Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

Keyframe

  • 又称: key frame, KF
  • 类别: State estimation & navigation › Localisation
  • 标签: slam, visual-odometry, mapping, state-estimation, bundle-adjustment

SLAM 或建图系统选出并连同其位姿和观测一起保留、供后续优化使用的一帧,而其他大多数帧只被短暂使用后即被丢弃。

定义

关键帧(Keyframe)是 SLAM、里程计或建图系统决定保留的一小组相机图像或传感器扫描中的一帧。每一个传入的帧都会用于跟踪传感器的运动,但只有关键帧会连同其估计位姿及其观测(例如图像特征、深度或激光雷达点)一起被存储。随后,地图和轨迹利用这些关键帧而不是每一帧来进行优化。这种做法由 Georg Klein 和 David Murray 于 2007 年提出的 PTAM 确立为实时视觉 SLAM 的方法,PTAM 把跟踪和建图拆分到不同的线程中;之后它在 ORB-SLAM 等系统中得到了进一步发展。

创建新关键帧的规则是一项核心设计选择。常见的标准包括距上一关键帧的时间或距离、足以三角化新点的视差,以及当前视野与上一关键帧重叠程度的下降,例如用共享特征或共享地图体素来衡量。系统还会剔除(cull)已变得冗余的关键帧。关键帧太少,跟踪会丢失或地图会稀疏;太多,优化会变慢却不会增加信息。

关键帧使基于优化的 SLAM 在计算上变得可承受。光束法平差和位姿图优化都在关键帧上运行,通常只在一个局部窗口内的关键帧上运行;回环检测则把新帧与存储的关键帧进行比较。在神经隐式建图和稠密建图系统中,训练地图时会回放一组关键帧,这样在用新帧更新网络或特征网格时,早先观测到的区域不会被遗忘。

为何重要

传感器产生的帧远远多于机器人能实时优化的数量。关键帧选择决定保留哪些信息,因此它直接影响以其为基础的每个 SLAM 系统的地图质量、跟踪鲁棒性、内存占用和计算预算。

主要应用

  • 视觉 SLAM 和视觉惯性 SLAM 中的局部光束法平差
  • 在存储关键帧的数据库中进行回环检测
  • 在神经隐式建图和稠密建图中回放过去的观测
  • 跟踪丢失后的重定位
  • 为长期定位构建轻量级地图

实际应用

一个团队在一套以每秒 30 帧运行的手持设备上运行视觉惯性 SLAM 系统,他们发现行走时每秒只会创建几个关键帧,而站着不动时几乎不创建。当他们走进一条缺少特征的走廊时,跟踪变得脆弱;降低重叠阈值,让关键帧更早被插入,有助于保持足够多的三角化点。对于一个神经激光雷达建图系统,他们设定的关键帧规则是:当新扫描与上一关键帧的重叠低于某个阈值时就保留它;每个优化步骤都从当前帧和一部分选出的存储关键帧中采样光线。在长时间运行中,他们会关注关键帧的数量,因为一个无上限的集合最终会拖慢优化。

常见误解

  • 每一帧都会成为地图的一部分 — 大多数帧只用于跟踪;只有选出的关键帧才会被存储和优化
  • 关键帧越多,地图总是越好 — 冗余关键帧增加计算量却几乎不带来新信息,这就是系统要剔除它们的原因
  • SLAM 中的关键帧与动画中的关键帧是一回事 — 在 SLAM 中,它是一个带有位姿的、被存储的传感器观测,而不是用于插值的手动设定姿态

谁需要了解

  • SLAM 和视觉里程计工程师
  • 神经和稠密 3D 建图系统的开发者
  • 无人机和移动机器人导航团队
  • 学习运动恢复结构的计算机视觉学生

相关技术

  • ORB-SLAM
  • PTAM
  • 光束法平差(Bundle Adjustment)
  • 视觉惯性里程计(Visual-Inertial Odometry)
  • 视觉词袋(Bag of Visual Words)

相关术语

  • SLAM
  • Visual Odometry
  • Pose Graph Optimization
  • Neural Implicit Representation
  • Neural Radiance Field
  • Loop Closure

相关项目

  • LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
  • oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
  • Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
  • OpenDroneMap: Open-source photogrammetry toolkit that turns drone images into maps and 3D models
  • FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO
  • DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。