Method for interoperability between communication systems in distributed applications

A WASM-based middleware bridge enables interoperation between ROS and non-ROS applications by facilitating RPC calls and dynamic redeployment, addressing limitations in ROS's deployment flexibility and protocol restrictions.

WO2025229376A1PCT designated stage Publication Date: 2025-11-06TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/IB2024/054193
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-04-30
Publication Date
2025-11-06

AI Technical Summary

Technical Problem

Existing communication systems, such as ROS, are limited by their reliance on DDS-based messaging techniques, restricting access to applications that do not use the same protocol, and lack flexibility in distributed deployment across LAN boundaries and cloud environments.

Method used

Implementing a WASM-based middleware component that acts as a bridge for RPC calls, allowing nodes with different communication schemes to interoperate by performing type matching and format conversion, and providing a node discovery and inspection service for dynamic redeployment.

Benefits of technology

Enables direct access to ROS functionality for non-ROS applications, facilitates flexible and dynamic deployment across heterogeneous networks, optimizing performance and resource utilization without requiring application modification.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure IB2024054193_06112025_PF_FP_ABST
    Figure IB2024054193_06112025_PF_FP_ABST
Patent Text Reader

Abstract

Methods and systems are described for solutions to connect and provide a bridge between RPC-based systems and pub-sub-based systems. For example, certain embodiments include elements such as the following: a WASM middleware bridge with e.g. an RPC anchor point, ROS messaging service, and a Node Discovery Service; and a ROS inspection service. These components can be distributed and can be deployed on edge or cloud nodes. A WASM Middleware Bridge can comprise a remote access point for RPC applications, that is implemented as part of the DDS service running in a ROS node on a network-connected host. It permits a ROS node to appear as a target for direct function calls, also allowing values to be returned directly to the calling function, rather than communicating via DDS messages.
Need to check novelty before this filing date? Find Prior Art

Description

METHOD FOR INTEROPERABILITY BETWEEN COMMUNICATION SYSTEMS IN DISTRIBUTED APPLICATIONSTECHNICAL FIELD

[0001] The present disclosure generally relates to systems and methods for providing intercommunication between nodes that use different communication scheme.BACKGROUND

[0002] In a multi-node system, various communication patterns (also referred to herein as communication methods or communication schemes) can be used to communicate between nodes, or between applications executing on the nodes. Each communication pattern has its own differences and trade-offs.

[0003] For example, publish-subscribe and request-response are two common communication patterns used in event-driven systems. Pub / Sub is an asynchronous and scalable messaging service that uses a publish-subscribe communication pattern. Pub / Sub enables a user to create systems of event producers (publishers) and event consumers (subscribers). Publishers communicate with subscribers asynchronously by broadcasting events, and subscribers listen for the broadcasted events. As a result, pub / sub decouples services producing messages (i.e., publishers) from services processing those messages (i.e., subscribers). Pub / Sub is used, for example, for streaming analytics and data integration pipelines to ingest and distribute data. It can be equally effective as a messaging-oriented middleware for service integration or as a queue to parallelize tasks.

[0004] In contrast, other systems can operate on distributed or RPC (remote procedure call) principles. RPC based computer systems enable a process running on one system to execute code on a remote system as if it were local. This allows for communication and interaction between software components located on different machines in a network. RPC is commonly used in client-server systems, distributed systems, and cloud services to facilitate communication and resource sharing between different entities. RPC makes it easier to design and implement distributed applications, simplifying the process of remote communication and aiding in building scalable and modular systems.

[0005] As can be seen, both communication patterns have pros and cons and work differently, so some applications are more suited to one communication pattern while other applications are more suited to the other. For example, see the discussion in A. Balador, N. Ericsson and Z. Bakhshi, "Communication middleware technologies for industrial distributed control systems: A literature review," 2017 22nd IEEE International Conference on Emerging Technologies and Factory Automation (ETFA), Limassol, Cyprus, 2017, pp. 1-6. However, the communication scheme used by a given application may not be compatible with the communication scheme used by the nodes in a system, or a portion thereof. As a result, applications cannot easily communicate with other nodes, applications, or other components in the system that utilize a different communication scheme. In some case, the application may need to be rewritten or modified in order to implement the communication scheme that is used by the other components in the system. In view of the differences and advantages in using a given communication scheme, rewriting or modifying the application may also be undesirable.

[0006] In one example, the Robot Operating System (ROS) (available at: Robot Operating System, https: / / www.ros.org) is a popular open-source set of libraries intended to facilitate the development of distributed industrial applications. ROS has a restricted set of requirements, namely the efficient development of distributed software that controls and processes data from equipment generally used in industry. It has a wide variety of drivers for different kinds of robot equipment and is the default choice when considering writing this kind of application. Whilst this provides a very large base of existing components, it restricts access to those components to applications that make use of the same DDS-based messaging techniques as ROS. This may not be desirable or possible if a mature application which does not use DDS would like to make use of ROS application functionality.

[0007] In addition, widely distributed deployment of nodes, to the Edge for example, or across LAN (local area network) boundaries, and dynamic and adaptive deployment appears not to be a priority for ROS, in that there is no standardized method of achieving it beyond implementing such a solution on a per-application basis. Thus, ROS is not regarded as being cloud native, in part due to its design and usage requirements. However, the inherently distributed nature of a ROS application potentially permits changes in deployment (e.g., use in a cloud network) if a suitable controlling infrastructure were available, and if the inherent issues with the WAN (wide area network) unfriendly DDS communication strategy of broadcast messaging could beovercome. Edge computing is a distributed computing paradigm where computation is performed closer to the data source or "edge" of the network, rather than relying on a centralized data processing warehouse or data center. This approach aims to minimize latency, reduce bandwidth usage, and improve overall system performance by processing data locally, at the edge devices themselves, before sending it back to a centralized data center or cloud for further analysis or storage. Edge computing is especially valuable for applications that require real-time data processing, low-latency responses, or efficient use of network resources.

[0008] Therefore, it would be advantageous to be able to make remote procedure calls into a ROS node. This would enable conventional (i.e. non-ROS) applications to get direct access to the functionality of the ROS node. This expands the availability of ROS tasks to applications that are not specifically written to use ROS and gives other (e.g., control) components the ability to have more direct control over how the ROS node operates and / or is deployed.

[0009] One possible approach to integrate a distributed ROS application with a conventional shared-memory application or one using P2P (peer to peer) communication is to develop a network service whose sole purpose is to participate in DDS inter-node communication. The network service would act as a translation service, and essentially behave as a ROS application entry point. However, this approach lacks flexibility since the result would require applications to specifically communicate via this entry point and would potentially not scale well. Moreover, the ROS distributed application is effectively operating behind a screen thrown up by the entry point, and would also still require the ROS application to be rewritten to take advantage of application components that run on the other, non-ROS, side of this screen.SUMMARY

[0010] One embodiment under the present disclosure comprises a computer- implemented method for providing intercommunication between nodes that use different communication schemes. The method comprises receiving one or more incoming communications of a first communication scheme from one or more nodes that implement the first communication scheme; performing type matching so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by a second communication scheme; and processing the one or more incoming communications using the second communication scheme.

[0011] Another embodiment under the present disclosure is a middleware system for providing intercommunication between a first communication scheme and a second communication scheme. The middleware system comprises a first one or more nodes that implement the first communication scheme and a second one or more nodes that implement the second communication scheme. The system characterized in that at least one node of the first one or more nodes or the second one or more nodes comprises; a remote procedure call anchor point configured to accept one or more incoming communications from the other communication scheme and perform type matching so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by the communication scheme of the at least one node; a messaging service coupled to the remote procedure call anchor point and configured to transmit one or more communications to the first one or more nodes and the second one or more nodes, the one or more communications being based at least in part on the one or more variables; and a node discovery service configured to retrieve information about any of the first one or more nodes and / or the second one or more nodes.

[0012] Another embodiment comprises a system for providing intercommunication between a first communication scheme and a second communication scheme. The system comprises processing circuitry and a memory. The memory containing instructions executable by the processing circuitry whereby the system is operative to: receive one or more incoming communications of the first communication scheme from one or more nodes that implement the first communication scheme; perform type matching so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by the second communication scheme; and process the one or more incoming communications using the second communication scheme.

[0013] Another possible embodiment under the present disclosure is a node for providing intercommunication between a first one or more nodes that implement a first communication scheme and a second one or more nodes that implement a second communication scheme. The node comprises a node of either the first or second one or more nodes; an anchor point configured to accept one or more incoming communications from the other communication scheme and perform type matching so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by the communication scheme of the node; a messaging service coupled to the remote procedure call anchor point and configured totransmit one or more communications to the first one or more nodes and / or the second one or more nodes, the one or more communications being based at least in part on the one or more variables; and a node discovery service configured to retrieve information about any of the first one or more nodes and / or the second one or more nodes. It further comprises processing circuitry; and a memory, the memory containing instructions executable by the processing circuitry whereby the node is operative to implement the anchor point, messaging service and node discovery service.

[0014] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an indication of the scope of the claimed subject matter.BRIEF DESCRIPTION OF THE DRAWINGS

[0015] For a more complete understanding of the present disclosure, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:

[0016] Fig. 1 illustrates a view of ROS Node interaction across LAN boundaries enabled by the present disclosure, along with access through RPC calls from a conventional application;

[0017] Fig. 2 illustrates nodes within a LAN communicating either via conventional DDS broadcast messages, via P2P, or potentially via additional plugins to the middleware;

[0018] Fig. 3 illustrates nodes communicating across LANs through the use of an elected leader node;

[0019] Fig. 4 illustrates an inspection service gathering performance availability metrics and sharing that information over the WAN;

[0020] Fig. 5 illustrates an embodiment of a node of either a first or second communication scheme embodying a middleware embodiment;

[0021] Fig. 6 illustrates a flow-chart of a method embodiment under the present disclosure;

[0022] Fig. 7 shows a schematic of a communication system embodiment under the present disclosure;

[0023] Fig. 8 shows a schematic of a user equipment embodiment under the present disclosure;

[0024] Fig. 9 shows a schematic of a network node embodiment under the present disclosure;

[0025] Fig. 10 shows a schematic of a host embodiment under the present disclosure;

[0026] Fig. 11 shows a schematic of a virtualization environment embodiment under the present disclosure; and

[0027] Fig. 12 shows a schematic representation of an embodiment of communication amongst nodes, hosts, and user equipment under the present disclosure.DETAILED DESCRIPTION

[0028] Before describing various embodiments of the present disclosure in detail, it is to be understood that this disclosure is not limited to the parameters of the particularly exemplified systems, methods, apparatus, products, processes, and / or kits, which may, of course, vary. Thus, while certain embodiments of the present disclosure will be described in detail, with reference to specific configurations, parameters, components, elements, etc., the descriptions are illustrative and are not to be construed as limiting the scope of the claimed embodiments. In addition, the terminology used herein is for the purpose of describing the embodiments and is not necessarily intended to limit the scope of the claimed embodiments.

[0029] The Robot Operating System (ROS) (available at: Robot Operating System, https: / / www.ros.org) is a popular open-source set of libraries intended to facilitate the development of distributed industrial applications. One of the stated goals is to allow industrial application developers to create products using a consistent and supported framework without starting from nothing every time. It also potentially allows application components, known as nodes, to be reused by defining a communication protocol using a pub / sub message bus using, as of ROS version 2, DDS (available at: Data Distribution Service, https: / / www.dds-foundation.org).

