腿足机器人之七- 逆运动学
腿足机器人之七- 逆运动学
- 基本概念
- 腿部运动的数学表示
- 坐标系定义以及自由度说明
- 正运动学模型
- 逆运动学求解
- 几何解法
- 数值迭代法
- 雅可比矩阵法基础
- 双足机器人步态规划中的雅可比法应用
- 工程挑战与解决方案
- 实际应用中的工具和算法
- 多解问题
- 高自由度机器人(如Atlas的28自由度)
基本概念
机器人运动控制的本质是将高层指令(“向前走”,“右侧走移动”)转化为关节电机的转动角度,上一篇的正运动学是从关节角度推导出机器人的末端位置,而逆运动学(Inverse Kinematics,IK)是已知机器人末端(如足端)的位置和姿态,反推各关节角度的过程。
腿部自由度越多,解算难度指数级上升(以人类腿部7自由度 vs 工业机械臂6自由度为例),步态规划中需要考虑支撑相和摆动相的切换,以及如何协调双腿的运动。
腿部运动的数学表示
这部分包括世界坐标系、髋关节坐标系以及足端坐标系,此外还涉及D-H参数以及从D-H参数到齐次变换矩阵,在上一篇博客《腿足机器人之六- 前向运动学》已经介绍,这里简略展示计算过程,不清楚可以参考上一篇博客。
坐标系定义以及自由度说明
双足人形机器人髋关节的三个自由度对应绕基座标系的三个轴的旋转:
- 偏航(Yaw):绕Z轴旋转,角度记为 ψ \psi ψ
- 俯仰(Pitch):绕Y轴旋转,角度记为 θ \theta θ
- 横滚(Roll):绕X轴旋转,角度记为 ϕ \phi ϕ
基座标系(O₀) 设在髋关节中心,X轴向前,Y轴向左,Z轴向上。旋转顺序为ZYX,对应的旋转矩阵为:
R h i p = R z ( ψ ) ⋅ R y ( θ ) ⋅ R x ( ϕ ) R_{hip}=R_z(\psi) \cdot R_y(\theta) \cdot R_x(\phi) Rhip=Rz(ψ)⋅Ry(θ)⋅Rx(ϕ)
正运动学模型
假设大腿长度为
l
1
l_1
l1,小腿长度为
l
2
l_2
l2,膝关节俯仰角为
θ
k
\theta_k
θk,脚的位置
P
P
P在基座标系中的坐标为:
P
=
R
h
i
p
⋅
(
[
0
,
0
,
l
1
]
+
R
y
(
θ
k
)
⋅
[
0
,
0
,
l
2
]
)
P=R_{hip}\cdot ([0,0,l_1]+R_y(\theta_k) \cdot[0,0,l_2])
P=Rhip⋅([0,0,l1]+Ry(θk)⋅[0,0,l2])
其中:
- R z ( ψ ) = [ cos ψ − sin ψ 0 sin ψ cos ψ 0 0 0 1 ] R_z(\psi)=\begin{bmatrix} \cos \psi & -\sin \psi & 0 \\ \sin \psi & \cos \psi & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(ψ)= cosψsinψ0−sinψcosψ0001
- R y ( θ ) = [ cos θ 0 sin θ 0 1 0 − sin θ 0 cos θ ] R_y(\theta)=\begin{bmatrix} \cos \theta & 0 & \sin \theta \\ 0 & 1 & 0 \\ -\sin \theta & 0 & \cos \theta \end{bmatrix} Ry(θ)= cosθ0−sinθ010sinθ0cosθ
-
R
x
(
ϕ
)
=
[
1
0
0
0
cos
ϕ
−
sin
ϕ
0
sin
ϕ
cos
ϕ
]
R_x(\phi)=\begin{bmatrix} 1& 0& 0 \\ 0 & \cos \phi & -\sin \phi \\ 0 & \sin \phi & \cos \phi \end{bmatrix}
Rx(ϕ)=
1000cosϕsinϕ0−sinϕcosϕ
上式本质上是坐标系变换的级联过程,包含如下关键步骤: - 1.大腿的固定长度:髋关节到膝关节的位移 [ 0 , 0 , l 1 ] [0,0,l_1] [0,0,l1];
- 2.膝关节的旋转:绕膝关节局部Y轴的旋转 R y ( θ k ) R_y(\theta_k) Ry(θk),影响小腿的延伸方向
- 髋关节的整体旋转:将整个腿部(大腿+小腿)的姿态通过 R h i p R_{hip} Rhip转换到基座标系。
注:若踝关节存在,需在公式末尾添加踝关节的旋转和平移,例如:
P
=
R
h
i
p
⋅
(
[
0
,
0
,
l
1
]
+
R
y
(
θ
k
)
⋅
[
0
,
0
,
l
2
]
)
+
R
a
n
k
l
e
⋅
△
p
P=R_{hip}\cdot ([0,0,l_1]+R_y(\theta_k) \cdot[0,0,l_2]) +R_{ankle} \cdot \triangle p
P=Rhip⋅([0,0,l1]+Ry(θk)⋅[0,0,l2])+Rankle⋅△p
逆运动学求解
腿部逆运动学主要有三大解法
方法 | 原理 | 优点 | 缺点 |
---|---|---|---|
几何解析法 | 利用三角函数分解几何关系 | 计算速度快 | 仅适用于简单结构,如平面式机器人 |
代数法 | 求解非线性方程组 | 精确解 | 可能无解或多解 |
数值迭代法 | 雅可比矩阵+梯度下降 | 通用性强 | 计算量大,需防发散 |
几何解法
1.确定脚的目标位置和方向
设目标位置为
P
=
[
x
,
y
,
z
]
P=[x,y,z]
P=[x,y,z],其单位方向向量为:
u
=
P
∣
∣
P
∣
∣
=
[
u
x
,
u
y
,
u
z
]
u=\frac{P}{||P||}=[u_x, u_y, u_z]
u=∣∣P∣∣P=[ux,uy,uz]
2.分解髋关节旋转矩阵
根据正运动学,旋转后的z轴应对齐于
u
u
u,即:
R
h
i
p
⋅
[
0
,
0
,
1
]
T
=
u
R_{hip} \cdot [0,0,1]^T = u
Rhip⋅[0,0,1]T=u
展开后得到三个方程:
{
cos
ψ
sin
θ
cos
ϕ
+
sin
ψ
sin
ϕ
=
u
x
sin
ψ
sin
θ
cos
ϕ
−
cos
ψ
sin
ϕ
=
u
y
cos
θ
cos
ϕ
=
u
z
\left\{ \begin{aligned} \cos \psi \sin \theta \cos \phi + \sin \psi \sin \phi & = & u_x \\ \sin \psi \sin \theta \cos \phi - \cos \psi \sin \phi & = & u_y \\ \cos \theta \cos \phi & = & u_z \end{aligned} \right.
⎩
⎨
⎧cosψsinθcosϕ+sinψsinϕsinψsinθcosϕ−cosψsinϕcosθcosϕ===uxuyuz
3.计算俯仰角
θ
\theta
θ和横滚脚
ϕ
\phi
ϕ
从第三个方程:
cos
θ
cos
ϕ
=
u
z
⇒
ϕ
=
arccos
(
u
z
cos
θ
)
\cos \theta \cos \phi= u_z \Rightarrow \phi=\arccos(\frac{u_z}{\cos \theta})
cosθcosϕ=uz⇒ϕ=arccos(cosθuz)
代入前两个方程,结合几何约束求解
θ
\theta
θ和
ϕ
\phi
ϕ,例如当
ϕ
=
0
\phi = 0
ϕ=0时,简化为:
θ
=
arccos
(
u
z
)
,
ψ
=
arctan
2
(
u
y
,
x
)
\theta = \arccos(u_z), \psi=\arctan2(u_y,_x)
θ=arccos(uz),ψ=arctan2(uy,x)
4.计算膝关节角度
θ
k
\theta_k
θk
根据余弦定理,解算膝关节角度:
θ
k
=
arccos
(
∣
∣
p
∣
∣
2
−
l
1
2
−
l
2
2
2
l
1
l
2
)
\theta_k=\arccos(\frac{||p||^2-l_1^2-l_2^2}{2l_1l_2})
θk=arccos(2l1l2∣∣p∣∣2−l12−l22)
注意事项
- 多解性:可能存在多组解,需根据关节限制选择。
- 奇异点:当大腿与目标方向共线时,需特殊处理。
- 姿态调整:踝关节需进一步调整以满足脚的朝向。
数值迭代法
雅可比矩阵在机器人学中用于描述末端执行器速度与关节速度之间的关系。逆运动学问题中,雅可比矩阵的逆或伪逆被用来迭代调整关节角度,使末端执行器逐步接近目标位置。对于双足机器人来说,特别是在动态运动如小跑和走路时,雅可比方法能处理实时调整的需求,因为步态需要连续更新关节角度以保持平衡和步态周期。
步态规划中需要考虑支撑相和摆动相的切换,以及如何协调双腿的运动。可能需要结合具体的数学模型,例如线性倒立摆模型(LIPM)或零力矩点(ZMP)准则来确保动态稳定性。雅可比方法在这里可能用于实时调整关节角度以满足ZMP的要求。
雅可比矩阵法基础
1.雅可比矩定义
雅可比矩阵描述了机器人末端执行器速度(线速度
p
˙
\dot {\boldsymbol p}
p˙和角速度
w
\boldsymbol w
w)与关节速度
q
˙
\dot {\boldsymbol q}
q˙之间的关系:
[
p
˙
w
]
=
J
(
q
)
⋅
q
˙
\begin{bmatrix} \dot {\boldsymbol p} \\ \boldsymbol w \end{bmatrix}=\boldsymbol J(\boldsymbol q) \cdot \dot {\boldsymbol q}
[p˙w]=J(q)⋅q˙
其中,
J
\boldsymbol J
J是6 x n的雅可比矩阵(n为关节数)。
2.逆运动学迭代求解
目标是通过末端位置误差
e
=
p
t
a
r
g
e
t
−
p
c
u
r
r
e
n
t
\boldsymbol e=\boldsymbol p_{target}-\boldsymbol p_{current}
e=ptarget−pcurrent,调整关节角度
q
\boldsymbol q
q:
△
q
=
J
+
⋅
e
\triangle \boldsymbol q= \boldsymbol J^{+} \cdot \boldsymbol e
△q=J+⋅e
其中
J
+
\boldsymbol J^+
J+是雅可比矩阵的伪逆(Moore-Penrose 逆),计算为:
J
+
=
J
⊤
(
J
J
⊤
)
−
1
(
当
J
行满秩时
)
\boldsymbol J^+=\boldsymbol J^\top(\boldsymbol J \boldsymbol J^\top)^{-1} (当\boldsymbol J行满秩时)
J+=J⊤(JJ⊤)−1(当J行满秩时)
或使用阻尼最小二乘法避免奇异:
J
+
=
J
⊤
(
J
J
⊤
+
λ
2
I
)
−
1
\boldsymbol J^+=\boldsymbol J^\top(\boldsymbol J \boldsymbol J^\top + \lambda^2 \boldsymbol I)^{-1}
J+=J⊤(JJ⊤+λ2I)−1
λ
\lambda
λ为代入阻尼因子,通常取0.001~0.1。
3.迭代步骤
a.初始化:设定初始关节角度
q
0
\boldsymbol q_0
q0,容差
ϵ
\epsilon
ϵ,步长
α
\alpha
α。
b.计算误差:
e
i
=
p
t
a
r
g
e
t
−
f
k
i
n
(
q
i
)
\boldsymbol e_i = \boldsymbol p_{target} - f_{kin}(\boldsymbol q_i)
ei=ptarget−fkin(qi),其中
f
k
i
n
f_{kin}
fkin为正运动学函数。
c.更新关节角:
q
i
+
1
=
q
i
+
α
⋅
J
+
(
q
i
)
⋅
e
i
\boldsymbol q_{i+1}=\boldsymbol q_i + \alpha \cdot \boldsymbol J^{+}(\boldsymbol q_i) \cdot \boldsymbol e_i
qi+1=qi+α⋅J+(qi)⋅ei
d.终止条件:当
∣
∣
e
i
∣
∣
<
ϵ
||e_i|| < \epsilon
∣∣ei∣∣<ϵ或达到最大迭代次数时停止。
双足机器人步态规划中的雅可比法应用
对于多足机器人,涉及到多个腿的并行运动,需要对步态进行规划,基于周期性步态(如四足机器人的对角步态)或非周期性步态(如动态奔跑),结合时间参数生成关节轨迹,常用方法包括零力矩点(ZMP)理论:用于双足机器人,确保质心投影在支撑多边形内和贝塞尔曲线或样条插值:生成平滑的足端轨迹。
- 步态特征
- 步行(Walking):交替支撑相(单腿支撑)和摆动相,重心轨迹平滑,ZMP(零力矩点)始终在支撑多边形内。
- 小跑(Trot):对角腿同步运动,动态平衡需求更高,存在双支撑相和腾空相。
- 单腿逆运动学模型
以右腿为例,关节配置为髋关节(横滚 ϕ \phi ϕ、俯仰 θ \theta θ、偏航 ψ \psi ψ)和膝关节 θ k \theta_k θk,踝关节 θ a \theta_a θa。
构造雅可比矩阵:
对于腿部位置 p = [ x , y , z ] T \boldsymbol p=[x,y,z]^T p=[x,y,z]T,雅可比矩阵的列为各关节对末端速度的贡献:
J = [ ∂ x ∂ ϕ ∂ x ∂ θ ∂ x ∂ ψ ∂ x ∂ θ k ∂ y ∂ ϕ ∂ y ∂ θ ∂ y ∂ ψ ∂ y ∂ θ k ∂ z ∂ ϕ ∂ z ∂ θ ∂ z ∂ ψ ∂ z ∂ θ k ] \boldsymbol J = \begin{bmatrix} \frac{\partial x}{\partial \phi} & \frac{\partial x}{\partial \theta} & \frac{\partial x}{\partial \psi} & \frac{\partial x}{\partial \theta_k} \\ \frac{\partial y}{\partial \phi} & \frac{\partial y}{\partial \theta} & \frac{\partial y}{\partial \psi} & \frac{\partial y}{\partial \theta_k} \\ \frac{\partial z}{\partial \phi} & \frac{\partial z}{\partial \theta} & \frac{\partial z}{\partial \psi} & \frac{\partial z}{\partial \theta_k} \end{bmatrix} J= ∂ϕ∂x∂ϕ∂y∂ϕ∂z∂θ∂x∂θ∂y∂θ∂z∂ψ∂x∂ψ∂y∂ψ∂z∂θk∂x∂θk∂y∂θk∂z
偏导数计算示例(髋关节俯仰角
θ
\theta
θ):
∂
p
∂
θ
=
R
z
(
ψ
)
⋅
(
∂
R
y
(
θ
)
∂
θ
)
⋅
R
x
(
ϕ
)
⋅
p
l
i
n
k
\frac{\partial \boldsymbol p}{\partial \theta} = R_z(\psi) \cdot(\frac{\partial \boldsymbol R_y(\theta)}{\partial \theta}) \cdot \boldsymbol R_x(\phi) \cdot \boldsymbol p_{link}
∂θ∂p=Rz(ψ)⋅(∂θ∂Ry(θ))⋅Rx(ϕ)⋅plink
- 步行步态求解
支撑相(以右腿支撑为例):
- 目标:调整左腿摆动轨迹,同时保持躯干平衡。
- 躯干控制:通过髋关节角度补偿重心偏移,雅可比矩阵需包含躯干姿态的影响。
- 迭代过程:
- 规划左脚摆动轨迹 p f o o t ( t ) \boldsymbol p_{foot}(t) pfoot(t)
- 计算当前左脚位置误差 e = p f o o t ( t ) − p c u r r e n t ( t ) e=\boldsymbol p_{foot}(t) - \boldsymbol p_{current}(t) e=pfoot(t)−pcurrent(t)
- 用雅可比逆矩阵更新左腿关节角 △ q = J + ⋅ e \triangle q=\boldsymbol J^+ \cdot \boldsymbol e △q=J+⋅e
- 同步调整右腿髋关节横滚 ϕ \phi ϕ以维持 ZMP 在右脚支撑区内
摆动相轨迹规划:
常用三次多项式插值,设摆动时间
T
T
T,起点
p
0
\boldsymbol p_0
p0,终点
p
f
\boldsymbol p_f
pf,则:
p
(
t
)
=
p
0
+
(
3
(
t
T
)
2
−
2
(
t
T
)
3
)
(
p
f
−
p
0
)
\boldsymbol p(t) = \boldsymbol p_0 + (3(\frac{t}{T})^2 - 2(\frac{t}{T})^3)(\boldsymbol p_f - \boldsymbol p_0)
p(t)=p0+(3(Tt)2−2(Tt)3)(pf−p0)
4.小跑步态求解
动态特性:双足腾空相存在,需控制落地冲击。
- 腾空相:腿部收缩以减少转动惯量。
- 支撑相:对角腿(如右腿和左腿)同步支撑,雅可比矩阵需同时处理双腿的耦合运动。
协调控制步骤:
- 规划躯干质心(CoM)轨迹,使其符合倒立摆动力学。
- 对角腿的脚部轨迹 p f o o t , l e f t ( t ) \boldsymbol p_{foot,left}(t) pfoot,left(t)和 p f o o t , r i g h t ( t ) \boldsymbol p_{foot,right}(t) pfoot,right(t)相位差 18 0 o 180^{o} 180o。
- 对每条腿独立应用雅可比逆矩阵法,但需引入耦合项确保躯干平衡:
△ q l e f t = J l e f t + ⋅ e l e f t + K ⋅ ( q r i g h t − q n o m i n a l ) \triangle \boldsymbol q_{left} = \boldsymbol J_{left}^{+} \cdot \boldsymbol e_{left} + K \cdot (\boldsymbol q_{right}-\boldsymbol q_{nominal}) △qleft=Jleft+⋅eleft+K⋅(qright−qnominal)
K为细条增益矩阵。
5.关键问题与优化
- 奇异性处理,当腿完全伸展 θ k = 0 \theta_k =0 θk=0时雅可比矩阵秩亏,需增加阻尼项或约束关节速度。
- 多目标优化
同时优化脚部位置、躯干姿态和关节限制:
min △ q ( ∣ ∣ J △ q − e ∣ ∣ 2 + λ ∣ ∣ △ q ∣ ∣ 2 ) \mathop{\min}_{\triangle q} (||\boldsymbol J \triangle \boldsymbol q - e||^2 + \lambda|| \triangle \boldsymbol q||^2) min△q(∣∣J△q−e∣∣2+λ∣∣△q∣∣2)
其解为:
△ q = ( J ⊤ J + λ I ) − 1 J ⊤ e \triangle \boldsymbol q =(\boldsymbol J^{\top} \boldsymbol J + \lambda \boldsymbol I)^{-1}\boldsymbol J^{\top} \boldsymbol e △q=(J⊤J+λI)−1J⊤e - 实时性保障预计算常见步态的雅可比矩阵,或使用高效数值库(如 Eigen, ROS可调用eigen)进行伪逆计算。
工程挑战与解决方案
实际应用中的工具和算法
IKFast(OpenRAVE)
- 原理:自动生成解析解代码,适用于固定结构的机器人。
FABRIK(Forward and Backward Reaching IK)
- 特点:基于几何的迭代算法,高效且无需矩阵运算。
ROS中的IK求解器(如TRAC-IK、KDL)
- 功能:提供数值解接口,支持关节限制和实时计算。
多解问题
选择最优解:根据关节限位、能耗或平滑性选择解。
多解选择策略
能量最优原则:选择关节移动总距离最小的解
避障约束:排除导致机械干涉的解
硬件限制:关节角度限位、速度饱和(示例:舵机最大转角180°)
高自由度机器人(如Atlas的28自由度)
雅可比典型问题与解决方案
奇异位形崩溃:当腿部完全伸直时雅可比矩阵不可逆
解决方案:在轨迹规划阶段避开危险区域
动态扰动影响:奔跑时地面反作用力导致解算失效
应对措施:结合IMU数据实时修正期望位姿