UR机器人之一:the coordinate and representation of pose

一、UR机器人座标系

默认情况下UR机器人的座标系如下图所示:
在这里插入图片描述
这里的TCP位置和座标系就是机器人末端,及机器人默认的TCP位置,其TCP配置如下图所示:
在这里插入图片描述
如果用户想要自己设计TCP的位置和座标就可以在这个基础上进行配置,这里的X,Y,Z,RX,RY,RZ表示用户自定义TCP与机器人默认TCP之间的关系。X,Y,Z表示位置关系,RX,RY,RZ是使用的旋转矢量法表示的姿态关系,旋转矢量法见下一节。
当UR机器人回零后,机器人默认的TCP相对于基座标系的位姿如下图:
在这里插入图片描述
注意这里是实际值,与理论值相比有一些误差,比如理论值X=0。这里的姿态描述方式使用的是旋转矢量法,见下一节。

二、UR机器人Pose的表示方式

UR机器人的Pose表示的是TCP座标系相对于基座标系的位置和姿态。一个座标系相对于另一个座标系的姿态的表示方法有很多种,比如:X-Y-Z固定角,Z-Y-X欧拉角,RPY角,四元数等。而UR机器人里面使用的是旋转矢量法。
等效轴角座标系表示法在《机器人学导论》中有详细讲解,如下图所示,这种方法用一个单位向量
K^=[kxkykz] \hat{K}=\begin{bmatrix} kx & ky & kz \end{bmatrix}
和一个转动角度θ来表示两个座标系之间的旋转关系。
在这里插入图片描述
而旋转矢量法用一个旋转矢量:
R=[RxRyRz] R=\begin{bmatrix} Rx & Ry & Rz \end{bmatrix}
来表示两个座标系之间的旋转关系,其中旋转矢量法与等效轴角座标系之间的关系是:Rx=θkx,Ry=θky,Rz=θkz。
由旋转矢量求旋转矩阵的方法可以按照如下公式:
在这里插入图片描述
但是首先需要求出kx,ky,kz和θ。
θ=Rx2+Ry2+Rz2 \theta =\sqrt{Rx^{2}+Ry^{2}+Rz^{2}}
kx=Rx/θ,ky=Ry/θ,kz=Rz/θ kx=Rx/\theta ,ky=Ry/\theta ,kz=Rz/\theta
可以看出如果θ=0°或180°时,旋转轴根本无法确定,上式也将无解。这也是旋转矢量法的一个明显缺点。
如果已知旋转矩阵,可以通过如下公式求解旋转矢量:
在这里插入图片描述
注意2-82中的r33应改为r23。
在这里插入图片描述
对于同一姿态,旋转矩阵的表示不唯一。所以在UR机器人中,通过面板观察到的TCP Pose可能与通过脚本命令get_actual_tcp_pose()所得到的不一样。这是正常现象,将它们都转换成RPY角就会发现,它们表示的是同一个姿态。特别是在零点位置时比较明显,如下两个图所示:
在这里插入图片描述
在这里插入图片描述
可以用脚本函数rotvec2rpy(rotation_vector)将旋转矢量转换成rpy角,但是这里传递的参数是一个list:[Rx,Ry,Rz],而怎么把pose里的RX,RY,RZ分离出来传递个这个函数呢?这一点UR脚本手册里面好像没有。
还有一个pose_trans(p_from,p_from_to)函数,p_from表示座标系B相对于A的pose,p_from_to表示座标系C相对于B的pose,函数的返回值表示座标系C相对于A的pose。用矩阵的方式理解就是:
TCA=TBATCB T_{C}^{A}=T_{B}^{A}T_{C}^{B}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章