Next Article in Journal
Structural Pattern Analysis in Patella vulgata Shells Using Raman Imaging
Previous Article in Journal
Editorial for the Special Issue “Artificial Ground Freezing Technology”
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Three-Dimensional Visualization of Articulated Mechanisms: Coupling of Their Dynamic and Virtual Models Using the Example of Driving of the Omnidirectional Mobile Robot

by
Vjekoslav Damic
1 and
Maida Cohodar Husic
2,*
1
Maritime Faculty, University of Dubrovnik, 20000 Dubrovnik, Croatia
2
Faculty of Mechanical Engineering, University of Sarajevo, 71000 Sarajevo, Bosnia and Herzegovina
*
Author to whom correspondence should be addressed.
Appl. Sci. 2025, 15(9), 5179; https://doi.org/10.3390/app15095179
Submission received: 11 January 2025 / Revised: 18 February 2025 / Accepted: 23 February 2025 / Published: 7 May 2025

Abstract

:
This paper proposes a novel approach to the virtual 3D modeling of articulated mechanisms. It follows the widespread use of XML (eXtensible Markup Language) for various applications and defines a version of XML that is specially designed for the description of 3D geometric models of articulated bodies. In addition, it shows how the 3D geometric model of a mechanism can be gradually developed through the use of suitably defined elements and stored in a corresponding XML file. The developed XML model is processed, and using a powerful VTK (Visualization Toolkit) library, the corresponding virtual model is built and shown on the computer screen. To drive the virtual model, the dynamic model of the mechanism is developed using Bond Graph modeling techniques. Virtual 3D geometric and dynamic models are created using the corresponding software packages: BonSim3D 2023 Visual and BondSim 2023. The models are interconnected by a two-way named pipe. During the simulation of the dynamic model, the parameters necessary to drive the virtual model (e.g., the joint displacements) are collected and sent to the virtual model over the pipe. When the virtual model receives a package, the computer screen is updated by showing the new state of the mechanism. The approach is demonstrated using the example of a holonomic omnidirectional mobile robot.

1. Introduction

With the development of 3D CAD technologies, the visualization of processes and systems has become a powerful method and has been increasingly used in the processing of new products and process design, providing numerous benefits, such as a shorter development time and lower costs, the possibility of testing and verifying functionality before a product’s production, the ability to check possible part collisions in space, the ability to compare different product and process solutions to choose an optimal one, etc.
The idea of gaining remote access to the information of automatic systems and their visual representation appeared with the invention of the Internet. In [1], online approaches are proposed for the remote control of automatic systems based on synchronous and asynchronous capabilities to control the developed 3D models using XML (eXtensible Markup Language) technology. Many researchers have developed simulators with visual programming environments for the education, development, validation, and optimization of various products and processes. To simulate both industrial automation and embedded control systems in a 3D environment, many software have been developed and widely used, including the following: Factory I/O (by Real Games) for industrial automation training and factory process simulation; Siemens Tecnomatix Plant Simulation for large-scale factory and industrial system modeling; Automation Studio (by Famic Technologies) for hydraulic, pneumatic, and PLC-based automation; etc. Simulators have been used as effective tools in numerous studies for optimizing energy consumption [2] and controlling noise due to flights of unmanned aerial vehicles systems, such as drones [3]. A very important area of the application of simulators is in the educational process, where, without the need for access to real physical equipment, one can master their operation, and they are widely used in educational processes in various fields, including medicine [4,5,6], aviation as flight simulators [7,8,9], and STEM education [10]. In order to improve microcontroller-based education, a 3D virtual factory simulator was proposed in [11], as well as Tinkercad (from Autodesk), Proteus (from Labcenter Electronics), and many others. A systematic review of driving simulator validations is provided in [12] in the context of educational robotics [13], training simulators for manufacturing processes [14], body measurement technology in digital skiing [15], and many others.
The popularity of XML-based languages has increased in recent years due to the possibility of exchanging data between heterogeneous systems, and they have been addressed in numerous studies, including the following: XML-based Robot Description Language for describing robot structures was presented in [16]; RoboML based on XLM for robot programming in [17]; AVSML (Agent and Virtual Space Markup Language), an XML-based markup language for integrating web information into virtual 3D space in [18].
In [19], an application for the robot palletizing process was developed in the ABB native language RAPID, with an interface written in XML that has the ability to work together with the software for offline robot programming RobotStudio.
An XML was used as the basis for a new language to specify a video game—Video Game Description Language (XVGDL) [20].
One of the most common robot description formats—Unified Robot Description Format (URDF)—was introduced in 2009 [21,22] with the development of an open-source set of software libraries and tools for building robot applications, named the Robot Operation System (ROS). URDF is based on XML technology and was applied to describe the kinematic structures of robots, their dynamics, and geometry [22,23]. The self-calibration procedure of a low-cost five-axis 3D printer, where calibration data were used to generate a kinematic model in URDF format, was proposed in [24]. Procedures for the automatic generation of URDF files from Solid Works are the subject of research in [25,26], for the visualization of a modular robot manipulator in [25], and a micro-assembly robot in [26].
Similarly to URDF, the XML-based Simulation Description Format (SDF) has emerged, expanding the possibilities of developing a robotic environment [23]. Because both URDF and SDF are XML-based, they follow the rules of XML syntax, making them both human-readable and machine-parsable. SDF was used to describe Building Information Modeling objects and has been integrated with the finite element method (FEM) and ROS to assess structural stability [27].
An overview of robot description formats and methodologies for visualizing robots and their environment is presented in [28].
The visualization of systems and devices, i.e., their virtual 3D models and digital twins (DTs), is recognized as a potential solution for the improvement of these processes and systems and therefore attracts extreme attention from the academic community and industry. An XML is one of the most commonly used technologies to develop a digital twin. In [29], due to the analysis of the sheet metal punching process, different configurations of sheet metal punching machines were developed with a complete virtual 3D scene in the form of XML files. In the example of a digital twin of the overhead crane [30], a system framework is presented for its integration into an Extended Reality (XR). The application of digital twins as possible answers to the challenges in production systems is the subject of research in [31,32]. In [31], an overview of the possibility of digital twins to support the Human–Robot Collaboration in production systems is presented, as well as a comparison of key commercial software regarding the possibility of fulfilling the requirements for DT development. The review of research in [32] pointed out numerous gaps in the application of DT in production systems, as well as indicated directions for future research.
As robotic systems become increasingly complex, the role of simulators has become highly important in robotics; this is due to the numerous built-in sensors that robots possess and the complex tasks they have to perform. The design, analysis, and performance optimization of robots, as well as their navigation of unstructured environments, can be significantly simplified by using software for modeling and visualization.
In recent decades, many researchers have developed different software packages for simulating and visualizing robot applications; these have grown in popularity and play important roles in solving engineering problems. Some of the simulators commonly used for the development of mobile robot applications are Gazebo [33,34], which is based on a Robot Operating System (ROS) [35,36]; Rviz, 3D visualization tools for ROS [37]; Webots [38,39]; MORSE [40]; CoppeliaSim [41,42]; CARLA [43]; Raisim [44]; MARS (Multi-Agent Robot Simulator, developed in MATLAB) [45]; CARMEN (the Carnegie Mellon Navigation Toolkit) [46]; and MoveIt [47].
To enable the right simulator to be chosen for the development of a specific robotic application, many researchers have conducted overviews of the most widely used 3D robotic simulators and evaluated their properties [48,49,50,51,52]. The authors of [53] present a comparative study of Gazebo and Unity 3D in the development of a virtual model of the collaborative robot UR3 and its application for assembly work in production. Some authors suggest use of virtual reality (VR) [54], augmented reality (AR) [55], and mixed reality (MR) [56] as powerful tools for the modeling and visualization of complex systems. Some useful algorithms for the modeling and visualization of robots in MATLAB are presented in [57]. Generally, the popularity of mobile robots has grown significantly in recent years, attracting scholarly attention around the world.
This study proposes a novel approach for the 3D geometric modeling of articulated mechanisms, based on the BondSim3DVisual version of XML [58]. Two-way communication between the two models was established using named pipe technology.
The proposed approach is applied using the example of the mobile robot FESTO Robotino [59]. The basic premise is to provide a connection between the developed virtual model and its dynamic model, created using another software package [60]. FESTO Robotino is complex enough to be chosen as a representative example. It is characterized by excellent maneuverability, which is achieved using three omnidirectional wheels. As such, it is the subject of many analyses [61,62,63,64,65,66,67,68]. Generally, the design and development of omnidirectional wheels have also received a good deal of scholarly attention [69,70,71,72].
The dynamic models for various mobile robots were developed several decades ago, but, due to the complexity of omnidirectional wheels [63,64,65,66,67], the attention of researchers around the world is still focused on dynamic modeling and the design of an appropriate control algorithm for the navigation of mobile robots that are equipped with such wheels [73,74,75].
In our study, we analyzed the lateral rolling of the rollers that comprise the wheels. A dynamic model, based on the concept of the component model approach, was created using the bond graph technique in BondSim [60,76].
The virtual 3D model of Robotino presented here was developed using an XML approach in the BondSim3DVisual application. The methodology for the development of the virtual model presented here is an updated, modified version of the method presented in [77]. The proposed markup language is a simplification of the general XML scheme found elsewhere [58], and it serves as a replacement of a C-type language introduced in BondSim3DVisual [60]. The proposed version was designed for the 3D geometric modeling of articulated bodies, such as robots, multi-finger robot hands, mobile robots, multi-leg platforms, cranes, and similar objects. Using a DOM (document object model)-like approach, an XML document can be represented as a tree of elements. Thus, the structure of the 3D geometric model of an articulated mechanism can be represented as a tree of constitutive elements and attributes in the computer memory. The virtual 3D model is generated from an XML tree using the powerful VTK library [78,79,80].
Between these two processes—the virtual, which works in the BondSim3DVisual environment, and the dynamic simulation, which runs in the background of BondSim—there exists a two-way communication based on named pipe techniques. After validation in a virtual environment, the proposed algorithms can be applied to a real robot. Verification of the robot’s behavior in a virtual scene reduces the need for extensive experimental work with real robots.
FESTO implements a similar idea for Robotino using two software packages: RobotinoView for driving Robotino and RobotinoSim to visualize a workplace using Robotino [81,82]. The approach presented here is more general and refers to the development of dynamic and virtual 3D models for any articulated mechanism, not only Robotino. Such models can exchange information with each other in planned future research on real physical systems according to the concept of digital twins.
The rest of this article is organized as follows. The methodology for developing a virtual 3D model of an articulated mechanism is described in Section 2. The dynamic model of Robotino, developed using bond graphs, is presented in Section 3. The simulation results are presented in Section 4. Finally, we offer some concluding considerations and propose directions for future work.

2. Virtual 3D Modeling of Articulated Mechanisms

2.1. The Basic Approach

Visualization in 3D space provides a representation of three-dimensional objects on a computer screen, similarly to how they are seen in the real world. In the real scene, we have several essential items (Figure 1):
  • Three-dimensional space with objects in it;
  • Sources of the light, such as the sun or light bulbs, which illuminate the scene;
  • A person looking at the scene.
