逆运动学(一): 二维逆运动学,两根骨胳

这篇博客介绍了逆运动学的基础,特别是针对二维空间中拥有两根骨骼的情况。通过解释如何构建和解决三角形问题,找到控制末端执行器所需的角度,从而确定关节的旋转。文章还涉及了利用余弦定律计算内角,并给出了计算关节旋转角度的代码示例。
摘要由CSDN通过智能技术生成

介绍

逆运动学,這個字分為兩部份,运动学代表物體运动(包括旋转,位移,缩放),而"逆"则是指我们不控制手臂每个关节的旋转位移缩放。逆向运动学是反過來使用終點位置何驱动这些关节的旋转位移缩放。 整个世纪以来,数学家和工程师一直在开发无数解决方案。大多数3D建模软件和游戏引擎(包括Unity)都带有多个工具,可用于操纵不同的東西(例如机械臂,尾巴,触手,机翼等)。但是,这样是有代价的,這就是效率。它太耗时又昂贵,无法同时用作多个角色。 这一讲第一節是一個专门针对两个自由度的手臂的逆运动学。您可以运行多个人物的IK。

img

逆运动学(Inverse Kinematic)

我们想像一下有机械臂,机械臂有两个部份和两个关节,如下图所示。我们要控制末端的执行器(Effector)。因為我们无法直接控制末端(Effector)的位置,只能改變关节的旋转(Rotation)。逆运动学解決的问题是從末端(Effector)的位置找到关节旋转數據。

img

这个算法仅适用于带有两个关节的。我們可以将有两个自由度的手臂建模为三角形。

img

两个关节A和B(均为黑色)可以分别旋转A度和B度。这导致末端执行器(EFFECTOR)移动到最終位置。

内角

我们可以使用三个点A,B和C构造一个内角为 α \alpha α β \beta β γ \gamma γ 的三角形,如下图所示。

我们知道所有边的长度。AB段代表手臂,长度为c;BC段代表前臂,长度为a;CA线段代表肩关节和手之间的距离,长度为b。因為知道三角形的三个边就足以找到其所有角度。控制手所需的两个角度是 α \alpha α β \beta β和。 γ \gamma γ 代入来找到。我们也可以再次用余弦定律来找到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值