# Robot as a service

Robot as a service or robotics as a service (RaaS) is a cloud computing unit that facilitates the seamless integration of robot and embedded devices into Web and cloud computing environment. In terms of service-oriented architecture (SOA), a RaaS unit includes services for performing functionality, a service directory for discovery and publishing, and service clients for user's direct access. The current RaaS implementation facilitates SOAP and RESTful communications between RaaS units and the other cloud computing units. Hardware support and standards are available to support RaaS implementation. Devices Profile for Web Services (DPWS) defines implementation constraints to enable secure Web Service messaging, discovery, description, and eventing on resource-constrained devices between Web services and devices.
RaaS can be considered a unit of the Internet of Things (IoT), Internet of Intelligent Things (IoIT) that deal with intelligent devices that have adequate computing capacity, Cyber-physical system (CPS) that is a combination of a large computational and communication core and physical elements that can interact with the physical world, and Autonomous decentralized system (ADS) whose components are designed to operate in a loosely coupled manner and data are shared through a content-oriented protocol.
The more common usage of the term Robot as a Service (RaaS), is as a financial model for the purchase and use of a physical industrial or service robot. In a RaaS purchase contract, the buyer is paying for the use of the physical device through a subscription-based contract. RaaS is differentiated from a lease contract in that the original manufacturer continues to own the physical robotic device and carries the machine as an asset on its books. RaaS is becoming popular for many robotics equipment providers as the buyer can purchase the equipment through operating expense budgets rather than through a capital expenditure. The service contract for RaaS requires that the original manufacturer update and maintain the robot in good working order throughout the contract life. All parts and labor for preventative maintenance is also included in the RaaS contract. The original manufacturer may swap out the physical robot with another, equivalent machine at any time. In addition, the original manufacturer may provide remote service, via the Web, to remotely monitor, triage and repair, or recover the system. RaaS takes its name from the software as a service (SaaS) business model, popularized in the enterprise software market.

## History

The initial design and implementation of applying service-oriented computing in embedded systems and robots was presented in the 49th IFIP 10.4 Workgroups meeting in February 2006. In the initial design, a robot is the service client that looks up the service registry and consumes Web services on remote sites. Evolved from service-oriented robot, Robot as a Service is an all-in-one SOA unit, that is, the unit includes services for performing functionality, service directory for discovery and publishing, and applications for client’s direct access. This all-in-one design gives the robot unit tools and capacity to be a self-contained cloud unit in the cloud computing environment. Based on RaaS concepts, a Visual IoT/Robotics Programming Language Environment (VIPLE) has been developed.

## RaaS architecture

RaaS follows SOA and is a cloud computing unit. A RaaS unit acts as a service provider, a service broker, and as a service client:
* A RaaS cloud unit is a service provider: Each unit hosts a repository of preloaded services. A developer or a client can deploy new services into or remove service from a robot. The services can be used by this robot and can also be shared with other robots.
* A RaaS cloud contains a set of applications deployed: A developer or client can compose a new application (functionality) based on the services available in the unit and outside the unit.
* A RaaS unit is a service broker: a client can look up the services and applications available in the unit’s directory. A client can search and discover the applications and services deployed on the robot by browsing the directory. The services and applications can be organized in a hierarchy of classes to facilitate the discovery.
The main components of a RaaS unit and typical applications and services deployed. RaaS units are designed for the cloud computing environment. The services in RaaS will communicate with the drivers and other operating system components, which further communicate with the devices and other hardware components. The RaaS units can directly communicate with each other through Wi-Fi, if the wireless infrastructure is available or through ad hoc wireless network otherwise. The communication between RaaS and other services in the cloud are through standard service interface WSDL enabled by DPWS or RESTful service overall HTTP.
A few prototypes of RaaS have been implemented, which include both Web interface and physical devices.
Dependability, including reliability and security are critical in RaaS design. Collaborating RaaS units can be scheduled for redundant execution, backing up each other’s operations. The redundant design can also address the instruction-level attack such as code injection and Return Oriented Programming (ROP) attacks. As the redundant RaaS units are independent of each other, instruction-level gadget programming is likely to generate different sequences in different devices. These differences in behaviors can be detected by the collaboration among the RaaS units. The major challenge in designing RaaS is to deal with the diversity of the networks, applications, and the environments or end users. In cloud computing, the network and communication protocols are limited to a few standards such WSDL, SOAP, HTTP, and RESTful architecture. In RaaS, HTTP, SOAP, and WSDL standards and robotics applications are the main design considerations.

## Applications

RaaS can be used anywhere SOA, cloud computing, IoT, CPS, and ADS are used. One the application in computer science education. RaaS uses existing services to compose different applications at workflow level, which significantly reduce the learning curve of robotics programming.