Generally, the objects are not static but move around the scene, e.g., a robot hand moves over the scene to grasp a part and moves it to another object to place or insert it there. We analyze their motion in the world space OXYZ. We assume that the XY plane is where the objects lie, and we track them along the negative Z-axis.
To visualize the objects and their movement around the scene, we follow these steps:
  • Generate virtual 3D representations of them as 3D geometric objects;
  • Generate a dynamic model of the entire system in order to simulate the objects’ motion;
  • Interconnect these two worlds, 3D geometric and dynamical, by suitable means to enable interactions between them.
To achieve this, we use two applications, which were developed specifically for this purpose: BondSim3DVisual and BondSim [76], as shown in Figure 2.

2.2. Generating the Virtual 3D Model

To generate a virtual 3D model of an articulated mechanism, the BondSim3DVisual application was developed using the Microsoft Visual C++ language. It is used for the construction of the virtual 3D model of a mechanism and its generation on the computer screen. It uses a special version of Extensible Markup Language (XML). The application uses the well-known pugixml library [83] to support the processing of XML code.
Upon opening the application, an empty mainframe appears, as shown in Figure 3. It is divided into two parts. On the left side there are two tabbed windows: Tree View and XML Output. The first one enables the construction of the Document Object Model (DOM)-like XML model tree. Thus, the model is not developed as a conventional XML document, but as a DOM-like tree. It starts at a root, and suitable elements and attributes are inserted one after another other as its branches or leaves. Simultaneously, a corresponding XML document is generated in a read-only XML Output window. To see it, we simply click its title (Figure 3). The right side of the program frame is used to create a document window containing the virtual 3D objects corresponding to the XML model on the left.
The approach that we use is general purpose and can be applied to different articulated mechanisms, not only Robotino. The building of the XML model starts at a root and continues by adding different elements, with its attributes systematically following the structure of the real equipment. To this end, a wide range of XML elements are available, ranging from simple geometrical shapes, such as cuboids, cylinders, spheres, bodies of revolution, and CAD-designed parts, to joints for interconnecting bodies, as well as different types of transformers, which are used to transform XML element body models between different coordinate systems and driver units. In this way, a virtual model is obtained, which has an appearance and structure very like the modeled equipment.
There is no restriction on the number of pieces of equipment that the working space can contain. As such, a project root is used, in which we may insert different items from the application database (XML models of robots, humanoids, transport systems, and others). However, as the population of the working scene increases, more computer resources are needed in order to efficiently update the computer screen.
The problems addressed using this application are divided into several groups: projects, robots, tools, and objects. This division is rather arbitrary and serves to define the roots of the model trees and the directories where their XML documents are stored. The models are stored as XML files, i.e., text files with the extension XML.
From a modeling and visualization point of view, robots, tools, and objects are all treated in the same way. Thus, when we need to develop a new robot model, e.g., a 3D model of Robotino using the BondSim3DVisual application, we need to assign a unique name to the model, which is used as the filename for storing the generated XML document in the robot directory. We may select simply Robotino as the file name. The program starts by creating the robot tree root and adding the attributes as children (Figure 4a). The attribute id represents the robot identifier. It is a machine-generated unique string of letters and numbers, as shown in Figure 4b. The name attribute contains Robotino’s textual value.
The operations on the tree are very simple. Starting from the root, we insert elements or attributes by selecting a corresponding node (an element or attribute) by clicking it with the mouse and applying the edit menu command, or by right-clicking it with the mouse, upon which a drop-down menu appears, from which an element or attribute can be chosen (Figure 5a) for insertion. Another drop-down menu now appears, from which a suitable command can be selected, either to insert a new item as a child, or above or below the selected item. The menu disappears, and a dialog window appears, from which an element or attribute node can be selected (Figure 5b). After selecting and clicking OK, the dialog window closes, and the selected item appears in the tree. The structure of the virtual model is generated systematically, starting at the robot root and with its branches (elements) and leaves (attributes) hierarchically added following the structure of the mechanism being modeled.
Generating the scene on the computer display is the responsibility of the computer graphic subsystem, which consists of display hardware, graphics hardware, and a graphics library. It is possible to program the graphic subsystem directly by use of corresponding languages, such as OpenGL, DirectX, etc. However, many applications use a suitable application library to simplify this task. To that end, the BondSim3DVisual tool uses VTK, a powerful C++ library [78,79,80].
By applying the Create 3D Scene command, the XML model description is processed, and the corresponding virtual model frame is created on the right side of the application’s frame windows (Figure 3).

2.3. Modeling the Articulated Mechanism

A typical articulated mechanism consists of a base (link 0) and a series of body links connected by joints. To describe this mechanism, we use different coordinate frames. Thus, every body links to an orthogonal coordinate system, which is fixed to the particular body link. There are two coordinate systems associated with every joint, which have common origins. One of these frames is fixed to the previous link, and the other to the next link (Figure 6a). The relative position of these frames can be described using a common joint axis and a rotation angle/translational displacement, by which one joint frame is displaced with respect to the other.
Figure 6a shows the simple case of a revolute joint. To define the next link coordinate frame defined by the corresponding rotation matrix, we start from the current frame rotation matrix and use pre-transforms to transform it to overlap with the current joint frame fixed to the current link. These transforms usually consist of translations that move the origin of the current link frame to the origin of the joint frames and the rotation of the translated frames to align with the joint frame, which is fixed to the current frame. Next, a drive transform is applied; this typically consists of the rotation or translation of the other joint frame around/along the joint axis. Finally, we apply the post-transform, which aligns the other joint frame with the next link body frame. These transforms can be succinctly described by the XML tree segment shown in Figure 6b.
Figure 7 depicts the translation and rotation elements. They are used in Figure 6b to transform the previous link frame to the drive element, and produce drive elements for the next link frames. Often, transforms along the body links are much simpler. Thus, a joint coordinate frame fixed to the previous link can be used simultaneously as the link frame. In this case, pre- and/or post-transforms are not necessary (they are identity transforms); only the drive transform is needed.
The <drive/> element represents the link driver, which can be real or virtual. In any case, it is defined by the type attribute, which can be one of the following driver types: prismatic_x, prismatic_y, prismatic_z, revolute_x, revolute_y, revolute_z, or spherical. The first six types correspond to joints with a single degree of freedom, and the last refers to rotation with three degrees of freedom about an axis through the center of the joint.
After the rotation matrix of the next link frame is defined by the above transforms, we need to describe the geometry of the next link. We may use different geometric elements such as cuboids, cones, cylinders, and bodies of revolution for this purpose. All such elements are the children of the next joint, and thus they use as the reference frame the frame of the next body link, the id of which is defined by the link element in Figure 6b. Hence, all of these elements have to follow the link element. All of these elements have a unique id attribute, which is used to refer to them.
There is a special element known as assembly. The geometric elements are added to it by referring to them by their ids. In this way, all of the subsequent body link geometric elements can be referred to as units according to the assembly id attribute. We can also use it to transform the position and orientation of the added elements with regard to the reference frame.
The articulated mechanism’s parts typically have complex shapes and are usually generated using 3D CAD software (e.g., SolidWorks, Catia, etc.) [84], from which they can be exported in the form of STL files. This is the case with many robots, including the Robotino. In this way, the virtual 3D models of such robots can be reconstructed so that they are very close to the real devices. The main difference is in the color of the robot’s parts, because they are not defined in STL files, which contain only the geometric data. The corresponding stl files are specified by the part elements.
The final element in the joint segment is the render element. The element is inserted at the same level but below all of the body elements or assemblies it refers to. It connects the geometry of the element or assemblies it refers to with the visualization object (the actor). It also connects to the link frame (the next body frame). Because the geometry does not contain information about color, it is defined here. The color can be defined by a name, as in web browsers (Edge, Google. etc.), or according to the red, green, or blue (RGB) color indices in the range 0.0–1.0. This value is set to the color of the current visualization object.

2.4. 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° 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°. 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 Ci (i = 1, 2, 3) and whose xi-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 x2-axis and serves to orient the Robotino. Their zi- and z-axes are parallel with the world’s Z-axis; the yi- and y-axes are created by rotating the xi- and x-axes around the zi- and z-axes by 90° 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.
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. The object elements define the corresponding omnidirectional wheels that rotate jointly with the axles.
The model of the wheel object is generated using a method similar to that used for the robot. However, here, we use the New/Object command and set the names as follows: Wheel_1, Wheel_2, and Wheel_3. The corresponding model tree is shown in Figure 10b. The part element defines a roller supporter. It is added to the assembly element, and its position and orientation are defined there. Finally, the render element, which refers to the last assembly element, defines its color and generates a 3D view of the supporter. The next six joints correspond to the rotation axis of each of the six rollers. The structure of the joints’ tree is similar to that of the other joints. Their axes, geometric shapes, and colors are defined, and a 3D view is generated. This allows for the modeling of every roller motion separately.
The projects are used to define the workspace where the robots, tools, and objects are used. The project shown in Figure 11a contains a Robotino robot that is moving over a ground floor constrained by walls, as described by the object element.
The XML model of the ground is shown in Figure 11b. It consists of a base floor in the form of a thin cuboid, and the walls are also cuboids. They are added into the assembly element to properly position them. The render element defines the color of the ground object and generates a 3D view of it on the screen. The robot specified is a Robotino device. It also contains the base element, which defines its position with respect to the floor. (The base of the Robotino is moved up so that the wheels just touch the ground.)
After the complete XML model of the Robotino project has been developed, we begin processing it in order to generate a 3D view. First, the Robotino project is opened using the Open-Project command from the File menu, and Project Robotino is selected. Next, we use the Create 3D scene command from the File menu. The processing starts from the project root. When object or robot elements are encountered, the application reads the names of the attributes and finds the corresponding XML files, loads them, and continues processing from their roots until all processing is complete. Figure 12a shows the scene generated. To better show the generated Robotino device and the ground, the view direction of the scene is modified by pressing the cursor on the screen near the device and dragging it, and then sizing it up by rotating the mouse wheel (Figure 12b).

3. Development of a Dynamic Model of the Robotino with Bond Graphs

3.1. Introduction to Bond Graphs

Here, we present a short introduction to the bond graph methodology, following [76]. Bond graphs were introduced by Prof. Henry Paynter (M.I.T.) in 1959. Since then, many researchers have participated in their further development. In the classical formulation, they are associated with causality assignments, i.e., input–output relationships assigned to the bond graphs [85]. This procedure can generate a mathematical model of a system in the form of ordinary differential equations, which are generally relatively easy to solve. However, often, this is not the case. To simplify the problem of generating a mathematical model from bond graphs, in [76], causality assignment procedures for bond graphs were completely rejected, and the mathematical model was developed in the form of DAEs (differential algebraic equations) (see Section 3.6).

3.1.1. General Bond Graph Components

