跳到正文
EMBODIED INTELLIGENCE · 身体与运动控制

知道关节怎么转,才知道手会到哪里

运动学只研究几何关系:关节配置怎样决定末端位置与姿态,末端目标又能对应哪些关节配置。先用两根连杆手算,再进入坐标变换、逆解与雅可比;不要把“算出一个解”误当作“安全到达”。

同一目标附近展示机械臂的不同肘部姿态,表达末端目标与关节配置并非一一对应。
直觉总览:同一目标附近展示机械臂的不同肘部姿态,表达末端目标与关节配置并非一一对应。 生成插画不承载精确结构、尺寸或安全保证,正文机制图为准。 查看原图 ↗
01 · 从可手算的身体开始

两根连杆,已经足够说明正运动学

想象从肩膀到肘部,再从肘部到手的两段箭头。手的位置是这两段位移之和。肘关节转动改变的是第二段相对第一段的方向,而不是相对房间的方向。许多实现错误就来自把这两种角度混在一起。

x=l1cos⁡q1+l2cos⁡(q1+q2)y=l1sin⁡q1+l2sin⁡(q1+q2)\begin{aligned}x&=l_1\cos q_1+l_2\cos(q_1+q_2)\\y&=l_1\sin q_1+l_2\sin(q_1+q_2)\end{aligned}
二维、两转动关节、刚性连杆模型:l₁、l₂ 为长度,q₁ 相对世界 x 轴,q₂ 相对第一根连杆,角度代入三角函数时用弧度。这里的末端任务只有位置 x、y。

教学设定:两根杆各长 0.3 m,q₁=0°、q₂=90°。第一段向右 0.3 m,第二段向上 0.3 m,所以末端在 (0.3, 0.3) m。换成 q₁=90°、q₂=−90°,末端仍在同一位置,但第二根杆朝向变了。“同一个位置”不代表“同一个位姿”。

两根各长0.3米的连杆,向右再向上与向上再向右两种配置均到达0.3米、0.3米位置,但末端朝向分别为90度与0度
精确几何示意:q₂ 是第二根杆相对第一根杆的转角。两图基座坐标独立;这是位置逆解的两个分支,不是完整位姿的两个相同解。 查看原图 ↗
  1. 配置 q

    两个独立关节角;不包含关节速度和力矩。

  2. 逐段变换

    每根杆的朝向继承前面关节的转动;不能独立相加关节角对应的绝对位置。

  3. 末端位置与姿态

    位置来自位移和,平面姿态角为 q₁+q₂。完整任务须明确是否约束姿态。

正运动学给定本体参数与关节配置,计算末端状态;它没有检查从起点运动过来的路径,也没有计算所需驱动力。
02 · 位姿必须有参照

坐标不是标签,而是计算合同

“杯子在右前方 20 cm”必须说明相对谁:相机、基座还是夹爪?在三维空间中,一个刚体位姿包含旋转与平移。齐次变换把两者写在同一个 4×4 矩阵中;末行让平移能与旋转一起使用矩阵乘法组合。

TAB=[RABpAB01],pˉA=TABpˉB,TAC=TABTBCT_{AB}=\begin{bmatrix}R_{AB}&p_{AB}\\0&1\end{bmatrix},\quad \bar p_A=T_{AB}\bar p_B,\quad T_{AC}=T_{AB}T_{BC}
本文约定 T_AB 把 B 系坐标变成 A 系坐标;R 为 3×3 旋转矩阵,p 为 B 原点在 A 中的位置,齐次点 p̄ 的末元素为 1。矩阵相乘的中间坐标系必须匹配。

旋转和平移一般不可交换。先在世界里向右走,再绕原点转身,与先转身再按原来的坐标向右走,不会落在同一地点。对机器人,交换变换乘法顺序可能让本来正确的目标跑到完全不同的区域。

三维姿态可用旋转矩阵或单位四元数表示;欧拉角直观,但存在表示奇异性。不要把欧拉角的万向节锁和机械臂雅可比的奇异配置当作同一问题:前者是姿态参数化的缺陷,后者是本体在某配置下丢失瞬时运动方向。

