腿足机器人之七- 逆运动学
基本概念
机器人运动控制的本质是将高层指令(“向前走”,“右侧走移动”)转化为关节电机的转动角度,上一篇的正运动学是从关节角度推导出机器人的末端位置,而逆运动学(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) R