In [76], modeling with bond graphs is achieved using an object-oriented approach. Hence, every entity in the bond graphs—components, ports, bonds, etc.—is constructed from a class, which is derived from the top abstract class; they are represented on the computer screen with a graphical symbol. The general bond graph component, or word (textual) model, is shown in Figure 13. It is characterized by the name, which can be anything, e.g., wheel, and ports, which facilitate the interaction of the component with its environment. There are two types of ports: power and control ports. The first are represented by the half arrows, which indicate the assumed direction of the power transfer, i.e., into or out of the component. To every power port are assigned a pair of port variables: effort and flow.
These variables can be simple variables, e.g., a force component Fx or velocity component vx, and they can also be more complex mathematical structures, e.g., force of velocity vectors or other mathematical entities. Their product (ordinary, scalar, or similar) is power transferred across the port into or out of the component. Transfer of power throughout a model is an essential property of bond graph models. Control signals, on the other hand, only transfer the information, e.g., the values of the angles to drive a joint. The signal port represented by an arrow direct into the component represents the component input port, and that represented by an outward-directed arrow is the output port.
To define the model of a component, we first need to open its associated document. In BondSim, we open a component simply by double-clicking its word model (Figure 14). Note that, for every (external) component port, a corresponding document port appears in the opened document. In this way, power or information flow from outside into the component and from inside the component beyond it.
To define the model of the component, we insert into its document the corresponding word models of the physical components it consists of. These components are connected to the corresponding ports by lines known as bond lines or bonds. In this way, efforts, flows, and signals are able to move from outside into the component and further into inward components, and vice versa.
Note that the left document port is connected to two inside components, B and D, by two corresponding bonds; thus, it has two dimensions. Hence, the outside port has the same dimension: two. Thus, the effort and flow of the left power port of Comp A are vectors, whose components are corresponding efforts and flows of components B and D. It is assumed that connected bonds are ordered from the top to the bottom, or from the left to the right, of the corresponding document port. Thus, the first effort component of the left port Comp A is the effort of the left port of B, and the second component is the effort of the left port D.

3.1.2. Elementary Components

The elementary components are models of the elementary processes, i.e., the physical processes in which only one component participates. The bond graph theory defines nine such components, which are listed in Table 1.
The inertial component is characterized by generalized momentum p. It corresponds to processes governed by momentum, the moment of momentum laws in mechanics, and the Faraday law in electricity. Similar to it is the capacitive element, which is the dual of the inertial element. If we substitute effort for flow, flow for effort, momentum p for charge q, and inertia I for capacitance C, we obtain the capacitive element. Despite this, both elements are retained—perhaps because it is in accordance with the theory of mechanics and electromagnetism. On the other hand, in thermodynamics, there is no counterpart to inertial processes, only to capacitive ones. In these processes, there is an accumulation of kinetic energy, i.e., the energy of motion, in the inertial elements, and of the static energy in the capacitive elements.
The dissipation of energy is described by the resistive element. The power input to this element is defined according to its constitutive relation in Table 1, determined by:
P = e f = R f 2 ,
Thus, if the resistance of the element is positive, there is a constant dissipation of the power flowing into the resistive element.
The transformer is an element in which there is a linear transformation between port variables. Using the constitutive relations from the table, we may evaluate the power input of the transformer as:
P 1 = e 1 f 1 = e 1 k f 2 = e 2 f 2 = P 2 ,
Thus, the transformer conserves the transfer of power across the element. The same principle holds for the gyrators. We mostly use the transformer to evaluate the transformation of the component vector over different coordinate systems. We use the gyrators to model the DC motors that drive the Robotino.
The sources of efforts and flows imply certain relationships about the effort or flow at their ports, which do not depend on the other variable, i.e., the port effort does not depend on the port flow, and vice versa. Thus, these are the ideal sources. In mechanics, they are often used to imply zero velocity or force components in the specific parts of the system.
Finally, we have two junction elements. The effort junction implies that the efforts of the element ports are added, and the sum is equal to zero. The convention is that, if port power is directed into the junction, the corresponding effort gains a plus sign; otherwise, it gains a minus sign (subtracted). On the other hand, the flows of all the junction ports are mutually equal, and we may consider the effort junction to be a flow node.
The other junction, the flow junction, behaves in the opposite way to the effort junction; it is its dual. In this element, the junction ports flows are added, and their sum is equal to zero. The sign convention is the same as in the former junction. The junction ports’ efforts are equal, and thus the flow junction may be considered to be an effort node. They are often used in mechanical systems, but perhaps the most well-known applications are Kirchhoff’s voltage and current laws in electricity.

3.1.3. Control Signal Components

The bond graph components can also have control signal input/output ports, as mentioned earlier (see Figure 13). These ports serve to transmit control signals into the component and out of it. The final targets of these signals are the elementary bond graph signal discussed previously. These components can also have input or output ports, or both. Input information carried into the component can be used to generate the element’s constitutive relation, which depends on the exterior data. The output control ports serve to extract data from the component.
In this study, the most important elementary components that require the input ports are transformers, which are used for the coordinate transformation of the vector quantities. Such transforms often need angles between the coordinate axes to define the variable transformer ratio. The output ports are often used to extract the value of common efforts or flows from the flow or effort junctions.
In addition to the control ports of the elementary components, we may use also input–output signal components for further processing. Some of the most important components are shown in Figure 15. The first of these is the input generator, which, on its output port, generates a signal; this usually depends on time and certain parameters, e.g., a·sin(omega·t), where a is the amplitude, omega is the circular frequency of the signal, and t is time. The summator achieves the summation of the input signals. It is typically used in feedback control loops. The next component is a multi-input function generator. The integrator serves to integrate an input signal. For instance, if we need to evaluate the coordinates of the position of a particular part, we may pick the corresponding velocity component from, e.g., an effort junction and integrate it. Note that the bond graph is a velocity-based approach, so, if we need the positions, we must integrate the velocities. This is not a flaw in bond graphs but a characteristic of Newtonian mechanics. Newton’s laws are valid in any inertial frame of reference. Since there is no absolute frame of reference, to determine the position of an object, we must specify the coordinate system we refer to and the initial position of the object in it. The node has one input signal and many output signals, which are equal to the input, and thus allows branching of the input signal to different components.
The display component shown in Figure 15 mimics an x–y plotter. It serves to generate x–t or x–y plots of the signals fed to its input ports during the simulation. It is widely used in models. Every modeling program must have at least one of them.
The last component in Figure 15 is named IPC (inter-process communication). This component serves as an interface between the client (bond graph program) and server (virtual 3D model generator) applications (see Section 3.6). The input port serves to collect the signals, which are sent to the server by the named pipe. Similarly, the output port delivers the signals transmitted by the server back to the client.

3.1.4. Developing the Bond Graph Model

The model we are developing is, by its nature, hierarchically structured. We build it using the systematic decomposition of the objects we are modeling. We start from the basic project level, in which we can identify the basic physical components: these are subject of the project, the system, and its environment (Figure 16).
By definition, the system’s interaction with the environment is unilateral, i.e., the environment affects the system and not vice versa. Thus, the effects of the environment on the system objects are typically modeled by Effort or Flow Sources, and Input signals generators. If there is an object in the environment that is affected by the system, such an object should be extracted from the environment and added to the system.
Next, we analyze the system, identifying the main physical parts it consists of, their mutual interactions, and their interactions with the environment. In our Project Robotino, we may identify the system as consisting of four main objects: the chassis and three wheels. Its environment is the walled floor over which it rolls.
The system of the bond graph working model, which was generated using the BondSim program, is shown in Figure 17. It is a working version because some of the components the model should contain are missing, such as displays and IPC components; they will be added later. All of the main components are modeled by general (word model) components, which have corresponding name and power ports. Every wheel has three power ports. One port is connected to the corresponding port of the Ground environment by the bonds. The other one has power directed toward the chassis and is connected to it by the bond. It shows the effects of the wheels in moving the chassis. The third one, which is also connected to the chassis, shows the transfer of power from the DC motors in the chassis that drive the wheels. Note that, at the left of the Robotino’s Bond Graph model in the center of the screen, there is a tree that shows the model structure. By clicking the ‘+’ on the left of a component, we may open its internal document. Currently, there is not a document because it is not defined yet, i.e., it is empty.

3.2. Coordinate Systems

We start by analyzing the Robotino system to define the basic coordinate systems that will be used to model it.
Figure 18 shows a scheme of Robotino’s chassis—the base (see also Figure 9). There are several rigidly attached coordinate frames. Three of them are local body-fixed frames Cixiyizi (i = 1, 2, 3), whose axes xi are fixed and originate at the corresponding wheel centers Ci (i = 1, 2, 3). They are drawn through the base’s center C; the zi-axes are orthogonal to the plane of motion and are directed upwards. There is another Cxyz coordinate frame whose x-axis is directed in the direction of the camera and thus shows the trajectory of the Robotino.
Hence, due to the parallelism of the z-axes, the angular velocity expressed in the world and the local coordinate frames are identical:
ω w = ω = φ ˙ ,
where the angle φ is the rotation angle of the chassis. In this study, the vectors represented in the global coordinate frame are denoted by w in the exponent. For vector components, the capital letters X and Y in the indices indicate that the components refer to the corresponding global coordinate frame. In the case of a radius vector of a point, projections onto the axis of the global coordinate frame are denoted by the capital letters X or Y, with the corresponding point indicated in the index.
The translational part of the base motion with respect to the world coordinates is described by the components of the center C velocity:
v C w = v C X v C Y 0 .
The orientation of the local coordinate frames with respect to the world one is defined by rotation matrices:
R i = cos φ i sin φ i 0 sin φ i cos φ i 0 0 0 1 ,   ( i = 1 , 2 , 3 ) ,
where φ i is the rotation angle determined by (see Figure 18):
φ 1 = φ + π / 3 ,   φ 2 = φ + π ,   φ 3 = φ π / 3 .
Thus, if the velocity vector vi is defined in the local system, its components in the world system are defined by the transform:
v i w = R i v i , ( i = 1 , 2 , 3 ) .
Similarly, the components of a vector, e.g., force F i w defined in the world frame, can be expressed in the local coordinate frame by the inverse transformation matrix. Because the matrices (3) are orthogonal, their inverse matrices are simply their transpose, R i 1 = R i T . Therefore, it follows that:
F i = R i T F i w .
The power defined by the scalar product of these quantities in the world system can be evaluated using the above expressions:
F i w T v i w = R i F i T R i v i = F i T R i T R i v i = F i T v i ,
Thus, it is equal to the power evaluated by the local representation of these variables. We may describe this transform using the bond graph component Transform in Figure 19a.
By opening the component, a document appears (Figure 19b), which has the same title as the component, in this case the Transform. This serves to define the internal structure of the component model. The bond graph model describing the transform in Figure 19b describes transforms corresponding to Equations (5) and (6).
Thus, going from the lower to the upper ports represents the direct transform of velocities from the local to the world system in (5). The 0-junctions represent the summation of the transformed quantities. Similarly, the transforms from top to down represent the inverse transforms of forces from the world to the local frame, as determined by (6), and the 1-junctions describe the corresponding summation of the transformed quantities. The nodes represented by dots serve to distribute the angle delivered to the transformer at the input port internally to the transforms TF. To better understand these transforms, the corresponding constitutive relations of the transformed efforts and flows are superposed over the bonds in Figure 19b. We follow the convention that symbols to the left of or above the bonds are efforts, and those to the right of and below them are flows. We use this convention in our other bond graph models.

3.3. Dynamics of Wheels

