写在最前面的话
为什么做该博客?该博客的特点是什么?
随着DeepSeek、ChatGPT等AI技术的崛起,促使机器人技术发展到了新的高度,诞生了宇树科技、特斯拉为代表的人形机器人,四足机器人等等,越来越多的科技巨头涌入机器人赛道,行业对于相关人才的需求也随之达到了顶峰。本博客的内容是替你阅读所有关于机器人的经典书籍,采用书籍瘦身计划,帮你提炼出核心内容,采用最通俗易懂的语言来解释原理,将书读薄。大大缩短学习时间,助你快速成为机器人时代的佼佼者。


文章目录
一、书籍介绍
《机器人学导论(原书第4版)》是约翰·J·克雷格的经典教材,系统讲解机器人运动学、动力学与控制理论,结合MATLAB实践,适合本科高年级与研究生学习。新增深度学习应用等内容,兼顾基础与前沿。
二、第5章 雅可比:速度和静力(提炼总结)
由于本章数学、矩阵公式较复杂,难以理解,所以在开头用最简单的话概括总结一下什么是雅可比矩阵?之后带着理解方便进行后文的学习
- 雅可比矩阵本质是多变量微分关系的打包工具
- 雅可比矩阵能实现关节运动和末端执行器运动的互相转换
- 机器人每个关节运动都会通过机械结构传递到末端,雅可比矩阵就是记录这种传递关系的“说明书”:
正向传递(关节→末端):告诉你“关节转1°,末端移动多少毫米”
反向计算(末端→关节):通过矩阵求逆,知道“想让末端移动1cm,各关节该转多少度”
5.1节 引言(提炼总结)
- 本章研究刚体线速度、角速度、静力学等问题
5.2节 时变位置和姿态的符号表示(提炼总结)
-
线速度:机械臂位置矢量的导数是描述机器人末端或连杆上某一点线速度
1、基本定义 -
位置矢量 Q 的导数表示该点在特定坐标系下的瞬时速度
-
若 Q 在坐标系 {B} 中描述,其导数 d d t Q \frac{d}{dt} Q dtdQ 表示点 Q 相对于 {B} 的线速度 V Q V_Q VQ(需明确求导参考系)
2、坐标系的依赖 -
速度的数值描述依赖于两个坐标系:
求导坐标系:微分运算的参考系(如 {B})
描述坐标系:速度矢量的表达系(如 {A}) -
转换关系:若 {B} 相对于 {A} 的旋转矩阵为 R B A R_{B}^{A} RBA,则速度在 {A} 中的描述为:
V Q A = R B A ⋅ d d t Q B V_{Q}^{A} = R_{B}^{A} \cdot \frac{d}{dt} Q^{B} VQA=RBA⋅dtdQB
其中 Q B Q^{B} QB 为 {B} 中的位置矢量
3、多坐标系下的速度传递 -
固定旋转假设:若 {B} 相对于 {A} 仅平移(无旋转),点 Q Q Q 在 {A} 中的速度为:
V Q A = V B , ORG A + R B A ⋅ d d t Q B V_{Q}^{A} = V_{B,\text{ORG}}^{A} + R_{B}^{A} \cdot \frac{d}{dt} Q^{B} VQA=VB,ORGA+RBA⋅dtdQB
其中: V B , ORG A V_{B,\text{ORG}}^{A} VB,ORGA 为 {B} 原点在 {A} 中的速度 -
含旋转的情况:需引入角速度矢量 Ω \Omega Ω,通过叉积计算旋转分量
-
角速度:描述连杆或末端执行器旋转运动状态的关键物理量
1、基本定义 -
角速度矢量 Ω \Omega Ω 表示刚体绕瞬时旋转轴的转动速率和方向,其方向由右手定则确定(拇指指向旋转轴)
-
符号表示 A Ω B ^{A}\Omega_{B} AΩB 表示坐标系 {B} 相对于 {A} 的角速度在 {A} 中的描述
2、坐标系间的角速度传递 -
串联关系:若坐标系 {C} 相对于 {B} 的角速度为 B Ω C ^{B}\Omega_{C} BΩC,则 {C} 相对于 {A} 的角速度为:
A Ω C = A Ω B + B A R ⋅ B Ω C ^{A}\Omega_{C} = ^{A}\Omega_{B} + _{B}^{A}R \cdot ^{B}\Omega_{C} AΩC=AΩB+BAR⋅BΩC
其中: B A R _{B}^{A}R BAR 为旋转矩阵 -
导数关系:角速度矢量的时间导数为角加速度 Ω ˙ \dot{\Omega} Ω˙,用于动力学分析
3、机械臂中的具体应用 -
连杆运动:相邻连杆 i i i 和 i + 1 i+1 i+1 的角速度传递公式为:
i + 1 Ω i + 1 = i i + 1 R ⋅ i Ω i + θ ˙ i + 1 ⋅ i + 1 Z i + 1 ^{i+1}\Omega_{i+1} = _{i}^{i+1}R \cdot ^{i}\Omega_{i} + \dot{\theta}_{i+1} \cdot ^{i+1}Z_{i+1} i+1Ωi+1=ii+1R⋅iΩi+θ˙i+1⋅i+1Zi+1
其中: θ ˙ i + 1 \dot{\theta}_{i+1} θ˙i+1 为关节角速度, Z i + 1 Z_{i+1} Zi+1 为关节轴单位矢量 -
雅可比矩阵:角速度分量构成雅可比矩阵后三行,关联关节速度与末端角速度
5.3节 刚体的线速度和角速度(提炼总结)
- 刚体线速度:
定义:刚体上某点沿运动轨迹切线方向的瞬时速度,描述该点的平动快慢
公式: v = d s d t v = \frac{ds}{dt} v=dtds, 其中 d s ds ds 为弧长微元
方向:始终沿运动轨迹的切线方向 - 刚体角速度:
定义:刚体绕旋转轴转动的快慢和方向,单位时间内转过的弧度表示
公式: ω = d θ d t \omega = \frac{d\theta}{dt} ω=dtdθ,方向由右手定则确定(拇指指向旋转轴)
特性:刚体定轴转动时,所有质点的角速度相同 - 刚体线速度与角速度的转换:
对于圆周运动: v = ω × r v = \omega \times r v=ω×r ,其中 r r r 为旋转半径
三维刚体运动:某点的线速度 v与角速度 Ω 满足 v = Ω × r v = \Omega \times r v=Ω×r , r r r 为点到旋转轴的矢量 - 刚体运动中的特殊性质
1、定轴转动特性: - 各质点角速度相同,线速度与半径成正比
- 向心加速度相同,切向加速度因半径差异可能不同
2、复合运动分析 - 若坐标系 {B} 相对于 {A} 运动时,点
Q
Q
Q 的线速度需叠加平移和旋转分量:
A v Q = A v B , O R G + A Ω B × A r Q ^Av_Q = ^Av_{B,ORG} + ^A\Omega_B \times ^Ar_Q AvQ=AvB,ORG+AΩB×ArQ
其中: A v B , O R G ^Av_{B,ORG} AvB,ORG为原点平移速度, A r Q ^Ar_Q ArQ为点 Q Q Q的位置矢量
5.4节 对角速度的进一步研究(提炼总结)
- 正交矩阵导数的性质与几何意义
1、导数与反对称矩阵的关系 - 对正交矩阵
Q
(
t
)
Q(t)
Q(t) 求导,其导数
Q
˙
\dot{Q}
Q˙ 满足:
Q ˙ T Q + Q T Q ˙ = 0 ⇒ Q T Q ˙ = − ( Q T Q ˙ ) T \dot{Q}^T Q + Q^T \dot{Q} = 0 \quad \Rightarrow \quad Q^T \dot{Q} = -(Q^T \dot{Q})^T Q˙TQ+QTQ˙=0⇒QTQ˙=−(QTQ˙)T
这表明 Q T Q ˙ Q^T \dot{Q} QTQ˙ 是一个反对称矩阵 - 若定义
Ω
=
Q
T
Q
˙
\Omega = Q^T \dot{Q}
Ω=QTQ˙,则
Ω
\Omega
Ω 为反对称矩阵,且
Q
˙
=
Q
Ω
\dot{Q} = Q \Omega
Q˙=QΩ
2、几何意义 - 反对称矩阵 Ω \Omega Ω 对应角速度矢量,描述旋转矩阵的瞬时变化率
- 在三维空间中,
Ω
\Omega
Ω 可表示为:
Ω = [ 0 − ω 3 ω 2 ω 3 0 − ω 1 − ω 2 ω 1 0 ] \Omega = \begin{bmatrix} 0 & -\omega_3 & \omega_2 \\ \omega_3 & 0 & -\omega_1 \\ -\omega_2 & \omega_1 & 0 \end{bmatrix} Ω= 0ω3−ω2−ω30ω1ω2−ω10
其中 ω = [ ω 1 , ω 2 , ω 3 ] T \omega = [\omega_1, \omega_2, \omega_3]^T ω=[ω1,ω2,ω3]T 为角速度矢量
3、行列式导数的性质 - 正交矩阵的行列式
det
(
Q
)
=
±
1
\det(Q) = \pm 1
det(Q)=±1,其导数为零:
d d t det ( Q ) = det ( Q ) ⋅ tr ( Q T Q ˙ ) = 0 \frac{d}{dt} \det(Q) = \det(Q) \cdot \text{tr}(Q^T \dot{Q}) = 0 dtddet(Q)=det(Q)⋅tr(QTQ˙)=0
因为 tr ( Ω ) = 0 \text{tr}(\Omega) = 0 tr(Ω)=0,反对称矩阵的迹为零
4、链式法则与复合函数
若 Q ( t ) Q(t) Q(t) 和 R ( t ) R(t) R(t) 均为正交矩阵,其乘积导数为:
d d t ( Q R ) = Q ˙ R + Q R ˙ = Q Ω 1 R + Q R Ω 2 = Q R ( R T Ω 1 R + Ω 2 ) \frac{d}{dt}(QR) = \dot{Q}R + Q\dot{R} = Q \Omega_1 R + Q R \Omega_2 = QR(R^T \Omega_1 R + \Omega_2) dtd(QR)=Q˙R+QR˙=QΩ1R+QRΩ2=QR(RTΩ1R+Ω2)
其中 Ω 1 , Ω 2 \Omega_1, \Omega_2 Ω1,Ω2 分别为 Q Q Q 和 R R R 对应的反对称矩阵
5、特殊情况的简化
当 Q Q Q 为定轴旋转矩阵时, Q ˙ \dot{Q} Q˙可直接通过角速度矢量表达:
Q ˙ = ω × Q \dot{Q} = \omega \times Q Q˙=ω×Q
其中 × \times × 表示叉积
5.5节 机器人连杆的运动(提炼总结)
- 在任一瞬间,机器人的每个连杆都具有一定的线速度和角速度
5.6节 连杆之间的速度“传递”(提炼总结)
- 操作臂连杆速度传递原理:通过链式结构将基座速度逐级传递至末端执行器
一、基本传递原理
1、角速度传递
连杆 i + 1 i+1 i+1 的角速度 i + 1 ω i + 1 ^{i+1}\omega_{i+1} i+1ωi+1 由两部分组成: - 连杆 i i i 的角速度 i ω i ^{i}\omega_{i} iωi 经坐标系旋转变换后的分量 i i + 1 R ⋅ i ω i _{i}^{i+1}R \cdot ^{i}\omega_{i} ii+1R⋅iωi
- 关节
i
+
1
i+1
i+1 自身旋转引起的分量
θ
˙
i
+
1
⋅
i
+
1
Z
^
i
+
1
\dot{\theta}_{i+1} \cdot ^{i+1}\hat{Z}_{i+1}
θ˙i+1⋅i+1Z^i+1
公式表达为:
i + 1 ω i + 1 = i i + 1 R ⋅ i ω i + θ ˙ i + 1 ⋅ i + 1 Z ^ i + 1 ^{i+1}\omega_{i+1} = _{i}^{i+1}R \cdot ^{i}\omega_{i} + \dot{\theta}_{i+1} \cdot ^{i+1}\hat{Z}_{i+1} i+1ωi+1=ii+1R⋅iωi+θ˙i+1⋅i+1Z^i+1
其中: i + 1 Z ^ i + 1 ^{i+1}\hat{Z}_{i+1} i+1Z^i+1为关节轴单位矢量
2、线速度传递
连杆 i + 1 i+1 i+1 原点线速度 i + 1 v i + 1 ^{i+1}v_{i+1} i+1vi+1 包含: - 连杆 i i i 原点线速度 i v i ^{i}v_i ivi 的旋转变换分量
- 连杆
i
i
i 角速度
i
ω
i
^{i}\omega_i
iωi 与连杆
i
i
i 到
i
+
1
i+1
i+1 的位置矢量
i
P
i
+
1
^{i}P_{i+1}
iPi+1 的叉积项
公式表达为:
i + 1 v i + 1 = i i + 1 R ( i v i + i ω i × i P i + 1 ) ^{i+1}v_{i+1} = _{i}^{i+1}R(^{i}v_i + ^{i}\omega_i \times ^{i}P_{i+1}) i+1vi+1=ii+1R(ivi+iωi×iPi+1)
对于移动关节,需额外添加关节平移速度分量
二、递推计算流程
1、初始化
基座(连杆0)的线速度和角速度通常设为 0 v 0 = 0 ^0v_0=0 0v0=0, 0 ω 0 = 0 ^0\omega_0=0 0ω0=0
2、逐连杆计算
从基座开始,依次计算每个连杆的角速度和线速度: - 旋转关节:角速度按上述公式叠加,线速度传递需包含旋转效应
- 移动关节:角速度仅传递旋转变换分量,线速度需叠加关节平移速度
3、末端速度合成
末端执行器的速度由最后一个连杆的速度分量组合而成,可通过雅可比矩阵映射为关节速度的函数
5.7节 雅可比(提炼总结)
- 雅可比矩阵:用于描述关节空间速度与末端执行器笛卡尔空间速度之间的映射关系。以下是其关键要点:
1、定义与数学形式 - 雅可比矩阵是由一阶偏导数组成的矩阵,将关节速度向量 q 映射为末端执行器的线速度 v 和角速度 ω
- 对于具有 n 个关节的操作臂,雅可比矩阵 J 的维度通常为 6×n(6代表笛卡尔空间的6自由度:3个平移+3个旋转)
- 数学表达式为:
[ v ω ] = J ( q ) ⋅ q ˙ \begin{bmatrix} v \\ \omega \end{bmatrix} = J(q) \cdot \dot{q} [vω]=J(q)⋅q˙
其中 q为关节变量
2、物理意义 - 速度传递:雅可比矩阵的每一列表示对应关节运动对末端线速度和角速度的贡献。
- 静力映射:通过雅可比转置矩阵,可将末端执行器的力/力矩映射到关节扭矩(静力学分析)
3、计算方法 - 位置求导法:对正运动学方程直接求偏导得到雅可比矩阵
- 矢量积法:利用连杆坐标系间的几何关系,通过矢量叉积计算雅可比矩阵的列向量
- 微分变换法:基于相对坐标系微分运动递推
4、应用场景 - 速度控制:实时计算关节速度以实现末端轨迹跟踪
- 奇异点分析:当雅可比矩阵行列式为零时,操作臂失去某些方向的运动能力(奇异位形)
- 冗余机械臂:非方阵雅可比需通过伪逆求解逆运动学
5.8节 奇异性(提炼总结)
- 机构的奇异位形:指机构在特定位形下出现自由度突变、运动或力传递能力丧失的特殊状态
1、基本定义 - 当机构雅可比矩阵行列式为零(det(J)=0)时,机构失去部分自由度或无法传递力/运动,称为奇异位形
- 物理表现包括:关节速度无限大、末端执行器失控、驱动力失效等
2、分类 - 运动学奇异:雅可比矩阵秩降低导致瞬时自由度增加(如六轴机器人腕部奇异)
- 约束奇异:机构支链的约束力线性相关,导致动平台失控(常见于并联机构)
- 驱动奇异:主动关节无法驱动机构运动(如死点位置)
5.9节 操作臂的静力(提炼总结)
- 操作臂的静力:是研究在忽略惯性力(即静态平衡条件下)时,关节力矩与末端执行器所受外力/力矩之间映射关系
1、静力平衡条件 - 每个连杆需满足力平衡 ∑F=0 和力矩平衡 ∑τ=0,通过递推从末端向基座计算各关节受力
- 忽略重力时,静力仅由末端负载引起,定义 fi 和 ni分别为连杆 i−1 对连杆 i 的作用力和力矩
2、雅可比矩阵映射 - 末端广义力
[
f
m
]
T
[f \ m]^T
[f m]T与关节力矩 τ 的关系通过雅可比矩阵转置建立:
τ = J T F \tau = J^T F τ=JTF
其中 J 为速度雅可比矩阵
5.10节 力域中的雅可比(提炼总结)
- 力域雅可比矩阵:是描述末端执行器所受外力/力矩与关节力矩之间映射关系的核心工具,其本质是速度雅可比矩阵的转置应用
1、虚功原理推导
通过虚功原理建立笛卡尔空间力 F = [ f m ] T F = [f \ m]^T F=[f m]T 与关节力矩 τ \tau τ 的关系:
F T ⋅ δ χ = τ T ⋅ δ θ F^T \cdot \delta\chi = \tau^T \cdot \delta\theta FT⋅δχ=τT⋅δθ
结合速度雅可比定义 δ χ = J δ θ \delta\chi = J \delta\theta δχ=Jδθ,导出静态力映射关系:
τ = J T F \tau = J^T F τ=JTF
该式表明雅可比转置将末端力线性映射为等效关节力矩
2、物理意义 - 矩阵 J T J^T JT 的每一列表示单位末端力在各关节上产生的力矩分量、
- 当 J J J 为方阵且非奇异时,力映射是双向的( F = J − T τ F = J^{-T}\tau F=J−Tτ 反向计算)
5.11节 速度和静力的笛卡尔变换(提炼总结)
- 速度和静力的笛卡尔变换:笛卡尔变换用于描述机器人末端执行器的速度(运动学)和静力(静力学)在关节空间与任务空间之间的映射关系。其核心工具是雅可比矩阵
一、速度的笛卡尔变换(运动学)基本原理: - 速度雅可比矩阵 J 将关节速度 q 映射到末端执行器的笛卡尔速度
X
˙
\dot{X}
X˙:
X ˙ = J q ˙ \dot{X} = J \dot{q} X˙=Jq˙ - X ˙ = [ v ω ] \dot{X} = \begin{bmatrix} v \\ \omega \end{bmatrix} X˙=[vω],其中 v 是线速度,ω 是角速度
- J 的维度:6×n ,其中 n 是关节数
二、静力的笛卡尔变换(静力学)基本原理: - 静力雅可比矩阵
J
T
J^T
JT (速度雅可比的转置)将末端执行器的笛卡尔力
F
F
F 映射到关节力矩
τ
\tau
τ :
τ = J T F \tau = J^T F τ=JTF - F = [ f m ] F = \begin{bmatrix} f \\ m \end{bmatrix} F=[fm],其中 f 是力,m 是力矩
- 该关系由虚功原理导出
三、实战
问题:写出一个matlab程序计算雅可比矩阵并对平面3R机器人进行分步速度控制仿真,已知机器人连杆长度L = [1.0, 0.8, 0.6],起始关节角 q0 = [pi/6, pi/4, pi/3],并且恒定的期望笛卡尔速度xd_dot = [0.1; -0.05],仿真5秒钟,时步为0.1s,在每个时步在屏幕上对这个机器人进行动画显示,并显示运动轨迹
解答:
1、分析问题:
期望笛卡尔速度(xd_dot)指机器人末端执行器在笛卡尔空间中的目标运动速度,xd_dot = [0.1; -0.05] 表示期望末端在X轴方向以0.1 m/s、Y轴方向以-0.05 m/s的速度运动。通过雅可比矩阵伪逆计算关节速度时,xd_dot作为控制系统的输入目标,驱动关节角速度使末端实际速度跟踪该期望值
2、matlab程序
% 平面3R机器人速度控制仿真(带实时动画)
function planar_3R_robot_sim()
% 机器人参数
L = [1.0, 0.8, 0.6]; % 连杆长度(m)
q0 = [pi/6, pi/4, pi/3]; % 初始关节角(rad)
xd_dot = [0.1; -0.05]; % 期望笛卡尔速度[m/s m/s]
% 仿真参数
T = 5; % 总仿真时间(s)
dt = 0.1; % 时间步长(s)
steps = T/dt; % 总步数
% 初始化图形窗口
figure;
axis equal;
grid on;
xlim([-sum(L), sum(L)]);
ylim([-sum(L), sum(L)]);
title('平面3R机器人速度控制仿真');
xlabel('X(m)'); ylabel('Y(m)');
hold on;
% 初始化机器人状态
q = q0';
x_history = zeros(2, steps+1);
x_history(:,1) = forward_kinematics(q, L);
% 主循环
for k = 1:steps
% 计算雅可比矩阵
J = jacobian_3R(q, L);
% 伪逆求解关节速度
q_dot = pinv(J) * xd_dot;
% 更新关节角度
q = q + q_dot * dt;
% 正向运动学
x = forward_kinematics(q, L);
x_history(:,k+1) = x;
% 绘制机器人状态
cla; % 清除上一帧
draw_robot(q, L); % 绘制机器人
plot(x_history(1,1:k+1), x_history(2,1:k+1), 'r-'); % 绘制轨迹
drawnow; % 立即刷新
pause(dt); % 控制动画速度
end
end
% 正向运动学函数
function x = forward_kinematics(q, L)
x1 = L(1)*cos(q(1));
y1 = L(1)*sin(q(1));
x2 = x1 + L(2)*cos(q(1)+q(2));
y2 = y1 + L(2)*sin(q(1)+q(2));
x = [x2 + L(3)*cos(q(1)+q(2)+q(3));
y2 + L(3)*sin(q(1)+q(2)+q(3))];
end
% 雅可比矩阵计算函数
function J = jacobian_3R(q, L)
s1 = sin(q(1)); c1 = cos(q(1));
s12 = sin(q(1)+q(2)); c12 = cos(q(1)+q(2));
s123 = sin(q(1)+q(2)+q(3)); c123 = cos(q(1)+q(2)+q(3));
J11 = -L(1)*s1 - L(2)*s12 - L(3)*s123;
J12 = -L(2)*s12 - L(3)*s123;
J13 = -L(3)*s123;
J21 = L(1)*c1 + L(2)*c12 + L(3)*c123;
J22 = L(2)*c12 + L(3)*c123;
J23 = L(3)*c123;
J = [J11 J12 J13;
J21 J22 J23];
end
% 机器人绘制函数
function draw_robot(q, L)
% 计算各关节位置
x0 = 0; y0 = 0;
x1 = L(1)*cos(q(1));
y1 = L(1)*sin(q(1));
x2 = x1 + L(2)*cos(q(1)+q(2));
y2 = y1 + L(2)*sin(q(1)+q(2));
x3 = x2 + L(3)*cos(q(1)+q(2)+q(3));
y3 = y2 + L(3)*sin(q(1)+q(2)+q(3));
% 绘制连杆
plot([x0 x1], [y0 y1], 'b-o', 'LineWidth', 2);
plot([x1 x2], [y1 y2], 'g-o', 'LineWidth', 2);
plot([x2 x3], [y2 y3], 'r-o', 'LineWidth', 2);
% 标记关节
plot(x0, y0, 'ko', 'MarkerSize', 10, 'MarkerFaceColor', 'k');
plot(x1, y1, 'ko', 'MarkerSize', 8, 'MarkerFaceColor', 'k');
plot(x2, y2, 'ko', 'MarkerSize', 8, 'MarkerFaceColor', 'k');
plot(x3, y3, 'mo', 'MarkerSize', 6, 'MarkerFaceColor', 'm');
end
3、运行结果:
平面3R机器人速度控制仿真