## 4 Implementation  
As far as software is concerned, the first step for the development of the framework is the development of the cloud platform. From a hardware point of view, the architecture of the framework has been developed so that a variety of platforms can be supported including PCs, HMDs, and handheld devices. In its current form, the framework has been developed so that the technician uses a Microsoft Hololens HMD and the expert engineer operates from a desktop PC.  
For the platform, a remote server is utilized. The server has a dedicated domain for the storage of files, where 3D geometries are also uploaded. The supported filetypes for the 3D geometries are fbx,.dae (Collada),.3 ds,.dxf,.obj, and.skp. Besides the 3D geometries, the storage domain supports any form of files, providing enough degrees of freedom to the engineers in exchanging files with the technicians during a remote maintenance session.  
As far as the development of the software is concerned, the Unity 3D game engine has been utilized. Regarding the AR application for the technicians, Unity 3D in conjunction with the Vuforia and MRTK (Mixed Reality Tool Kit) libraries were used. The Vuforia library is useful for the creation and handling of the AR content, whereas the MRTK library supports advanced user interaction functionalities for  
Figure 4: 3D CAD geometries of tools for AR instructions.  
the Microsoft Hololens HMD. Regarding the expert engineer application for the remote support, a Windows Form Application has been developed. In order to enable the communication of the two applications, the integrated Unity UNet API (Application Programming Interface) was used. Since the above-mentioned API is targeted for the creation of multiplayer games, several functionalities had to be adjusted so as to align with the requirements of the framework. UNet can be realized through different layers. In Figure 5, the functionalities per layer of the UNet are presented.  
As far as the communication module is concerned and, more specifically, the teleconference functionality, a variety of solutions has been examined, including Skype, Agora.io [34], GIGA Video Streamer [35], and the development of a custom teleconference tool. Among the available solutions, the latter was selected, i.e., the development of a custom teleconference interface. To begin with, the integration of Skype, although it is an appealing solution, and the quality of the service itself is sufficient. It required that it was run as an external application on the Microsoft HoloLens HMD, which had a negative effect on the performance of the app, as well as being unpleasant for the end-users to switch over to two different applications including one for the communication and one for the AR remote support. On the other hand, the Agora.io and the GIGA Video Streamer are very capable SDKs (Software Development Kit) that could be integrated in the proposed framework. However, these two SDKs are not free. Therefore, the development of a custom module based on the UNet API, discussed above, was the only choice satisfying the framework's requirements. Concretely, from the expert engineer side, the video stream from the camera and the microphone of the PC was captured and transmitted to the Microsoft Hololens HMD. Form the technician side, a pop-up window appears where the technician can view the expert engineer and, through the embedded speakers of the HMD, to hear the expert's voice.  
From a hardware point of view, for the on-site technician, a Microsoft HoloLens [36] device has been utilized in order to take advantage of its four environment-understanding cameras and the mixed reality capture in terms of sensors, whereas, for the development of the framework and the validation experiments, a laptop PC has been utilized. More specifically, the laptop PC is equipped with an Intel core i7 processor clocked at 2.20 GHz, 8 GB DDR4 RAM, and a NVIDIA GeForce 1060 GPU with 6 GB dedicated memory.