Figure 20 shows a side view of a wheel. Every wheel is driven by a DC motor over a geared belt and a planetary reducer. We describe the motion of the wheel with respect to the corresponding local coordinate frame Cixiyizi. The angular velocity of the rotation of the wheel is ωi, and it is directed along the xi-axis (this is conventional—the real direction depends on the design of drivers’ chains and will be discussed later in relation to the wheels’ drivers).
In addition to rolling around the xi-axis, the wheels may execute a side motion, i.e., in the direction of the xi-axis, due to the rollers (Figure 20, see also Section 2.4). The roller that is in contact with the ground may freely rotate in its holder about its longitudinal axis, allowing for the side motion of the wheel. This motion is an essential characteristic of Robotino, because it allows it to move in any direction, irrespective of the current orientations of the wheels’ axes, i.e., they are omnidirectional. As already mentioned in the Introduction, omnidirectional wheels are of significant interest and are the subject of many studies [69,70,71,72].
Assuming that the rolling occurs without slipping, i.e., the velocity of the temporary contact point Pi is zero, the velocity of the wheel’s center is determined by:
v i = v P i + v C i / P i = 0 0 0 + ω i 0 0 × 0 0 R w = 0 R w ω i 0 ,
where Rw is the radius of the wheel.
Figure 20 shows the components of the reaction forces at Pi. Component Fiy is the reaction force opposing the slipping of the wheel on the ground during its rotation around the xi-axis. Similarly, Fix is the reaction of the ground to the slipping of the current roller during its rotation due to the sideways movement of the assembly along the xi-axis. The component Fiz is the reaction that occurs due to the weight of the complete wheel assembly.
We reduce the Fiy component to the center Ci of the wheel (Figure 20). Hence, the respective moment with respect to point Ci is determined by:
M i = 0 0 R w × 0 F y 0 = R w F y 0 0 .
Hence, the rotation-to-linear-motion transform determined by (8) and (9) can be simply modeled by the RotLin component shown in Figure 21a, consisting of a single transformer TF in Figure 21b. It uses the parameter −Rw as the transformer arm.
We also introduce the wheel body-fixed frame xibyibzib (i = 1, 2, 3), which overlaps with the xiyizi (i = 1, 2, 3) frame when the current roller touches the ground at its greatest diameter (Figure 20). Thus, the current body-fixed wheel frame is defined with respect to the current roller with which the wheel touches the ground. As the roller changes, the body-fixed frame changes as well.
We study the rotation of the wheel with respect to the world frame coordinates XYZ. However, we may also study it in the current wheel body-fixed frame. In this frame, the temporary contact point Pi apparently moves in the opposite direction.
When the wheel rotates around the xi-axis by θi radian, the zib-axis rotates by an angle of θib. We calculate a helper angle according to the expression:
θ t e m p = mod θ i , π / 3 .
Using a mod operator definition, this angle lies in the range [0, π/3]. However, as θ 0 = π / 3 , when this angle is greater than θ 0 / 2 , the contact point switches to the next roller, and the body-fixed frame changes accordingly (Figure 20). Therefore, to properly define angle θ i b between the body-fixed zib-axis and zi-axis, we set the following condition. Operators “?:” are known as the question operators and represent the inline version of if-then-else constructs:
θ i b = θ t e m p 0   ?   θ t e m p π / 6   ?   θ t e m p :   θ t e m p π / 3     : θ t e m p π / 6   ?   θ t e m p : θ t e m p π / 3
Every roller can, by itself, freely rotate about its longitudinal axes (Figure 20). These axes form a plane, which is orthogonal to the wheel rotational axis. In this way, in addition to the normal rolling of the wheel around its rotational axis xi, the wheel may move sidewise due to a roller currently in contact with the ground rolling about its longitudinal axis.
We can find the velocity arm rroll (Figure 20) from the relationship:
R w cos θ i b = r r o l l + R w r max ,
or
r r o l l = r max R w 1 cos θ i b .
Assuming that the rolling of the roller takes place without slipping, and applying the right-hand rule to the roller, we obtain:
v i x = r r o l l ω i r o l l .  
Thus, the velocity of the wheel center is holonomic, i.e., it does not depend on the direction of the wheel axis.
The model of the roller component is shown in Figure 22. Comparing this with Figure 21, it can be seen that the rotation is similar to that of the wheel, but with a different rolling arm.
Following these kinematical considerations, we turn to the dynamics of the wheel. Due its rotational symmetry, we assume that the wheel’s mass center coincides with its geometric center Ci. Thus, the motion of the wheel can be decomposed into its translation, which is determined by the motion of its center and its rotation around it. Because the wheels are joined to the Robotino’s base and translate with it, we may take into account the translational dynamics of the wheel when analyzing the motion of the chassis. Thus, all that remains is to analyze the rotational dynamics of the wheel.
We apply the moment of momentum law for rotation around the wheel’s center Ci. The moment of momentum with respect to the local frame xiyizi, (i = 1, 2, 3) reads as follows:
L C i = I i x ω i 0 0 ,   ( i = 1 , 2 , 3 ) ,
where I i x is the moment of inertia of the wheel with respect to the xi-axis. We transform (15) to the world frame XYZ by pre-multiplying by rotation matrix (3):
L C i w = R i I i x ω i 0 0 = I i x ω i cos φ i I i x ω i sin φ i 0 ,   ( i = 1 , 2 , 3 ) .
Now, the moment of momentum law reads:
d L C i w d t = M i w ,
where M i w is the applied moment. If we denote the net moment applied to the wheel by Mix, we have:
M i = M i x 0 0 ,   ( i = 1 , 2 , 3 ) .
Using (16) and (18), we can write (17) as:
d d t R i I i x ω i 0 0 = R i M i x 0 0 .
Figure 23 shows the bond graph component RotDyn describing (19). Note that the component RotTFi in the RotDyn document is the coordinate transform between the local xi and world coordinates. Finally, the last component in Figure 23 represents the rotational dynamics of the wheel in the world frame.
Finally, we formulate the bond graph model of the wheel, which contains all of the components that we discussed previously (Figure 24). The integrator serves to find the angle of the wheel rotation in radians, and the function converts the radians into degrees.

3.4. Dynamics of the Chassis

The bond graph model of the chassis is shown in Figure 25. The model follows the structure of the real device, which contains three drive units represented by the components Drive 1 to Drive 3. The drivers develop angular velocities ωi and torques τi, which are applied to the wheels (Figure 24).
The component Dynamics in Figure 25 models the kinematics and dynamics of the chassis motion. We start from the relation between the velocity of the wheel centers in the local coordinates and the world velocity of the chassis center:
v C w = X ˙ C Y ˙ C 0 T ,
where XC and YC are its coordinates in the world frame. This relation reads as:
v i + v C / C i = v C i = R i T v C w , ( i = 1 , 2 , 3 ) ,
or
v i x v i y 0 + 0 0 φ ˙ × R 0 0 = cos φ i sin φ i 0 sin φ i cos φ i 0 0 0 1 X ˙ C Y ˙ C 0 , i = 1 , 2 , 3 ,
where R is the radius of the circle, which contains the wheel centers (Figure 18). Expanding the last equation yields:
v i x = X ˙ C cos φ i + Y ˙ C sin φ i ( a ) v i y R φ ˙ = X ˙ C sin φ i + Y ˙ C cos φ i ( b ) ,   ( i = 1 , 2 , 3 ) .
The bond graph model of the base dynamics is shown in Figure 26a. It plays a central role in Equation (23). The three transformers TF describe rotation-to-linear transformation (similar to Figure 21). They also generate the moments of the y-axis forces of the wheels acting on the chassis about their Z-axis. The Transform describes the right side of (23b) (Figure 26b). It also transforms the y-axis forces of the wheels acting on the chassis to the world frame and applies them to the center of mass of the assembly (see Translation in Figure 26a).
The Side rolling in Figure 26a describes the motion of the wheels due to the rotation of the rollers. The velocities of this motion are described by the bond graph representation in Figure 27a. It generates the x component of the wheel center, as defined by (23a). The roles of the transforms serve not only to transform the velocities of the chassis’ centers from world to local frames, but also to transform to the world frame the x-axis components of the forces acting as the rollers come into contact with the ground (Figure 20), which are transferred by the wheels to the chasses. The sum of these forces is transferred through the bottom port into Translation’s upper port (Figure 27b).
The component Translation describes the translational dynamics of the Chassis, including the wheels (Figure 27b). The inertial element I describes the translational dynamics of the chassis.
We now return to the model of Chassis in Figure 25. There are three Driver components, one for every wheel, which model the driver units of the Robotino.
Figure 28 shows the structure of the drivers. The drivers consist of DC motors [86] and reducers (belt drives and planetary reducers). The DC motors are modeled using gyrators (Damic and Montgomery [76]) and lossless reducers by simple transformers.
In this model, the control of the drivers is provided by common PID controllers. The reference angular velocity follows from (8) and (23b):
ω i = R φ ˙ X ˙ C sin φ i + Y ˙ C cos φ i / R w , ( i = 1 , 2 , 3 ) .
The reference inputs are generated by the Reference component described in the next section. The positive direction of the motor rotation, following the right-hand rule, corresponds to the motor rotation axis directed into the Robotino’s body (see Figure 8). On the other hand, the wheels’ axes are parallel to these axes, but they are directed out of the body (See Figure 9). Therefore, the positive directions of angular velocities and torques on the sides of the motor and driver output are opposites.
This can be accounted for by setting the transformer ratio equal to the negative of the gear ratio, i.e.,
ω i = k g e a r ω m , τ m = k g e a r τ i .
This also implies that the reference input in the feedback loop of Figure 28 should be scaled back by 1 / k g e a r before it is applied.

3.5. Planning of Motion

The purpose of the Reference component is to define the path of a plane curve that the center C of the Robotino’s bottom should follow, as well as the direction of its motion, and to generate the control signals for wheels driving. As an example of the curve, we use a (geometric) rose that is described by the following pair of Cartesian coordinates [87]:
X C r e f = a m p l cos k ϕ cos ϕ Y C r e f = a m p l cos k ϕ sin ϕ .
If parameter k = 3, then (26) describes a rose with three petals of amplitude ampl = 2 m (Figure 29a). We choose this relatively simple path because it will force Robotino to change the direction of its motion fairly often, and we can see whether the model we are developing simulates this motion correctly.
To describe the path shown in Figure 29a, we define parameter ϕ as follows:
ϕ = a t + 5 π / 6 ,
where a is a parameter, and t denotes the time. Note that, initially, XC = 0, YC = 0, and the curve starts in the fourth quadrant with ampl of 2.0 m. To pass over all three petals, it needs π radians. Thus, if a = 0.1, it needs approximately 31.4 s for one complete cycle.
Differentiating (26) and (27) with respect to time, we find the expressions for the world velocity components of the Robotino center C along the reference path:
v C X r e f = d X C r e f d t = a m p l a k sin k ϕ cos ϕ cos k ϕ sin ϕ v C Y r e f = d Y C r e f d t = a m p l a k sin k ϕ sin ϕ + cos k ϕ cos ϕ .
The direction of motion is defined by assuming that the Chassis axis x is tangential to the reference path at the current position of the Chassis center C (Figure 29b). The corresponding angle φ is determined by:
tan φ r e f = v C Y r e f v C X r e f .
We find the reference angular velocity of the chassis by differentiating (29) with respect to time:
ω r e f = cos 2 φ r e f d d t v C Y r e f v C X r e f = a 2 k 2 sin 2 k ϕ + k 2 + 1 cos 2 k ϕ k 2 sin 2 k ϕ + cos 2 k ϕ .
Now, to find angle φref as a continuous function of ϕ, and thus of time t, we may integrate (30) using a suitable initial value, i.e.,
φ r e f = 0 t ω r e f d t .
We chose a rose with three petals as the reference path because it is relatively easy to generate using the equations above, and because it forces the center of the Robitino’s base to follow the curved path and continuously change its camera viewing direction to be tangential to the path.
The component Reference (Figure 29c) implements the above functional relationships consisting of the input function (27), the chassis center position (26), and the linear (28) and angular velocity functions (30), as well as the rotation angle (31). The outputs of these functions are forwarded to the drivers shown in Figure 25.

