# Using Full Pose Measurement for Serial Robot Calibration
## 5 Calibration Based on 6D Measurements  
Such data were used for robot calibration using different procedures [14; 28; 29]. The approach we propose calculates zero offsets \(\tilde{\mathbf{\epsilon}}\) in a separate minimization based on orientation components of 6D poses and determined earlier twist angles \(\tilde{\mathbf{\kappa}}\).  
In the remainder of this paper, we assume that, for each robot configuration defined by \(\mathbf{\theta}_{k}\), there is a corresponding 3 \(\times\) 3 rotation matrix \(\mathbf{G}_{k}\) provided by an external sensor. Both \(\mathbf{G}_{k}\) and \(\mathbf{R}_{k}\) in (7) are determined in different coordinate frames. If \(\mathbf{\Omega}\) denotes the rotation component of registration matrix then, for each \(k\)-th robot orientation \(\mathbf{R}_{k}\) in (7) and the corresponding \(\mathbf{G}_{k}\) measured with the external sensor, the following relation holds:  
\[\mathbf{G}_{k}=\mathcal{N}_{k}\ \mathbf{\Omega}\ \mathbf{R}_{k} \tag{13}\]  
where \(\mathcal{N}_{k}\) is a small, random rotation accounting for noise in the orientation part of 6D data acquired by sensors. For a pair of orientations \(\mathbf{G}_{k}\) and \(\mathbf{G}_{k^{\prime}}\) (where \(k^{\prime}=k+K/2\)), matrix \(\mathbf{D}_{k}\) can be defined as  
\[\mathbf{D}_{k}=\mathbf{G}_{k}\mathbf{R}_{k}^{-1}\mathbf{R}_{k^{\prime}}\mathbf{G}_{k^{\prime}}^{-1 }=\mathcal{N}_{k}\mathcal{N}_{k^{\prime}}^{-1} \tag{14}\]  
and its angle of rotation \(\psi_{k}\in[0^{\circ}\ 180^{\circ}]\) is calculated as  
\[\psi_{k}=\arccos\bigg{(}\frac{1}{2}(trace(\mathbf{D}_{k})-1)\bigg{)}. \tag{15}\]  
Matrix \(\mathbf{D}_{k}\) and its angle \(\psi_{k}\) depend on the measured joint angle vectors \(\mathbf{\theta}_{k}\) and \(\mathbf{\theta}_{k^{\prime}}\), the twist angles \(\tilde{\mathbf{\kappa}}\) estimated earlier, and all zero offsets \(e_{n}\) for \(n=2,\ldots,N\), which can be obtained by minimizing the error function \(Err_{rot}\)  
\[(\epsilon_{2},\ldots,\epsilon_{N})=\min_{\epsilon_{2}\ldots\epsilon_{N}}Err_{ rot}(\tilde{\mathbf{\kappa}},\epsilon_{2},\ldots,\epsilon_{N}), \tag{16}\]  
where  
\[Err_{rot}(\tilde{\mathbf{\kappa}},\epsilon_{2},\ldots,\epsilon_{N})=\frac{1}{K/2} \sum_{k=1}^{K/2}\psi_{k}(\tilde{\mathbf{\kappa}},\epsilon_{2},\ldots,\epsilon_{N}). \tag{17}\]Once the zero offsets \(\tilde{\epsilon}\) are estimated, they can be inserted in (12) and the linear DH parameters \(\mathbf{r}\) and \((d_{2},\dots,d_{N})\) can be found by minimizing \(Err_{pos}(\tilde{\mathbf{\alpha}},\tilde{\mathbf{\epsilon}},\mathbf{r},\mathbf{d})\) in (10). In the remainder of this paper, we call this procedure Method 2.  
To show a scaling problem when both position and rotation errors are simultaneously minimized, robot calibration was attempted by minimizing the following error function:  
\[Err_{full}(\tilde{\mathbf{\alpha}},\mathbf{\epsilon},\mathbf{r},\mathbf{d})=Err_{pos}+wErr_{ rot}, \tag{18}\]  
where \(Err_{pos}\) is defined in (10), \(Err_{rot}\) in (17) and positive scaling factor \(w\) ensures correct dimensionality of \(Err_{full}\). In the remainder of this paper, we call this procedure Method 3.