## 2 Materials and Methods
### Odometry Estimation  
Odometry is a computation method that provides a periodic estimation of the relative displacement of a mobile robot. This computation requires an accurate and precise definition of its inverse kinematic matrix, its previous position and orientation, and the estimation of the angular rotational velocities of its driving wheels. The consequence of any inaccuracy or imprecision is the generation of systematic odometry errors. Additionally, odometry interprets the angular rotational speeds of the wheels of the mobile robot as linear displacements, so it requires non-slippage wheel conditions throughout the trajectory. In the case of a three-wheeled omnidirectional mobile robot, the wheels have no motion constraints and no slippage is originated while performing any continuous motion [30]. The kinematics and the odometry of a three-wheeled omnidirectional mobile robot such as the APR-02, was described previously in [17; 30]. This practical odometry estimation is challenging because of the degree of freedom provided by its omnidirectional motion system. Figure 2 presents the definition of the omnidirectional motion system of the APR-02 mobile robot: \((x,y,\theta)\) is the position of the mobile robot referred to the absolute or fixed world frame \((X_{W},Y_{W})\), \((X_{R},Y_{R})\) is the relative mobile robot frame, \((v,\alpha,\omega)\) is the motion command that specifies the target trajectory planned for the mobile robot, \((\omega_{a},\omega_{b},\omega_{c})\)  
Figure 1: APR-02 mobile robot performing a transversal (or lateral) displacement: (**a**) starting point; (**b,c**) intermediate points; and (**d**) destination point. are the angular velocities of the wheels required to implement the motion command, and \((V_{a},V_{b},V_{c})\) are the deduced linear velocities of the wheels. Odometry uses the instantaneous estimate of the current angular velocities of the three wheels, \(a,\ b,\ c\), given as \((\omega_{a}(k),\omega_{b}(k),\omega_{c}(k))\), and defined in rad/s; and the previous position of the mobile robot \((x(k-1),y(k-1),\ \theta(k-1))\), defined in the absolute world frame \((X_{W},Y_{W})\). Both values are used to update the current position of the mobile robot \((x(k),y(k),\theta(k))\) by using the following expression [17]:  
\[ \begin{bmatrix}x(k)\\ y(k)\\ \theta(k)\end{bmatrix} _{World}= \begin{bmatrix}x(k-1)\\ y(k-1)\\ \theta(k-1)\end{bmatrix} _{World}+\Delta t\cdot R(\theta(k-1))^{-1}\cdot M^{-1} \cdot \begin{bmatrix}\omega_{a}(k)\\ \omega_{b}(k)\\ \omega_{c}(k)\end{bmatrix}  \tag{1}\]  
where \(\Delta t\) is the sampling time at which the angular velocities of the wheels of the robot are updated and \(k\) is the current discrete sample number that describes a time elapsed \(t(k)\) (where \(t(k)=\Delta t\cdot k\)) since the initialization of the robot. In the case of the APR-02, this sampling time coincides with the sampling time used internally by the three proportional, integral, and derivative (PID) controllers (\(\Delta t=10\) ms) [29] of the three brushed direct current motors (BDCM) driving its three omnidirectional wheels. In Equation (1), \(R(\theta(k-1))^{-1}\) is the inverse of the rotation matrix computed from the previous instantaneous angular orientation of the mobile robot \(\theta(k-1)\):  
\[R(\theta(k-1))^{-1}= \begin{bmatrix}\cos(\theta(k-1))&-\sin(\theta(k-1))&0\\ \sin(\theta(k-1))&\cos(\theta(k-1))&0\\ 0&0&1\end{bmatrix}  \tag{2}\]  
and \(M^{-1}\) is the inverse of the compact kinematic matrix of the mobile robot that can be computed analytically as [17]:  
\[