3.6. Basic Model of Robotino

Referring to the basic model of Robotino shown in Figure 17, we can conclude that we have developed bond graph models of all the system components—the chassis and three wheels. The model of the Ground still needs to be defined.
The main role of the ground is to hold the Robotino and apply friction to its wheels. We simplify the effect of friction by assuming that the Robotino’s wheels do not slide over the ground. Thus, the model of Ground is very simple (see Figure 30). The action of the floor is modeled by the three components vP1 to vP3, acting at the current contact points P1–P3 (Figure 30a). They each contain three source flows (SFs) (Figure 30b), which impose the zero-velocity components of the current wheel’s connection point in the direction of world axes. The corresponding reaction forces depend on the dynamics of the Robotino’s motion.
Finally, we complete the model shown in Figure 17 by adding the missing components—i.e., the displays and the named pipe interface IPC. These components require corresponding signals; thus, we also add the components consisting of signal nodes to help in distributing the signals over the system. The resulting model is shown in Figure 31.

3.7. Building the Mathematical Model and Solving It Using the Backward Differentiation Formula (BDF)

Before we start the simulation, we need to build the mathematical model of the hierarchical bond graph model. Starting from this root (i.e., basic) level model, we pass the model tree several times. First, we check that every component is correctly connected, and next we generate the system variables in terms of how we define its mathematical model. After that, we assess all the elementary components, reading their constitutive relations. We translate their form as described in Table 1 into the implicit forms. Thus, e.g., the constitutive relations of the left flow junction of Figure 26b are connected to the transformers, as described by the following equations:
v C 1 y + f 1 f 2 = 0 , f 1 + v C X sin φ 1 = 0 , f 2 v C Y cos φ 1 = 0 .
Similarly, the constitutive relations of the inertial elements in Figure 27b are expressed as:
d p X d t F X = 0 , d p Y d t F Y = 0 .
Next, we translate them into the prefix form. Thus, the common infix form a + b = c is translated into the prefix form +ab, and a similar process is carried out for other expressions. In these forms, the left side of a relation can be more efficiently evaluated and translated in Microsoft’s net assembly (using the cli extension of the C++ language). We collect the processed constitutive relations in a list of relations.
After all the model equations are collected, we visit them again and generate the expressions for the elements of the corresponding partial derivative matrix. We evaluate this via symbolic partial derivation. In this way, both the equations and the element of partial derivative matrix are expressed symbolically in order to improve the solution of the DAE equation.
We can represent the mathematical model generated in the matrix form as:
x ˙ z = 0 , f x , y , t = 0 .
The first equation corresponds to the inertial, capacitive, and integrator comports, and the second to the rest of the component constitutive relations. Taking the time derivation of Equation (34), we obtain:
f x x ˙ + f y y ˙ + f t = 0 .
Taking into account Equation (34), we can write the last equation in the form:
f y y ˙ = f x z + f t .
Thus, if the Jacobian matrix f y is invertible, we can express the time-derivate of y as:
y ˙ = f y 1 f x z + f t .
Therefore, the second part of Equation (34) has a differentiation index 1; taken together with the first, we deduce that (34) has an index 2 DAE (see Brenan et al. [88], p. 39).
Well-known Backward Differentiation Formulas (BDFs) have emerged as one of the best methods for solving general DASs. Brenan et al. [88], pp. 54–56, showed that, when applied to a model (34), the k-step BDF (k < 7) is convergent to the order of hk, where h is the current step size. BondSim uses only one integrator, the general form of the Backward Differentiation Formula (BDF), i.e., its variable coefficient form method [76], to solve bond graph models. In comparison, the famous DASSL uses the constant coefficient form of BDF [88]. It is well known that the variable coefficient form of BDF is the most stable version of BDF, but it requires more frequent evaluation of the partial differentiation matrix of the DAE system (the Jacobian system). This is counterbalanced in BondSim by generating this matrix in a sparse analytic form, as described above. In addition, the equations of the mathematical model of the problem and the corresponding expressions of the matrix elements are internally converted into the NET assembler form using Microsoft’s C++/CLR language extension. They can therefore be evaluated efficiently (in DASSL, this matrix is evaluated numerically). For details, see Damic and Montgomery [76].
Hence, we may conclude that the equations of a mathematical model can be successfully solved using the BDF method if they are independent. This is relatively easy to achieve by applying the bond graph method, as described in [76], and by following the structure of the physical system under consideration.
To start the simulation process, after the mathematical model has successfully been built, we apply the menu command Run. A dialog window opens, which is used to input the simulation parameters (simulation time, output interval, maximum step size, absolute and relative errors, etc.). After the OK button is pressed, the simulation starts.

3.8. Named Pipe Communications and Simulation

The named pipe is a two-way IPC mechanism, which enables the transfer of data between two or more applications on the same computer, or on computers connected in a local net. Any applications can serve both as server and a client, making two-way communications possible. However, only one application creates the named pipe: it is termed the server. Those that connect to the first application are called clients.
In this scenario, there is one server, BondSim3DVisual, and one client, BondSim implemented on the same computer. After a project is opened on the first one and the scene is created, we create the named pipe using the command Open Pipe. After the pipe is created, a message is sent inviting the client to connect to it.
To connect to the server, we activate the BondSim applications and open the bond graph problem corresponding to the virtual project we created in the server. We manipulate the frames of both applications to make them both visible on the computer screen.
The bond graph model contains an IPC component in the form of a ring (or pipe cross-section) (see the top of Figure 31). It has an input signal port that serves to connect the signal lines, which transfer data across the pipe to the server, and an output port that receives the signal data returned by the pipe. After all the IPC ports are connected, we build a mathematical model of the BondSim application. If the building of the model is successful, we can start the simulation. Before starting the simulation, we need to connect it to the server using the corresponding command under the Build menu.
There is one other parameter that needs to be defined at the start of simulation. This is the Frames per second (FPS) parameter. The visual screen in BondSim3DVisual is updated by sending data over the pipe at discrete times. Every pack of data generates a picture displayed on the screen; this is called a frame (following film terminology). The question of how often we need to send data is answered by the fact that the human brain can process 10 to 12 FPS, which are received by our eyes as steady pictures; higher rates are recognized as motion. The time interval when the packs are sent over the tube is currently set to 30 ms, or about 33 FPS.
Every pack of data that is sent by the client consists of a series of binary values of the joint drive’s angular or prismatic displacement (see Figure 6b), ordered by counting joints in the XML model tree starting from the root and moving to the tree top (Figure 10). Thus, the first value corresponds to the first joint bellow the root, the second datapoint to the next joint, etc. After the pack is received by the server, it reads it and sends the first datapoint to the first joint drive, the second to the second joint drive, etc. Thus, the pack coding is very simple and easy to decode. After receiving data, the geometry of the mechanism is reevaluated and the screen updated. Repeating the package sending and updating the screen appears as the motion of mechanism over the screen.
A similar observation can be made of the date packs sent from the server to the client. Because these data currently contain only the coordinates of the probe (in the Robotino model, a small red ball below its body), when received by the client, these have to be taken into account.

4. Simulation of Robotino’s Path

We can now simulate the motion of Robotino along the planned path. We build the model first and then start a simulation run using the following parameters: simulation interval 50 s, output interval 0.02 s, maximum time step size 0.02 s, errors 1 × 10−6. The simulations are performed on a PC with a x64-based processor, AMD Ryzen 7 PRO 4750 G (AMD, Santa Clara, CA, USA), with Radeon Graphics 3.60 GHz. The total elapsed time is 0.51 s. After that, we repeat the simulation with the same parameters, and this time, we enable communication between the dynamic and virtual models. Communication is established using the IPC pipe component (inter-process communication), shown as a red ring in Figure 31, which enables the dynamic model to send some information. In our case, these are joint angle values, which are sent to the virtual model 30 times per second. When the dynamic model is connected to the virtual one, the total elapsed time is 46.83 s. Having tested the behavior of Robotino using both these models, in future investigations, we plan to connect them with a real physical robot according to the digital twin concept.
The BondSim3DVisual application also enables the mechanism movements to be written over the screen on a video file in the MP4 format. We start writing using the command Start Video and end it with the command End Video under the File menu. We can read this file using various applications, such as Media Player, Movies & TV, and similar. We uploaded this file to YouTube under the name Project Robotino, where readers can view it. When the video writing is underway, the process is somewhat slower, but it remains at about 50 s.
Some generated plots are shown in the figures below. The path coordinates in the plane motion sent to the virtual model force the latter to change its position on the screen, i.e., it moves. The corresponding virtual path coordinates are picked up by the probe element (Figure 10a) and sent back over the named pipe; they appear at the output of the IPC element. Figure 32a shows the corresponding path, as seen on the display connected to this IPC port. The difference between these signals and the signals of the Robotino’s base coordinates, which are evaluated using the simulation, i.e., the same signals that we previously sent over the pipe, are evaluated by the block below and to the right of IPC’s output port. They are displayed on the display component on the right. The resulting plot is shown in Figure 32b.
To further explain the obtained results, we put the x-coordinates of the center point XC and XCvisual on the same y-axis on the display at the right of the IPC component. This is shown in Figure 33a. At first glance, they appear to be a single curve. We expand a small rectangle around a point on the curve. The generated enlarged plot is shown in Figure 33b. There are really two curves, displaced by 30 ms (milliseconds). Thus, the signal sent back over the pipe is delayed by this time value; as a result, the accuracy of this curve is moderate, as shown in Figure 32b. The accuracy depends on the frequency with which data packs are sent over the pipe. In this simulation, it is exactly the same number, i.e., 30 ms.
To verify the developed dynamic model and control algorithm, we compared the coordinates of the robot center and its orientation as obtained during the simulation with the reference values. Figure 34 depicts the deviations in the obtained coordinates of the Robotino’s center (XC and YC) and its orientation (angle φ in radians) with reference to the reference values defined by (24) and (29). They are of the order of several 10−6 m for Xc, less than 2·10−5 m for Yc, and 10−6 rad for the angle φ (after the initial transient processes). This represents very good agreement. Note that the amplitude of the path is 2.0 m.
A virtual model of Robotino, captured at different time points during the simulation, is shown in Figure 35.

5. Conclusions

This paper proposes a novel methodology for the virtual 3D modeling of the articulated mechanisms that can be driven by signals obtained from other models: for instance, from its dynamic model developed using other software packages.
The proposed approach uses well-known XML technology, which provides the systematic development of a 3D visual model in the form of a tree. Instead of editing the XML document, the operations are applied to the document tree in the Tree View pane by inserting or removing the elements or attributes in the BondSim3DVisual environment. At the same time as generating a DOM-like tree, conventional XML code is also automatically generated and written into a separate read-only document window (with an XmlOutput pad).
The methodology explained here is applied to the modeling of a holonomic mobile robot (Robotino) equipped with three omnidirectional wheels. A 3D model of Robotino is created using 3D CAD models of robot parts in the form of STL files. The virtual driving of the articulated model by external signals is enabled by developing a dynamic model of the robot using the separate general-purpose bond graph software BondSim. During the development of the dynamic model of the robot, the lateral rolling of the robot’s omnidirectional wheels was also taken into account.
We established two-way communication between the two developed robot models—the dynamic and the virtual. During the simulation, both models run in different software packages and can communicate with each other. The dynamic model sends information to the virtual one to drive it, but there is also communication in the opposite direction. This means that some information can be picked up from the virtual model and delivered to the dynamic one (or to any other model). Thus, some information that can be more easily obtained using the virtual model can be delivered from the virtual side to the dynamic side. To verify the methodology presented here, a geometric rose with three petals was used as an example of the plane curve that the center of the Robotino should follow.
In future research, we aim to develop a more complex visual model of the environment in which the robot moves. This will enable us to establish communication between the dynamic model; the virtual model; and the real, physical robot—i.e., the Robotino, which is equipped with a complex sensor system to optimize its motion.

