## 2 Virtual 3D Modeling of Articulated Mechanisms
### Modeling of FESTO's Omnidirectional Mobile Robot Robotino  
The Robotino is an omnidirectional device, which has the ability to move over the ground in any direction, regardless of the current orientation of its wheels (Figure 8). This is mainly a result of the special design of the wheels. For the version of Robotino studied here, every wheel consists of two groups of three rollers each, which are contained in a wheel holder (supporter), in which they can rotate. The rollers in one group, e.g., the front or back group, are angularly displaced by 60\({}^{\circ}\) with respect to the other in such a way that, when looking at the wheel's outer circle at the point of contact with the ground, the end of a roller in the first group overlaps with the start of the roller in the other group. In this way, during the rotation of a wheel, one roller is always in contact with the floor and rolls over it. The coordinate system shown in Figure 8a is the world coordinate system with which the device is described. It is displaced in order not to overlap with the device. The Robotino consists of a chassis and three wheels, which are displaced around the vertical axis by 120\({}^{\circ}\). The wheels are driven by DC motors, which are connected to wheel axles by toothed belts and planetary gears. The basic parts of Robotino are shown in Figure 8b. Figure 9 shows a scheme of Robotino with the local coordinate frames defined. There are three frames with the origins at the wheel centers \(C_{i}\) (\(i\) = 1, 2, 3) and whose \(x_{i}\)-axes (\(i\) = 1, 2, 3) are directed along the wheel rotation axes. We also added another local frame whose \(x\)-axis is directed opposite to the \(x_{2}\)-axis and serves to orient the Robotino. Their \(z_{i}\)- and \(z\)-axes are parallel with the world's \(Z\)-axis; the \(y_{i}\)- and \(y\)-axes are created by rotating the \(x_{i}\)- and \(x\)-axes around the \(z_{i}\)- and \(z\)-axes by 90\({}^{\circ}\) in a positive (counterclockwise (CCW)) direction. The local coordinate frames are fixed to the Robotino's chassis and move jointly with it. We created a new virtual model of the Robotino, as explained in Section 2.2 (Figure 4). It generates the corresponding robot root (Figure 10a). Next, to enable the robot to be moved over the world frame, we inserted three virtual joints. The first one is inserted as the child of the root and the other two as the children of the previous ones. The joints have link elements containing only the simple drivers--the first is the prismatic one along the \(X\)-axis, the next is the prismatic one along the \(Y\)-axis, and the third is a revolute around the \(Z\)-axis. Note that these joints do not exist in the real device. Figure 8: Virtual model of (**a**) Robotino and (**b**) its constitutive parts. Figure 10: The structure of the Robotino’s 3D model: (**a**) basic components; (**b**) wheels. Figure 9: Scheme of Robotino with world \(OXYZ\) and local Cxyz, \(C_{i}x_{i}y_{i}z_{i}\) (\(i=1,2,3\)) coordinate frames. Following the last joint's link element, the chassis, bumper, distance sensors, and camera are inserted into the tree by the part elements and by specifying their _id_ and _name_ attributes. Afterwards, an assembly element is inserted; it is used to properly position the part with respect to the joint reference frame. Next, a render element is added to specify the color and generate a 3D view of the part. After all the parts' elements are added, we add a probe. It is used to define the particular point in the robot's structure that we wish to monitor while the Robotino's 3D model is in motion and returns to its current coordinates. Here, we put it at the _center_ of the base of the Robotino's chassis. We may add some other points as well. Finally, there are three additional joint elements in parallel (Figure 10a). They correspond to the axles on which the wheels are mounted (Figure 9). Their link children define the positions and orientations of the corresponding local frame.