Home

lpenteri edited this page Jan 17, 2017 · 109 revisions
Clone this wiki locally

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++

Robot-agnostic API is available also for C++ developers. Code documentation can be found in C++ API repository.

Following tutorials are prepared to guide developers through the process of creating new RApps.

  • Creating new C++ Rapp - download and compile API packages, prepare new RApp template.
  • Talk to me - number guessing game as an example of robot communication module.
  • Let me see - recognize dominant color on the image; shows how to use robot vision module and convert images back and forth between rapp::object::picture and OpenCV format.

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

In order to check your RApps, RAPP Platform must be installed / deployed somewhere. Below you can find several tutorials on how to install it, or instructions to use an already deployed version:

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:

Some full tutorials for the C++ language can be found here.

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.

As you have seen, the front-end of the RAPP Platform are its web services. You can find more information on the Web services below:

There are various ways to contribute to RAPP Platform.

  • First of all, you can try our scripts and our services and if you identify any errors, please let us know by submitting an issue. We will be happy to help you out!

  • If you want to engage more actively, you can fork our repository into your GitHub account and fix the issue yourself. Then you can create a pull request and we will add your contribution in our code.

  • Finally, if you want to engage further, you can enrich the RAPP Platform with new algorithms, by creating ROS packages, as well as the corresponding HOP services and the API. Then with a pull request, we will check the code and we will merge your contributions.

In order to follow the third contribution alternative, you should take a look at the following tutorials:

Finally, two full-scale tutorials on how to enrich the RAPP Platfom can be found below:

5. Supporting new robots in the RAPP Ecosystem

In order to support new robots in the RAPP Ecosystem you must create a Core Agent. The main functionalities a Core Agent must do are:

  • Communication with the Store for downloading information and RApps
  • Starting / Terminating RApps
  • Offering the implementation of the Robot API

It is highly suggested to take a closer look at the following publications that explain in depth the various architectural aspects of the RAPP Ecosystem, and specifically the Core Agents: