传感器融合
引言
传感器融合(Sensor Fusion)是将来自多个传感器的数据加以综合处理,以获得比任意单一传感器更准确、更可靠的状态估计的技术。在无人机自主飞行、自动驾驶汽车、人形机器人等系统中,传感器融合是实现安全、鲁棒感知的基础。单一传感器受限于自身物理原理,存在固有缺陷,而融合互补的传感器可大幅提升系统整体性能。
为什么需要传感器融合
单一传感器的局限性
现实机器人系统依赖多种传感器,但每种传感器都有固有的缺陷:
单目/双目相机
- 依赖环境光照,夜间或强逆光下性能急剧下降
- 遮挡问题:前景物体遮挡背景目标,造成感知盲区
- 无法直接测量速度,仅能从图像序列中估算运动
- 运动模糊(Motion Blur)在高速场景下严重影响特征提取
全球定位系统(Global Positioning System, GPS)
- 城市峡谷(Urban Canyon)中信号被建筑物遮挡,产生多径效应(Multipath Effect)
- 室内环境无信号,无法使用
- 民用 GPS 精度约 2–5 m,更新频率仅 1–10 Hz,不满足高动态控制需求
- 信号延迟可达数百毫秒,无法用于实时反馈控制
惯性测量单元(Inertial Measurement Unit, IMU)
- 加速度计和陀螺仪存在零偏(Bias)和随机游走(Random Walk)噪声
- 通过积分估计速度和位置时,误差随时间平方增长(二次积分漂移)
- 温度变化导致零偏漂移(Thermal Drift),需要温度补偿
- 高采样率(100–1000 Hz)带来大量数据,但长期精度无保证
激光雷达(Light Detection and Ranging, LiDAR)
- 雨、雾、雪等恶劣天气下激光束被散射,有效测距距离大幅下降
- 无法感知颜色和纹理信息
- 稀疏点云对细小物体(如行人腿部)的检测率低
- 高端多线激光雷达成本高昂(数千至数万美元)
融合后的互补优势
传感器融合的核心思想是利用不同传感器在时间域、频率域、精度域上的互补性:
| 传感器组合 | 互补关系 | 典型应用 |
|---|---|---|
| IMU + GPS | IMU 高频(>100 Hz)填补 GPS 低频(1–10 Hz)间隙;GPS 校正 IMU 长期漂移 | 无人机惯性导航 |
| 相机 + IMU | 相机提供绝对尺度和纹理;IMU 在快速运动中辅助位姿预测 | 视觉惯性里程计(VIO) |
| LiDAR + 相机 | LiDAR 提供精确深度;相机提供颜色和语义 | 自动驾驶 3D 目标检测 |
| IMU + 编码器 | IMU 感知姿态变化;编码器提供轮式里程计 | 地面移动机器人 |
| LiDAR + IMU | LiDAR 提供高精度地图匹配;IMU 提供初始位姿预测 | LiDAR SLAM |
典型应用场景
- 无人机(Unmanned Aerial Vehicle, UAV):IMU + 气压计 + GPS + 光流传感器融合,实现室内外无缝切换的自主悬停
- 自动驾驶汽车:LiDAR + 相机 + 毫米波雷达 + GPS/RTK 融合,满足 L4 级别自动驾驶的感知需求
- 人形机器人(Humanoid Robot):关节编码器 + IMU + 足底力传感器融合,实现稳定的动态平衡控制
融合层级架构
传感器融合按处理层次分为三个级别,各有适用场景和权衡取舍。
数据级融合(Low-level Fusion)
数据级融合(也称原始数据级融合)在传感器原始数据层面直接进行融合,不经过特征提取或决策步骤。
工作流程:原始传感器数据 → 同步与配准 → 融合处理 → 后续处理
典型示例:双目视差计算
双目相机左右图像在像素级进行立体匹配(Stereo Matching),计算视差图(Disparity Map)后恢复深度:
其中 为焦距(像素单位), 为基线距离(m), 为视差(像素)。这是典型的数据级融合:两路图像数据在像素级别完成融合。
另一典型示例:LiDAR 与相机的点云着色
将相机采集的 RGB 图像投影到 LiDAR 点云上,为每个三维点附加颜色属性,属于数据级融合。
特点
- 保留原始数据的最大信息量,融合精度高
- 对传感器时间同步和空间标定要求极高
- 计算量大,通常需要专用硬件加速
特征级融合(Feature-level Fusion)
特征级融合先从各传感器数据中独立提取特征(如边缘、角点、语义标签),再在特征空间中进行融合。
工作流程:原始传感器数据 → 各自特征提取 → 特征对齐与融合 → 联合推理
典型示例:LiDAR + 相机 3D 目标检测
- 相机提取图像特征(ResNet 骨干网络输出的特征图)
- LiDAR 提取点云特征(PointNet++ 或体素化后的稀疏卷积特征)
- 两路特征在鸟瞰图(Bird's Eye View, BEV)空间对齐后融合,输入 3D 检测头
代表算法:BEVFusion(MIT)、PointPainting、MVP(Multi-view Pseudo-labeling)
特点
- 比数据级融合计算量小,因特征维度远低于原始数据
- 具备一定的传感器缺失鲁棒性(缺失一路传感器时可部分降级运行)
- 特征对齐需要精确的外参标定
决策级融合(Decision-level Fusion)
决策级融合让各传感器独立完成推理(如检测、分类),再对各自的输出结果进行投票或加权融合。
工作流程:原始传感器数据 → 各自独立推理 → 决策融合(投票/加权/D-S 证据理论)
典型示例:多雷达目标检测投票
三个方向的毫米波雷达各自输出目标置信度,采用多数投票(Majority Voting)或加权平均得到最终检测结果。
特点
- 各模块高度解耦,易于独立开发和替换
- 对单一传感器故障具有最强鲁棒性
- 信息损失最大:原始数据经过推理压缩后,大量细节信息已丢失
三级融合架构对比
| 指标 | 数据级融合 | 特征级融合 | 决策级融合 |
|---|---|---|---|
| 信息保留量 | 高 | 中 | 低 |
| 融合精度 | 最高 | 较高 | 较低 |
| 计算开销 | 大 | 中 | 小 |
| 同步要求 | 严格(μs 级) | 中等(ms 级) | 宽松(帧级) |
| 传感器异构性支持 | 弱(需相同数据格式) | 中 | 强 |
| 典型场景 | 双目深度、点云着色 | BEVFusion、VIO | 冗余系统表决 |
概率估计框架
传感器融合的理论基础是概率论与贝叶斯统计,将状态估计问题纳入统一的概率推断框架。
贝叶斯估计基础
设机器人状态为 (如位姿、速度),传感器观测为 。贝叶斯后验估计(Bayesian Posterior Estimation)为:
其中:
- 为状态先验概率(Prior),表示融合观测前对状态的信念
- 为似然函数(Likelihood),表示在状态 下观测到 的概率(由传感器模型决定)
- 为后验概率(Posterior),融合观测后的更新信念
最大后验估计(Maximum A Posteriori, MAP)求解:
递归贝叶斯滤波框架
对于时序状态估计,递归贝叶斯滤波(Recursive Bayesian Filter)分两步交替执行:
预测步(Prediction Step)
利用运动模型 (状态转移概率),将上一时刻的后验传播到当前时刻,得到当前先验。
更新步(Update Step)
利用当前观测 和传感器模型 更新先验,得到后验。
卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波、粒子滤波均是该框架在不同假设下的具体实现。
卡尔曼滤波
卡尔曼滤波(Kalman Filter, KF)是线性高斯系统下递归贝叶斯滤波的最优解,由 Rudolf E. Kálmán 于 1960 年提出。
系统模型
状态转移方程(运动模型):
观测方程(传感器模型):
其中:
- :k 时刻系统状态向量
- :状态转移矩阵(State Transition Matrix)
- :控制输入矩阵
- :控制输入向量
- :过程噪声,协方差矩阵为
- :观测向量
- :观测矩阵(Observation Matrix)
- :观测噪声,协方差矩阵为
预测步
利用上一时刻后验 和 计算当前先验:
先验状态预测:
先验协方差预测:
更新步
接收到观测 后,计算卡尔曼增益并更新状态:
卡尔曼增益(Kalman Gain):
状态更新(后验状态估计):
其中 称为创新量(Innovation)或残差(Residual)。
后验协方差更新:
直觉理解
卡尔曼增益 的物理意义是:在预测不确定性和观测不确定性之间动态权衡。
- 当 (传感器非常精确):,完全信任观测
- 当 (运动模型非常精确):,完全信任预测
适用条件
- 系统为线性(、 为常数矩阵)
- 噪声为高斯分布(,)
- 噪声不相关( 与 独立,且不同时刻独立)
满足以上条件时,卡尔曼滤波给出均方误差(Mean Squared Error, MSE)意义下的最优估计。
扩展卡尔曼滤波
扩展卡尔曼滤波(Extended Kalman Filter, EKF)将标准卡尔曼滤波推广到非线性系统,通过局部线性化处理非线性运动模型和观测模型。
非线性系统模型
其中 和 为非线性函数。
Jacobian 矩阵线性化
EKF 在当前估计点处对 和 进行一阶泰勒展开(First-order Taylor Expansion),计算 Jacobian 矩阵:
过程 Jacobian(在 处求偏导):
观测 Jacobian(在 处求偏导):
EKF 预测与更新
预测步:
更新步(与 KF 类似,但用 Jacobian 替换线性矩阵):
典型应用:IMU + GPS 融合
状态向量(以二维平面为例):
- IMU 测量加速度 和角速度 ,通过非线性运动学方程更新状态(涉及三角函数,非线性)
- GPS 直接测量位置 ,观测方程为线性
EKF 以 IMU 频率(如 200 Hz)运行预测步,GPS 数据到达(如 10 Hz)时执行更新步,实现高频低延迟的位姿估计。
EKF 的局限性
- Jacobian 矩阵需要解析推导,工程实现复杂,对模型变更的适应性差
- 一阶线性化仅在局部准确,对强非线性系统(如大角度旋转、高速机动)精度下降明显
- 初始估计偏差较大时,线性化点不准确,滤波器可能发散
无迹卡尔曼滤波
无迹卡尔曼滤波(Unscented Kalman Filter, UKF)由 Julier 和 Uhlmann 于 1997 年提出,用确定性 Sigma 点集代替 EKF 的局部线性化,无需计算 Jacobian 矩阵。
无迹变换核心思想
无迹变换(Unscented Transform, UT):与其线性化非线性函数,不如用一组精心选取的确定性采样点(Sigma 点)近似高斯分布,将这些点通过真实非线性函数传播,再从传播后的点集重新估计均值和协方差。
对于 维状态 ,选取 个 Sigma 点:
第 0 个 Sigma 点(均值点):
第 个 Sigma 点(,正方向):
第 个 Sigma 点(,负方向):
其中 为缩放参数, 表示矩阵平方根的第 列。
Sigma 点权重
均值权重和协方差权重分别为:
常用参数:,,(适用于高斯分布)。
UKF 预测步
- 由 和 生成 Sigma 点
- 将每个 Sigma 点通过非线性函数传播:
- 加权重构先验均值和协方差:
UKF 更新步
- 将先验 Sigma 点通过观测模型传播:
- 加权重构预测观测均值和协方差:
- 计算 UKF 增益并更新:
UKF 与 EKF 对比
| 特性 | EKF | UKF |
|---|---|---|
| 线性化方法 | 一阶 Taylor 展开(Jacobian) | Sigma 点无迹变换 |
| 精度 | 一阶精度 | 二阶精度(高斯假设下) |
| Jacobian 要求 | 必须解析推导或数值近似 | 不需要 |
| 计算量 | 矩阵运算 | (稍大于 EKF) |
| 强非线性适应性 | 较差 | 较好 |
| 实现复杂度 | 中(需推导 Jacobian) | 较低(仅需实现非线性函数) |
粒子滤波
粒子滤波(Particle Filter, PF)又称序贯蒙特卡洛(Sequential Monte Carlo, SMC)方法,用大量随机采样的粒子(Particles)近似任意概率分布,突破了卡尔曼系列滤波器对高斯假设的限制。
基本原理
用 个粒子 表示后验分布,其中 为归一化权重():
序贯重要性采样
从建议分布(Proposal Distribution) 采样并更新权重。
最常用的建议分布为转移先验 ,此时权重更新简化为:
即权重正比于当前观测似然与上一时刻权重之积。
归一化:
粒子退化与重采样
长时间运行后,大多数粒子权重趋近于零,仅少数粒子承载有效信息,称为粒子退化(Particle Degeneracy)。用有效粒子数(Effective Sample Size, ESS)监测退化程度:
当 时触发重采样(Resampling):按权重从当前粒子集有放回地抽取 个粒子,重置权重为 。常用重采样算法:
- 系统采样(Systematic Resampling):最常用,计算量 ,方差最小
- 多项式采样(Multinomial Resampling):最直观,计算量
- 残差采样(Residual Resampling):介于两者之间
粒子滤波优势与局限
优势:
- 能处理任意非线性、非高斯系统
- 天然支持多假设状态(Multi-modal Distribution),适合机器人绑架(Kidnapped Robot)问题
- 实现简单,无需推导 Jacobian
局限:
- 粒子数量 与状态空间维度呈指数关系(维数灾难),高维状态时计算量爆炸
- 大量粒子带来高内存和计算开销
典型应用:FastSLAM
FastSLAM 将 SLAM 问题分解为机器人路径估计(粒子滤波)和地图特征估计(每个粒子维护独立的 EKF),实现了对非高斯噪声下 SLAM 问题的有效求解。
典型融合场景
IMU + GPS 惯性导航
这是工程中最经典的传感器融合场景,广泛应用于无人机飞控(如 ArduPilot、PX4)和地面无人车。
融合设计:
- IMU 高频积分(200–1000 Hz):利用加速度计和陀螺仪积分估计位置、速度、姿态。短期精度高,但存在累积漂移
- GPS 低频校正(1–10 Hz):提供全局位置绝对参考,校正 IMU 积分漂移
- 融合算法:EKF 或 UKF,以 IMU 频率运行预测步,GPS 触发更新步
状态向量(15 维):
其中 为位置, 为速度, 为欧拉角, 和 分别为加速度计和陀螺仪的零偏。
LiDAR + 相机 3D 目标检测
BEVFusion(俯视图特征融合)
BEVFusion 由 MIT Han Lab 提出,将相机图像特征和 LiDAR 点云特征统一投影到鸟瞰图(Bird's Eye View, BEV)坐标系进行融合:
- 相机分支:多视角图像经骨干网络提取特征,通过深度预测网络(Lift-Splat-Shoot)提升为 BEV 特征
- LiDAR 分支:点云体素化后经稀疏卷积网络提取 BEV 特征
- BEV 特征通道拼接(Concatenation)后输入融合模块,送入 3D 检测头
PointPainting(点云着色)
先用相机图像的语义分割结果(各类别置信度)为 LiDAR 点云中每个点附加语义标签,再将着色后的点云送入 3D 点云检测器。此方法属于数据级 + 特征级混合融合。
视觉-惯性里程计
视觉-惯性里程计(Visual-Inertial Odometry, VIO)结合相机和 IMU 估计机器人相对运动,是无人机和手持设备定位的核心技术。
松耦合 VIO(Loosely-Coupled VIO)
相机和 IMU 分别独立处理,相机输出位姿增量,IMU 输出姿态预积分量,两者在 EKF 层面融合。实现简单,但精度低于紧耦合方案。
紧耦合 VIO(Tightly-Coupled VIO)
相机特征观测和 IMU 测量在同一优化框架中联合处理:
其中 为 IMU 预积分残差, 为特征重投影误差。
代表算法:
- MSCKF(Multi-State Constraint Kalman Filter):基于 EKF,维护滑动窗口内的相机位姿集合,通过零空间投影边缘化路标点
- VINS-Mono:香港科技大学开源的单目 VIO,支持回环检测,采用因子图优化(Factor Graph Optimization)
时间同步与空间标定
传感器融合的精度上限由时间同步(Temporal Synchronization)和空间标定(Spatial Calibration)的精度决定。
时间同步
硬件触发(Hardware Triggering)
- 通过专用触发信号(如 GPIO 脉冲、PPS 信号)同步启动多个传感器采集
- 精度可达微秒(μs)级,是精度要求最高场景(如 LiDAR + 相机同步)的首选
- 典型方案:GNSS 接收机输出 PPS 信号驱动相机外触发,同时给 IMU 打时间戳
软件时间戳对齐(Software Timestamp Alignment)
- 各传感器各自记录系统时间戳,后处理时通过插值(Interpolation)或最近邻(Nearest-Neighbor)对齐
- 受操作系统调度抖动(Jitter)影响,精度通常在毫秒(ms)级
- 适用于对实时性和精度要求不极端的场景(如 GPS + 低频 IMU)
时间偏移估计
当无法硬件触发时,可将传感器间的时间偏移 纳入标定参数,在线估计:
Kalibr 工具支持相机-IMU 时间偏移在线标定。
空间标定(外参标定)
相机内参标定
利用棋盘格(Checkerboard)靶标,通过 Zhang 标定法(Zhang's Method)估计相机内参矩阵 和畸变系数。
相机-IMU 外参标定(Kalibr)
Kalibr 是苏黎世联邦理工(ETH Zurich)开源的多传感器标定工具,支持:
- 相机内参标定(多种靶标)
- 相机-相机外参标定
- 相机-IMU 时空外参标定(包含时间偏移 )
标定时需对靶标进行充分激励(平移 + 旋转),覆盖多个姿态以提高可观性(Observability)。
LiDAR-相机外参标定(ACSC)
ACSC(Automatic Calibration for Solid-state LiDAR Camera System)利用专用标定板,通过最小化 LiDAR 平面点投影到相机图像的平面重投影误差来估计外参旋转矩阵 和平移向量 :
其中 为相机投影函数, 为 LiDAR 点, 为对应图像特征, 为点到直线距离。
ROS 中的传感器融合工具
机器人操作系统(Robot Operating System, ROS)提供了丰富的传感器融合软件包,可快速搭建原型系统。
robot_localization 包
robot_localization 是 ROS 中最常用的多传感器状态估计包,提供 EKF 节点(ekf_localization_node)和 UKF 节点(ukf_localization_node),支持任意数量的传感器输入。
支持的输入消息类型:
nav_msgs/Odometry(轮式里程计、VIO 输出)sensor_msgs/Imu(IMU 加速度、角速度、姿态)geometry_msgs/PoseWithCovarianceStamped(GPS 转换后的位姿)
示例配置文件(ekf_config.yaml):
ekf_filter_node:
ros__parameters:
frequency: 50.0 # 滤波器运行频率(Hz)
sensor_timeout: 0.1 # 传感器超时时间(s)
two_d_mode: false # 是否限制在 2D 平面
# 状态变量:[x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az]
# 各传感器的融合配置(true 表示融合该变量)
odom0: /wheel_odom
odom0_config: [true, true, false, # x, y, z
false, false, true, # roll, pitch, yaw
true, true, false, # vx, vy, vz
false, false, true, # vroll, vpitch, vyaw
false, false, false] # ax, ay, az
imu0: /imu/data
imu0_config: [false, false, false,
true, true, true,
false, false, false,
true, true, true,
true, true, false]
imu0_remove_gravitational_acceleration: true
odom0_relative: true
imu0_differential: false
imu_filter_madgwick 包
imu_filter_madgwick 使用 Madgwick 滤波算法(基于梯度下降法优化四元数)将 IMU 原始数据(加速度 + 角速度)融合为四元数(Quaternion)姿态估计,发布 sensor_msgs/Imu 消息(带姿态)。
特点:
- 计算量极小,适合嵌入式系统(如 Raspberry Pi)
- 可选融合磁力计(Magnetometer),修正偏航角(Yaw)漂移
- 运行频率通常与 IMU 采样频率相同(100–400 Hz)
关键消息格式
sensor_msgs/Imu(IMU 数据):
std_msgs/Header header
uint32 seq
time stamp
string frame_id
geometry_msgs/Quaternion orientation # 姿态四元数(可选,由滤波器计算)
float64[9] orientation_covariance # 姿态协方差矩阵(3x3 展开)
geometry_msgs/Vector3 angular_velocity # 角速度(rad/s)
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration # 线性加速度(m/s²,含重力)
float64[9] linear_acceleration_covariance
nav_msgs/Odometry(里程计/融合输出):
std_msgs/Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose # 位置 + 姿态(含 6x6 协方差)
geometry_msgs/TwistWithCovariance twist # 线速度 + 角速度(含 6x6 协方差)
协方差矩阵的对角元素反映各方向的估计不确定性,robot_localization 读取这些值作为观测噪声协方差 的来源,因此各传感器驱动程序必须正确填写协方差字段。
常用 ROS 传感器融合工具汇总
| 工具包 | 功能 | 算法 | 适用场景 |
|---|---|---|---|
robot_localization |
多传感器位姿融合 | EKF / UKF | 地面机器人、无人车定位 |
imu_filter_madgwick |
IMU 姿态估计 | Madgwick 梯度下降 | 机器人姿态实时估计 |
imu_complementary_filter |
IMU 互补滤波 | 互补滤波 | 资源受限嵌入式平台 |
rtabmap_ros |
视觉/激光 SLAM | 图优化 + 粒子滤波 | 室内外建图与定位 |
cartographer_ros |
2D/3D 激光 SLAM | 子图 + 位姿图优化 | 大规模室内建图 |
ethzasl_msf |
多传感器融合框架 | EKF | 无人机状态估计 |
参考资料
-
Thrun, S., Burgard, W., & Fox, D. (2005). Probabilistic Robotics. MIT Press.
-
Kalman, R. E. (1960). A New Approach to Linear Filtering and Prediction Problems. Journal of Basic Engineering, 82(1), 35–45.
-
Julier, S. J., & Uhlmann, J. K. (1997). New Extension of the Kalman Filter to Nonlinear Systems. Proceedings of SPIE — Signal Processing, Sensor Fusion, and Target Recognition VI, 3068, 182–193.
-
Doucet, A., de Freitas, N., & Gordon, N. (Eds.). (2001). Sequential Monte Carlo Methods in Practice. Springer.
-
Mourikis, A. I., & Roumeliotis, S. I. (2007). A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation. Proceedings of IEEE ICRA 2007, 3565–3572.
-
Qin, T., Li, P., & Shen, S. (2018). VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator. IEEE Transactions on Robotics, 34(4), 1004–1020.
-
Liu, Z., Tang, H., Amini, A., et al. (2022). BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation. Proceedings of IEEE ICRA 2023.
-
Furgale, P., Rehder, J., & Siegwart, R. (2013). Unified Temporal and Spatial Calibration for Multi-Sensor Systems. Proceedings of IEEE/RSJ IROS 2013, 1280–1286.
-
Moore, T., & Stouch, D. (2014). A Generalized Extended Kalman Filter Implementation for the Robot Operating System. Proceedings of the 13th International Conference on Intelligent Autonomous Systems (IAS-13). Springer.
-
Siegwart, R., Nourbakhsh, I., & Scaramuzza, D. (2011). Introduction to Autonomous Mobile Robots (2nd ed.). MIT Press.