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

因此,我们在控制某个自由度运动以前,要先找出这个自由度的旋转中心,定义旋转约束和旋转步长(每按一次按钮,自由度旋转的角度)。
另外,机械臂的每一个部件的坐标,需要在其他软件或控件中调整和重新定义其位置。
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步中的测试。
本文介绍了机械臂自由度的控制方法,包括确定旋转中心、设置旋转约束和步长,以及通过脚本进行测试。在控制每个自由度时,需要考虑其层级关系和旋转轴方向。例如,Point005节点的旋转轴测试,以及通过脚本RobotLink1.cs实现关节的左右旋转控制,同时包含超范围检查和回零功能。其他自由度的控制可参照此方法,重点在于调整相应关节的坐标轴测试。
1670

被折叠的 条评论
为什么被折叠?