03 · 从目标反求身体

逆运动学可能无解,也可能不止一个解

cos⁡q2=x2+y2−l12−l222l1l2,q1=atan2⁡(y,x)−atan2⁡(l2sin⁡q2,l1+l2cos⁡q2)\cos q_2=\frac{x^2+y^2-l_1^2-l_2^2}{2l_1l_2},\quad q_1=\operatorname{atan2}(y,x)-\operatorname{atan2}(l_2\sin q_2,l_1+l_2\cos q_2)
同一二维模型的几何逆解:先由余弦定理求 q₂,再求 q₁。非退化情形下 q₂ 的正负分支对应两种肘部姿态;式子未包含关节限位和碰撞。

如果右侧余弦值超出 [−1,1] 且并非微小浮点误差,目标不在几何可达范围。两杆各长 0.3 m 时,(0.7,0) m 不可达。对可达的 (0.3,0.3) m,前面的两组角度就是两个位置逆解;若再要求末端朝向固定,可能只剩一个,或一个也没有。

更复杂的机械臂常用数值迭代:从初始配置出发,计算目标误差,用局部线性模型产生小的关节修正,再重新计算。初值影响收敛与分支;步长过大可能跨过有效区域。位置误差和旋转误差还应使用一致且明确的度量与权重,不能直接把米和角度随便相加。

逆解返回之后还要做什么

检查残差、关节限位、自碰撞、环境碰撞、与当前姿态的距离,以及附近的奇异性。逆运动学负责找到配置,运动规划才负责如何过去;“解算成功”不应直接触发真机运动。

04 · 局部运动能力

手臂伸直时,有些方向突然动不了

p˙=J(q)q˙,J=[−l1sin⁡q1−l2sin⁡(q1+q2)−l2sin⁡(q1+q2)l1cos⁡q1+l2cos⁡(q1+q2)l2cos⁡(q1+q2)],det⁡J=l1l2sin⁡q2\dot{\mathbf p}=J(q)\dot q,\quad J=\begin{bmatrix}-l_1\sin q_1-l_2\sin(q_1+q_2)&-l_2\sin(q_1+q_2)\\l_1\cos q_1+l_2\cos(q_1+q_2)&l_2\cos(q_1+q_2)\end{bmatrix}, \quad \det J=l_1l_2\sin q_2
J 是二维末端位置对关节角的雅可比矩阵,将关节角速度映射为末端线速度。在 q₂=0 或 π 时行列式为零;这是该位置任务的瞬时奇异配置。

在 q₁=q₂=0 的完全伸直配置,两根杆都沿 x 轴。很小的转动首先带来 y 方向速度,无法产生一阶的 x 方向末端速度。它不是“机器人坏了”,也不是永远不能向内缩;机器人可以先弯曲,再获得新的运动方向。

接近奇异点时,为了实现某个末端速度,反求出的关节速度可能非常大。阻尼最小二乘用正则化减少爆大的速度,但代价是末端跟踪误差;它不会凭空恢复机械结构缺失的方向。应结合速度限制、路径调整与重新选姿态处理。

真实结构 · 七关节机械臂

多一个关节,可以改变肘部而不改变手的位置

Franka 官方接口采用七关节配置。对一般六维末端位姿任务,在非奇异且约束允许的局部区域,七关节系统可以存在不改变末端瞬时运动的内部自由度。它可用于远离限位或避障,但不能据此声称任意位姿都可达。教材 2017 年版的雅可比章节明确区分冗余与奇异性;查看解释。

这也是动作模型不能只学“正确坐标”的原因:同一个末端目标可能对应可执行性完全不同的姿态。机器人需要把几何解放回规划、控制和安全约束中,才能真正动起来。

KNOWLEDGE CONNECTIONS

把这一层放回完整机器人

返回具身智能知识地图,或沿本专栏继续展开:

RESEARCH LEDGER

一手来源与证据边界

优先使用论文、官方文档、官方模型卡和代码仓库。页面中的数字只代表来源所述设置,不自动外推到其他模型与数据。