[0030] Publish-subscribe and request-response are two common communication patterns used in event-driven systems, and each has its own differences and trade-offs. As wasmentioned, ROS version 2 uses DDS middleware, which has a pub / sub communication method. Pub / Sub is an asynchronous and scalable messaging service that decouples services producing messages from services processing those messages. Pub / Sub is used for streaming analytics and data integration pipelines to ingest and distribute data. It's equally effective as a messaging- oriented middleware for service integration or as a queue to parallelize tasks. Pub / Sub enables you to create systems of event producers and consumers, called publishers and subscribers. Publishers communicate with subscribers asynchronously by broadcasting events, rather than by synchronous remote procedure calls (RPCs), which is the second common communication pattern. Both methods have pros and cons and work differently; therefore, some applications are more suited to one model or the other. For example, see the discussion in A. Balador, N. Ericsson and Z. Bakhshi, "Communication middleware technologies for industrial distributed control systems: A literature review," 2017 22nd IEEE International Conference on Emerging Technologies and Factory Automation (ETFA), Limassol, Cyprus, 2017, pp. 1-6.

[0031] Also useful could be WebAssembly. “WebAssembly (abbreviated WASM) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.” WebAssembly, https: / / webassembly.org. WebAssembly was born in the browser, and it is quite low-level as it was designed to be compiled and run anywhere you have a WebAssembly runtime. A WASM-based component can simplify the creation of distributed applications as it allows these components to be deployed and executed across different architectures without recompilation or redevelopment.

[0032] ROS has a restricted set of requirements, namely the efficient development of distributed software that controls and processes data from equipment generally used in industry. It has a wide variety of drivers for different kinds of robot equipment and is the default choice when considering writing this kind of application. Whilst this provides a very large base of existing components, it restricts access to those components to applications that make use of the same DDS- based messaging techniques as ROS. This may not be desirable or possible if a mature application which does not use DDS would like to make use of ROS application functionality.

[0033] In addition, widely distributed deployment of nodes, to the Edge for example, or across LAN (local area network) boundaries, and dynamic and adaptive deployment appears not to be a priority for ROS, in that there is no standardized method of achieving it beyondimplementing such a solution on a per-application basis. Thus, it is not regarded as being cloud native, in part due to its design and usage requirements, but the inherently distributed nature of a ROS application potentially permits changes in deployment if a suitable controlling infrastructure were available, and if the inherent issues with the WAN (wide area network) unfriendly DDS communication strategy of broadcast messaging could be overcome.

[0034] To make this possible and extend access to ROS nodes to other categories of application, it would be advantageous to be able to make remote procedure calls into a ROS node, therefore allowing conventional (i.e. non-ROS) applications to get direct access to the functionality of that node. This expands the availability of ROS tasks to applications that are not specifically written to use ROS and gives other (control) components the ability to have more direct control over how the nodes operate and are deployed.

[0035] The simplest way to integrate a distributed ROS application with a conventional shared-memory application or one using P2P (peer to peer) communication is to develop a network service whose sole purpose is to participate in DDS inter-node communication. It would act as a translation service, and essentially behave as a ROS application entry point. However, this approach lacks flexibility since the result would require applications to specifically communicate via this entry point and would potentially not scale well. Moreover, the ROS distributed application is effectively operating behind a screen thrown up by the entry point, and would also likely require the ROS application to be rewritten to take advantage of application components that run on the other, non-ROS, side of the screen.

[0036] As can be seen, there currently exist certain challenges in inter-node communication in event-driven systems.

[0037] As discussed in further detail below, certain aspects of the disclosure and their embodiments may provide solutions to these or other challenges. With respect to ROS, the techniques described herein address the following questions:• How can WASM help ROS to be extended to enable a RPC communication pattern, which would allow ROS nodes to be more easily and flexibly integrated with such applications?• Can this increased flexibility in access to ROS components be used to provide additional benefits towards edge deployment and dynamic redeployment?

[0038] As discussed above, ROS nodes principally communicate via messages through a publish / subscribe scheme, meaning that direct access to function calls provided by the application components is not generally available. A RPC-enabled application makes function or subroutine calls in the same manner as if the entire application shared memory space, with the remote communication method abstracted away from the developer through an underlying service library.

[0039] Embodiments can include systems and methods for middleware to provide intercommunication between two different communication schemes. One system could comprise a plurality of nodes operating in a first communication scheme, e.g. pub-sub. Another system could comprise a plurality of nodes operating in a second communication scheme, e.g., RPC. A middleware system under the present disclosure could be implemented on a single node, many, or all nodes in either or both communication schemes. Such a middleware implementation can comprise an end point for communications from one communication scheme to the other, with the method of communication handled by the middleware and hidden from the other communication scheme.

[0040] For certain embodiments, given that DDS provides functionality that permits the introduction of custom middleware in order to change how communication operates, it is proposed that a WASM-based middleware component could be used to provide the end point for RPC calls. This could allow a ROS node to be seen as simply a RPC end point, with the method of communication handled by the middleware and hidden from the RPC calling application.

[0041] Likewise, this ability could allow a ROS node to access functionality provided by distributed applications using the FaaS (function as a service) paradigm, for example, through translation of transferred data between communication formats.

[0042] In addition, ROS nodes can be compiled to WASM. The combination of a WASM ROS node plus WASM-based middleware would allow the node to be easily made portable across different architectures, enabling ROS applications to be distributed across the heterogeneous edge without rewriting or recompilation.

[0043] With flexible access to the nodes of a distributed ROS application, and with a programmatic approach to how they communicate with each other depending on circumstances via the use of DDS middleware, it would be possible to dynamically change node deployment without restarting or reconfiguring the application.

[0044] This dynamic adaptability allows the introduction of a performance optimization service that allows a ROS application to be redeployed on the fly depending upon performance characteristics, not just within a LAN but across the WAN, taking advantage of the varying resource characteristics, energy efficiency and cost at the network Edge and core Cloud.

[0045] Certain embodiments under the present disclosure can include elements such as the following: a middleware bridge with e.g. an anchor point, a messaging service, and a Node Discovery Service; and an inspection service. Embodiments under the present disclosure could be implemented in a variety of systems. Certain embodiments could comprise a WASM middleware bridge, an RPC anchor point, a ROS messaging service, a node discovery service, and a ROS inspection service. Embodiments are not limited to the ROS and / or RPC / DDS translation context. Certain embodiments are inherently distributed and can be deployed on edge or cloud nodes. Other examples could include O-RAN implementations. For example, in certain embodiments, a WASM bridge could be located on a lightweight network node, thus providing control over task deployment over those components connected to the node.

[0046] A WASM Middleware Bridge can comprise a remote access point for RPC applications, that is implemented as part of the DDS service running in a ROS node on a network- connected host. It permits a ROS node to appear as a target for direct function calls, also allowing values to be returned directly to the calling function, rather than communicating via DDS messages. The middleware bridge can also comprise an RPC anchor point that accepts incoming remote function calls and performs type matching so that variables are stored in a suitable format as defined by the DDS service. This anchor also ensures that any return values required by the calling application are in the correct format. The middleware bridge can also comprise an ROS Messaging Service that allows communication with existing ROS nodes. This may be through standard broadcast messages, if both components are located on the same LAN, or via P2P communication if there is a WAN connection. The middleware bridge can also comprise a Node Discovery Service which returns information about the other ROS nodes within a LAN that available to take part in a distributed computation, and acts as the contact point for messaging between other LANs.

[0047] An ROS Inspection Service can comprise a dedicated service that runs on each of the hosts serving the ROS application within a LAN, examines the performance of the node through metric gathering, and can dynamically recommend node relocation or redeployment,potentially to another LAN with more capable resources, if conditions such as SLAs (service level agreements) are not met.

[0048] Certain embodiments may provide one or more of the following technical advantages. In some embodiments, a middleware bridge can allow an application in a first communication scheme to make direct communication to nodes in a second communication scheme, via a direct communication in the first communication language to a middleware system or node. This opens up direct access to functionality in the second communication scheme, both nodes and potentially even entire applications, to conventional applications, even those that have not been written with distributed functionality in mind. For example, this presents the possibility for pub-sub applications to take advantage of distributed application components not written with pub-sub in mind.

[0049] For example, in some embodiments, a middleware bridge can allow an application to make direct function calls to ROS nodes rather than making use of DDS messaging. This opens up direct access to ROS functionality, both nodes and potentially even entire applications, to conventional applications, even those that have not been written with distributed functionality in mind. Likewise, this presents the possibility for ROS applications to take advantage of distributed application components not written with ROS in mind.

[0050] Another advantage for certain embodiments is the fact that certain embodiments can make use of DDS rather than replacing it, permitting existing ROS applications to run without modification. The middleware component can mediate between RPC calls and DDS messaging, and the ability to switch from broadcast messaging to P2P (peer to peer) depending on node location means that nodes may communicate across network boundaries, opening up convenient distribution of ROS application components to the edge and the core cloud without the potential of broadcast message flooding associated with DDS service discovery.

[0051] A further advantage to certain embodiments is the ability of the Messaging and Node Discovery services to continuously adapt to changing node distribution through regular information sharing means that nodes may be redeployed in a dynamic manner depending on requirements, opening up the possibility of implementing a performance inspection and optimization service based on gathered runtime metrics that would work with existing ROS applications. This service could dynamically optimize various metrics, such as performance, costor energy efficiency, for example, thus ensuring that the ROS application is always deployed in an optimal configuration.

[0052] Some of the embodiments contemplated herein will now be described more fully with reference to the accompanying drawings. Embodiments are provided by way of example to convey the scope of the subject matter to those skilled in the art.

[0053] A top-level view of one embodiment, comprising an application interacting with both a remote RPC function and two ROS nodes on separate LANs can be seen in Figure 1. Figure 1 shows a ROS system 50 with a view of ROS nodes 15, 40 with interaction across LAN boundaries 65 enabled by middleware 20 45, along with access through RPC calls 85 from a conventional RPC enabled application 80 running e.g. RPC functions 90. On the right side of system 50, a distributed ROS application 8 consisting of multiple ROS nodes 15, 40 communicates via DDS 66 through the proposed middleware 20, 45, allowing discovery across LAN boundaries 65. On the left side, an RPC enabled application 80 without ROS functionality communicates with ROS nodes 15, 40 as though they were RPC tasks in the same manner as with conventional RPC functions. Thus, RPC enabled application 80 can make use of ROS functionality without being reimplemented specifically to do so, and all components may be deployed across a WAN, allowing the use of edge resources. ROS application 8 can be distributed across multiple hosts 5, 30, each functioning with e.g., DDS 10, 35, middleware 20, 45, and ROS nodes 15, 40.

[0054] Figure 1 has been described with respect to an RPC enabled application 80 and ROS nodes 15, 40 (a pub-sub system). But other embodiments could enable intercommunication between any two given communication schemes. Middleware 20, 45, could be implemented on any node in any given communication scheme, and such node (or multiple nodes) could then serve as a communication hub or middleware between the different communication schemes. Certain embodiments are described herein with respect to translating between RPC and DDS communication schemes and / or integrating ROS nodes with non-ROS nodes. But specific system configurations and components can vary depending on the specific use case.Middleware Bridge, Messaging and Node Discovery

