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}

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