locusrobotics/fuse

The fuse stack provides a general architecture for performing sensor fusion live on a robot. Some possible applications include state estimation, localization, mapping, and calibration.

解决的问题

提供一个通用的架构,用于在机器人上执行实时传感器融合,简化状态估计、定位、建图和校准等任务。开发者可以专注于建模机器人和传感器,而无需花费精力处理将不同传感器模型连接成可运行代码所需的复杂集成工作。

工作原理

fuse 是一个使用非线性最小二乘优化(通过 Google 的 Ceres Solver 实现)来确定机器人最可能状态的 ROS 框架。它通过插件化系统运行:

  1. 传感器模型:接收原始数据并为优化器生成约束(数学误差项)。
  2. 运动模型:在不同时间戳之间生成约束以连接状态,尤其适用于传感器异步工作的情况。
  3. 优化器:将约束和变量收集到图中,并计算每个状态变量的最优值。
  4. 发布者:获取优化后的状态值,并将派生量发布回 ROS 主题。

适用人群

需要一个灵活、可扩展的系统,以实时融合来自多个传感器(如轮式编码器、激光雷达)的数据,来估计机器人位姿或校准系统参数的机器人开发者。

主要亮点

  • 插件化架构:传感器模型、运动模型和发布者均为插件,便于替换或共享。
  • 异步支持:通过运动模型在约束图中弥合不同频率和时钟的传感器之间的间隙,支持异步传感器。
  • 可扩展的状态变量:支持自定义变量定义,超出标准的 2D/3D 位置、姿态和速度之外。
  • 在线校准:能够与机器人位姿同时估计变化的系统参数(如轮径磨损)。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目