[0055] The middleware can implement the messaging system behind inter-node communication. Figure 2 illustrates an embodiment of a system 200 with nodes 260, 270, 280within a LAN1 250 and node 215 within a LAN2 220. Nodes 260, 270, 280 can communicate either via conventional DDS broadcast messages 290, via P2P, or potentially via additional plugins to the middleware. Broadcast messages 290 mean that nodes on a different LAN (e.g., LAN2 220 with node 215) are out of contact, confining the distributed application to a single LAN (e.g. LAN1 250).

[0056] Embodiments of a Node Discovery service under the present disclosure permits communication across the WAN, helping to e.g., solve the problem illustrated in Figure 2. In system embodiment 400, shown in Figure 3, nodes 460, 470, 480 collaborate via a form of token ring system to elect a leader node 470 that acts as communication bridge across networks 420, 450. EAN2 420 may comprise nodes 415, 425, 426 that similarly elect a leader node 415. EAN1 450 may or may not be aware of nodes 425, 426 that are not the leader node 415. An embodiment of this could be a feedback loop from a resource provisioning system that owns the network(s) 420, 450 and either owns or owns the access to hosts / nodes 415, 425, 426, 460, 470, 480 connected to it. By advertising the availability of computer hosts along with costs, a ROS application can be deployed in a fully distributed manner, across network boundaries 440, according to application owner priorities such as cost or performance.

[0057] An alternative to this system would be through the use of a ghost proxy. This describes a process in which node functionality may be moved from one FAN 420, 450 to another, but would leave behind a component on the original FAN to act as a communication proxy. This would provide the advantage of avoiding additional service discovery and leader election. The ghost proxy will have knowledge of the destination to which functionality has been moved and would be able to communicate directly, not just to that node, but through it to any other ROS nodes with which it is connected.ROS Inspection Service

[0058] Embodiments of a ROS Inspection service can comprise an additional service running on each host, which gathers performance metrics and capabilities of the host such as processor load, network usage and capabilities, power consumption and energy source. It may also be extended to include QoS / E (quality of service / experience) metrics from the running application, such as how close operation comes to exceeding tolerances specified in an SEA. These metrics can be gathered by a variety of tools specific for that type of information, such as built-inUNIX tools for processor usage, and transmitted using a common protocol such as OpenMetrics (available at, https: / / openmetric.io), to a Prometheus (available at, https: / / prometheus.io) database located on that LAN.

[0059] Figure 4 illustrates one system embodiment 600 with inspection service functionality. Figure 4 demonstrates one example of two inspection service instances (inspection servers 625, 670) running on two leader nodes 625, 670 across a network boundary 640. In this case the leader nodes 625, 670 act as a ‘bridge’ between these two networks (LAN1 650 and LAN2 620), allowing a host on one network to communicate with a host on another. Inspection service embodiments can comprise one or more inspection servers 625, 670 gathering performance availability metrics and sharing that information over the WAN (e.g., LAN1 650 or LAN2 620). In certain embodiments, a leader node 630, 690, or another elected node 660, 680, 615, 616 may then decide, based upon the performance of each node 615, 616, 625, 630, 660, 670, 680, 690 and available resources on potentially under-utilized hosts, to halt and relocate that node 625, 670 to a host where it may run more efficiently or provide other benefits such as lower cost of service or financial cost.

[0060] Any given node / host 615, 616, 630, 660, 680, 690 does not need to know the network address or any routing in order for messages to reach its destination. This is handled by the leader nodes 625, 670 on both sides of the bridge 645. So, if a host on one side (e.g. 615, 616, 630) becomes overloaded and performance drops below a certain threshold, a new host (e.g. 660, 680, 690) may be launched and network would be redirected to the new host without the source host having to be reconfigured. In this respect the inspection service can resemble a QoS plugin for the messaging system running on the leader node 625, 670. It may request certain parameters from each connected node / host 615, 616, 630, 660, 680, 690, such as CPU load, energy usage, or query application performance using a variety of metrics. Depending on this knowledge, achieved due to the leader node 625, 670 being aware of the performance of connected machines, it may redirect network traffic to a more favorable node / host 615, 616, 630, 660, 680, 690.

[0061] In certain embodiments, the leader node 630, 690 may also gather this LAN information and broadcast it to connected LANs (e.g. LAN1 650 or LAN2 620). This extends the choice of redeployment to Edge or Cloud resources, or from one Edge network to another. The communication method between nodes 615, 616, 625, 630, 660, 670, 680, 690 may then changeby necessity to another option, through the methods described above regarding middleware, messaging and node discovery.

[0062] Embodiments under the present disclosure may or may not comprise an inspection service. But it does provide an example of how to use the middleware and node discovery service to provide hints to an orchestrator such as Kubernetes so as to optimally deploy tasks on suitable edge hardware across network boundaries.Additional Embodiments

[0063] Figure 5 illustrates a possible node embodiment under the present disclosure, with a possible middleware embodiment. Node 800 could comprise any or all of the nodes shown in Figures 1 to 4. Node 800 can also be said to comprise a middleware embodiment under the present disclosure. Node 800 comprises anchor point 810, messaging service 820, node discovery service 830 and inspection service 840. The remote procedure call anchor point 810 can be configured to accept incoming communications from the other communication scheme and perform type matching so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by the communication scheme of the at least one node. Messaging service 820 can be configured to transmit one or more communications to the first one or more nodes and the second one or more nodes, the one or more communications being based at least in part on the one or more variables. Node discovery service 830 can be configured to retrieve information about any of the first one or more nodes and / or the second one or more nodes. Inspection service 840 can be configured to monitor one or more performance metrics in the first one or more nodes and / or the second one or more nodes.

[0064] Other embodiments under the present disclosure can be implemented in non-ROS scenarios. While some description has focused on ROS, ROS is just one example of the middleware capability between DDS and RPC systems. Embodiments can be implemented in a variety of uses for connecting RPC applications and pub-sub based frameworks. ROS is useful as one example embodiment since it uses DDS as the underlying connectivity protocol. Since DDS is a distributed messaging system, it does not use a central broker. Each distributed application component, or entity, is compiled and linked to the DDS library, which gives it access to the pub / sub communication features provided by DDS through its API. This means that data is sent from source to destination via broadcast messages, and the recipient receives or ignores the datadepending on whether it is identified as the intended target or not. DDS supports custom middleware that permits the inclusion of embodiments of the present disclosure within the system and allows for the change of behavior. This allows for, for example, interpreting RPC calls within the middleware and translating between RPC and pub-sub in a way that is not designed into the specification. But embodiments can be expanded to other pub-sub systems than just DDS.

[0065] Previous systems did not have the ability to share application components between these two very different ways (RPC vs. pub-sub) of developing distributed applications and redeploying them dynamically on demand. These functionalities (made operable by embodiments of the present disclosure) are very useful in the realm of edge computing and dynamic computational offloading. Another advantage is that embodiments can be brokerless, so there is no third-party involvement, which simplifies matters. Some embodiments could be implemented with a system where the translation between RPC and pub-sub could be placed within an external broker. But a broker is not required, as certain embodiments can, in a brokerless manner, enable computational offloading, RPC-style, application to make use of ROS application components, to keep it as lightweight as possible, and to permit use of ROS components with minimal or preferably zero changes, given that the source code may not be available.

[0066] Embodiments comprising a broker could take numerous forms. Some embodiments could be implemented with a system such as MQTT (available at: https: / / ww.emqx.com / en / blog / mqtt-5-introduction-to-publish-subscribe-model). In other embodiments, the middleware functionality described above could be implemented in open-source services such as Apache Kafka (available at: https: / / kafka.apache.org / intro).

[0067] The primary distinction between a brokered and brokerless system is how messages are routed. In a brokered system they are all routed through a single node, which could be considered a single point of failure, whereas in a brokerless system each entity communicates with other entities directly.

[0068] Advantages of brokered systems can include: moves message router away from entity, meaning the entity can be simpler; single communication hub, which means routing messages between networks could in principle be easier. Disadvantages can include: single point of failure, and possible limitation to ability to efficiently scale; entities must communicate with broker via network protocols not via a direct API (application programming interface), which may limit responsiveness.

[0069] Advantages of a brokerless systems can include: being scalable and more responsive. Disadvantages can include: broadcast messaging can lead to flooding of the network and not appropriate for communication across networks; by linking the communication functionality to the entity, one could potentially be making it too heavyweight for very lightweight systems such as loT (Internet of Things).

[0070] The middleware embodiments of the present disclosure can permit an entity to send or receive messages using direct API calls to the linked DDS library rather than by sending messages to a broker. This is quicker and more responsive than routing via a broker. Likewise, a RPC call could be directly translated to a pub / sub request / reply using internal functionality, meaning an RPC-enabled entity need not be rewritten to support pub / sub in order to interact with other pub / sub entities and vice versa. The alternative, of embedding pub / sub-to-RPC translation within a remote broker means an entity must explicitly send a pub / sub message to the broker or make a RPC call to the broker for translation, and the system would not able to abstract or ‘hide’ away the underlying protocol. This potentially increases the developer burden for changing the code of existing applications to support a different communication protocol.

[0071] Certain embodiments of the middleware functionality proposed herein can implement WASM. WASM can be useful for these implementations because WASM is a lightweight bytecode format that has been shown to be able to integrate into DDS middleware. Using WASM allows for writing the middleware once and deploying it on a host with previously unknown architecture without rewriting it or recompiling it. This is significant for heterogeneous edge deployments where we may want to take advantage of a variety of hosts with different architectures. One potential advantage here is that when integrating an RPC-enabled application with an edge-deployed ROS application, the DDS middleware is preferably able to run on any architecture that may be available. It’ s difficult to guarantee this without knowing the architecture in advance. If the middleware was written to be compiled to native binary format, then one would need the entire compiler toolchain installed on every host it was desired to run. But WASM can allow for making embodiments as lightweight as possible, avoiding an entire compiler toolchain on every host.

[0072] Other embodiments can be non-WASM. Alternatives to WASM include other portable bytecode formats such as Java, or scripting languages like Javascript or Python.Depending on the specific implementation, these formats / languages might be too heavyweight and may not provide the performance or access to network functionality required.

[0073] In certain embodiments, to achieve portability it is preferred to abstract away the underlying device architecture using some kind of virtual machine (VM) and then write the application for this virtual machine. Some embodiments may comprise VMs and containers such as Docker, but these tend to be more heavyweight than a WASM runtime.

[0074] Non-virtualized alternatives can be implemented as well. Certain embodiments might utilize a compiler service or simply a code repository, so that when one starts an application running on a particular architecture, it would contact a local repository and fetch code that has been precompiled for that architecture. Such embodiments are possible, but it may require the provisioning of such a compiler service and updating it with suitable code for any new architectures that it might be desired to run on.

