腿足机器人之七- 逆运动学

基本概念

机器人运动控制的本质是将高层指令(“向前走”,“右侧走移动”)转化为关节电机的转动角度,上一篇的正运动学是从关节角度推导出机器人的末端位置,而逆运动学(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ψ0sinψ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θ0sinθ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ϕ0sinϕcosϕ
    上式本质上是坐标系变换的级联过程,包含如下关键步骤:
  • 1.大腿的固定长度:髋关节到膝关节的位移 [ 0 , 0 , l 1 ] [0,0,l_1] [0,0,l1];
  • 2.膝关节的旋转:绕膝关节局部Y轴的旋转 R y ( θ k ) R_y(\theta_k) R
### 六机器人正向和逆向运动学原理 #### 正向运动学原理 对于六机器人的单而言,正向运动学涉及通过给定的关节角度计算末端执行器(通常是脚尖)的空间位置。此过程依赖于连杆参数,特别是Denavit-Hartenberg (D-H) 参数模型[^1]。 在具体应用中,假设每条具有三个旋转关节,则可以定义一组D-H参数来描述这些关节之间的关系。例如,在MATLAB环境中创建一个三自由度机械臂模型时,可以通过设置`Link`对象及其属性完成建模工作: ```matlab L(1) = Link('d', 0, 'a', 0, 'alpha', pi/2,'offset',-pi/3,'modified'); L(2) = Link('d', 0, 'a', 0.04206, 'alpha', 0 ,'offset',pi/6,'modified'); L(3) = Link('d', 0, 'a', 0.045, 'alpha', 0 ,'offset',0,'modified'); robot = SerialLink(L, 'name','机器人'); ``` 上述代码片段展示了如何利用修改后的D-H参数构建一条简单的三轴串联机构,并展示其结构特性[^4]。 #### 逆向运动学原理 相对于正向运动学,逆向运动学的任务更为复杂,因为它需要解决的是已知目标位姿求解所需关节角的问题。这通常涉及到非线性方程组的数值求解或解析法求解。对于某些特定类型的机器人来说,可能存在闭合形式的解决方案;但对于更复杂的多自由度系统,往往需要用到迭代算法如牛顿拉夫森方法或其他优化策略来进行近似求解。 考虑到六机器人部设计的特点,逆向运动学可能还需要考虑额外约束条件,比如避免自碰撞以及保持稳定步态的要求等。因此,在实际编程过程中,除了基本几何关系外,还需引入更多工程经验和技术手段加以辅助处理。 #### 实现方法概述 为了实现六机器人的正向与逆向运动学功能,建议按照以下思路展开研究: - **理论基础**:深入理解D-H参数表示法及相关变换矩阵的概念; - **工具选择**:选用合适的软件平台(如MATLAB/Simulink、Python Robotics Toolbox等)作为开发环境; - **案例实践**:参照已有实例编写相应程序模块,逐步调试直至满预期性能指标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shichaog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值