當前位置: 華文問答 > 數碼

關於機器人20點標定的原理?

2017-01-12數碼

就是簡單的機器人運動學標定內容,具體可以用「robot kinematics/geometry calibration」之類的關鍵詞搜尋幾篇參照高的論文看看。

對於工業機器人,我們一般是需要控制機械臂的末端來完成一些工作,因此,就需要知道機器人末端在機器人座標系下的位置。

一般的,我們就是建立機器人的 DH 座標系,然後找出各個 DH 參數 \overrightarrow{\phi}=(a_0,d_0,\alpha_1,\theta_1,...,a_{i-1},d_{i-1},\alpha_i,\theta_i,...,a_{n-1},d_{n-1},\alpha_n,\theta_n)^T

其中 \theta_i 是指關節零位的偏置, q_i 是編碼器返回的關節角度。

然後,就可以用正運動學公式計算得到末端(end-effector)在機器人基座標系下的姿態是:

_{E}^{B}\textrm{T}=f(\overrightarrow{q},\overrightarrow{\phi})

對於機器人來說,由於加工、裝配之類的誤差, \overrightarrow{\phi} 中的參數可能存在誤差,這個時候就需要對機器人的運動學參數進行標定了。

方法也很簡單,就是想辦法構造一個基於 \overrightarrow{\phi} 的誤差方程式,然後測量幾組數據,用高斯牛頓法之類的方法最佳化求解出每個參數。

在珞石的這個例子裏,采用的方法是讓機械臂末端以不同姿態去碰一個固定的點。我們可以簡單推一下:

我們以這個固定的點為原點,(隨意)建立一個座標系 {P} ,這時候,機器人基座標系 {B} {P} 下的位姿為 _{B}^{P}\textrm{T} ,又透過運動學正解,我們知道機器人末端在基座標系下位姿是 _{E}^{B}\textrm{T} ,由此,可以推匯出機器人末端在{P}座標系下的位姿:

_{E}^{P}\textrm{T}=_{B}^{P}\textrm{T} \cdot _{E}^{B}\textrm{T}

又因為,我們就知道了機器人末端一直與 {P} 座標系的原點(固定點)相接觸,也就是說,機器人末端點在 {P} 座標系下的位置是 (0,0,0)^T 。

我們取出 _{E}^{P}\textrm{T} 中的位置部份

_{E}^{P}\overrightarrow{p}=f(\overrightarrow{q},\overrightarrow{\phi})

所以,誤差函數可以定義為:

\Delta_{E}^{P}\overrightarrow{p}=\begin{bmatrix} 0\\ 0\\ 0\end{bmatrix}-_{E}^{P}\overrightarrow{p}=J\Delta\overrightarrow{\phi}

其中, J 是 f(\overrightarrow{q},\overrightarrow{\phi}) 的雅各比矩陣:

J=\begin{bmatrix} \frac{\partial f}{\partial a_0} &\frac{\partial f}{\partial d_0} &...&\frac{\partial f}{\partial \theta_n}\end{bmatrix}

然後,

\Delta\overrightarrow{\phi}=(J^TJ)^{-1}J^T\cdot\Delta{_{E}^{P}\overrightarrow{p}}

不斷叠代更新:

\overrightarrow{\phi}^{k+1}=\overrightarrow{\phi}^{k}+\Delta\overrightarrow{\phi}

直到 \Delta\overrightarrow{\phi} 足夠小為止。

這時候就會得到一組參數 \overrightarrow{\phi}^* ,可以認為是機器人當前的運動學參數。

當然,上面這個只是基本的最佳化套路,還有很多奇技淫巧,如每個關節再增加幾個參數之類的。