2. 数学基础回顾:线性代数、微积分、概率论
各位同学好。这一章咱们聊聊数学基础。我知道很多人一听到数学就头疼,觉得跟实际控制算法离得太远。其实不然。我在做自适应控制项目时,踩过的坑十有八九都是数学基础不牢导致的。今天我就把这三块核心内容——线性代数、微积分、概率论——用我自己的理解方式讲给你听。
2.1 线性代数:矩阵与向量空间
线性代数说白了就是研究“线性关系”的数学工具。在机器人控制里,我们天天跟矩阵打交道。比如一个机械臂的关节空间到末端执行器空间的映射,本质上就是个线性变换。
2.1.1 矩阵运算
矩阵乘法是基础中的基础。我建议你记住一个口诀:前行后列。什么意思?就是前一个矩阵的行,乘以后一个矩阵的列。
核心公式:
C = A × B
C[i][j] = Σ A[i][k] × B[k][j]
我在项目中遇到过一个问题:两个矩阵维度不匹配,结果程序跑出来全是NaN。排查了半天才发现是矩阵乘法的顺序搞反了。记住,矩阵乘法不满足交换律,A×B 和 B×A 通常不一样。
2.1.2 向量空间与基
向量空间这个概念,你想想看,其实就是一组向量的集合,这些向量可以任意线性组合。在机器人运动规划里,我们经常需要找一组基来表示关节空间。
- 线性无关:一组向量中,任何一个都不能被其他向量线性表示
- 基:能张成整个空间的最少线性无关向量组
- 维度:基中向量的个数
我的小技巧: 判断一组向量是否线性无关,直接算行列式。行列式不为0,就是线性无关。我在做冗余机械臂逆解时,经常用这个来判断雅可比矩阵是否满秩。
2.1.3 特征值与特征向量
特征值和特征向量是线性代数的精华。为什么?因为它们揭示了矩阵的本质——矩阵作用在特征向量上,只是拉伸,不改变方向。
A × v = λ × v
其中 λ 是特征值,v 是特征向量。在自适应控制中,我们经常用特征值来分析系统的稳定性。如果所有特征值的实部都小于0,系统就是稳定的。
避坑指南: 我曾经在分析一个四足机器人的步态稳定性时,忽略了特征值的虚部。结果仿真看起来稳定,实际跑起来却震荡发散。后来才发现,虚部不为0意味着系统有振荡模态,需要额外处理。
2.2 微积分:梯度与雅可比矩阵
微积分是研究变化的数学。在机器人控制里,我们关心的是:输入变化一点点,输出会怎么变? 这就是微分的核心思想。
2.2.1 梯度
梯度是一个向量,指向函数增长最快的方向。在优化问题中,我们沿着梯度的反方向走,就能找到函数的最小值——这就是梯度下降法。
梯度公式:
∇f = [∂f/∂x₁, ∂f/∂x₂, ..., ∂f/∂xₙ]ᵀ
我记得第一次做轨迹优化时,用了最简单的梯度下降法。结果收敛特别慢,迭代了几千步还没到最优。后来改用牛顿法(用到了海森矩阵),收敛速度快了十倍不止。所以,选对优化方法很重要。
2.2.2 雅可比矩阵
雅可比矩阵是梯度的推广。梯度处理的是标量函数,雅可比矩阵处理的是向量函数。在机器人运动学里,雅可比矩阵把关节速度映射到末端执行器速度。
ẋ = J(q) × q̇
其中 J(q) 就是雅可比矩阵。这个公式太重要了,几乎所有的运动控制算法都离不开它。
| 应用场景 | 雅可比矩阵的作用 |
|---|---|
| 正运动学 | 关节速度 → 末端速度 |
| 逆运动学 | 末端速度 → 关节速度(求伪逆) |
| 力控制 | 关节力矩 → 末端力(转置) |
| 奇异性分析 | 判断雅可比矩阵是否满秩 |
避坑指南: 雅可比矩阵的伪逆计算在奇异点附近会出问题。我曾经在调试一个六轴机械臂时,遇到奇异点附近关节速度突然变得很大,差点把电机烧了。后来加了阻尼最小二乘法(DLS)才解决。
2.3 概率论:高斯分布与贝叶斯定理
概率论处理的是不确定性。在复杂环境中,传感器有噪声,模型有误差,控制有扰动。怎么处理这些不确定性?概率论给了我们一套完整的框架。
2.3.1 高斯分布
高斯分布,也叫正态分布,是概率论里最重要的分布。为什么?因为自然界很多现象都服从高斯分布,而且它数学性质好,方便计算。
高斯分布的概率密度函数:
p(x) = (1 / √(2πσ²)) × exp(-(x-μ)² / (2σ²))
其中 μ 是均值,σ² 是方差。在机器人定位里,我们通常用高斯分布来表示机器人位置的不确定性。均值就是最可能的位置,方差就是不确定度。
- 一维高斯:用均值和方差描述
- 多维高斯:用均值向量和协方差矩阵描述
- 协方差矩阵:对角线是各维度的方差,非对角线是维度间的相关性
我的经验: 在卡尔曼滤波中,我们假设过程噪声和观测噪声都是高斯分布。这个假设在大多数情况下是合理的。但如果遇到非高斯噪声(比如多模态分布),卡尔曼滤波的效果就会变差。这时候可以考虑粒子滤波。
2.3.2 贝叶斯定理
贝叶斯定理是概率论里最优雅的公式之一。它告诉我们:如何根据观测数据更新我们的信念。
P(A|B) = P(B|A) × P(A) / P(B)
其中:
- P(A) 是先验概率——我们事先对A的信念
- P(B|A) 是似然——在A成立的情况下,观测到B的概率
- P(A|B) 是后验概率——观测到B后,对A的更新信念
说白了,贝叶斯定理就是用新数据来修正旧认知。在机器人控制里,几乎所有状态估计算法(卡尔曼滤波、粒子滤波、SLAM)都基于贝叶斯定理。
贝叶斯滤波的递归形式:
Bel(xₜ) = η × p(zₜ|xₜ) × ∫ p(xₜ|xₜ₋₁, uₜ₋₁) × Bel(xₜ₋₁) dxₜ₋₁
其中 Bel(xₜ) 是t时刻的置信度,η是归一化常数,p(zₜ|xₜ)是观测模型,p(xₜ|xₜ₋₁, uₜ₋₁)是运动模型。
避坑指南: 贝叶斯定理要求先验概率不能为0。如果先验概率为0,无论观测数据怎么支持,后验概率永远是0。我曾经在做一个目标跟踪项目时,初始先验设错了,导致滤波器永远收敛不到正确位置。后来检查了半天才发现是这个问题。
2.4 知识体系总览
下面这张图总结了本章的数学知识体系,以及它们在自适应控制中的应用关系:
这张图把三大数学模块和它们在自适应控制中的具体应用串起来了。你可以看到,线性代数支撑运动学建模,微积分支撑轨迹优化,概率论支撑状态估计和参数辨识。它们不是孤立的,而是相互配合的。
好了,数学基础就讲到这里。这些内容看起来多,但你在实际项目中用几次就熟了。记住,数学是工具,不是目的。我们学数学是为了更好地解决控制问题。