1. 参考:
eigen安装:clion使用Eigen_gxt_kt的博客-CSDN博客_clion eigen
matlab 角度转四元数_四元数的两种写法与转换_女王丁丁的博客-CSDN博客
机械臂 tcp 坐标 转旋转矩阵 (旋转向量转旋转矩阵)_侃侃_天下的博客-CSDN博客_机械臂旋转矩阵
2. 测试:
引用自“matlab 角度转四元数_四元数的两种写法与转换_女王丁丁的博客-CSDN博客”
这里还要注意的是,matlab和C语言eigen库将同一个四元数转换为旋转矩阵时,获得的两个旋转矩阵互为逆矩阵!abb获得的转换则和eigen获得的转换相同(这是由于一个旋转矩阵有两种含义,即坐标系A在B中的表示和A到B的变换,二者互为逆。)
经过测试,在optitrack中,刚体坐标为(x,y,z,qx,qy,qz,qw),表示刚体在基坐标系中的位置为xyz,经过MATLAB的转换获得的旋转矩阵R为刚体坐标系在基坐标系中表达的逆。在matlab内部进行变换是没有问题的,但是matlab中四元数导入其他软件时,需要求逆才能表达同样的旋转矩阵。
我一般采用坐标系A在坐标系B中表示的方式来理解矩阵变换,因此得出以下结论:
若原点重合的A坐标系在B坐标系中的表示为
,则在matlab和abb中其对应四元数为dcm2quat(R),在C语言中对应的四元数为dcm2quat(R.transpose() )
以此为基础,根据转换前后的意义,决定是否要对矩阵进行转置