在游戏开发和机器人开发中进场需要用到的一个场景是,给机器人或者游戏角色末位置的位置和姿态,求解可到达给定位置和姿态的各关节的角度值,这里就需要逆向运动学去求解这个问题,在场景中有着很多的应用,比如说六轴机械臂的位姿求解,游戏角色踩楼梯的真实感觉:
常用的六轴机械臂结构:
UE5在Control Rig也中新加入的功能Full Body IK的Control Rig:
问题分析:
给定一个带一个关节的机械臂,其中有一个轴是可以自由转动的,如下
转动后:
那么把末端可以到达的轨迹显示出来:
这就是所有的有解区域,且解都是唯一解
接下来再给这个问题加码,将关节节点添加到两个:
这时候可达的区域将大大增加,如下图,绿色区域为可达区域,红色区域为不可达区域:
其中中间的红色区域就算d3折下来和d2重叠,但是由于长度不够也无法到达红色区域,红色区域的半径为d3为d2
绿色的区域代表可达区域,也代表这个问题有解,其中两个关节的角度代表求出的解
随着关节的增多,解会越来越多,并且不只有一个唯一解,根据以上我们得到两个IK运动学的关键部分:
①在求解前需要判断最后位置是否可达,如果可达才可以开始求解过程
②在问题有多解情况下,为了减少计算量,可以在求解出一个位置后就停止求解