RAPP Platform Wiki  v0.6.0
RAPP Platform is a collection of ROS nodes and back-end processes that aim to deliver ready-to-use generic services to robots
 All Files Pages
HOP-Services---General-Information

RAPP Improvement Center (RIC) nodes, can be utilized by robots via the RAPP Platform Web Services. The service layer has been developed using HOP. That consists of a web server implementation, an http/https server, and the web services developed in Hop.js framework. Web services run within server-side workers (web workers). A worker can include more than one web service. We consider server-side workers to be forked processes, thus allowing concurrent execution.

As HOP-Web-Services act as the interface layer between the Robot Platform and the Cloud Platform (along with the RAPP API), the development of those depends on both Client (User/Developer) and RIC requirements.

Web service responses are asynchronous http responses. This way we allow robot platforms to request for cloud services while performing other tasks.

Robot platforms can access RAPP Platform services using HTTP POST requests, as most of the services require an arbitrary amount of data to be sent to the Cloud for processing, like image and audio data files. HOP Web Server has been configured to accept application/x-www-urlencoded and *multipart/form-data form submissions.

The RAPP API, used from the client-side platform, integrates calls to the HOP Server and furthermore to the HOP Web Services. A HOP Web Service delegates service calls to the RAPP Services through the Rosbridge transport layer. Rosbridge Server provides a WebSocket transport layer to ROS and so it allows web clients to talk ROS using the rosbridge protocol. We use the Rosbridge Websocket Server in order to interfere with AI modules developed under ROS. That WebSocket server is not exposed to the public network and it is only accessible locally.

The communication workflow, from the client-side platform to RAPP Services can be severed into the following independent interface layers:

  • Client-side Platform -> HOP Server.
  • HOP Server -> HOP Web Services.
  • HOP Web Services -> Rosbridge WebSocket Server.
  • Rosbridge WebSocket Server -> RAPP Services (ROS Services).

[[images/platform-comm-layers.png]]

Currently, HOP-Server is configured to act as an HTTP/HTTPS Web Server (Does not accept proxy connections).

Deploy HOP Web Server

First, go the rapp_web_services directory:

```shell $ cd ${HOME}/rapp_platform/rapp-platform-catkin-ws/src/rapp-platform/rapp_web_services ```

Install required dependencies:

```shell $ npm install ```

For initiating HOP Web Server (and HOP Web Services), a grunt task exists:

```shell $ grunt init-hop ```

HOP Web Server can also be deployed through the deploy_web_services.sh script

Note: Do not change HOP Server configuration parameters, unless you know what you are doing!!