# 卡尔曼滤波
卡尔曼滤波(Kalman Filtering)由 Rudolf E. Kalman 在 1960 年提出,是一种高效的递归估计器,用于估计带噪声的线性离散时间动态系统的状态。它是状态估计和信号处理中的经典方法。
-
系统模型与观测模型
动态系统模型
线性离散时间动态系统可以表示为:
其中:
- 是需要估计的状态向量
- 是已知的控制输入
- 是系统矩阵
- 是控制矩阵
- 是过程噪声(系统噪声)
观测模型
我们可以获得测量值 :
其中:
- 是观测矩阵
- 是测量噪声
噪声假设
假设 和 是多元正态分布的扰动:
其中:
- 是过程噪声的协方差矩阵
- 是测量噪声的协方差矩阵
此外,假设 、 和 相互独立。
-
贝叶斯推导
历史数据
设 表示时刻 的历史观测值, 表示时刻 的历史状态值。
目标
我们的目标是获得给定 时 的后验分布。
贝叶斯规则
使用贝叶斯规则和独立性假设,我们有:
-
最大后验概率(MAP)估计
MAP 估计问题
可以将卡尔曼滤波视为最大后验概率(MAP)估计器:
最小二乘形式
对似然函数取自然对数,可以将卡尔曼滤波转化为最小二乘问题:
这等价于最小化:
- 观测误差的加权平方和(第一项)
- 状态转移误差的加权平方和(第二项)
-
递归形式
递归结构
注意到新的目标函数满足:
这种递归结构使得我们可以高效地计算状态估计。
标准递归形式
可以得到标准的卡尔曼滤波递归形式:
其中:
- 是时刻 的状态递归估计
- 是卡尔曼增益矩阵
- 是估计误差的协方差矩阵
算法步骤
-
预测步骤(Predict):
- 预测状态:
- 预测协方差:
-
更新步骤(Update):
- 计算卡尔曼增益:
- 更新状态估计:
- 更新协方差:
-
卡尔曼滤波的特点
优势
- 递归计算,计算效率高
- 最优性:在线性高斯假设下,是最优估计器(最小均方误差)
- 提供不确定性量化(通过协方差矩阵 )
- 可以处理时变系统
局限性
- 假设系统是线性的
- 假设噪声是高斯分布的
- 对于非线性系统,需要使用扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)
-
应用
- 导航系统:GPS、惯性导航
- 目标跟踪:雷达、声纳跟踪
- 控制系统:状态反馈控制
- 信号处理:信号去噪、平滑
# L1 滤波与总体方差
滤波和总体方差(Total Variation, TV)滤波是用于一维信号去噪的方法,特别适用于具有分段线性趋势的时间序列。
-
滤波 ( Filtering)
问题设定
滤波旨在抑制一维信号的噪声。它产生分段线性趋势估计结果,因此适用于具有潜在分段线性趋势的时间序列。
给定标量时间序列 , 滤波旨在获得估计的标量时间序列 ,使得:
其中:
- 第一项是数据拟合项,衡量估计值 与观测值 的差异
- 第二项是正则化项,惩罚相邻时刻估计值之间的变化
- 是正则化参数,控制平滑性和拟合误差的权衡
特点
- 产生分段常数或分段线性的估计
- 对异常值鲁棒(由于使用 范数)
- 可以检测趋势变化点(change points)
求解方法
这是一个凸优化问题,可以转化为线性规划问题求解。
-
总体方差(Total Variation, TV)滤波
问题设定
总体方差滤波是 滤波的推广,最小化信号的一阶差分(或更高阶差分)的 范数:
这与 滤波的形式相同,但通常称为 TV 滤波。
TV 范数的定义
对于一维信号 ,总体方差(TV)定义为:
这是信号一阶差分的 范数。
高阶 TV
可以定义高阶总体方差:
其中 是 阶差分算子。
TV 去噪问题
总体方差去噪问题:
其中 是观测信号, 是去噪后的信号。
-
趋势滤波 ( Trend Filtering)
问题形式
趋势滤波是 滤波的另一种表述,旨在估计时间序列的趋势:
其中第二项惩罚二阶差分(加速度),产生分段线性趋势。
特点
- 估计结果是分段线性的
- 可以检测趋势的转折点
- 对异常值鲁棒
-
求解算法
直接算法
对于一维 TV 去噪,存在直接算法(如 Condat 算法),可以在 时间内求解。
转化为线性规划
TV 滤波问题可以转化为线性规划问题:
其中 是辅助变量,表示 。
-
应用
- 信号去噪:去除时间序列中的噪声
- 趋势估计:估计时间序列的潜在趋势
- 变化点检测:检测时间序列中的结构变化
- 数据平滑:平滑观测数据
# 轨迹规划
轨迹规划(Trajectory Planning)是自动化和机器人领域中的核心问题,旨在为动态系统设计满足约束条件的最优轨迹。凸优化在轨迹规划中发挥着重要作用,特别是通过凸松弛技术处理非凸约束。
# 轨迹规划基础
-
问题定义
轨迹规划问题通常可以表述为最优控制问题:
其中:
- 是状态向量
- 是控制输入向量
- 是运行代价函数
- 是终端代价函数
- 是系统动力学
- 是路径约束
-
凸优化在轨迹规划中的作用
- 离散化:将连续时间问题离散化为有限维优化问题
- 凸松弛:将非凸约束松弛为凸约束,得到可求解的凸优化问题
- 损失凸化(Lossless Convexification):在某些条件下,非凸约束的凸松弛是精确的(无损失)
- 实时求解:凸优化问题可以高效求解,满足实时性要求
-
主要挑战
- 非凸约束:动力学约束、障碍物避让、输入约束等通常是非凸的
- 计算复杂度:高维状态空间和长时间范围导致计算困难
- 实时性要求:需要快速生成可行轨迹
# 一维规划
一维轨迹规划是最简单的情况,通常涉及沿一条路径的速度规划或位置规划。
-
问题形式
对于一维轨迹规划,状态通常是位置 和速度 :
其中 是加速度(控制输入)。
-
离散化
将时间区间 离散化为 个时间步:
这是一个二次规划(QP)问题,可以高效求解。
-
应用
- 车辆纵向控制
- 电梯调度
- 一维机器人运动规划
# 二维规划
二维轨迹规划涉及在平面内的位置和方向规划,通常需要考虑避障和路径约束。
-
问题形式
对于二维轨迹规划,状态包括位置 和方向 :
其中 是速度, 是角速度, 是控制输入。
-
障碍物避让
障碍物避让约束通常是非凸的:
其中 是第 个障碍物区域。
凸松弛方法:
- 将非凸障碍物约束松弛为凸约束
- 使用分离超平面或半空间约束
- 迭代细化约束以逼近非凸区域
-
求解方法
- 序列二次规划(SQP):迭代求解二次规划子问题
- 凸优化:通过凸松弛将问题转化为凸优化问题
- 采样方法:结合采样和优化
-
应用
- 移动机器人路径规划
- 自动驾驶车辆轨迹规划
- 无人机路径规划
# 三维规划
三维轨迹规划是最复杂的情况,涉及三维空间中的位置、姿态和动力学约束。PPT 中重点讨论了非凸约束的凸松弛方法。
-
问题形式
三维轨迹规划通常涉及位置 和姿态(如欧拉角或四元数):
其中非凸约束可能包括:
- 推力方向约束(thrust pointing constraint)
- 输入幅值约束
- 障碍物约束
-
损失凸化(Lossless Convexification)
基本思想
损失凸化是一种将非凸最优控制问题转化为凸优化问题的技术,在满足某些条件下,凸松弛是精确的(无损失),即凸松弛问题的最优解也是原非凸问题的最优解。
非凸输入约束
考虑非凸输入约束:
其中:
- 是输入幅值约束(非凸,因为等式约束)
- 是推力方向约束
- 是最大角度约束
凸松弛
将非凸约束松弛为凸约束:
注意:将等式约束 松弛为不等式约束 。
损失凸化的条件
对于 的特殊情况,其中:
输入 是可行的,满足原未松弛的约束。在这种情况下,凸松弛是精确的(无损失)。
几何解释
通过在半空间 中提升 空间,可以将非凸输入集松弛为凸集。如果最优输入 ,则 对原非凸约束是可行的。
缺点
原不可行的输入对于松弛后的表达式是可行的,因此需要额外的条件来保证损失凸化。
-
应用
- 垂直起降火箭(VTVL):软着陆问题中的推力方向约束
- 行星着陆:燃料最优的精确着陆轨迹规划
- 无人机:三维空间中的轨迹规划
- 航天器:姿态和位置联合规划
-
求解方法
- 凸优化:将问题转化为凸优化问题后使用内点法求解
- 序列凸优化:迭代求解凸优化子问题
- 混合整数规划:处理离散决策变量
-
优势与挑战
优势:
- 可以高效求解(凸优化)
- 在某些条件下保证全局最优
- 可以处理复杂的约束
挑战:
- 需要满足损失凸化的条件
- 对于不满足条件的约束,松弛可能引入保守性
- 高维问题计算复杂度仍然较高