[0075] Another possible method embodiment under the present disclosure is shown in Figure 6. Method 1000 comprises a computer-implemented method for providing intercommunication between nodes that use different communication schemes. Step 1010 is receiving one or more incoming communications of a first communication scheme from one or more nodes that implement the first communication scheme. Step 1020 is performing type matching so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by a second communication scheme. Step 1030 is processing the one or more incoming communications using the second communication scheme. Method 1000 can comprise multiple variations and embodiments and / or additional and / or alternative steps. For example, in some embodiments, the different communication schemes can comprise publish- subscribe-based systems, remote procedure call-based systems, and / or other communication schemes. In some embodiments, the one or more incoming communications comprise one or more remote function calls from one or more remote procedure call-based nodes. Some embodiments can further comprise communicating with other nodes using the second communication scheme. In some variations, the communicating comprises communicating with one or more publish subscribe-based nodes via broadcast messages. In some embodiments middleware lives on each node, in both the first and second communication scheme. Some embodiments can further comprise monitoring one or more performance metrics in one or more nodes in the first or second communication schemes, such as one or more publish subscribe-based nodes. Some embodimentscan further comprise dynamically recommending node relocation or redeployment based at least in part on one or more performance metrics. In some cases, the relocation or redeployment is to another local area network. In some embodiments, the steps are performed in at least one of: a virtual machine; WebAssembly; or another system or language. In some variations, one of the communication schemes is a publish-subscribe system and comprises at least one of: a DDS; a ROS. Some variations can further comprise ensuring that one or more incoming remote function calls are in an acceptable format.

[0076] Figure 7 shows an example of a communication system 2100 in accordance with some embodiments. In the example, the communication system 2100 includes a telecommunication network 2102 that includes an access network 2104, such as a RAN, and a core network 2106, which includes one or more core network nodes 2108. The access network 2104 includes one or more access network nodes, such as network nodes 2110a and 2110b (one or more of which may be generally referred to as network nodes 2110), or any other similar 3rd Generation Partnership Project (3GPP) access node or non-3GPP access point. The network nodes 2110 facilitate direct or indirect connection of UE, such as by connecting UEs 2112a, 2112b, 2112c, and 2112d (one or more of which may be generally referred to as UEs 2112) to the core network 2106 over one or more wireless connections.

[0077] Example wireless communications over a wireless connection include transmitting and / or receiving wireless signals using electromagnetic waves, radio waves, infrared waves, and / or other types of signals suitable for conveying information without the use of wires, cables, or other material conductors. Moreover, in different embodiments, the communication system 1100 may include any number of wired or wireless networks, network nodes, UEs, and / or any other components or systems that may facilitate or participate in the communication of data and / or signals whether via wired or wireless connections. The communication system 2100 may include and / or interface with any type of communication, telecommunication, data, cellular, radio network, and / or other similar type of system.

[0078] The UEs 2112 may be any of a wide variety of communication devices, including wireless devices arranged, configured, and / or operable to communicate wirelessly with the network nodes 2110 and other communication devices. Similarly, the network nodes 2110 are arranged, capable, configured, and / or operable to communicate directly or indirectly with the UEs 2112 and / or with other network nodes or equipment in the telecommunication network 2102 toenable and / or provide network access, such as wireless network access, and / or to perform other functions, such as administration in the telecommunication network 2102.

[0079] In the depicted example, the core network 2106 connects the network nodes 2110 to one or more hosts, such as host 2116. These connections may be direct or indirect via one or more intermediary networks or devices. In other examples, network nodes may be directly coupled to hosts. The core network 2106 includes one more core network nodes (e.g., core network node 2108) that are structured with hardware and software components. Features of these components may be substantially similar to those described with respect to the UEs, network nodes, and / or hosts, such that the descriptions thereof are generally applicable to the corresponding components of the core network node 2108. Example core network nodes include functions of one or more of a Mobile Switching Center (MSC), Mobility Management Entity (MME), Home Subscriber Server (HSS), Access and Mobility Management Function (AMF), Session Management Function (SMF), Authentication Server Function (AUSF), Subscription Identifier De-concealing function (SIDF), Unified Data Management (UDM), Security Edge Protection Proxy (SEPP), Network Exposure Function (NEF), and / or a User Plane Function (UPF).

[0080] The host 2116 may be under the ownership or control of a service provider other than an operator or provider of the access network 2104 and / or the telecommunication network 2102, and may be operated by the service provider or on behalf of the service provider. The host 2116 may host a variety of applications to provide one or more service. Examples of such applications include live and pre-recorded audio / video content, data collection services such as retrieving and compiling data on various ambient conditions detected by a plurality of UEs, analytics functionality, social media, functions for controlling or otherwise interacting with remote devices, functions for an alarm and surveillance center, or any other such function performed by a server.

[0081] As a whole, the communication system 2100 of Figure 6 enables connectivity between the UEs, network nodes, and hosts. In that sense, the communication system may be configured to operate according to predefined rules or procedures, such as specific standards that include, but are not limited to: Global System for Mobile Communications (GSM); Universal Mobile Telecommunications System (UMTS); Long Term Evolution (LTE), and / or other suitable 2G, 3G, 4G, 5G standards, or any applicable future generation standard (e.g., 6G); wireless local area network (WLAN) standards, such as the Institute of Electrical and ElectronicsEngineers (IEEE) 802.11 standards (WiFi); and / or any other appropriate wireless communication standard, such as the Worldwide Interoperability for Microwave Access (WiMax), Bluetooth, Z- Wave, Near Field Communication (NFC) ZigBee, LiFi, and / or any low-power wide-area network (LPWAN) standards such as LoRa and Sigfox.

[0082] In some examples, the telecommunication network 2102 is a cellular network that implements 3 GPP standardized features. Accordingly, the telecommunications network 2102 may support network slicing to provide different logical networks to different devices that are connected to the telecommunication network 2102. For example, the telecommunications network 2102 may provide Ultra Reliable Eow Eatency Communication (UREEC) services to some UEs, while providing Enhanced Mobile Broadband (eMBB) services to other UEs, and / or Massive Machine Type Communication (mMTC) / Massive loT services to yet further UEs.

[0083] In some examples, the UEs 2112 are configured to transmit and / or receive information without direct human interaction. For instance, a UE may be designed to transmit information to the access network 2104 on a predetermined schedule, when triggered by an internal or external event, or in response to requests from the access network 2104. Additionally, a UE may be configured for operating in single- or multi-RAT or multi-standard mode. For example, a UE may operate with any one or combination of Wi-Fi, NR (New Radio) and LTE, i.e. being configured for multi -radio dual connectivity (MR-DC), such as E-UTRAN (Evolved-UMTS Terrestrial Radio Access Network) New Radio - Dual Connectivity (EN-DC).

[0084] In the example, the hub 2114 communicates with the access network 2104 to facilitate indirect communication between one or more UEs (e.g., UE 2112c and / or 2112d) and network nodes (e.g., network node 2110b). In some examples, the hub 2114 may be a controller, router, content source and analytics, or any of the other communication devices described herein regarding UEs. For example, the hub 2114 may be a broadband router enabling access to the core network 2106 for the UEs. As another example, the hub 2114 may be a controller that sends commands or instructions to one or more actuators in the UEs. Commands or instructions may be received from the UEs, network nodes 2110, or by executable code, script, process, or other instructions in the hub 2114. As another example, the hub 2114 may be a data collector that acts as temporary storage for UE data and, in some embodiments, may perform analysis or other processing of the data. As another example, the hub 2114 may be a content source. For example,for a UE that is a VR headset, display, loudspeaker or other media delivery device, the hub 2114 may retrieve VR assets, video, audio, or other media or data related to sensory information via a network node, which the hub 2114 then provides to the UE either directly, after performing local processing, and / or after adding additional local content. In still another example, the hub 2114 acts as a proxy server or orchestrator for the UEs, in particular in if one or more of the UEs are low energy loT devices.

[0085] The hub 2114 may have a constant / persistent or intermittent connection to the network node 2110b. The hub 2114 may also allow for a different communication scheme and / or schedule between the hub 2114 and UEs (e.g., UE 2112c and / or 2112d), and between the hub 2114 and the core network 2106. In other examples, the hub 2114 is connected to the core network 2106 and / or one or more UEs via a wired connection. Moreover, the hub 2114 may be configured to connect to an M2M service provider over the access network 1104 and / or to another UE over a direct connection. In some scenarios, UEs may establish a wireless connection with the network nodes 2110 while still connected via the hub 2114 via a wired or wireless connection. In some embodiments, the hub 2114 may be a dedicated hub - that is, a hub whose primary function is to route communications to / from the UEs from / to the network node 2110b. In other embodiments, the hub 2114 may be a non -dedicated hub - that is, a device which is capable of operating to route communications between the UEs and network node 2110b, but which is additionally capable of operating as a communication start and / or end point for certain data channels.

[0086] Figure 8 shows a UE 2200 in accordance with some embodiments. As used herein, a UE refers to a device capable, configured, arranged and / or operable to communicate wirelessly with network nodes and / or other UEs. Examples of a UE include, but are not limited to, a smart phone, mobile phone, cell phone, voice over IP (VoIP) phone, wireless local loop phone, desktop computer, personal digital assistant (PDA), wireless cameras, gaming console or device, music storage device, playback appliance, wearable terminal device, wireless endpoint, mobile station, tablet, laptop, laptop-embedded equipment (LEE), laptop-mounted equipment (LME), smart device, wireless customer-premise equipment (CPE), vehicle-mounted or vehicle embedded / integrated wireless device, etc. Other examples include any UE identified by the 3rd Generation Partnership Project (3GPP), including a narrow band internet of things (NB-IoT) UE, a machine type communication (MTC) UE, and / or an enhanced MTC (eMTC) UE.

[0087] A UE may support device -to-device (D2D) communication, for example by implementing a 3GPP standard for sidelink communication, Dedicated Short-Range Communication (DSRC), vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), or vehicle-to- every thing (V2X). In other examples, a UE may not necessarily have a user in the sense of a human user who owns and / or operates the relevant device. Instead, a UE may represent a device that is intended for sale to, or operation by, a human user but which may not, or which may not initially, be associated with a specific human user (e.g., a smart sprinkler controller). Alternatively, a UE may represent a device that is not intended for sale to, or operation by, an end user but which may be associated with or operated for the benefit of a user (e.g., a smart power meter).

[0088] The UE 2200 includes processing circuitry 2202 that is operatively coupled via a bus 2204 to an input / output interface 2206, a power source 2208, a memory 2210, a communication interface 2212, and / or any other component, or any combination thereof. Certain UEs may utilize all or a subset of the components shown in Figure 10. The level of integration between the components may vary from one UE to another UE. Further, certain UEs may contain multiple instances of a component, such as multiple processors, memories, transceivers, transmitters, receivers, etc.

[0089] The processing circuitry 2202 is configured to process instructions and data and may be configured to implement any sequential state machine operative to execute instructions stored as machine -readable computer programs in the memory 2210. The processing circuitry 2202 may be implemented as one or more hardware-implemented state machines (e.g., in discrete logic, field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc.); programmable logic together with appropriate firmware; one or more stored computer programs, general-purpose processors, such as a microprocessor or digital signal processor (DSP), together with appropriate software; or any combination of the above. For example, the processing circuitry 2202 may include multiple central processing units (CPUs).

