您现在的位置是:首页 >学无止境 >Unity3d数字化看板-多关节机器人运动控制网站首页学无止境
Unity3d数字化看板-多关节机器人运动控制
特殊:机器人多关节跟随运动
机械手运动控制主要是关节的旋转,通过控制多个关节的角度,实现对机械手的同步控制
机械手运动控制,可以分解为多个关节的运动,下一关节是跟随在上一关节运动,在处理模型的时候将下一关节作为子物体挂在上一关节下,通过控制多个关节的角度,达到机械手的运动同步。
模型示例如下(模型是从网上下载)
模型处理
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上面
测试:
在测试运动脚本中进行模拟运动
效果