Unity3d数字化看板-多关节机器人运动控制
在工业数字化看板中,常见的一种设备就是机械臂,也可能说是多关节的机器人,通过机械臂的各个关节旋转运动(也有机械臂的轴是伸缩),运行到指定位置,再配合夹爪和其他设备进行操作,这种时候获取的数据就是一组角度数组,需要跟模型上的各个关节进行关联,来达到虚实联动。
特殊:机器人多关节跟随运动
机械手运动控制主要是关节的旋转,通过控制多个关节的角度,实现对机械手的同步控制
机械手运动控制,可以分解为多个关节的运动,下一关节是跟随在上一关节运动,在处理模型的时候将下一关节作为子物体挂在上一关节下,通过控制多个关节的角度,达到机械手的运动同步。
模型示例如下(模型是从网上下载)
初始模型如果未处理就像下面这样,各种零件、模型都是平铺,没有相互的关系,无法进行关节控制,需要对模型子物体进行处理。
此时模型跟模型文件直接关联,物体和子物体名称都是蓝色,无法进行移动修改
方式一:
右键“Prefab”→“Unpack”,将其解锁
解锁后模型名称变成灰色,即可直接进行修改,修改完成后,可以将模型拉入到Project视图中,生成预制体
方式二:
生成预制体,直接将模型拖入Project窗口文件夹中,
提示创建预制体,选择“Original Prefab”原始预制体,生成新的预制体。
在文件夹中生成一个.prefab文件就是预制体文件,这时可以双击生成的预制体文件或者在场景中点击模型右侧的箭头,进入预制体文件,然后对模型进行修改,修改各个子物体的关系。
(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方向旋转脚本YRotate
,关节2是X方向旋转脚本XRotate
然后在机械臂模型上挂上RobotControl.cs
脚本,然后将关节一、二分别按顺序添加到Joints上面
测试:
在测试运动脚本中进行模拟运动
效果
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_39427511/article/details/130353894
文章
10.5W+人气
19粉丝
1关注
©Copyrights 2016-2022 杭州易知微科技有限公司 浙ICP备2021017017号-3 浙公网安备33011002011932号
互联网信息服务业务 合字B2-20220090