[0090] In the example, the input / output interface 2206 may be configured to provide an interface or interfaces to an input device, output device, or one or more input and / or output devices. Examples of an output device include a speaker, a sound card, a video card, a display, a monitor, a printer, an actuator, an emitter, a smartcard, another output device, or any combination thereof. An input device may allow a user to capture information into the UE 2200. Examples of an input device include a touch-sensitive or presence-sensitive display, a camera (e.g.,a digital camera, a digital video camera, a web camera, etc.), a microphone, a sensor, a mouse, a trackball, a directional pad, a trackpad, a scroll wheel, a smartcard, and the like. The presencesensitive display may include a capacitive or resistive touch sensor to sense input from a user. A sensor may be, for instance, an accelerometer, a gyroscope, a tilt sensor, a force sensor, a magnetometer, an optical sensor, a proximity sensor, a biometric sensor, etc., or any combination thereof. An output device may use the same type of interface port as an input device. For example, a Universal Serial Bus (USB) port may be used to provide an input device and an output device.

[0091] In some embodiments, the power source 2208 is structured as a battery or battery pack. Other types of power sources, such as an external power source (e.g., an electricity outlet), photovoltaic device, or power cell, may be used. The power source 2208 may further include power circuitry for delivering power from the power source 2208 itself, and / or an external power source, to the various parts of the UE 2200 via input circuitry or an interface such as an electrical power cable. Delivering power may be, for example, for charging of the power source 2208. Power circuitry may perform any formatting, converting, or other modification to the power from the power source 2208 to make the power suitable for the respective components of the UE 2200 to which power is supplied.

[0092] The memory 2210 may be or be configured to include memory such as random access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disks, optical disks, hard disks, removable cartridges, flash drives, and so forth. In one example, the memory 2210 includes one or more application programs 2214, such as an operating system, web browser application, a widget, gadget engine, or other application, and corresponding data 2216. The memory 2210 may store, for use by the UE 2200, any of a variety of various operating systems or combinations of operating systems.

[0093] The memory 2210 may be configured to include a number of physical drive units, such as redundant array of independent disks (RAID), flash memory, USB flash drive, external hard disk drive, thumb drive, pen drive, key drive, high-density digital versatile disc (HD- DVD) optical disc drive, internal hard disk drive, Blu-Ray optical disc drive, holographic digital data storage (HDDS) optical disc drive, external mini-dual in-line memory module (DIMM), synchronous dynamic random access memory (SDRAM), external micro-DIMM SDRAM,smartcard memory such as tamper resistant module in the form of a universal integrated circuit card (UICC) including one or more subscriber identity modules (SIMs), such as a USIM and / or ISIM, other memory, or any combination thereof. The UICC may for example be an embedded UICC (eUICC), integrated UICC (iUICC) or a removable UICC commonly known as ‘SIM card.’ The memory 2210 may allow the UE 2200 to access instructions, application programs and the like, stored on transitory or non-transitory memory media, to off-load data, or to upload data. An article of manufacture, such as one utilizing a communication system may be tangibly embodied as or in the memory 2210, which may be or comprise a device-readable storage medium.

[0094] The processing circuitry 2202 may be configured to communicate with an access network or other network using the communication interface 2212. The communication interface 2212 may comprise one or more communication subsystems and may include or be communicatively coupled to an antenna 2222. The communication interface 2212 may include one or more transceivers used to communicate, such as by communicating with one or more remote transceivers of another device capable of wireless communication (e.g., another UE or a network node in an access network). Each transceiver may include a transmitter 2218 and / or a receiver 2220 appropriate to provide network communications (e.g., optical, electrical, frequency allocations, and so forth). Moreover, the transmitter 2218 and receiver 2220 may be coupled to one or more antennas (e.g., antenna 2222) and may share circuit components, software or firmware, or alternatively be implemented separately.

[0095] In the illustrated embodiment, communication functions of the communication interface 2212 may include cellular communication, Wi-Fi communication, LPWAN communication, data communication, voice communication, multimedia communication, short-range communications such as Bluetooth, near-field communication, location-based communication such as the use of the global positioning system (GPS) to determine a location, another like communication function, or any combination thereof. Communications may be implemented in according to one or more communication protocols and / or standards, such as IEEE 802.11, Code Division Multiplexing Access (CDMA), Wideband Code Division Multiple Access (WCDMA), GSM, LTE, New Radio (NR), UMTS, WiMax, Ethernet, transmission control protocol / in ternet protocol (TCP / IP), synchronous optical networking (SONET), Asynchronous Transfer Mode (ATM), QUIC, Hypertext Transfer Protocol (HTTP), and so forth.

[0096] Regardless of the type of sensor, a UE may provide an output of data captured by its sensors, through its communication interface 2212, via a wireless connection to a network node. Data captured by sensors of a UE can be communicated through a wireless connection to a network node via another UE. The output may be periodic (e.g., once every 15 minutes if it reports the sensed temperature), random (e.g., to even out the load from reporting from several sensors), in response to a triggering event (e.g., when moisture is detected an alert is sent), in response to a request (e.g., a user initiated request), or a continuous stream (e.g., a live video feed of a patient).

[0097] As another example, a UE comprises an actuator, a motor, or a switch, related to a communication interface configured to receive wireless input from a network node via a wireless connection. In response to the received wireless input the states of the actuator, the motor, or the switch may change. For example, the UE may comprise a motor that adjusts the control surfaces or rotors of a drone in flight according to the received input or to a robotic arm performing a medical procedure according to the received input.

[0098] A UE, when in the form of an Internet of Things (loT) device, may be a device for use in one or more application domains, these domains comprising, but not limited to, city wearable technology, extended industrial application and healthcare. Non-limiting examples of such an loT device are a device which is or which is embedded in: a connected refrigerator or freezer, a TV, a connected lighting device, an electricity meter, a robot vacuum cleaner, a voice controlled smart speaker, a home security camera, a motion detector, a thermostat, a smoke detector, a door / window sensor, a flood / moisture sensor, an electrical door lock, a connected doorbell, an air conditioning system like a heat pump, an autonomous vehicle, a surveillance system, a weather monitoring device, a vehicle parking monitoring device, an electric vehicle charging station, a smart watch, a fitness tracker, a head-mounted display for Augmented Reality (AR) or Virtual Reality (VR), a wearable for tactile augmentation or sensory enhancement, a water sprinkler, an animal- or item-tracking device, a sensor for monitoring a plant or animal, an industrial robot, an Unmanned Aerial Vehicle (UAV), and any kind of medical device, like a heart rate monitor or a remote controlled surgical robot. A UE in the form of an loT device comprises circuitry and / or software in dependence of the intended application of the loT device in addition to other components as described in relation to the UE 2200 shown in Figure 8.

