UnityVR--机械臂场景2-机械臂

本文介绍了机械臂自由度的控制方法,包括确定旋转中心、设置旋转约束和步长,以及通过脚本进行测试。在控制每个自由度时,需要考虑其层级关系和旋转轴方向。例如,Point005节点的旋转轴测试,以及通过脚本RobotLink1.cs实现关节的左右旋转控制,同时包含超范围检查和回零功能。其他自由度的控制可参照此方法,重点在于调整相应关节的坐标轴测试。
摘要由CSDN通过智能技术生成

机械臂的每一个自由度呈层级关系,也就是较末端的自由度跟随父自由度一起移动。

 

 因此,我们在控制某个自由度运动以前,要先找出这个自由度的旋转中心,定义旋转约束和旋转步长(每按一次按钮,自由度旋转的角度)。

另外,机械臂的每一个部件的坐标,需要在其他软件或控件中调整和重新定义其位置。

1. 找到需要测试自由度的节点,查看一下它的旋转轴。以Point005为例,选中后在Inspector面板中取消勾选,

  

 需要将场景坐标切换为“Local”,之后可以在场景中看到这个自由度的旋转轴方向(目前是蓝色的z轴)。

  

 2. 在MyScript文件夹中新建一个Test.cs脚本测试一下,在Update()方法中写入:

transform.Rotate(new Vector3(0,0,0.1f));

挂载到Point005节点上,运行测试这个旋转坐标是否正确。

 3. 第一个自由度关节使用UI控件中的“Link1”的按钮来控制,在这个关节的脚本中需要载入。

脚本RobotLink1.cs分段解释

第一段:定义变量

 第二段:Start() 初始化各种变量,并且记录这个关节最初的旋转值,以便于回零。

 第三段:当监听到向左的按钮被按下时,调用onLink1ButtonLeft()方法。其中,rotatedAngle是关节已旋转过的距离,它需要与约束值AngleRange比较,判断是否超过了约束。并且已旋转过的距离还要再与下一步要旋转的距离RotateStep叠加,判断再次旋转一个步长后,是否还在约束角度内,如果这两者都为真,才会进入if循环,否则提示“Link1超过范围了”。

 第四段:当监听到向右的按钮被按下时,调用onLink1Buttonright()方法。与前一段内容基本相同,不同的是旋转的角度互为相反数。

 第五段:回零。将Start()中获取到的初始角度值赋给现在的方向。

4. 以上为机械臂的其中一个自由度控制方法。其他自由度可以使用同样的脚本来控制,有所区别的就是机械臂的转动坐标轴需要进行第2步中的测试。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值