在 Unity 上,对机器人姿态的正解进行了调整,Unity 的左手系统带来了一些麻烦。
坐标系设置:为了减少Unity中坐标系的变化,当DH参数为正解时,y轴和z轴直接互换。如果它是左撇子,只需将其切换回来。
位移和Scale的操作没有问题。右手系统的 (1,0,1) 统一为 (1,1,0),(a,b,c) 的转换为 (a,c,b) )。但是,表达旋转比较麻烦。使用欧拉角涉及到顺序问题,相当麻烦。使用四元数稍微好一点,但四元数在左右手系统中也有所不同。
目前的方法如下:
首先人物立绘音效,在右手系统中,将旋转矩阵转换为四元数表示:
其中unity 左手坐标系,ε0123分别对应右手四元数中的xyzw。以这种方式计算 xyzw 后,将其转换为左手系统:
也就是说,你只需要把z和y取反unity 左手坐标系,然后取w的相反数。直观上是可以理解的。由于左右手角度的增量是相反的,所以左手系统是顺时针的,右手系统是逆时针的。正(轴垂直)。纸面朝外),w代表一定程度的旋转角度,两者可以反过来。其实取(-x,-z,-y,w)也有同样的效果。
但是,存在四元数不能表示绝对值≥180°的问题。如果超过180,很容易减去360,但是如果等于180度也会出问题。好在工程上没有绝对相等的要求,把一个角的绝对值的上限设为179.99999就够了。