特殊:机器人多关节跟随运动
机械手运动控制主要是关节的旋转,通过控制多个关节的角度,实现对机械手的同步控制
机械手运动控制,可以分解为多个关节的运动,下一关节是跟随在上一关节运动,在处理模型的时候将下一关节作为子物体挂在上一关节下,通过控制多个关节的角度,达到机械手的运动同步。
模型示例如下(模型是从网上下载)

模型处理
1. 模型解锁
初始模型如果未处理就像下面这样,无法进行关节控制,需要对模型子物体进行处理。

此时模型跟模型文件直接关联,无法进行移动修改

解决方法:
方式一:
右键“Prefab”→“Unpack”,将其解锁

解锁后模型名称变成灰色,即可直接进行修改,修改完成后,可以将模型拉入到Project视图中,生成预制体

方式二:
生成预制体,直接将模型拖入Project窗口文件夹中,

提示创建预制体,选择“Original Prefab”原始预制体,生成新的预制体。

在文件夹中生成一个.prefab文件就是预制体文件,这时可以双击文件或者点击模型右侧的箭头,进入预制体文件进行修改模型。

2. 关节处理
关节一示例:
(1)在机械臂下面创建两个物体,一个是组件,一个是关节一(关节N当前处理的关节进行修改)

(2)调整关节一的旋转中心,调整到旋转的正确位置(很重要)


(3)将子物体分别放到组件和关节两个物体下
组件用于放置不跟随该关节一起运动的部分,关节是该关节部门和其子关节部分。
如图所示底座是不跟随关节一运动的,其余都跟随运动,所以将底座放在组件中,其他都放在关节一中


(4)旋转测试
选中关节一,拖动图中旋转线测试一下,分组是否有问题,没有问题恢复就可进行下一关节

关节二示例:
(1)跟关节一一样,创建组件和关节二

(2)调整旋转中心,调整到第二个关节旋转轴上

调整后

(3)分组,不动部分放在组件中,运动部分放在关节二中

(4)旋转测试正常

其他关节如上类似处理
3. 多关节统一控制
通过RobotControl脚本统一对多个关节进行运动
public class RobotControl : MonoBehaviour
{
/// <summary>
/// 关节组
/// </summary>
public MoveBase[] Joints;
/// <summary>
/// 关节数据
/// </summary>
public static float[] DataAngles;
// Start is called before the first frame update
void Start()
{
DataAngles=new float[2];
}
// Update is called once per frame
void Update()
{
for (int i = 0; i < Joints.Length; i++)
{
Joints[i].SetDataPos(DataAngles[i]);
}
}
}
根据关节旋转属性挂上对应运动脚本,如下关节一使用Y方向旋转脚本XRotate,关节2是Y方向旋转脚本YRotate


然后在机械臂模型上挂上RobotControl.cs脚本,然后将关节一、二分别按顺序添加到Joints上面

测试:
在测试运动脚本中进行模拟运动

效果




















