第1章:机器人的“感官”与“大脑”——概述与数学预备知识 / Robot's 'Senses' & 'Brain': Overview & Math Prep
想象一下,一个机器人正站在一个陌生的厨房里,它的“任务”是给你煮一杯咖啡。这个看似简单的目标,却需要它瞬间完成一系列复杂的决策:它得先用“眼睛”(摄像头)和“触觉”(力传感器)感知周围环境——咖啡机在哪儿?水槽里有水吗?炉灶是开是关?接着,它的“大脑”要规划出一条从当前位置到咖啡机、再到水槽、最后回到你桌子的最优路径,同时避免撞到椅子或打翻花瓶。最后,它得用“手脚”(机械臂和轮子)精准地执行这些动作,拧开咖啡机盖子、倒水、按下按钮,还要根据咖啡机反馈的阻力微调力度,防止捏碎杯子。这个过程中,机器人学三大支柱——感知(Perception)、规划(Planning)、控制(Control)——如同交响乐团般协同工作。而指挥这场交响乐的,正是数学。从线性代数描述的坐标变换,到概率论处理的不确定性,再到微积分驱动的优化决策,数学是机器人理解世界、思考未来、行动自如的“通用语言”。本章将带你走进这个语言的世界,复习那些支撑机器人智能的核心数学工具,并通过自动驾驶汽车、工业机械臂等真实案例,展示它们如何从纸上的公式,化为现实中的“感官”与“大脑”。
---
一、 三大支柱的协奏曲:感知、规划与控制如何联动
在深入数学之前,我们必须先理解机器人系统的整体架构。一个典型的机器人系统,无论大小,都可以抽象为“感知-规划-控制”这个经典闭环。这个闭环不是简单的线性流水线,而是一个动态的、反馈驱动的循环。我们可以用一个更生动的比喻来理解:把机器人想象成一个在黑暗房间里找门的探险家。
- **感知(Perception)是它的感官**:它伸出手在黑暗中摸索(触觉传感器),侧耳倾听(麦克风阵列),甚至用鼻子嗅探(气体传感器)。这些 raw 的、充满噪声和不确定性的数据,就是它的“感官输入”。例如,自动驾驶汽车的激光雷达(LiDAR)每秒产生数十万个点云, Raw 数据只是一堆三维坐标,它本身不“知道”哪个点是汽车,哪个点是行人。
- **规划(Planning)是它的大脑**:基于“摸到”的墙壁位置(感知结果),大脑在内部构建一个房间的 mental map(地图),并思考:“门可能在哪个方向?从当前位置到门口,哪条路最安全、最省力?” 这就是规划——在给定状态(当前位姿、地图)下,生成一系列目标状态(路径点)或动作序列(抓取轨迹)。规划可以分层:全局规划(从A点到B点的完整路径)和局部规划(避开突然出现的障碍物的实时调整)。
- **控制(Control)是它的肌肉与神经**:大脑决定了“向右转30度,前进一米”,但身体真的能精确执行吗?控制系统的任务就是发出微小的电机指令,让轮子恰好转动那个角度,让机械臂的关节到达那个角度,并实时纠正偏差(比如地面湿滑导致转向不足)。它确保“意图”被准确、稳定、高效地转化为“动作”。
这三者并非单向流动,而是紧密耦合、持续交互。控制执行的动作会改变机器人的状态,从而改变其感知视野;感知提供的新信息会触发重新规划;规划的目标(如“跟踪前方车辆”)又定义了控制需要维持的动态特性。 这种耦合在高速自动驾驶或精密装配中尤为关键。
让我们用一个 自动驾驶汽车在城区行驶 的连续场景来具象化这个闭环: 1. 感知:摄像头检测到前方50米处有行人横穿马路(视觉识别),毫米波雷达确认了该目标的速度和距离(距离测量),高精地图提供车道曲率信息。这些多源信息通过概率融合(后文详述)得出一个置信度:“有行人,位置(48.2, 3.1),速度1.2m/s,误报概率5%”。 2. 规划:基于此感知结果,行为规划层决策:“必须减速让行”。路径规划层在现有车道内重新计算一条平滑的减速曲线,同时考虑后方车辆距离,避免急刹导致追尾。运动规划层则将这条曲线离散化为未来几秒内每秒的期望速度和转向角。 3. 控制:底层控制器(如模型预测控制MPC)接收这些期望轨迹,结合当前车辆状态(实际速度、横摆角速度),实时计算油门、刹车和转向指令,发送给执行器。同时,控制器的状态估计器(如卡尔曼滤波)会持续融合轮速计、IMU数据,更精确地估计当前车速,为控制提供更准确的反馈。 4. 循环重启:控制执行后,车辆状态改变,摄像头和雷达的感知视野随之更新(行人距离变近或已通过),触发新一轮的规划与控制调整。这个循环以每秒数十次的频率运行,构成了自动驾驶的“心跳”。
这个闭环的稳健性,高度依赖于其内部流淌的“数学血液”。接下来,我们将逐一认识这些血液的成分。
---
二、 数学工具箱:机器人的“通用语言”
对于高级读者,我们不会从零开始推导,而是聚焦于那些在机器人学中具有特定形态和应用场景的关键数学概念。我们的目标是建立“数学工具 → 机器人问题”的直观映射。
2.1 线性代数:空间、运动与变换的骨架
线性代数是描述刚体运动、坐标系转换和传感器模型的基石。核心对象是向量(位置、方向)和矩阵(变换、投影)。
- **向量与矩阵运算**:三维空间中的点 $ \mathbf{p} = [x, y, z]^T $ 是基本载体。**齐次坐标** $ \mathbf{p}_h = [x, y, z, 1]^T $ 是将平移与旋转统一为矩阵乘法的关键技巧。一个4x4变换矩阵 $ ^{A}T_{B} $ 完整描述了坐标系B相对于坐标系A的位姿(旋转R和平移t):
$$ ^{A}T_{B} = \begin{bmatrix} ^{A}R_{B} & ^{A}\mathbf{t}_{B} \\ \mathbf{0}_{1\times3} & 1 \end{bmatrix} $$ 其中 $ ^{A}R_{B} \in SO(3) $ 是特殊正交群,满足 $ R^TR=I, \det(R)=1 $,代表纯旋转。
- **坐标变换与运动学**:机械臂的正向运动学问题,就是通过一系列关节的旋转/平移矩阵连乘,计算末端执行器在基坐标系下的位姿。对于n自由度串联臂:
$$ ^{0}T_{n} = ^{0}T_{1} \cdot ^{1}T_{2} \cdots ^{n-1}T_{n} $$ 这里的“·”是矩阵乘法,顺序至关重要(注意:在齐次坐标下,变换顺序与操作顺序相反)。DH参数法 就是一套标准化的规则,为每对关节连杆定义四个参数,从而唯一确定 $ ^{i-1}T_{i} $ 矩阵。
- **特征值、特征向量与系统分析**:在控制理论中,系统的稳定性由状态矩阵的特征值位置决定。对于离散时间系统 $ \mathbf{x}_{k+1} = A\mathbf{x}_k $,所有特征值的模必须小于1才稳定。在视觉SLAM中,**主成分分析(PCA)** 利用协方差矩阵的特征向量,从点云数据中提取平面或主要方向,是环境理解的基础。
案例:机械臂抓取 一个6轴工业机械臂要抓取传送带上的零件。其运动学链可用DH参数建模。控制器需要知道:当关节角向量 $ \mathbf{q} = [q_1, ..., q_6]^T $ 给定时,末端工具在基坐标系下的位置和朝向 $ ^{0}T_{6}(\mathbf{q}) $ 是多少?这是正向运动学,纯线性代数计算。反过来,给定期望的末端位姿 $ ^{0}T_{\text{target}} $,求关节角 $ \mathbf{q} $,是逆运动学,通常需要数值求解(如雅可比矩阵伪逆法),其中雅可比矩阵 $ J $ 本身是位姿对关节角的偏导数矩阵,是线性代数在微分层面的应用。
```mermaid graph LR A[关节角度向量 q] --> B[DH参数变换矩阵]; B --> C[正向运动学: 连乘]; C --> D[末端位姿 ^0T_6]; D --> E[与目标位姿比较]; E --> F{误差是否可接受?}; F -- 否 --> G[逆运动学/优化求解新q]; G --> A; F -- 是 --> H[执行运动]; ```
2.2 概率论:应对不确定性的思维框架
机器人世界本质上是概率的。传感器读数永远有噪声;环境模型永远不完整;预测永远有偏差。概率论提供了量化、推理和融合这些不确定性的严谨框架。
- **贝叶斯滤波:动态系统的概率推理核心**。其目标是递归估计系统状态 $ \mathbf{x}_t $ 的后验概率 $ p(\mathbf{x}_t | \mathbf{z}_{1:t}, \mathbf{u}_{1:t-1}) $,给定所有历史观测 $ \mathbf{z} $ 和控制输入 $ \mathbf{u} $。贝叶斯公式是:
$$ p(\mathbf{x}_t | \mathbf{z}_{1:t}) \propto p(\mathbf{z}_t | \mathbf{x}_t) \cdot p(\mathbf{x}_t | \mathbf{z}_{1:t-1}) $$ 其中:
- $ p(\mathbf{z}_t | \mathbf{x}_t) $ 是**观测模型/似然**:在状态 $ \mathbf{x}_t $ 下,看到观测 $ \mathbf{z}_t $ 的概率。例如,在位置 $ \mathbf{x}_t $,激光雷达扫描到一堵墙的概率很高。
- $ p(\mathbf{x}_t | \mathbf{z}_{1:t-1}) $ 是**预测分布/先验**:基于上一时刻的状态和控制输入,通过**运动模型** $ p(\mathbf{x}_t | \mathbf{x}_{t-1}, \mathbf{u}_{t-1}) $ 预测当前状态。例如,根据上一位置和转向指令,预测现在可能的位置范围。
滤波的预测(运动模型)与更新(观测模型)两步交替进行,不断精化状态估计。
- **典型滤波器**:
- **卡尔曼滤波(KF)**:适用于线性高斯系统。状态和观测都是线性函数,且噪声为高斯分布。其优势在于**最优性**和**计算效率**(仅需存储均值和协方差)。**扩展卡尔曼滤波(EKF)** 通过一阶泰勒展开处理轻微非线性,是机器人早期SLAM和导航的支柱,但可能发散。
- **粒子滤波(PF)**:用一组带权重的随机样本(粒子)近似后验分布,适用于任意非线性、非高斯系统。计算量大,但更鲁棒。在机器人定位(蒙特卡洛定位)和SLAM中广泛应用。
- **概率分布与表示**:高斯分布 $ \mathcal{N}(\mu, \Sigma) $ 因其数学性质(线性变换后仍高斯,乘积后仍高斯)成为滤波器的核心。但在表示多模态分布(如机器人在走廊十字路口,可能左转或右转)时,需要混合高斯模型(GMM)或粒子集。
案例:自动驾驶中的传感器融合 一辆自动驾驶汽车需要融合摄像头、激光雷达和雷达的数据来定位。假设我们使用EKF: 1. 预测步:基于IMU和轮速计数据(控制输入 $ \mathbf{u} $),通过运动模型(如自行车模型)预测车辆下一时刻的位置、速度和朝向,得到预测状态 $ \hat{\mathbf{x}}^- $ 和预测协方差 $ P^- $(代表不确定性增大)。 2. 更新步:激光雷达扫描到前方车辆,将其观测 $ \mathbf{z}_{\text{lidar}} $(在车辆坐标系下的距离和角度)通过观测模型(将世界坐标映射到传感器坐标)转换为预测的观测 $ \hat{\mathbf{z}} $。计算创新协方差 $ S $ 和卡尔曼增益 $ K $(权衡预测与观测的可靠性)。更新状态: $$ \mathbf{x}^+ = \hat{\mathbf{x}}^- + K (\mathbf{z}_{\text{lidar}} - \hat{\mathbf{z}}) $$ $$ P^+ = (I - K H) P^- $$ 其中 $ H $ 是观测模型的雅可比。创新 $ (\mathbf{z} - \hat{\mathbf{z}}) $ 体现了新信息,卡尔曼增益 $ K $ 则根据预测和观测的置信度自动调整权重。如果激光雷达被雨雾干扰(观测噪声大),$ S $ 增大,$ K $ 减小,系统更依赖IMU预测;反之则更相信激光雷达。
```mermaid graph TD A[上一时刻状态 x_{t-1} 与协方差 P_{t-1}] --> B[预测步<br/>运动模型 f]; B --> C[预测状态 x_t^- 与协方差 P_t^-]; C --> D[获取新观测 z_t]; D --> E[更新步<br/>观测模型 h]; E --> F[计算创新 z_t - h(x_t^-)]; F --> G[计算卡尔曼增益 K]; G --> H[更新状态 x_t = x_t^- + K·创新]; H --> I[更新协方差 P_t]; I --> A; ```
2.3 微积分:变化、优化与动态的引擎
微积分,尤其是微分和优化理论,是描述变化、寻找最优解和设计控制律的数学引擎。
- **梯度与导数**:梯度 $ \nabla f(\mathbf{x}) $ 指向函数值增长最快的方向,是局部最优搜索的基础。在机器人学中,代价函数(Cost Function) $ J(\mathbf{x}) $ 的梯度驱动了大多数优化算法。例如,机械臂的轨迹优化中,代价可能包含能量消耗、时间、末端误差等,梯度下降法沿负梯度方向迭代更新关节轨迹。
- **优化方法**:
- **梯度下降**:$ \mathbf{x}_{k+1} = \mathbf{x}_k - \alpha \nabla J(\mathbf{x}_k) $。简单但可能慢,且易陷于局部极小。
- **牛顿法**:利用二阶导数(Hessian矩阵) $ \nabla^2 J $,更新 $ \mathbf{x}_{k+1} = \mathbf{x}_k - [\nabla^2 J(\mathbf{x}_k)]^{-1} \nabla J(\mathbf{x}_k) $。收敛快,但Hessian计算和求逆代价高。
- **序列二次规划(SQP)** 和**内点法**:处理带约束的非线性优化(NLP)的工业标准,在轨迹规划、全身运动控制中常见。
- **凸优化**:当代价和约束是凸函数时,任何局部极小即为全局极小。这是机器人规划中追求的目标(如将非凸避障约束通过障碍物膨胀转化为凸约束)。
- **变分法与最优控制**:当优化问题涉及连续时间动态系统(如 $ \dot{\mathbf{x}} = f(\mathbf{x}, \mathbf{u}) $)时,微积分变分法登场。**庞特里亚金最小原理** 和 **哈密顿-雅可比-贝尔曼(HJB)方程** 是理论基础。**模型预测控制(MPC)** 是其在离散时间下的成功实践:在每个控制周期,求解一个有限时域上的最优控制问题,只执行第一个控制量,然后滚动优化。这天然处理了状态和控制约束,是现代机器人(从无人机到人形机器人)控制的标配。
案例:机械臂的阻抗控制 当机械臂需要与人类协作或接触环境时,纯位置控制(“必须到达这个点”)会导致刚性碰撞。阻抗控制 将末端设计为具有期望的“质量-弹簧-阻尼”动态特性,即: $$ M_d (\ddot{\mathbf{x}}_d - \ddot{\mathbf{x}}) + B_d (\dot{\mathbf{x}}_d - \dot{\mathbf{x}}) + K_d (\mathbf{x}_d - \mathbf{x}) = \mathbf{F}_{\text{ext}} $$ 其中 $ \mathbf{x} $ 是实际末端位置,$ \mathbf{F}_{\text{ext}} $ 是外部接触力。控制目标是让末端动态 $ (M_d, B_d, K_d) $ 匹配期望。通过计算力矩控制方法,利用机器人的动力学模型(拉格朗日方程 $ \mathbf{\tau} = M(\mathbf{q})\ddot{\mathbf{q}} + C(\mathbf{q},\dot{\mathbf{q}})\dot{\mathbf{q}} + \mathbf{g}(\mathbf{q}) $),我们可以将上述阻抗动态“内嵌”到关节空间,计算出所需的关节力矩 $ \mathbf{\tau} $。这里,动力学模型的推导和线性化,核心是偏导数(雅可比矩阵、质量矩阵的导数)的计算,是微积分在动力学层面的直接应用。
2.4 图论:离散结构、连接与优化的语言
图论提供用“节点”和“边”抽象表示离散对象及其关系的语言,在机器人学的运动规划和SLAM中扮演核心角色。
- **基本概念**:图 $ G = (V, E) $,节点集 $ V $(如配置空间中的位姿、地图中的路标点),边集 $ E $(如连通性、运动约束)。**权重图**的边带有代价(如距离、碰撞概率)。
- **图搜索算法**:在配置空间(C-space)中,将可行区域离散化为节点(或网格),用图搜索寻找路径。
- **Dijkstra算法**:保证找到全局最短路径,但探索无方向性,效率低。
- **A*算法**:引入启发式函数 $ h(n) $ 估计节点到目标的代价,以 $ f(n) = g(n) + h(n) $ 为优先级搜索。当 $ h(n) $ 可接纳(不大于实际代价)时,A*既完备又最优,是机器人全局路径规划的经典方法。例如,网格地图中,$ h(n) $ 常用曼哈顿距离或欧氏距离。
- **图优化**:这是现代SLAM和最大后验估计(MAP)的核心范式。SLAM问题可建模为图,节点为机器人位姿和路标点,边为相对位姿约束(来自里程计或观测)。整个问题转化为最小化所有边约束误差的**非线性最小二乘问题**:
$$ \mathbf{x}^* = \arg\min_{\mathbf{x}} \sum_{i,j \in \mathcal{E}} \| \mathbf{z}_{ij} - h(\mathbf{x}_i, \mathbf{x}_j) \|^2_{\Sigma_{ij}} $$ 其中 $ \mathbf{z}_{ij} $ 是观测到的相对变换,$ h $ 是预测函数,$ \Sigma_{ij} $ 是信息矩阵(协方差逆)。求解此问题通常使用高斯-牛顿法或Levenberg-Marquardt算法,其核心迭代步骤是构建和求解正规方程 $ H\Delta\mathbf{x} = -\mathbf{b} $,