RoboDK论坛
旋转矩阵使用API?-打印版本

+- RoboDK论坛(//www.x7093.com/forum
+——论坛:RoboDK (EN) (//www.x7093.com/forum/Forum-RoboDK-EN
+——论坛:RoboDK API (//www.x7093.com/forum/Forum-RoboDK-API
+——线程:旋转矩阵使用API?(/ Thread-Rotation-Matrix-using-API



旋转矩阵使用API?-mnurpeiissov-02-08-2019

你好,

有没有提取旋转矩阵的方法?调用机器人时返回的Mat。SolveFK包含关于机器人姿态的信息,其中最后一列的前三个元素表示X、Y、Z位置。Mat的3x3(前三个cols和前三行)是旋转矩阵吗?如果我使用Pose_2_TxyzRxyz,然后使用欧拉角惯例rotz*roty*rotx构造旋转矩阵(我不确定这种方法是否正确),我最终得到的结果与Mat的3x3不同。我会感激任何帮助。

致以最亲切的问候


旋转矩阵使用API?-艾伯特-02-08-2019

这是不正确的。

调用以下函数:
pose = TxyzRxyz_2_Pose([x,y,z,rx,ry,rz])
其中x,y,z是以mm为单位的平移,rx,ry,rz是以弧度为单位的旋转。

这与做以下事情是一样的:
姿态= transl(x,y,z)*rotx(rx)*roty(ry)*rotz(rz)

你可以恢复这个操作:
x,y,z,rx,ry,rz = Pose_2_TxyzRxyz(pose)

更多信息请点击这里:
//www.x7093.com/doc/en/PythonAPI/robodk.html#robodk.Pose_2_TxyzRxyz

如果你正在使用Python API并且你只想要旋转矩阵,你可以这样做:
旋转= pose[0:3,0:3]

另一个提示:
你可以通过以下方法改变一个点的坐标系统:
Point_ref1 = [x,y,z,1]
Point_ref2 = pose * point_ref1

你可以用以下方法改变一个矢量的坐标系统:
Vector_ref1 = [u,v,w]
Vector_ref2 = pose * vector_ref1


旋转矩阵使用API?-mnurpeiissov-02-09-2019

谢谢你的回复。我用DH表构造了变换矩阵,并用MATLAB进行了计算。当所有关节都为0时,我得到了不同的旋转和平动。当所有关节都设为0时,robodk显示沿X,Y,Z方向的平移分别为[-817,-191,-4.45]。计算得到的值为[-817,-9.53,-5.33]。所以我们有不同的Y和Z坐标。旋转矩阵是不同的两个,但是我没有把它们连接起来。这是什么原因呢?我得到了DH参数http://rsewiki.elektro.dtu.dk/index.php/UR5


(附件= 157][附件= 158][附件= 159]