[0099] As yet another specific example, in an loT scenario, a UE may represent a machine or other device that performs monitoring and / or measurements, and transmits the results of such monitoring and / or measurements to another UE and / or a network node. The UE may in this case be an M2M device, which may in a 3GPP context be referred to as an MTC device. As one particular example, the UE may implement the 3GPP NB-IoT standard. In other scenarios, a UE may represent a vehicle, such as a car, a bus, a truck, a ship and an airplane, or other equipment that is capable of monitoring and / or reporting on its operational status or other functions associated with its operation.[000100] In practice, any number of UEs may be used together with respect to a single use case. For example, a first UE might be or be integrated in a drone and provide the drone’s speed information (obtained through a speed sensor) to a second UE that is a remote controller operating the drone. When the user makes changes from the remote controller, the first UE may adjust the throttle on the drone (e.g. by controlling an actuator) to increase or decrease the drone’s speed. The first and / or the second UE can also include more than one of the functionalities described above. For example, a UE might comprise the sensor and the actuator, and handle communication of data for both the speed sensor and the actuators.[000101] Figure 9 shows a network node 3300 in accordance with some embodiments. As used herein, network node refers to equipment capable, configured, arranged and / or operable to communicate directly or indirectly with a UE and / or with other network nodes or equipment, in a telecommunication network. Examples of network nodes include, but are not limited to, access points (APs) (e.g., radio access points), base stations (BSs) (e.g., radio base stations, Node Bs, evolved Node Bs (eNBs) and NR NodeBs (gNBs)).[000102] Base stations may be categorized based on the amount of coverage they provide (or, stated differently, their transmit power level) and so, depending on the provided amount of coverage, may be referred to as femto base stations, pico base stations, micro base stations, or macro base stations. A base station may be a relay node or a relay donor node controlling a relay. A network node may also include one or more (or all) parts of a distributed radio base station such as centralized digital units and / or remote radio units (RRUs), sometimes referred to as Remote Radio Heads (RRHs). Such remote radio units may or may not be integrated with an antenna as an antenna integrated radio. Parts of a distributed radio base station may also be referred to as nodes in a distributed antenna system (DAS).[000103] Other examples of network nodes include multiple transmission point (multi-TRP) 5G access nodes, multi-standard radio (MSR) equipment such as MSR BSs, network controllers such as radio network controllers (RNCs) or base station controllers (BSCs), base transceiver stations (BTSs), transmission points, transmission nodes, multi-cell / multicast coordination entities (MCEs), Operation and Maintenance (O&M) nodes, Operations Support System (OSS) nodes, Self-Organizing Network (SON) nodes, positioning nodes (e.g., Evolved Serving Mobile Location Centers (E-SMLCs)), and / or Minimization of Drive Tests (MDTs).[000104] The network node 3300 includes a processing circuitry 3302, a memory 3304, a communication interface 3306, and a power source 3308. The network node 3300 may be composed of multiple physically separate components (e.g., a NodeB component and a RNC component, or a BTS component and a BSC component, etc.), which may each have their own respective components. In certain scenarios in which the network node 3300 comprises multiple separate components (e.g., BTS and BSC components), one or more of the separate components may be shared among several network nodes. For example, a single RNC may control multiple NodeBs. In such a scenario, each unique NodeB and RNC pair, may in some instances be considered a single separate network node. In some embodiments, the network node 1300 may be configured to support multiple radio access technologies (RATs). In such embodiments, some components may be duplicated (e.g., separate memory 3304 for different RATs) and some components may be reused (e.g., a same antenna 3310 may be shared by different RATs). The network node 3300 may also include multiple sets of the various illustrated components for different wireless technologies integrated into network node 1300, for example GSM, WCDMA, LTE, NR, WiFi, Zigbee, Z-wave, LoRaWAN, Radio Frequency Identification (RFID) or Bluetooth wireless technologies. These wireless technologies may be integrated into the same or different chip or set of chips and other components within network node 1300.[000105] The processing circuitry 3302 may comprise a combination of one or more of a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application-specific integrated circuit, field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software and / or encoded logic operable to provide, either alone or in conjunction with other network node 3300 components, such as the memory 3304, to provide network node 3300 functionality.[000106] In some embodiments, the processing circuitry 3302 includes a system on a chip (SOC). In some embodiments, the processing circuitry 3302 includes one or more of radio frequency (RF) transceiver circuitry 3312 and baseband processing circuitry 3314. In some embodiments, the radio frequency (RF) transceiver circuitry 3312 and the baseband processing circuitry 3314 may be on separate chips (or sets of chips), boards, or units, such as radio units and digital units. In alternative embodiments, part or all of RF transceiver circuitry 3312 and baseband processing circuitry 3314 may be on the same chip or set of chips, boards, or units.[000107] The memory 3304 may comprise any form of volatile or non-volatile computer-readable memory including, without limitation, persistent storage, solid-state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), readonly memory (ROM), mass storage media (for example, a hard disk), removable storage media (for example, a flash drive, a Compact Disk (CD) or a Digital Video Disk (DVD)), and / or any other volatile or non-volatile, non-transitory device-readable and / or computer-executable memory devices that store information, data, and / or instructions that may be used by the processing circuitry 3302. The memory 3304 may store any suitable instructions, data, or information, including a computer program, software, an application including one or more of logic, rules, code, tables, and / or other instructions capable of being executed by the processing circuitry 3302 and utilized by the network node 3300. The memory 3304 may be used to store any calculations made by the processing circuitry 3302 and / or any data received via the communication interface 3306. In some embodiments, the processing circuitry 3302 and memory 3304 is integrated.[000108] The communication interface 3306 is used in wired or wireless communication of signaling and / or data between a network node, access network, and / or UE. As illustrated, the communication interface 3306 comprises port(s) / terminal(s) 3316 to send and receive data, for example to and from a network over a wired connection. The communication interface 3306 also includes radio front-end circuitry 3318 that may be coupled to, or in certain embodiments a part of, the antenna 3310. Radio front-end circuitry 3318 comprises filters 3320 and amplifiers 3322. The radio front-end circuitry 3318 may be connected to an antenna 3310 and processing circuitry 3302. The radio front-end circuitry may be configured to condition signals communicated between antenna 3310 and processing circuitry 3302. The radio front-end circuitry 3318 may receive digital data that is to be sent out to other network nodes or UEs via a wireless connection. The radio front-end circuitry 3318 may convert the digital data into a radio signalhaving the appropriate channel and bandwidth parameters using a combination of filters 3320 and / or amplifiers 3322. The radio signal may then be transmitted via the antenna 3310. Similarly, when receiving data, the antenna 3310 may collect radio signals which are then converted into digital data by the radio front-end circuitry 3318. The digital data may be passed to the processing circuitry 3302. In other embodiments, the communication interface may comprise different components and / or different combinations of components.[000109] In certain alternative embodiments, the network node 3300 does not include separate radio front-end circuitry 3318, instead, the processing circuitry 3302 includes radio frontend circuitry and is connected to the antenna 3310. Similarly, in some embodiments, all or some of the RF transceiver circuitry 3312 is part of the communication interface 3306. In still other embodiments, the communication interface 3306 includes one or more ports or terminals 3316, the radio front-end circuitry 3318, and the RF transceiver circuitry 3312, as part of a radio unit (not shown), and the communication interface 3306 communicates with the baseband processing circuitry 3314, which is part of a digital unit (not shown).[000110] The antenna 3310 may include one or more antennas, or antenna arrays, configured to send and / or receive wireless signals. The antenna 3310 may be coupled to the radio front-end circuitry 3318 and may be any type of antenna capable of transmitting and receiving data and / or signals wirelessly. In certain embodiments, the antenna 3310 is separate from the network node 3300 and connectable to the network node 3300 through an interface or port.[000111] The antenna 3310, communication interface 3306, and / or the processing circuitry 3302 may be configured to perform any receiving operations and / or certain obtaining operations described herein as being performed by the network node. Any information, data and / or signals may be received from a UE, another network node and / or any other network equipment. Similarly, the antenna 3310, the communication interface 3306, and / or the processing circuitry 3302 may be configured to perform any transmitting operations described herein as being performed by the network node. Any information, data and / or signals may be transmitted to a UE, another network node and / or any other network equipment.[000112] The power source 3308 provides power to the various components of network node 3300 in a form suitable for the respective components (e.g., at a voltage and current level needed for each respective component). The power source 3308 may further comprise, or be coupled to, power management circuitry to supply the components of the network node 3300 withpower for performing the functionality described herein. For example, the network node 3300 may be connectable to an external power source (e.g., the power grid, an electricity outlet) via an input circuitry or interface such as an electrical cable, whereby the external power source supplies power to power circuitry of the power source 3308. As a further example, the power source 3308 may comprise a source of power in the form of a battery or battery pack which is connected to, or integrated in, power circuitry. The battery may provide backup power should the external power source fail.[000113] Embodiments of the network node 3300 may include additional components beyond those shown in Figure 8 for providing certain aspects of the network node’s functionality, including any of the functionality described herein and / or any functionality necessary to support the subject matter described herein. For example, the network node 3300 may include user interface equipment to allow input of information into the network node 3300 and to allow output of information from the network node 3300. This may allow a user to perform diagnostic, maintenance, repair, and other administrative functions for the network node 3300.[000114] Figure 10 is a block diagram of a host 4400, which may be an embodiment of the host 2116 of Figure 7, in accordance with various aspects described herein. As used herein, the host 4400 may be or comprise various combinations hardware and / or software, including a standalone server, a blade server, a cloud-implemented server, a distributed server, a virtual machine, container, or processing resources in a server farm. The host 4400 may provide one or more services to one or more UEs.[000115] The host 4400 includes processing circuitry 4402 that is operatively coupled via a bus 4404 to an input / output interface 4406, a network interface 4408, a power source 4410, and a memory 4412. Other components may be included in other embodiments. Features of these components may be substantially similar to those described with respect to the devices of previous figures, such as Figures 8 and 9, such that the descriptions thereof are generally applicable to the corresponding components of host 4400.[000116] The memory 4412 may include one or more computer programs including one or more host application programs 4414 and data 4416, which may include user data, e.g., data generated by a UE for the host 4400 or data generated by the host 4400 for a UE. Embodiments of the host 4400 may utilize only a subset or all of the components shown. The host application programs 4414 may be implemented in a container-based architecture and may provide supportfor video codecs (e.g., Versatile Video Coding (VVC), High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC), MPEG, VP9) and audio codecs (e.g., FLAC, Advanced Audio Coding (AAC), MPEG, G.711), including transcoding for multiple different classes, types, or implementations of UEs (e.g., handsets, desktop computers, wearable display systems, heads-up display systems). The host application programs 4414 may also provide for user authentication and licensing checks and may periodically report health, routes, and content availability to a central node, such as a device in or on the edge of a core network. Accordingly, the host 4400 may select and / or indicate a different host for over-the-top services for a UE. The host application programs 4414 may support various protocols, such as the HTTP Live Streaming (HLS) protocol, Real-Time Messaging Protocol (RTMP), Real-Time Streaming Protocol (RTSP), Dynamic Adaptive Streaming over HTTP (MPEG-DASH), etc.[000117] Figure 11 is a block diagram illustrating a virtualization environment 5500 in which functions implemented by some embodiments may be virtualized. In the present context, virtualizing means creating virtual versions of apparatuses or devices which may include virtualizing hardware platforms, storage devices and networking resources. As used herein, virtualization can be applied to any device described herein, or components thereof, and relates to an implementation in which at least a portion of the functionality is implemented as one or more virtual components. Some or all of the functions described herein may be implemented as virtual components executed by one or more virtual machines (VMs) implemented in one or more virtual environments 5500 hosted by one or more of hardware nodes, such as a hardware computing device that operates as a network node, UE, core network node, or host. Further, in embodiments in which the virtual node does not require radio connectivity (e.g., a core network node or host), then the node may be entirely virtualized.[000118] Applications 5502 (which may alternatively be called software instances, virtual appliances, network functions, virtual nodes, virtual network functions, etc.) are run in the virtualization environment 5500 to implement some of the features, functions, and / or benefits of some of the embodiments disclosed herein.[000119] Hardware 5504 includes processing circuitry, memory that stores software and / or instructions executable by hardware processing circuitry, and / or other hardware devices as described herein, such as a network interface, input / output interface, and so forth. Software may be executed by the processing circuitry to instantiate one or more virtualization layers 5506 (alsoreferred to as hypervisors or virtual machine monitors (VMMs)), provide VMs 5508a and 5508b (one or more of which may be generally referred to as VMs 5508), and / or perform any of the functions, features and / or benefits described in relation with some embodiments described herein. The virtualization layer 5506 may present a virtual operating platform that appears like networking hardware to the VMs 5508.[000120] The VMs 5508 comprise virtual processing, virtual memory, virtual networking or interface and virtual storage, and may be run by a corresponding virtualization layer 5506. Different embodiments of the instance of a virtual appliance 5502 may be implemented on one or more of VMs 5508, and the implementations may be made in different ways. Virtualization of the hardware is in some contexts referred to as network function virtualization (NFV). NFV may be used to consolidate many network equipment types onto industry standard high volume server hardware, physical switches, and physical storage, which can be located in data centers, and customer premise equipment.[000121] In the context of NFV, a VM 5508 may be a software implementation of a physical machine that runs programs as if they were executing on a physical, non-virtualized machine. Each of the VMs 5508, and that part of hardware 5504 that executes that VM, be it hardware dedicated to that VM and / or hardware shared by that VM with others of the VMs, forms separate virtual network elements. Still in the context of NFV, a virtual network function is responsible for handling specific network functions that run in one or more VMs 5508 on top of the hardware 5504 and corresponds to the application 5502.[000122] Hardware 5504 may be implemented in a standalone network node with generic or specific components. Hardware 5504 may implement some functions via virtualization. Alternatively, hardware 5504 may be part of a larger cluster of hardware (e.g., such as in a data center or CPE) where many hardware nodes work together and are managed via management and orchestration 5510, which, among others, oversees lifecycle management of applications 5502. In some embodiments, hardware 5504 is coupled to one or more radio units that each include one or more transmitters and one or more receivers that may be coupled to one or more antennas. Radio units may communicate directly with other hardware nodes via one or more appropriate network interfaces and may be used in combination with the virtual components to provide a virtual node with radio capabilities, such as a radio access node or a base station. In some embodiments, somesignaling can be provided with the use of a control system 5512 which may alternatively be used for communication between hardware nodes and radio units.[000123] Figure 12 shows a communication diagram of a host 6602 communicating via a network node 6604 with a UE 6606 over a partially wireless connection in accordance with some embodiments. Example implementations, in accordance with various embodiments, of the UE (such as a UE 2112a of Figure 7 and / or UE 2200 of Figure 8), network node (such as network node 2110a of Figure 7 and / or network node 3300 of Figure 9), and host (such as host 2116 of Figure 7 and / or host 4400 of Figure 10) discussed in the preceding paragraphs will now be described with reference to Figure 12.[000124] Like host 4400, embodiments of host 6602 include hardware, such as a communication interface, processing circuitry, and memory. The host 6602 also includes software, which is stored in or accessible by the host 6602 and executable by the processing circuitry. The software includes a host application that may be operable to provide a service to a remote user, such as the UE 6606 connecting via an over-the-top (OTT) connection 6650 extending between the UE 6606 and host 6602. In providing the service to the remote user, a host application may provide user data which is transmitted using the OTT connection 6650.[000125] The network node 6604 includes hardware enabling it to communicate with the host 6602 and UE 6606. The connection 6660 may be direct or pass through a core network (like core network 2106 of Figure 7) and / or one or more other intermediate networks, such as one or more public, private, or hosted networks. For example, an intermediate network may be a backbone network or the Internet.[000126] The UE 6606 includes hardware and software, which is stored in or accessible by UE 6606 and executable by the UE’s processing circuitry. The software includes a client application, such as a web browser or operator-specific “app” that may be operable to provide a service to a human or non-human user via UE 6606 with the support of the host 6602. In the host 6602, an executing host application may communicate with the executing client application via the OTT connection 6650 terminating at the UE 6606 and host 6602. In providing the service to the user, the UE's client application may receive request data from the host's host application and provide user data in response to the request data. The OTT connection 6650 may transfer both the request data and the user data. The UE's client application may interact with theuser to generate the user data that it provides to the host application through the OTT connection 6650.[000127] The OTT connection 6650 may extend via a connection 6660 between the host 6602 and the network node 6604 and via a wireless connection 6670 between the network node 6604 and the UE 6606 to provide the connection between the host 6602 and the UE 6606. The connection 6660 and wireless connection 6670, over which the OTT connection 6650 may be provided, have been drawn abstractly to illustrate the communication between the host 6602 and the UE 1606 via the network node 6604, without explicit reference to any intermediary devices and the precise routing of messages via these devices.[000128] As an example of transmitting data via the OTT connection 6650, in step 6608, the host 6602 provides user data, which may be performed by executing a host application. In some embodiments, the user data is associated with a particular human user interacting with the UE 6606. In other embodiments, the user data is associated with a UE 6606 that shares data with the host 6602 without explicit human interaction. In step 6610, the host 6602 initiates a transmission carrying the user data towards the UE 6606. The host 6602 may initiate the transmission responsive to a request transmitted by the UE 6606. The request may be caused by human interaction with the UE 6606 or by operation of the client application executing on the UE 6606. The transmission may pass via the network node 6604, in accordance with the teachings of the embodiments described throughout this disclosure. Accordingly, in step 6612, the network node 6604 transmits to the UE 6606 the user data that was carried in the transmission that the host 6602 initiated, in accordance with the teachings of the embodiments described throughout this disclosure. In step 6614, the UE 6606 receives the user data carried in the transmission, which may be performed by a client application executed on the UE 6606 associated with the host application executed by the host 6602.[000129] In some examples, the UE 6606 executes a client application which provides user data to the host 6602. The user data may be provided in reaction or response to the data received from the host 6602. Accordingly, in step 6616, the UE 6606 may provide user data, which may be performed by executing the client application. In providing the user data, the client application may further consider user input received from the user via an input / output interface of the UE 6606. Regardless of the specific manner in which the user data was provided, the UE 6606 initiates, in step 6618, transmission of the user data towards the host 6602 via the network node6604. In step 6620, in accordance with the teachings of the embodiments described throughout this disclosure, the network node 6604 receives user data from the UE 6606 and initiates transmission of the received user data towards the host 6602. In step 6622, the host 6602 receives the user data carried in the transmission initiated by the UE 6606.[000130] One or more of the various embodiments improve the performance of OTT services provided to the UE 6606 using the OTT connection 6650, in which the wireless connection 6670 forms the last segment. More precisely, the teachings of these embodiments may improve the data rate, latency, and / or power consumption and thereby provide benefits such as reduced user waiting time, relaxed restriction on file size, improved content resolution, better responsiveness, and / or extended battery lifetime.[000131] In an example scenario, factory status information may be collected and analyzed by the host 6602. As another example, the host 6602 may process audio and video data which may have been retrieved from a UE for use in creating maps. As another example, the host 6602 may collect and analyze real-time data to assist in controlling vehicle congestion (e.g., controlling traffic lights). As another example, the host 6602 may store surveillance video uploaded by a UE. As another example, the host 6602 may store or control access to media content such as video, audio, VR or AR which it can broadcast, multicast or unicast to UEs. As other examples, the host 6602 may be used for energy pricing, remote control of non-time critical electrical load to balance power generation needs, location services, presentation services (such as compiling diagrams etc. from data collected from remote devices), or any other function of collecting, retrieving, storing, analyzing and / or transmitting data.[000132] In some examples, a measurement procedure may be provided for the purpose of monitoring data rate, latency and other factors on which the one or more embodiments improve. There may further be an optional network functionality for reconfiguring the OTT connection 6650 between the host 6602 and UE 6606, in response to variations in the measurement results. The measurement procedure and / or the network functionality for reconfiguring the OTT connection may be implemented in software and hardware of the host 6602 and / or UE 6606. In some embodiments, sensors (not shown) may be deployed in or in association with other devices through which the OTT connection 6650 passes; the sensors may participate in the measurement procedure by supplying values of the monitored quantities exemplified above, or supplying values of other physical quantities from which software may compute or estimate the monitoredquantities. The reconfiguring of the OTT connection 6650 may include message format, retransmission settings, preferred routing etc.; the reconfiguring need not directly alter the operation of the network node 6604. Such procedures and functionalities may be known and practiced in the art. In certain embodiments, measurements may involve proprietary UE signaling that facilitates measurements of throughput, propagation times, latency and the like, by the host 6602. The measurements may be implemented in that software causes messages to be transmitted, in particular empty or ‘dummy’ messages, using the OTT connection 6650 while monitoring propagation times, errors, etc.[000133] Although the computing devices described herein (e.g., UEs, network nodes, hosts) may include the illustrated combination of hardware components, other embodiments may comprise computing devices with different combinations of components. It is to be understood that these computing devices may comprise any suitable combination of hardware and / or software needed to perform the tasks, features, functions and methods disclosed herein. Determining, calculating, obtaining or similar operations described herein may be performed by processing circuitry, which may process information by, for example, converting the obtained information into other information, comparing the obtained information or converted information to information stored in the network node, and / or performing one or more operations based on the obtained information or converted information, and as a result of said processing making a determination. Moreover, while components are depicted as single boxes located within a larger box, or nested within multiple boxes, in practice, computing devices may comprise multiple different physical components that make up a single illustrated component, and functionality may be partitioned between separate components. For example, a communication interface may be configured to include any of the components described herein, and / or the functionality of the components may be partitioned between the processing circuitry and the communication interface. In another example, non-computationally intensive functions of any of such components may be implemented in software or firmware and computationally intensive functions may be implemented in hardware.[000134] In certain embodiments, some or all of the functionality described herein may be provided by processing circuitry executing instructions stored on in memory, which in certain embodiments may be a computer program product in the form of a non-transitory computer-readable storage medium. In alternative embodiments, some or all of the functionalitymay be provided by the processing circuitry without executing instructions stored on a separate or discrete device-readable storage medium, such as in a hard-wired manner. In any of those particular embodiments, whether executing instructions stored on a non-transitory computer- readable storage medium or not, the processing circuitry can be configured to perform the described functionality. The benefits provided by such functionality are not limited to the processing circuitry alone or to other components of the computing device, but are enjoyed by the computing device as a whole, and / or by end users and a wireless network generally.[000135] It will be appreciated that computer systems are increasingly taking a wide variety of forms. In this description and in the claims, the terms “controller,” “computer system,” or “computing system” are defined broadly as including any device or system — or combination thereof — that includes at least one physical and tangible processor and a physical and tangible memory capable of having thereon computer-executable instructions that may be executed by a processor. By way of example, not limitation, the term “computer system” or “computing system,” as used herein is intended to include personal computers, desktop computers, laptop computers, tablets, hand-held devices (e.g., mobile telephones, PDAs, pagers), microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, multi-processor systems, network PCs, distributed computing systems, datacenters, message processors, routers, switches, and even devices that conventionally have not been considered a computing system, such as wearables (e.g., glasses).[000136] The computing system also has thereon multiple structures often referred to as an “executable component.” For instance, the memory of a computing system can include an executable component. The term “executable component” is the name for a structure that is well understood to one of ordinary skill in the art in the field of computing as being a structure that can be software, hardware, or a combination thereof. For instance, when implemented in software, one of ordinary skill in the art would understand that the structure of an executable component may include software objects, routines, methods, and so forth, that may be executed by one or more processors on the computing system, whether such an executable component exists in the heap of a computing system, or whether the executable component exists on computer-readable storage media. The structure of the executable component exists on a computer-readable medium in such a form that it is operable, when executed by one or more processors of the computing system, to cause the computing system to perform one or more functions, such as the functions and methodsdescribed herein. Such a structure may be computer-readable directly by a processor — as is the case if the executable component were binary. Alternatively, the structure may be structured to be interpretable and / or compiled — whether in a single stage or in multiple stages — so as to generate such binary that is directly interpretable by a processor.[000137] The terms “component,” “service,” “engine,” “module,” “control,” “generator,” or the like may also be used in this description. As used in this description and in this case, these terms — whether expressed with or without a modifying clause — are also intended to be synonymous with the term “executable component” and thus also have a structure that is well understood by those of ordinary skill in the art of computing.[000138] In terms of computer implementation, a computer is generally understood to comprise one or more processors or one or more controllers, and the terms computer, processor, and controller may be employed interchangeably. When provided by a computer, processor, or controller, the functions may be provided by a single dedicated computer or processor or controller, by a single shared computer or processor or controller, or by a plurality of individual computers or processors or controllers, some of which may be shared or distributed. Moreover, the term “processor” or “controller” also refers to other hardware capable of performing such functions and / or executing software, such as the example hardware recited above.[000139] In general, the various exemplary embodiments may be implemented in hardware or special purpose chips, circuits, software, logic, or any combination thereof. For example, some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software which may be executed by a controller, microprocessor, or other computing device, although the disclosure is not limited thereto. While various aspects of the exemplary embodiments of this disclosure may be illustrated and described as block diagrams, flow charts, or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques, or methods described herein may be implemented in, as nonlimiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.[000140] While not all computing systems require a user interface, in some embodiments a computing system includes a user interface for use in communicating information from / to a user. The user interface may include output mechanisms as well as input mechanisms. The principles described herein are not limited to the precise output mechanisms or inputmechanisms as such will depend on the nature of the device. However, output mechanisms might include, for instance, speakers, displays, tactile output, projections, holograms, and so forth. Examples of input mechanisms might include, for instance, microphones, touchscreens, projections, holograms, cameras, keyboards, stylus, mouse, or other pointer input, sensors of any type, and so forth.Abbreviations and Defined Terms[000141] To assist in understanding the scope and content of this written description and the appended claims, a select few terms are defined directly below. Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the present disclosure pertains.[000142] The terms “approximately,” “about,” and “substantially,” as used herein, represent an amount or condition close to the specific stated amount or condition that still performs a desired function or achieves a desired result. For example, the terms “approximately,” “about,” and “substantially” may refer to an amount or condition that deviates by less than 10%, or by less than 5%, or by less than 1%, or by less than 0.1%, or by less than 0.01% from a specifically stated amount or condition.[000143] Various aspects of the present disclosure, including devices, systems, and methods may be illustrated with reference to one or more embodiments or implementations, which are exemplary in nature. As used herein, the term “exemplary” means “serving as an example, instance, or illustration,” and should not necessarily be construed as preferred or advantageous over other embodiments disclosed herein. In addition, reference to an “implementation” of the present disclosure or embodiments includes a specific reference to one or more embodiments thereof, and vice versa, and is intended to provide illustrative examples without limiting the scope of the present disclosure, which is indicated by the appended claims rather than by the present description.[000144] As used in the specification, a word appearing in the singular encompasses its plural counterpart, and a word appearing in the plural encompasses its singular counterpart, unless implicitly or explicitly understood or stated otherwise. Thus, it will be noted that, as used in this specification and the appended claims, the singular forms “a,” “an” and “the” include plural referents unless the context clearly dictates otherwise. For example, reference to a singular referent(e.g., “a widget”) includes one, two, or more referents unless implicitly or explicitly understood or stated otherwise. Similarly, reference to a plurality of referents should be interpreted as comprising a single referent and / or a plurality of referents unless the content and / or context clearly dictate otherwise. For example, reference to referents in the plural form (e.g., “widgets”) does not necessarily require a plurality of such referents. Instead, it will be appreciated that independent of the inferred number of referents, one or more referents are contemplated herein unless stated otherwise.[000145] References in the specification to "one embodiment," "an embodiment," "an example embodiment," and the like indicate that the embodiment described may include a particular feature, structure, or characteristic, but it is not necessary that every embodiment includes the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.[000146] It shall be understood that although the terms "first" and "second" etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and similarly, a second element could be termed a first element, without departing from the scope of example embodiments. As used herein, the term "and / or" includes any and all combinations of one or more of the associated listed terms.[000147] It will be further understood that the terms "comprises", "comprising", "has", "having", "includes" and / or "including", when used herein, specify the presence of stated features, elements, and / or components etc., but do not preclude the presence or addition of one or more other features, elements, components and / or combinations thereof.Conclusion[000148] The present disclosure includes any novel feature or combination of features disclosed herein either explicitly or any generalization thereof. Various modifications and adaptations to the foregoing exemplary embodiments of this disclosure may become apparent to those skilled in the relevant arts in view of the foregoing description, when read in conjunctionwith the accompanying drawings. However, any and all modifications will still fall within the scope of the non-limiting and exemplary embodiments of this disclosure.[000149] It is understood that for any given component or embodiment described herein, any of the possible candidates or alternatives listed for that component may generally be used individually or in combination with one another, unless implicitly or explicitly understood or stated otherwise. Additionally, it will be understood that any list of such candidates or alternatives is merely illustrative, not limiting, unless implicitly or explicitly understood or stated otherwise.[000150] In addition, unless otherwise indicated, numbers expressing quantities, constituents, distances, or other measurements used in the specification and claims are to be understood as being modified by the term “about,” as that term is defined herein. Accordingly, unless indicated to the contrary, the numerical parameters set forth in the specification and attached claims are approximations that may vary depending upon the desired properties sought to be obtained by the subject matter presented herein. At the very least, and not as an attempt to limit the application of the doctrine of equivalents to the scope of the claims, each numerical parameter should at least be construed in light of the number of reported significant digits and by applying ordinary rounding techniques. Notwithstanding that the numerical ranges and parameters setting forth the broad scope of the subject matter presented herein are approximations, the numerical values set forth in the specific examples are reported as precisely as possible. Any numerical values, however, inherently contain certain errors necessarily resulting from the standard deviation found in their respective testing measurements.[000151] Any headings and subheadings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. The terms and expressions which have been employed herein are used as terms of description and not of limitation, and there is no intention in the use of such terms and expressions of excluding any equivalents of the features shown and described or portions thereof, but it is recognized that various modifications are possible within the scope of the present disclosure. Thus, it should be understood that although the present disclosure has been specifically disclosed in part by certain embodiments, and optional features, modification and variation of the concepts herein disclosed may be resorted to by those skilled in the art, and such modifications and variations are considered to be within the scope of this present description.[000152] It will also be appreciated that systems, devices, products, kits, methods, and / or processes, according to certain embodiments of the present disclosure may include, incorporate, or otherwise comprise properties or features (e.g., components, members, elements, parts, and / or portions) described in other embodiments disclosed and / or described herein. Accordingly, the various features of certain embodiments can be compatible with, combined with, included in, and / or incorporated into other embodiments of the present disclosure. Thus, disclosure of certain features relative to a specific embodiment of the present disclosure should not be construed as limiting application or inclusion of said features to the specific embodiment. Rather, it will be appreciated that other embodiments can also include said features, members, elements, parts, and / or portions without necessarily departing from the scope of the present disclosure.[000153] Moreover, unless a feature is described as requiring another feature in combination therewith, any feature herein may be combined with any other feature of a same or different embodiment disclosed herein. Furthermore, various well-known aspects of illustrative systems, methods, apparatus, and the like are not described herein in particular detail in order to avoid obscuring aspects of the example embodiments. Such aspects are, however, also contemplated herein.[000154] It will be apparent to one of ordinary skill in the art that methods, devices, device elements, materials, procedures, and techniques other than those specifically described herein can be applied to the practice of the described embodiments as broadly disclosed herein without resort to undue experimentation. All art-known functional equivalents of methods, devices, device elements, materials, procedures, and techniques specifically described herein are intended to be encompassed by this present disclosure.[000155] When a group of materials, compositions, components, or compounds is disclosed herein, it is understood that all individual members of those groups and all subgroups thereof are disclosed separately. When a Markush group or other grouping is used herein, all individual members of the group and all combinations and sub-combinations possible of the group are intended to be individually included in the disclosure.[000156] The above -described embodiments are examples only. Alterations, modifications, and variations may be effected to the particular embodiments by those of skill in the art without departing from the scope of the description, which is defined solely by the appended claims.

