Skip to content
Manos Tsardoulias edited this page Nov 11, 2016 · 109 revisions

##1. RAPP Ecosystem

RAPP provides a robot agnostic approach by introducing a middleware stack with added functionalities suitable for different kinds of robots. In this way, developers will be able to utilize a common API (RAPP Robot API) in order to access the robot’s sensors and actuators. A number of high level services and functionalities for implementing RApps are also offered by the RAPP Platform and are accessible through the RAPP Platform API. The RAPP Platform offers a cloud-based solution that lifts the underlying robotic hardware computational and storage limitations and enables advanced machine learning operations, distributed data collection and processing, as well as knowledge sharing among robots. The developed RApps are hosted in the proposed RAPP Store, which is ultimately expected to have an important effect in the robotic application market. The adoption of a common API will provide developers with the versatility needed to address people with different needs, capabilities and expectations, while simultaneously respecting their privacy and autonomy.

##2. Get involved!

There are three levels of technical involvement in RAPP:

  • Create robotic applications for a robot already supported by RAPP Ecosystem by using the RAPP Platform API and the RAPP Robot API
  • Enrich the RAPP Platform by introducing new off-the-shelve robotic-oriented functionalities
  • Support a new robot in the RAPP Ecosystem

Below, the necessary documentation, tutorials and examples for each of the involvement levels are presented.

##3. Robotic Applications (RApps) development

There are three concepts involved with the creation of robotic applications:

  • Create a stand-alone application to manipulate the robot
  • Create an application that uses RAPP Platform web services
  • Upload and distribute your application

For all the above cases you must have a robot supported by RAPP, either in its physical form or in simulation. Right now, the only consumer robot supported is NAO, by SoftBank robotics.

In order to test the created applications in your robot, specialized software must be installed first, called the Core Agent of each robot (for more information check the RAPP Architecture). You can find information on how to install this software, by following the below links:

  • For NAO robot:
    • If you want to create C++ RApps: NAO robot Core Agent.
    • If you want to create Python RApps you don't have to install a Core Agent, since NAOqi uptakes this task.

###3.1. How to: Create stand-alone RApps

After you have installed the Core Agent in your robot, you can start creating RApps (Robotic Applications). For creating stand-alone robotic applications you only need the RAPP Robot API (C++ or Python).

####3.1.1. RAPP Robot API - Python

Concerning the Python RAPP Robot API, RAPP provides a robot-agnostic API which can be found in the following link: Python RAPP Robot API.

Two full tutorials on how to create Python RApps for the NAO case follow:

####3.1.2. RAPP Robot API - C++

INPUT NEEDED!

###3.2. How to: Create RApps that use RAPP Platform functionalities

For manipulating robots that invoke some of the RAPP Platform functionalities, you must use two APIs: the RAPP Robot API and the RAPP Platform API. The RAPP Platform API is offered in Python, C++ and JS. The documentation for each of the three languages follows:

RAPP Platform functionalities can be utilized by robots via standard web services. The service layer has been developed using HOP consisting of a web server implementation, an http/https server, and the web services developed in Hop.js framework. Web services are executed within forked server-side web workers, each of which can include more than one web services allowing concurrent execution. Currently, the RAPP Platform hosts 27 web services, allowing robot platforms to gain access to the RIC functionalities described previously. The RAPP Platform nodes are fully described below:

Some RApp full tutorials for the Python language follow:

###3.3. How to: Upload and distribute your RApps

In order to upload and distribute your RApps you must utilize the RAPP Store. You can read the RAPP Store documentation here.

##4. RAPP Platform enrichment

In order to enrich the RAPP Platform with new functionalities, you must gain knowledge on the overall RAPP Architecture. In order to do this visit the following link: RAPP Architecture & component diagram.

Furthermore, you must be aware of the RAPP Platform multithreading policy, since RAPP Platform is meant to be deployed in the cloud. You can find more information here: RAPP Multithreading issues.

###RAPP Web services

##5. Supporting new robots in the RAPP Ecosystem

Clone this wiki locally