此笔记记录学习书本 机器人学导论(原书第3版)(美)HLHN J.CRAIG,著贠超等译的学习与总结笔记,其中部分内容由AI生成。
✅ 1. 雅可比矩阵是啥?
在多变量函数中,雅可比矩阵(Jacobian Matrix)是所有一阶偏导数组成的矩阵:
如果有函数:
$$ \mathbf{y} = f(\mathbf{x}) \quad \text{其中 } \mathbf{x} \in \mathbb{R}^n, \mathbf{y} \in \mathbb{R}^m $$则雅可比矩阵为:
$$ J = \frac{\partial \mathbf{y}}{\partial \mathbf{x}} = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \cdots & \frac{\partial y_1}{\partial x_n} \\ $$\vdots & \ddots & \vdots \
$$ \frac{\partial y_m}{\partial x_1} & \cdots & \frac{\partial y_m}{\partial x_n} \end{bmatrix} $$在机器人中:
- ( \mathbf{x} ) 是关节角度(如 ( \theta_1, \theta_2, \ldots ))
- ( \mathbf{y} ) 是末端执行器的位置或速度
✅ 2. 雅可比逆矩阵是啥?
当我们想从输出空间(如末端速度)反推输入空间(如关节速度)时,需要“反过来”用雅可比矩阵,这时候我们就需要**“逆”雅可比矩阵**。
- 如果雅可比是方阵(m = n) 且满秩,直接求逆:
- 如果是非方阵(m ≠ n)或者不可逆,就用广义逆(伪逆):
- 对于 冗余系统(n > m):
- 对于 欠驱动系统(n < m):
- 或用 Moore-Penrose 伪逆:
✅ 3. 举个简单例子(机器人)
假设一个二维机械臂(2个关节)要控制末端点 ( x, y ) 的速度。
- 正向速度:( \dot{\mathbf{y}} = J \dot{\theta} )
- 反向求关节速度(逆问题):( \dot{\theta} = J^{-1} \dot{\mathbf{y}} ),若不能求逆,就用广义逆!
雅可比矩阵和机器人运动学之间的关系非常密切,尤其是在速度运动学中,雅可比矩阵起到了桥梁作用。下面我帮你分层讲清楚这个关系。
✅ 一、什么是运动学?
机器人运动学分为两大类:
| 类型 | 说明 |
|---|---|
| 正运动学(FK) | 给定关节角度,求末端位姿(位置和方向) |
| 逆运动学(IK) | 给定末端位姿,求关节角度(复杂) |
还有一个细分方向叫:
🚀 速度运动学:给定关节速度,求末端速度(或者反过来)
✅ 二、雅可比矩阵出现在速度运动学中
设:
- ( \boldsymbol{q} ):关节变量(角度、位移等)
- ( \dot{\boldsymbol{q}} ):关节速度
- ( \mathbf{x} ):末端位姿(通常是位置)
- ( \dot{\mathbf{x}} ):末端速度(线速度 + 角速度)
通过雅可比矩阵 ( J(\boldsymbol{q}) ),有以下关系:
$$ \dot{\mathbf{x}} = J(\boldsymbol{q}) \cdot \dot{\boldsymbol{q}} $$这就是速度映射关系:关节空间 → 笛卡尔空间。
✅ 三、雅可比矩阵在运动学中承担什么角色?
| 用法 | 作用 |
|---|---|
| 正运动学的导数 | 把 FK 对关节变量求导,就得到了雅可比矩阵 |
| 末端速度计算 | 通过雅可比矩阵从 ( \dot{q} ) 得到 ( \dot{x} ) |
| 逆运动学辅助工具 | 用雅可比矩阵的伪逆求解逆运动学 |
| 奇异性检测 | 雅可比矩阵行列式为0的地方就是“奇异点” |
| 力-力矩传递 | ( \tau = J^\top \cdot F ),关节力矩 ← 末端力 |
✅ 四、简单举个例子(2关节平面机械臂)
$$ 设两段长度分别为 \( l_1, l_2 \),角度为 \( \theta_1, \theta_2 \) $$末端位置为:
$$ \begin{aligned} x &= l_1 \cos \theta_1 + l_2 \cos (\theta_1 + \theta_2) \\ y &= l_1 \sin \theta_1 + l_2 \sin (\theta_1 + \theta_2) \end{aligned} $$求导得雅可比矩阵:
$$ J = \frac{\partial(x, y)}{\partial(\theta_1, \theta_2)} = \begin{bmatrix} $$- l_1 \sin \theta_1 - l_2 \sin(\theta_1 + \theta_2) & -l_2 \sin(\theta_1 + \theta_2) \
这样,就可以实现:
$$ \dot{x}, \dot{y} = J \cdot \dot{\theta} $$也可以反过来:
$$ \dot{\theta} = J^+ \cdot \dot{x} $$- 规划方式分为两种,分别是笛卡尔空间的规划(位置规划)和关节空间的规划(角度规划)
B-Spline(Basis Spline,基样条)
是一种强大而灵活的曲线拟合方法,特别适用于轨迹规划、计算机图形学、机器人路径平滑等场景。下面我们从直观原理、数学构成、实现步骤三个角度来解释 B-Spline 是怎么实现的。
B-Spline 是将一段复杂曲线拆成若干小段,每段用低阶(通常是三次)多项式表示,多个小段在控制点处光滑地拼接起来。它的主要特点:
- 局部控制性强:修改一个控制点只影响局部。
- 光滑性强:曲线的低阶导数连续(例如 3 次 B-Spline 有 2 阶导数连续)。
- 比普通样条更灵活:通过节点向量控制曲线形状和连接方式。
B-Spline 曲线的数学表达形式是:
$$ C(t) = \sum_{i=0}^{n} N_{i,k}(t) \cdot P_i $$其中:
- ( P_i ):控制点
- ( N_{i,k}(t) ):B样条基函数,阶数为 (k)(例如 (k=4) 表示三次)
- ( t ):参数
- ( N_{i,k}(t) ) 是通过递归定义的:
1, & t_i \le t < t_{i+1} \
$$ 0, & \text{otherwise} \end{cases} $$ $$ N_{i,k}(t) = \frac{t - t_i}{t_{i+k-1} - t_i} N_{i,k-1}(t) + \frac{t_{i+k} - t}{t_{i+k} - t_{i+1}} N_{i+1,k-1}(t) $$