Claims

CLAIMSWhat is claimed is:

1. A computer-implemented method for providing intercommunication between nodes that use different communication schemes, comprising: receiving (1010) one or more incoming communications of a first communication scheme from one or more nodes that implement the first communication scheme; performing type matching (1020) so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by a second communication scheme; and processing (1030) the one or more incoming communications using the second communication scheme,2. The method of claim 1, wherein the plurality of computer systems comprise at least one of: a publish-subscribe-based system; a remote procedure call-based system; another communication scheme.

3. The method of claim 1 or 2, wherein the one or more incoming communications comprise one or more remote function calls from one or more remote procedure call-based nodes.

4. The method of any of claims 1 to 3, further comprising communicating with other nodes using the second communication scheme.

5. The method of claim 4, wherein the communicating comprises communicating with one or more publish subscribe -based nodes via broadcast messages.

6. The method of any of claims 1 to 5, wherein middleware capable of executing the receiving, performing, and processing steps lives on each node in both the first and second communication scheme,7. The method of any of claims 1 to 6, further comprising monitoring one or more performance metrics in at least one of: at least one node of the first communication scheme; at least one node of the second communication scheme.

8. The method of claim 7, further comprising dynamically recommending node relocation or redeployment based at least in part on the one or more performance metrics.

9. The method of claim 8, wherein the relocation or redeployment is to another local area network.

