您现在的位置是:首页 >学无止境 >Unity3d数字化看板-多关节机器人运动控制网站首页学无止境

Unity3d数字化看板-多关节机器人运动控制

海盗1234 2023-06-10 20:00:03
简介Unity3d数字化看板-多关节机器人运动控制

特殊:机器人多关节跟随运动

机械手运动控制主要是关节的旋转,通过控制多个关节的角度,实现对机械手的同步控制

机械手运动控制,可以分解为多个关节的运动,下一关节是跟随在上一关节运动,在处理模型的时候将下一关节作为子物体挂在上一关节下,通过控制多个关节的角度,达到机械手的运动同步。

模型示例如下(模型是从网上下载)

在这里插入图片描述

模型处理

1. 模型解锁

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

在这里插入图片描述

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

无法删除或移动Prefab实例的子级,也无法重新排序组件可以解压缩Prefab实例以删除其Prefab连接

解决方法:

方式一:

右键“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上面

在这里插入图片描述

测试:

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

在这里插入图片描述

效果

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。