【ABB】機械臂尤拉角轉四元數
阿新 • • 發佈:2022-01-07
背景
我們最近搞機械臂+機器視覺實現機械臂的引導、定位和抓取操作。
我們的機械臂是ABB的,ABB的機械臂預設採用四元數的方式表示空間座標,但是這個東西非常不便於理解,其他廠家的機械臂一般使用尤拉角表示空間位置和姿態。
關於如何將四元數與尤拉角之間進行轉換,我們調研了很長時間,現在總結出一個方法,供大家參考。
尤拉角:
使用到的庫
https://github.com/cgohlke/transformations
使用方式
import transformations import numpy
def euler(roll, pitch, yaw, axes='rxyz'): yaw= float(yaw) / 180 * numpy.pi pitch = float(pitch) / 180 * numpy.pi roll = float(roll) / 180 * numpy.pi return list(transformations.quaternion_from_euler(roll, pitch, yaw, axes=axes))
roll = 180
pitch = 0
raw = 0
quaternion = euler(roll, pitch, raw)
重要說明:
axes表示機械臂運動時的繞軸順序,預設xyz沒有問題,最關鍵的在於前面的
r:表示基於夾爪(自身)的座標系進行運動
s:表示基於機械臂的基座標的座標系進行運動。
絕大部分情況,推薦使用r模式,更容易讓人理解,是相對於夾爪的位置進行的運動。
另外,這個庫的quaternion_from_euler函式,傳入角度不是我們認知的0-360度,而是根據pi進行轉換,pi表示180度。