10. The method of any of claims 1 to 9, wherein the steps are performed in at least one of: a virtual machine; a portable bytecode implementation; WebAssembly.

11. The method of claim 2, wherein the publish-subscribe system comprises at least one of: a data distribution service, DDS; a brokerless publish-subscribe technology; a robot operating system, ROS.

12. The method of any of claims 1 to 11, further comprising ensuring that the one or more incoming communications are in an acceptable format.

13. A middleware system (20, 45) for providing intercommunication between a first communication scheme (220) and a second communication scheme (250) , the middleware system comprising: a first one or more nodes (215) that implement the first communication scheme; a second one or more nodes (260, 270, 280) that implement the second communication scheme; wherein at least one node of the first one or more nodes or the second one or more nodes comprises; a remote procedure call anchor point (810) configured to accept one or more incoming communications from the other communication scheme and perform type matching so that one or more variables of the one or more incoming communications arestored in a suitable format as defined by the communication scheme of the at least one node; a messaging service (820) coupled to the remote procedure call anchor point and configured to transmit one or more communications to the first one or more nodes and the second one or more nodes, the one or more communications being based at least in part on the one or more variables; a node discovery service (830) configured to retrieve information about any of the first one or more nodes and / or the second one or more nodes.

14. The middleware system of claim 13, wherein the at least one node further comprises: an inspection service (840) configured to monitor one or more performance metrics in the first one or more nodes and / or the second one or more nodes.

15. The middleware system of claim 14, wherein the inspection service is further configured to dynamically recommend relocation or redeployment of the first one or more nodes and / or second one or more nodes based at least in part on the one or more performance metrics.

16. The middleware system of claim 15, wherein the relocation or redeployment is to another local area network.

17. The middleware system of any of claims 13 to 16, wherein the middleware system comprises at least one of: a virtual machine; a portable bytecode implementation; WebAssembly.

18. The middleware system of any of claims 13 to 17, wherein the first communication scheme or the second communication scheme comprises at least one of: a data distribution service, DDS; a brokerless publish-subscribe technology; a robot operating system, ROS.

19. The middleware system of any of claims 13 to 18, wherein the remote procedure call anchor point is further configured to ensure that the one or more incoming communications are in an acceptable format.

20. The middleware system of any of claims 13 to 19, wherein the middleware system comprises at least one of: a user equipment, UE; a network node.

21. A system (800) for providing intercommunication between a first communication scheme and a second communication scheme, the system comprising: processing circuitry (3302); and a memory (3304), the memory containing instructions executable by the processing circuitry whereby the system is operative to: receive (1010) one or more incoming communications of the first communication scheme from one or more nodes that implement the first communication scheme; perform type matching (1020) so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by the second communication scheme; process (1030) the one or more incoming communications using the second communication scheme.

22. The system of claim 21, the memory containing further instructions executable by the processing circuitry whereby the system is further operative to: retrieve information about any node implementing the first communication scheme and / or the second communication scheme.

23. The system of claim 21 or 22, wherein the memory contains further instructions executable by the processing circuitry whereby the system is further operative to: monitor one or more performance metrics in any node implementing the first communication scheme and / or the second communication scheme.

24. The system of any of claims 21 to 23, wherein the memory contains further instructions executable by the processing circuitry whereby the system is further operative to: dynamically recommend node relocation or redeployment in the first and / or second communication scheme based at least in part on the one or more performance metrics.

25. The system of claim 24, wherein the relocation or redeployment is to another local area network.

26. The system of any of claims 21 to 25, wherein the system comprises at least one of: a virtual machine; a portable bytecode implementation; WebAssembly.

27. The system of any of claims 21 to 26, wherein the first or second communication scheme comprise at least one of: a data distribution service, DDS; a brokerless publish- subscribe technology; a robot operating system, ROS.

28. The system of any of claims 21 to 27, wherein the memory contains further instructions executable by the processing circuitry whereby the system is further operative to: ensure that the one or more incoming communications are in an acceptable format.

29. The system of any of claims 21 to 28, wherein the system comprises at least one of: a user equipment, UE; a network node.

30. A node (800) for providing intercommunication between a first one or more nodes (425, 426, 415) that implement a first communication scheme (420) and a second one or more nodes (460, 470, 480) that implement a second communication scheme (450), the node comprising: a node of either the first or second one or more nodes; an anchor point (810) configured to accept one or more incoming communications from the other communication scheme and perform type matching so that one or more variables of the one or more incoming communications are stored in a suitable format as defined by the communication scheme of the node; a messaging service (820) coupled to the remote procedure call anchor point and configured to transmit one or more communications to the first one or more nodes and / or the second one or more nodes, the one or more communications being based at least in part on the one or more variables; a node discovery service (830) configured to retrieve information about any of the first one or more nodes and / or the second one or more nodes;processing circuitry (3302); and a memory (3304), the memory containing instructions executable by the processing circuitry whereby the node is operative to implement the anchor point, messaging service and node discovery service.

Citation Information

Patent Citations

  • Protocol conversion method anddevice, equipment and storage medium

    CN110891057A

  • Cross-system data access method and device, equipment and medium

    CN115146316A

  • Remote procedure calling method, device and equipment and readable storage medium

    CN115408169A

  • Method and device for implementing remote procedure call

    EP3706382A1