# Robô como serviço

Robô como serviço ou robótica como serviço (RaaS) é uma unidade de computação em nuvem que facilita a integração perfeita de robôs e dispositivos incorporados na internet e no ambiente de computação em nuvem. Em termos de arquitetura orientada a serviços (SOA), uma unidade RaaS inclui serviços para execução de funcionalidades, um diretório de serviços para descoberta e publicação e clientes de serviços para acesso direto do usuário. A implementação atual do RaaS facilita as comunicações SOAP e RESTful entre unidades RaaS e outras unidades de computação em nuvem. Suporte e padrões de hardware estão disponíveis para dar suporte à implementação dessa tecnologia. O perfil de dispositivos para serviços da internet (DPWS) define restrições de implementação para permitir mensagens, descobertas, descrições e eventos seguros de serviços na internet em dispositivos com recursos limitados entre serviços da internet e outras unidades.
Essas tecnologias podem ser consideradas uma unidade da Internet das Coisas (IoT), Internet das Coisas Inteligentes (IoIT) que lida com dispositivos inteligentes que possuem capacidade computacional adequada, O Sistema ciberfísico (CPS) que é uma combinação de um grande núcleo computacional e de comunicação e elementos físicos que podem interagir com o mundo físico, e Sistema autônomo descentralizado (ADS) cujos componentes são projetados para operar de maneira fracamente acoplada e os dados são compartilhados por meio de um protocolo orientado a conteúdo.
O uso mais comum do termo" Robot as a Service" (RaaS) é como um modelo financeiro para a compra e uso de um robô físico industrial ou de serviço. Em um contrato de compra de RaaS, o comprador paga pelo uso do dispositivo físico por meio de um contrato baseado em assinatura. O RaaS é diferenciado de um contrato de locação porque o fabricante original continua a possuir o dispositivo robótico físico e carrega a máquina como um ativo em seus livros. O RaaS está se tornando popular para fornecedores de equipamentos robóticos, pois o adquirente pode comprar o equipamento por meio de orçamentos de despesas operacionais, em vez de despesas de capital. O contrato de serviço para essa tecnologia (RaaS) exige que o fabricante original atualize e mantenha o robô em boas condições de funcionamento durante toda a vida do contrato. Todas as peças e mão de obra para manutenção preventiva também estão presentes no contrato. O fabricante original pode trocar o robô físico por outra máquina equivalente a qualquer momento. O fabricante original pode fornecer serviço remoto, pela internet, para monitorar, fazer triagem e reparar remotamente ou recuperar o sistema. Essa tecnologia leva o nome do modelo de negócios de software como serviço (SaaS), popularizado no mercado de software empresarial.

## História

O projeto inicial e o desenvolvimento da aplicação da computação orientada a serviços em sistemas embarcados e robôs foram apresentados na 49ª reunião dos Grupos de Trabalho IFIP 10.4 em fevereiro de 2006. No design inicial, um robô é o cliente de serviço que consulta o registro do serviço e consome serviços da internet em sites remotos. Desenvolvido a partir de um robô orientado a serviços, o RaaS é uma unidade SOA all-in-one, assim, inclui serviços para execução de funcionalidades, diretório de serviços para descoberta e publicação e aplicações para acesso direto do cliente. Esse design completo fornece à unidade robótica ferramentas e capacidade para ser uma unidade de nuvem independente no ambiente de computação em nuvem. Com base nos conceitos de RaaS, um Visual IoT/Robotics Programming Language Environment (VIPLE) foi desenvolvido.

## Arquitetura RaaS

RaaS segue SOA e é uma unidade de computação baseada em nuvem. Um dispositivo RaaS atua como provedor de serviços, corretor de serviços e como cliente de serviços:
* Uma unidade de nuvem RaaS é um provedor de serviços: cada unidade hospeda um repositório de serviços pré-carregados. Um desenvolvedor ou cliente pode implantar novos serviços ou remover serviços de um robô. Os serviços podem ser utilizados por este robô e também podem ser compartilhados com outros robôs.
* Uma nuvem RaaS contém um conjunto de aplicações implantadas: um desenvolvedor ou cliente pode compor uma nova aplicação (funcionalidade) com base nos serviços disponíveis na unidade e fora da unidade.
* Uma unidade RaaS é um corretor de serviços: um cliente pode consultar os serviços e aplicações disponíveis no diretório da unidade. Um cliente pode pesquisar e descobrir os aplicativos e serviços implantados no robô navegando no diretório. Os serviços e aplicações podem ser organizados em uma hierarquia de classes para facilitar a descoberta.
Os principais componentes de uma unidade RaaS e aplicativos e serviços típicos implantados. As unidades RaaS são desenvolvidas para o ambiente de computação em nuvem. Os serviços se comunicarão com os drivers e outros componentes do sistema operacional, que se comunicarão com os dispositivos e outros componentes do hardware. As unidades podem comunicar-se diretamente entre si através de Wi-Fi, se a infraestrutura sem fio estiver disponível, ou através de rede sem fio ad hoc, caso contrário, a comunicação entre RaaS e outros serviços na nuvem é realizada através de interface de serviço padrão WSDL habilitada por DPWS ou serviço RESTful HTTP geral.
Alguns protótipos foram implementados, que incluem interface Web e unidades físicas.
A confiabilidade e a segurança são essenciais no design desses serviços. As unidades RaaS colaborativas podem ser programadas para execução redundante, fazendo backup das operações umas das outras. O design redundante também pode lidar com ataques em nível de instrução, como inserção de código e ataques de Programação Orientada a Retorno (ROP). Como as unidades RaaS redundantes são independentes umas das outras, a programação de gadgets em nível de instrução provavelmente gerará sequências diferentes em dispositivos diferentes. Essas diferenças de comportamento podem ser detectadas pela colaboração entre as unidades RaaS. O grande desafio no projeto dessa tecnologia é lidar com a diversidade das redes, aplicações e ambientes ou usuários finais. Na computação em nuvem, os protocolos de rede e comunicação são limitados a alguns padrões, como arquitetura WSDL, SOAP, HTTP e RESTful. Em RaaS, os padrões HTTP, SOAP e WSDL e os aplicativos robóticos são as principais padrões de design.

## Formulários

Essa tecnologia (RaaS) pode ser usado em qualquer lugar onde SOA, computação em nuvem, IoT, CPS e ADS sejam usados. Uma das aplicações no ensino de ciência da computação. O RaaS usa serviços existentes para formar diferentes aplicações ao nível do fluxo de trabalho, o que reduz significativamente a curva de aprendizagem da programação robótica.