当前位置: 华文问答 > 数码

关于机器人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}^* ,可以认为是机器人当前的运动学参数。

当然,上面这个只是基本的优化套路,还有很多奇技淫巧,如每个关节再增加几个参数之类的。