Author Contributions

Conceptualization, V.D. and M.C.H.; state-of-art and methodology, V.D. and M.C.H.; software, V.D.; validation, V.D. and M.C.H.; formal analysis, V.D. and M.C.H.; investigation, M.C.H.; model development, V.D. and M.C.H.; data curation, V.D. and M.C.H.; writing—original draft preparation, V.D. and M.C.H.; writing—review and editing, V.D. and M.C.H.; visualization, V.D. and M.C.H.; supervision, V.D. and M.C.H. All authors have read and agreed to the published version of the manuscript.

Funding

This research was funded by the Ministry of Science, Higher Education and Youth, Canton Sarajevo.

Data Availability Statement

The data obtained during the simulations discussed in this study are available from the corresponding author upon reasonable request.

Conflicts of Interest

The authors declare no conflicts of interest.

References

  1. Nusser, G.; Bühler, D.; Gruhler, G.; Küchlin, W. Reality-Driven Visualization of Automation Systems via The Internet Based On Java And XML. IFAC Proc. Vol. 2001, 34, 497–502. [Google Scholar] [CrossRef]
  2. Robles-Enciso, A.; Robles-Enciso, R.; Skarmeta, A.F. Sim-PowerCS: An Extensible and Simplified Open-Source Energy Simulator. SoftwareX 2023, 23, 101467. [Google Scholar] [CrossRef]
  3. Tan, Q.; Li, Y.; Wu, H.; Zhou, P.; Lo, H.K.; Zhong, S.; Zhang, X. Enhancing Sustainable Urban Air Transportation: Low-Noise UAS Flight Planning Using Noise Assessment Simulator. Aerosp. Sci. Technol. 2024, 147, 109071. [Google Scholar] [CrossRef]
  4. Andriola, C.; Di Rado, G.R.; Presta García, D.S.; Nodari, C.T. Classification of Driving Simulators Validation: A Case Study Using an Immersive Driving Simulator. Accid. Anal. Prev. 2025, 213, 107944. [Google Scholar] [CrossRef] [PubMed]
  5. Servi, M.; Lo Piccolo, R.; Dalle Mura, F.; Mencarelli, M.; Puggelli, L.; Facchini, F.; Severi, E.; Martin, A.; Volpe, Y. Advanced Physical Simulator for Pediatric Minimally Invasive Thoracoscopy Training in the Treatment of Pulmonary Sequestration. Comput. Biol. Med. 2025, 188, 109847. [Google Scholar] [CrossRef]
  6. Wu, L.; Seibold, M.; Cavalcanti, N.A.; Hein, J.; Gerth, T.; Lekar, R.; Hoch, A.; Vlachopoulos, L.; Grabner, H.; Zingg, P.; et al. A Novel Augmented Reality-Based Simulator for Enhancing Orthopedic Surgical Training. Comput. Biol. Med. 2025, 185, 109536. [Google Scholar] [CrossRef]
  7. Chen, X.; Liu, X.; Liu, X. Internal and External Disturbances Rejection Control for Pitch Frame of Horizontal Hydraulic Flight Motion Simulator. Control. Eng. Pract. 2024, 153, 106077. [Google Scholar] [CrossRef]
  8. Causse, M.; Mercier, M.; Lefrançois, O.; Matton, N. Impact of Automation Level on Airline Pilots’ Flying Performance and Visual Scanning Strategies: A Full Flight Simulator Study. Appl. Ergon. 2025, 125, 104456. [Google Scholar] [CrossRef]
  9. Zhou, Z.; Zhang, L.; Wei, S.; Zhang, X.; Mao, L. Development and Evaluation of BCI for Operating VR Flight Simulator Based on Desktop VR Equipment. Adv. Eng. Inform. 2022, 51, 101499. [Google Scholar] [CrossRef]
  10. Kefalis, C.; Skordoulis, C.; Drigas, A. Digital Simulations in STEM Education: Insights from Recent Empirical Studies, a Systematic Review. Encyclopedia 2025, 5, 10. [Google Scholar] [CrossRef]
  11. Buchta, T.; Martinec, T.; Buchta, J.; Hlava, J.; Tuma, P. Enhancing Microcontroller Programming Education with a 3D Virtual Factory Simulator. IFAC PapersOnLine 2024, 58, 109–113. [Google Scholar] [CrossRef]
  12. Zhang, S.; Zhao, C.; Zhang, Z.; Lv, Y. Driving Simulator Validation Studies: A Systematic Review. Simul. Model. Pract. Theory 2025, 138, 103020. [Google Scholar] [CrossRef]
  13. Camargo, C.; Gonçalves, J.; Conde, M.Á.; Rodríguez-Sedano, F.J.; Costa, P.; García-Peñalvo, F.J. Systematic Literature Review of Realistic Simulators Applied in Educational Robotics Context. Sensors 2021, 21, 4031. [Google Scholar] [CrossRef] [PubMed]
  14. Knoke, B.; Thoben, K. Training Simulators for Manufacturing Processes: Literature Review and Systematisation of Applicability Factors. Comp. Applic. Eng. 2021, 29, 1191–1207. [Google Scholar] [CrossRef]
  15. Guan, L.; Zhang, X.; Cong, X.; Zhang, Z.; Yang, Z.; Li, N.; Noureldin, A. Current Situations and Development Tendencies for the Body Measurement Technology in Digital Skiing: A Review. Measurement 2025, 241, 115682. [Google Scholar] [CrossRef]
  16. Hwan Park, J.; Song, T.H.; Jung, S.M.; Jeon, J.W. XML Based Robot Description Language. In Proceedings of the 2007 International Conference on Control, Automation and Systems, Seoul, Republic of Korea, 17–20 October 2007; IEEE: Piscataway, NJ, USA, 2007; pp. 2477–2482. [Google Scholar]
  17. Makatchev, M.; Tso, S.K. Human-Robot Interface Using Agents Communicating in an XML-Based Markup Language. In Proceedings of the Proceedings 9th IEEE International Workshop on Robot and Human Interactive Communication. IEEE RO-MAN 2000 (Cat. No.00TH8499), Osaka, Japan, 27–29 September 2000; IEEE: Piscataway, NJ, USA, 2000; pp. 270–275. [Google Scholar]
  18. Kitamura, Y.; Shibata, Y.; Tokuda, K.; Kobayashi, K.; Nagata, N. XML-Based Markup Language for Web Information Integration in 3D Virtual Space. In Proceedings of the 2007 IEEE/WIC/ACM International Conferences on Web Intelligence and Intelligent Agent Technology—Workshops, Silicon Valley, CA, USA, 5–12 November 2007; IEEE: Piscataway, NJ, USA, 2007; pp. 226–229. [Google Scholar]
  19. Moura, F.M.; Silva, M.F. Application for Automatic Programming of Palletizing Robots. In Proceedings of the 2018 IEEE Intern. Conference on Autonomous Robot Systems and Competitions (ICARSC), Torres Vedras, Portugal, 25–27 April 2018; IEEE: Piscataway, NJ, USA, 2018; pp. 48–53. [Google Scholar]
  20. Quinones, J.R.; Fernandez-Leiva, A.J. XML-Based Video Game Description Language. IEEE Access 2020, 8, 4679–4692. [Google Scholar] [CrossRef]
  21. URDF—Unified Robot Description Format, Project Website. 2024. Available online: https://wiki.ros.org/urdf (accessed on 11 February 2025).
  22. Tola, D.; Corke, P. Understanding URDF: A Dataset and Analysis. IEEE Robot. Autom. Lett. 2024, 9, 4479–4486. [Google Scholar] [CrossRef]
  23. Qiu, N.; Song, C.; Wan, F. Describing Robots from Design to Learning: Towards an Interactive Lifecycle Representation of Robots. In Proceedings of the 2024 International Conference on Advanced Robotics and Mechatronics (ICARM), Tokyo, Japan, 8–10 July 2024; IEEE: Piscataway, NJ, USA, 2024; pp. 1081–1086. [Google Scholar]
  24. Ahlers, D.; Schmolzi, T.; Junca, G.; Zhang, J.; Wasserfall, F. Calibration and Compensation of 5-Axis 3D-Printers for Printed Electronics. Addit. Manuf. Lett. 2025, 12, 100265. [Google Scholar] [CrossRef]
  25. Feder, M.; Giusti, A.; Vidoni, R. An Approach for Automatic Generation of the URDF File of Modular Robots from Modules Designed Using SolidWorks. Procedia Comput. Sci. 2022, 200, 858–864. [Google Scholar] [CrossRef]
  26. Terei, N.; Wiemann, R.; Raatz, A. ROS-Based Control of an Industrial Micro-Assembly Robot. Procedia CIRP 2024, 130, 909–914. [Google Scholar] [CrossRef]
  27. Xu, Q.; Zhu, A.; Xu, G.; Shao, Z.; Zhang, J.; Zhang, H. FEM-Based Real-Time Task Planning for Robotic Construction Simulation. Autom. Constr. 2025, 170, 105935. [Google Scholar] [CrossRef]
  28. Ivanou, M.; Mikhel, S.; Savin, S. Robot Description Formats and Approaches: Review. In Proceedings of the 2021 International Conference “Nonlinearity, Information and Robotics” (NIR), Innopolis, Russian Federation, 26–29 August 2021; IEEE: Piscataway, NJ, USA, 2022; pp. 1–5. [Google Scholar]
  29. Moreno, A.; Velez, G.; Ardanza, A.; Barandiaran, I.; De Infante, Á.R.; Chopitea, R. Virtualisation Process of a Sheet Metal Punching Machine within the Industry 4.0 Vision. Int. J. Interact. Des. Manuf. 2017, 11, 365–373. [Google Scholar] [CrossRef]
  30. Yang, C.; Tu, X.; Autiosalo, J.; Ala-Laurinaho, R.; Mattila, J.; Salminen, P.; Tammi, K. Extended Reality Application Framework for a Digital-Twin-Based Smart Crane. Appl. Sci. 2022, 12, 6030. [Google Scholar] [CrossRef]
  31. Baratta, A.; Cimino, A.; Longo, F.; Nicoletti, L. Digital Twin for Human-Robot Collaboration Enhancement in Manufacturing Systems: Literature Review and Direction for Future Developments. Comput. Ind. Eng. 2024, 187, 109764. [Google Scholar] [CrossRef]
  32. Böttjer, T.; Tola, D.; Kakavandi, F.; Wewer, C.R.; Ramanujan, D.; Gomes, C.; Larsen, P.G.; Iosifidis, A. A Review of Unit Level Digital Twin Applications in the Manufacturing Industry. CIRP J. Manuf. Sci. Technol. 2023, 45, 162–189. [Google Scholar] [CrossRef]
  33. Available online: https://gazebosim.org/home (accessed on 2 November 2024).
  34. Kim, S.; Peavy, M.; Huang, P.-C.; Kim, K. Development of BIM-Integrated Construction Robot Task Planning and Simulation System. Autom. Constr. 2021, 127, 103720. [Google Scholar] [CrossRef]
  35. Available online: https://www.ros.org/ (accessed on 2 November 2024).
  36. Rajendran, G.; Uma, V.; O’Brien, B. Unified Robot Task and Motion Planning with Extended Planner Using ROS Simulator. J. King Saud Univ. Comput. Inf. Sci. 2022, 34, 7468–7481. [Google Scholar] [CrossRef]
  37. Available online: http://wiki.ros.org/rviz (accessed on 2 November 2024).
  38. Cyberbotics: Robotics Simulation with Webots. Available online: https://cyberbotics.com/ (accessed on 2 November 2024).
  39. Gu, X.; Zhang, A.; Yuan, L.; Xia, Y. Design and Dynamics Simulation of a Triphibious Robot in Webots Environment. In Proceedings of the 2021 IEEE International Conference on Mechatronics and Automation (ICMA), Takamatsu, Japan, 8–11 August 2021; IEEE: Piscataway, NJ, USA, 2021; pp. 1268–1273. [Google Scholar]
  40. Available online: https://morse-simulator.github.io/ (accessed on 2 November 2024).
  41. Available online: https://www.coppeliarobotics.com/ (accessed on 2 November 2024).
  42. Bogaerts, B.; Sels, S.; Vanlanduit, S.; Penne, R. Connecting the CoppeliaSim Robotics Simulator to Virtual Reality. SoftwareX 2020, 11, 100426. [Google Scholar] [CrossRef]
  43. Available online: https://carla.org/ (accessed on 2 November 2024).
  44. Available online: https://raisim.com/ (accessed on 2 November 2024).
  45. Casini, M.; Garulli, A. MARS: A Matlab Simulator for Mobile Robotics Experiments. IFAC PapersOnLine 2016, 49, 69–74. [Google Scholar] [CrossRef]
  46. Available online: http://carmen.sourceforge.net/intro.html (accessed on 2 November 2024).
  47. Available online: https://moveit.ros.org/ (accessed on 2 November 2024).
  48. Santos Pessoa de Melo, M.; Gomes da Silva Neto, J.; Jorge Lima da Silva, P.; Natario Teixeira, J.M.X.; Teichrieb, V. Analysis and Comparison of Robotics 3D Simulators. In Proceedings of the 2019 21st Symposium on Virtual and Augmented Reality (SVR), Rio de Janeiro, Brazil, 28–31 October 2019; IEEE: Piscataway, NJ, USA, 2019; pp. 242–251. [Google Scholar]
  49. Coronado, E.; Mastrogiovanni, F.; Indurkhya, B.; Venture, G. Visual Programming Environments for End-User Development of Intelligent and Social Robots, a Systematic Review. J. Comput. Lang. 2020, 58, 100970. [Google Scholar] [CrossRef]
  50. Collins, J.; Chand, S.; Vanderkop, A.; Howard, D. A Review of Physics Simulators for Robotic Applications. IEEE Access 2021, 9, 51416–51431. [Google Scholar] [CrossRef]
  51. Farley, A.; Wang, J.; Marshall, J.A. How to Pick a Mobile Robot Simulator: A Quantitative Comparison of CoppeliaSim, Gazebo, MORSE and Webots with a Focus on Accuracy of Motion. Simul. Model. Pract. Theory 2022, 120, 102629. [Google Scholar] [CrossRef]
  52. Kaur, P.; Liu, Z.; Shi, W. Simulators for Mobile Social Robots: State-of-the-Art and Challenges. In Proceedings of the 2022 Fifth International Conference on Connected and Autonomous Driving (MetroCAD), Detroit, MI, USA, 28–29 April 2022; IEEE: Piscataway, NJ, USA, 2022. [Google Scholar] [CrossRef]
  53. Wijaya, G.D.; Caesarendra, W.; Petra, M.I.; Królczyk, G.; Glowacz, A. Comparative Study of Gazebo and Unity 3D in Performing a Virtual Pick and Place of Universal Robot UR3 for Assembly Process in Manufacturing. Simul. Model. Pract. Theory 2024, 132, 102895. [Google Scholar] [CrossRef]
  54. Gammieri, L.; Schumann, M.; Pelliccia, L.; Di Gironimo, G.; Klimant, P. Coupling of a Redundant Manipulator with a Virtual Reality Environment to Enhance Human-Robot Cooperation. Procedia CIRP 2017, 62, 618–623. [Google Scholar] [CrossRef]
  55. Ibari, B.; Bouzgou, K.; Ayad, R.; Benchikh, L.; Ahemed-Foitih, Z.; Bennaoum, M. Augmented Reality Environment for the Trajectory Tracking of Mobile Robot. In Proceedings of the 2020 1st International Conference on Communications, Control Systems and Signal Processing (CCSSP), El Oued, Algeria, 16–17 May 2020; IEEE: Piscataway, NJ, USA, 2020; pp. 278–281. [Google Scholar]
  56. Wu, M.; Dai, S.-L.; Yang, C. Mixed Reality Enhanced User Interactive Path Planning for Omnidirectional Mobile Robot. Appl. Sci. 2020, 10, 1135. [Google Scholar] [CrossRef]
  57. Corke, P. Robotics, Vision and Control: Fundamental Algorithms in MATLAB® Second, Completely Revised, Extended and Updated Edition, 2nd ed.; Springer Tracts in Advanced Robotics; Springer International Publishing: Berlin/Heidelberg, Germany, 2017; ISBN 978-3-319-54413-7. [Google Scholar]
  58. XML Technology. Available online: https://www.w3.org/standards/xml/ (accessed on 2 November 2024).
  59. Robotino® FESTO. Available online: https://www.festo.com/rep/en_corp/assets/pdf/Robotino_en.pdf (accessed on 1 September 2024).
  60. BondSimulation. Available online: https://www.bondsimulation.com/ (accessed on 2 November 2024).
  61. Klimenda, F.; Cizek, R.; Pisarik, M.; Sterba, J. Stopping the Mobile Robotic Vehicle at a Defined Distance from the Obstacle by Means of an Infrared Distance Sensor. Sensors 2021, 21, 5959. [Google Scholar] [CrossRef]
  62. Castillo, O.; Cortés-Antonio, P.; Melin, P.; Valdez, F. Type-2 Fuzzy Control for Line Following Using Line Detection Images. IFS 2020, 39, 6089–6097. [Google Scholar] [CrossRef]
  63. Tang, Q.; Eberhard, P. Cooperative Search by Combining Simulated and Real Robots in a Swarm under the View of Multibody System Dynamics. Adv. Mech. Eng. 2013, 5, 284782. [Google Scholar] [CrossRef]
  64. Damic, V.; Cohodar, M.; Omerspahic, A. Dynamic Analysis of an Omni-Directional Mobile Robot. J. Trends Dev. Mach. Assoc. Technol. 2013, 17, 153–156. [Google Scholar]
  65. Hadji, N.; Rahmani, A. Observer for an Omnidirectional Mobile Robot. In Proceedings of the 2010 Spring Simulation Multiconference on—SpringSim 2010, Orlando, FL, USA, 11–15 April 2010; Society for Computer Simulation International: San Diego, CA, USA, 2010; p. 1. [Google Scholar]
  66. Damic, V.; Cohodar, M.; Muratovic, M. Dynamic Modelling of Mobile Robots Based on Its 3D CAD Model. In DAAAM Proceedings; Katalinic, B., Ed.; DAAAM International Vienna: Wien, Austria, 2017; Volume 1, pp. 144–149. ISBN 978-3-902734-11-2. [Google Scholar]
  67. Muratovic, M. Modeling and Simulation of Mobile Robot by Simulink, Faculty of Mechanical Engineering. Master’s Thesis, University of Sarajevo, Sarajevo, Bosnia & Herzegovina, 2017. [Google Scholar]
  68. Mercorelli, P.; Voss, T.; Strassberger, D.; Sergiyenko, O.; Lindner, L. A Model Predictive Control in Robotino and Its Implementation Using ROS System. In Proceedings of the 2016 International Conference on Electrical Systems for Aircraft, Railway, Ship Propulsion and Road Vehicles & International Transportation Electrification Conference (ESARS-ITEC), Toulouse, France, 2–4 November 2016; IEEE: Piscataway, NJ, USA, 2016; pp. 1–6. [Google Scholar]
  69. Hijikata, M.; Miyagusuku, R.; Ozaki, K. Wheel Arrangement of Four Omni Wheel Mobile Robot for Compactness. Appl. Sci. 2022, 12, 5798. [Google Scholar] [CrossRef]
  70. Tagliavini, L.; Colucci, G.; Botta, A.; Cavallone, P.; Baglieri, L.; Quaglia, G. Wheeled Mobile Robots: State of the Art Overview and Kinematic Comparison Among Three Omnidirectional Locomotion Strategies. J. Intell. Robot. Syst. 2022, 106, 57. [Google Scholar] [CrossRef] [PubMed]
  71. Qian, J.; Zi, B.; Wang, D.; Ma, Y.; Zhang, D. The Design and Development of an Omni-Directional Mobile Robot Oriented to an Intelligent Manufacturing System. Sensors 2017, 17, 2073. [Google Scholar] [CrossRef] [PubMed]
  72. Rubies, E.; Palacín, J. Design and FDM/FFF Implementation of a Compact Omnidirectional Wheel for a Mobile Robot and Assessment of ABS and PLA Printing Materials. Robotics 2020, 9, 43. [Google Scholar] [CrossRef]
  73. Manzl, P.; Sereinig, M.; Gerstmayr, J. A Mecanum Wheel Model Based on Orthotropic Friction with Experimental Validation. Mech. Mach. Theory 2024, 193, 105548. [Google Scholar] [CrossRef]
  74. Crenganiș, M.; Breaz, R.-E.; Racz, S.-G.; Gîrjob, C.-E.; Biriș, C.-M.; Maroșan, A.; Bârsan, A. Fuzzy Logic-Based Driving Decision for an Omnidirectional Mobile Robot Using a Simulink Dynamic Model. Appl. Sci. 2024, 14, 3058. [Google Scholar] [CrossRef]
  75. Wang, D.; Gao, Y.; Wei, W.; Yu, Q.; Wei, Y.; Li, W.; Fan, Z. Sliding Mode Observer-Based Model Predictive Tracking Control for Mecanum-Wheeled Mobile Robot. ISA Trans. 2024, 151, 51–61. [Google Scholar] [CrossRef]
  76. Damic, V.; Montgomery, J. Mechatronics by Bond Graphs: An Object-Oriented Approach to Modelling and Simulation, 2nd ed.; Springer: Berlin/Heidelberg, Germany, 2015; ISBN 978-3-662-49004-4. [Google Scholar]
  77. Damic, V.; Cohodar, M. Multibody System Modeling, Simulation, and 3D Visualization. In Bond Graphs for Modelling, Control and Fault Diagnosis of Engineering Systems; Borutzky, W., Ed.; Springer International Publishing: Cham, Switzerland, 2017; pp. 627–671. ISBN 978-3-319-47433-5. [Google Scholar]
  78. Schroeder, W.; Martin, K.; Lorensen, B. The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics; Visualize Data in 3D—Medical, Engineering or Scientific; Build Your Own Applications with C++, Tcl, Java or Python; Includes Source Code for VTK (Supports Unix, Windows and Mac), 4th ed.; Kitware, Inc.: Clifton Park, NY, USA, 2006; ISBN 978-1-930934-19-1. [Google Scholar]
  79. Hanwell, M.D.; Martin, K.M.; Chaudhary, A.; Avila, L.S. The Visualization Toolkit (VTK): Rewriting the Rendering Code for Modern Graphics Cards. SoftwareX 2015, 1–2, 9–12. [Google Scholar] [CrossRef]
  80. Kitware, Inc. The VTK User Guide. Available online: https://vtk.org/vtk-users-guide/ (accessed on 2 November 2024).
  81. Robotino® View-Programming-Robotino®-Services-Festo Didactic. Available online: https://ip.festo-didactic.com/Infoportal/robotino/Software/Programming/EN/RobotinoView.html (accessed on 15 April 2022).
  82. Simulation-Robotino®-Services-Festo Didactic. Available online: https://ip.festo-didactic.com/Infoportal/robotino/Software/Simulation/EN/index.html (accessed on 15 April 2022).
  83. pugixml 1.11. Available online: https://pugixml.org (accessed on 15 November 2022).
  84. Available online: https://www.grabcad.com (accessed on 1 October 2020).
  85. Karnopp, D.; Margolis, D.; Rosenberg, R. System Dynamics, Modeling and Simulation of Mechatronic Systems, 3rd ed.; Wiley: Hoboken, NJ, USA, 2000. [Google Scholar]
  86. Available online: https://www.dunkermotoren.com/en/search?keyword=GR%2042x25 (accessed on 2 November 2024).
  87. Available online: https://en.wikipedia.org/wiki/Rose_(mathematics) (accessed on 2 November 2024).
  88. Brenan, K.E.; Campbell, S.L.; Petzold, L.R. Numerical Solution of Initial-Value Problems in Differential-Algebraic Equations; Classics in applied mathematics; Society for Industrial and Applied Mathematics: Philadelphia, PA, USA, 1996; ISBN 978-0-89871-353-4. [Google Scholar]
