Frame学习7
发现“Frame学习5”最后一个例子没写全,应该是:
$P_UIFR[2]=CROT(x,11,y,22,z,33)
希望你早就看出了这个错误

注意RPY角旋转时,角度是有限制的:
-180 ≤ x ≤ 180
-90 < y < 90
-180 ≤ z ≤ 180
当编程值超过限制值时:
例 $P_UIFR[2]=CROT(x,185)
执行的结果如下图,这个结果应该好理解吧。

来个不好理解的。
例 $P_UIFR[2]=CROT(y,95)
绕Y轴旋转95度,显然超出了-90度到+90度的范围,那结果会是什么呢?

出乎所料?不过你找个小飞机模型比划一下,就理解了。
在手册中提到了一个词,叫“Gimbal lock”,中文叫做“万向锁”
万向锁问题:欧拉角的一个重大缺点就是会碰到著名的万向锁问题(Gimbal Lock),对于rpy,当仰俯角为± 9 0 度 时,第一次旋转与第三次旋转使用同一个轴,使得系统丢失了一个自由度(由3次旋转变成了两次旋转)。
有个视频详细解释了这个问题:https://v.youku.com/v_show/id_XNzkyOTIyMTI=.html
SINUMERIK在碰到此问题时,做如下处理:
旋转分量 z = 旋转分量 z - 旋转分量 x
旋转分量 x = 0°
旋转分量 y = 90°
例:$P_UIFR[1]=crot(x,30,y,90,z,40)
执行后,结果是:

怎么和上面的说明不同?
在程序中再加一句:msg('rc z='<<$P_UIFR[1,z,rt]<<' rc x='<<$P_UIFR[1,x,rt]<<' rc y='<<$P_UIFR[1,y,rt])
这是显示出个旋转分量,两句执行结果为:

赞 (0)
