## 3 Architecture and Deployment of the Simulation Subcomponent  
To facilitate the installation and configuration of the ROS2 operating system alongside the Gazebo simulation environment, the virtualization capabilities of Hyper-V--Microsoft's native hypervisor integrated within Windows--were employed to provision an isolated and controlled execution context. A dedicated virtual machine was instantiated to host Ubuntu 22.04 LTS, selected for its compatibility and long-term support status within the ROS2 ecosystem. The virtualized environment was allocated 8 GB of dynamically managed memory, bounded by a minimum of 6.29 GB and a maximum of 12.92 GB, thereby ensuring adaptive memory utilization based on computational demand. Furthermore, the system was provisioned with four logical processing cores, all residing on a single Non-Uniform Memory Access (NUMA) node, which promotes optimal processor affinity and scheduling. The virtual machine architecture adheres to the Generation 2 specification, enabling support for UEFI boot and advanced features such as secure boot (disabled for Linux compatibility) and integration services including dynamic memory handling and guest communication interfaces [31]. At the time of evaluation, the virtual machine had been continuously operational for over seven hours, exhibiting normal heartbeat and system status indicators, thus confirming the stability and readiness of the environment for intensive robotic simulation workloads. In order to dynamically simulate the mobile robot, beyond the initial configuration, additional functionalities are required to link the URDF file publication to the /robot_description topic and to the Gazebo environment. To achieve this, two ROS2 packages were created, each responsible for one of the two core functionalities:  
* my_robot_description--for publishing the URDF file to the corresponding topic and launching it within the Gazebo environment;
* my_robot_bringup--for spawning the mobile robot and instantiating the scanning node
* my_robot_description package  
Figure 6: Mobile robot’s unit mesh configuration. This package is structured around multiple configuration files that read, install, and launch the functionalities required to transmit URDF data to the Gazebo environment  
The /meshes folder contains the subassemblies exported from SolidWorks, which serve as link elements within the Gazebo environment. The /urdf folder stores the robot's structural information in an optimized format. The remaining files are responsible for launching and configuring RViz, URDF, and mesh resources for data transmission to the /robot_state_publisher topic. my_robot_bringup package  
This package is responsible for spawning the mobile robot within the Gazebo environment by interfacing ROS2 with the ros_gazebo plugin. The first step involves launching Gazebo in basic factory mode, followed by linking the /robot_state_publisher topic to the simulator. Gazebo acts as a subscriber to this topic and receives continuous updates regarding the robot's position. Also, the map scanning node is called in order to teach the robot the actual environment using SLAM. These packages will transmit and receive information via ROS nodes in order to enable dynamic simulation within the Gazebo environment. Subsequently, the URDF file--extracted from the SolidWorks CAD environment--will be processed using Xacro syntax, and additional functionalities will be configured to enable robot motion. Dynamic simulation in Gazebo requires modifying the URDF file using Xacro syntax and incorporating information related to mass and inertia by defining the inertia tensor, along with collision-related properties. Regarding the joints of the mobile structure, these are defined using the standard Xacro block, where their position, orientation, and type are specified. Some joints also include abstracted mechanical constraints.