UnityVR--机械臂场景6-三自由度逆向解算1

本文我们要做的是:给机器人一个末端坐标,使机器人自动调整姿态。为了使问题简单易懂,我们先以2自由度(XY平面中)的机器人为例,如下图为2自由度机器人的连杆机构模型。

 其中P为末端点即手爪的位置,坐标为(x,y);L1、L2分别为两个手臂的长度,θ1、θ2分别为两个手臂的偏转角度。从几何学的观点来处理这个手爪位置(P)与偏转角度(θ1、θ2)的关系称为运动学(Kinematics)。

已知机器人的偏转角度(θ1、θ2),求其手爪位置P(x,y)的运动学问题称为正运动学(Direct Kinematics)

给定手爪末端位置P(x,y),求出机器人的两个手臂的偏转角度(θ1、θ2)的运动学问题称为逆运动学(Inverse Kinematics)。

在之后的工程场景中,我们需要解决的问题是让机器人从传送带上抓取物体,物体的位置就是手爪最终位置P,因此,以下使用逆运动学方法更容易理解。

1. 二自由度机器人的逆运动学解法:

假设机械臂最初的姿态:与X轴重合

已知:x,y,L1,L2;求θ1、θ2

解:根据勾股定理得到:

所以得到

根据三角公式得到过渡角度θT:  得到:

 根据余弦定理:

得到:   得到:

 同理,θ2也使用余弦定理可得:

 

求出:

 这样就得到了偏转角度θ1和θ2.

 2.三自由度机器人的逆运动学解法:如果给机器人增加一个自由度,让它在三维空间中运动。那么我们可以看作将机器人整体偏转了一个角度θ3,在这个角度上建立一个辅助平面,这样就能看作机器人在这个辅助平面上的运动,又回到了二自由度的解算方法。所以,我们只要增加计算θ3角度,其他与二自由度解算方式相同。

 假设机械臂最初的姿态:与X轴重合,已知:x,y,z,L1,L2;求θ1、θ2、θ3,解析如下图:

解:根据上图,可得 

 那么    所以   或者arctan(x,z)

 然后仿照二自由度机器人的方法,计算偏转平面上的θT、θ1和θ2:

   得到 

   得到 

 求出

 得到θT、θ1和θ2角度后,下面我们在Unity中使用脚本来实现。

本文中的方法,参照了grbl控制3轴机械臂 原理 实现 (二) 之3D机械臂模拟及实现_ourkix的博客

加入自己的瞎琢磨,比较粗陋。且由于数学模型与实际模型的坐标差异,在实际程序中还需要有象限的变化,希望以后有空再改进。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Unity中实现机械臂的逆运动学可以通过以下步骤完成: 1. 创建机械臂模型:在Unity中,首先需要创建机械臂的模型。可以使用Unity的3D建模工具或导入外部模型文件创建机械臂。 2. 定义机械臂关节:根据机械臂的结构,定义每个关节的类型和参数。例如,旋转关节可以使用`HingeJoint`组件来表示,平移关节可以使用`SliderJoint`组件。 3. 实现逆运动学算法:逆运动学算法用于计算机械臂关节的角度或位置以实现特定的目标位置或姿态。常见的逆运动学算法包括解析解法和数值解法。 - 解析解法:对于简单的机械臂结构,可以使用解析解法求解逆运动学问题。这涉及到数学计算和公式推导,可以根据机械臂的结构和要求手动推导出关节角度的表达式。 - 数值解法:对于复杂的机械臂结构或无法求得解析解的情况,可以使用数值解法求解逆运动学问题。这涉及到迭代计算和数值优化算法,通过不断调整关节角度来逼近目标位置或姿态。 4. 实现运动控制:在逆运动学算法的基础上,将计算得到的关节角度或位置应用到机械臂模型上,实现机械臂的运动控制。可以通过修改关节的旋转角度或位置来控制机械臂的姿态。 需要注意的是,机械臂的逆运动学是一个复杂的问题,涉及到数学和物理知识。具体的实现方式和算法选择会根据机械臂的结构和需求而有所不同。以上是一个简单的概述,具体的实现细节可能需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值