Figure 1. The components of a real scene.
Figure 1. The components of a real scene.
Applsci 15 05179 g001
Figure 2. The programming environment used for visualization.
Figure 2. The programming environment used for visualization.
Applsci 15 05179 g002
Figure 3. Mainframe of the BondSim3DVisual application.
Figure 3. Mainframe of the BondSim3DVisual application.
Applsci 15 05179 g003
Figure 4. Generated robot root: (a) tree view; (b) XML output.
Figure 4. Generated robot root: (a) tree view; (b) XML output.
Applsci 15 05179 g004
Figure 5. (a) The menus used to inert an element or attribute; (b) dialog window for selecting the element that will be inserted into the tree.
Figure 5. (a) The menus used to inert an element or attribute; (b) dialog window for selecting the element that will be inserted into the tree.
Applsci 15 05179 g005
Figure 6. (a) The coordinate frames associated with connected body links; (b) the XML segment describing the joint’s next link transform.
Figure 6. (a) The coordinate frames associated with connected body links; (b) the XML segment describing the joint’s next link transform.
Applsci 15 05179 g006
Figure 7. (a) Translation of the element; (b) rotated element with the corresponding attributes (on the right).
Figure 7. (a) Translation of the element; (b) rotated element with the corresponding attributes (on the right).
Applsci 15 05179 g007
Figure 8. Virtual model of (a) Robotino and (b) its constitutive parts.
Figure 8. Virtual model of (a) Robotino and (b) its constitutive parts.
Applsci 15 05179 g008
Figure 9. Scheme of Robotino with world OXYZ and local Cxyz, Cixiyizi (i = 1, 2, 3) coordinate frames.
Figure 9. Scheme of Robotino with world OXYZ and local Cxyz, Cixiyizi (i = 1, 2, 3) coordinate frames.
Applsci 15 05179 g009
Figure 10. The structure of the Robotino’s 3D model: (a) basic components; (b) wheels.
Figure 10. The structure of the Robotino’s 3D model: (a) basic components; (b) wheels.
Applsci 15 05179 g010
Figure 11. The structure of (a) Project Robotino and (b) the object’s ground.
Figure 11. The structure of (a) Project Robotino and (b) the object’s ground.
Applsci 15 05179 g011
Figure 12. Generated Robotino project view: (a) normal; (b) sized up.
Figure 12. Generated Robotino project view: (a) normal; (b) sized up.
Applsci 15 05179 g012
Figure 13. General bond graph component.
Figure 13. General bond graph component.
Applsci 15 05179 g013
Figure 14. A component and its document.
Figure 14. A component and its document.
Applsci 15 05179 g014
Figure 15. Control signal components.
Figure 15. Control signal components.
Applsci 15 05179 g015
Figure 16. Basic structure of the objects a project is concerned with.
Figure 16. Basic structure of the objects a project is concerned with.
Applsci 15 05179 g016
Figure 17. Basic model of Project Robotino (working version).
Figure 17. Basic model of Project Robotino (working version).
Applsci 15 05179 g017
Figure 18. Robotino’s base with the coordinate frames Cxyz and Cixiyizi (i = 1, 2, 3).
Figure 18. Robotino’s base with the coordinate frames Cxyz and Cixiyizi (i = 1, 2, 3).
Applsci 15 05179 g018
Figure 19. Coordinate transforms: (a) the world model; (b) its internal model structure.
Figure 19. Coordinate transforms: (a) the world model; (b) its internal model structure.
Applsci 15 05179 g019
Figure 20. Side view of a wheel.
Figure 20. Side view of a wheel.
Applsci 15 05179 g020
Figure 21. Rotation-to-linear-motion transform: (a) word model; (b) its internal model.
Figure 21. Rotation-to-linear-motion transform: (a) word model; (b) its internal model.
Applsci 15 05179 g021
Figure 22. Model of the roller: (a) the word model; (b) its model; (c) the model of RotLin.
Figure 22. Model of the roller: (a) the word model; (b) its model; (c) the model of RotLin.
Applsci 15 05179 g022
Figure 23. (a) Rotation dynamic of the wheel; (b) its internal model; (c) transformation of variables; (d) rotational dynamics.
Figure 23. (a) Rotation dynamic of the wheel; (b) its internal model; (c) transformation of variables; (d) rotational dynamics.
Applsci 15 05179 g023
Figure 24. Basic bond graph model of the wheels.
Figure 24. Basic bond graph model of the wheels.
Applsci 15 05179 g024
Figure 25. Structure of the Chassis model.
Figure 25. Structure of the Chassis model.
Applsci 15 05179 g025
Figure 26. Dynamics of the Chassis: (a) structure of the Dynamics model; (b) model of Transform.
Figure 26. Dynamics of the Chassis: (a) structure of the Dynamics model; (b) model of Transform.
Applsci 15 05179 g026
Figure 27. (a) Structure of Side rolling; (b) model of Translation dynamics.
Figure 27. (a) Structure of Side rolling; (b) model of Translation dynamics.
Applsci 15 05179 g027
Figure 28. The model structure of Driver 1 to Driver 3.
Figure 28. The model structure of Driver 1 to Driver 3.
Applsci 15 05179 g028
Figure 29. Robotino path: (a) in the form of a rose; (b) the direction of motion; (c) Reference functions.
Figure 29. Robotino path: (a) in the form of a rose; (b) the direction of motion; (c) Reference functions.
Applsci 15 05179 g029
Figure 30. Model of (a) Ground and (b) vP1 component.
Figure 30. Model of (a) Ground and (b) vP1 component.
Applsci 15 05179 g030
Figure 31. The completed basic Robotino model.
Figure 31. The completed basic Robotino model.
Applsci 15 05179 g031
Figure 32. Simulation results: (a) path traversed in the virtual space; (b) differences in the XC and YC coordinates obtained due to the behavior of the virtual and dynamic models.
Figure 32. Simulation results: (a) path traversed in the virtual space; (b) differences in the XC and YC coordinates obtained due to the behavior of the virtual and dynamic models.
Applsci 15 05179 g032
Figure 33. Delay in signal transport: (a) both signals displayed on the same axis; (b) time delay between the signals.
Figure 33. Delay in signal transport: (a) both signals displayed on the same axis; (b) time delay between the signals.
Applsci 15 05179 g033
Figure 34. Differences between the XC and YC coordinates obtained in the simulation and the reference values.
Figure 34. Differences between the XC and YC coordinates obtained in the simulation and the reference values.
Applsci 15 05179 g034
Figure 35. The Robotino in motion: (a) t = 0 s; (b) t = 15 s; (c) t = 28 s; (d) t = 50 s.
Figure 35. The Robotino in motion: (a) t = 0 s; (b) t = 15 s; (c) t = 28 s; (d) t = 50 s.
Applsci 15 05179 g035
Table 1. Elementary bond graph components.
Table 1. Elementary bond graph components.
TypeSymbolConstitutive RelationParameters
InertialApplsci 15 05179 i001 d p / d t = e p = I f Inertia I
CapacitiveApplsci 15 05179 i002 d q / d t = f e = q / C Capacity C
ResistiveApplsci 15 05179 i003 e = R f Resistance R
TransformerApplsci 15 05179 i004 e 2 = k e 1 f 1 = k f 2 Transformer ratio k
GyratorApplsci 15 05179 i005 e 2 = k f 1 e 1 = k f 2 Gyrator ratio k
Source effortApplsci 15 05179 i006 e = Φ t , par par
Source flowApplsci 15 05179 i007 f = Φ t , par par
Effort junctionApplsci 15 05179 i008 e 1 e 2 + e 3 = 0 f 1 = f 2 = f 3 = f
Flow junctionApplsci 15 05179 i009 f 1 f 2 f 3 = 0 e 1 = e 2 = e 3 = e
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Damic, V.; Cohodar Husic, M. Three-Dimensional Visualization of Articulated Mechanisms: Coupling of Their Dynamic and Virtual Models Using the Example of Driving of the Omnidirectional Mobile Robot. Appl. Sci. 2025, 15, 5179. https://doi.org/10.3390/app15095179

AMA Style

Damic V, Cohodar Husic M. Three-Dimensional Visualization of Articulated Mechanisms: Coupling of Their Dynamic and Virtual Models Using the Example of Driving of the Omnidirectional Mobile Robot. Applied Sciences. 2025; 15(9):5179. https://doi.org/10.3390/app15095179

Chicago/Turabian Style

Damic, Vjekoslav, and Maida Cohodar Husic. 2025. "Three-Dimensional Visualization of Articulated Mechanisms: Coupling of Their Dynamic and Virtual Models Using the Example of Driving of the Omnidirectional Mobile Robot" Applied Sciences 15, no. 9: 5179. https://doi.org/10.3390/app15095179

APA Style

Damic, V., & Cohodar Husic, M. (2025). Three-Dimensional Visualization of Articulated Mechanisms: Coupling of Their Dynamic and Virtual Models Using the Example of Driving of the Omnidirectional Mobile Robot. Applied Sciences, 15(9), 5179. https://doi.org/10.3390/app15095179

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop