Skip to content
Shahbaz Youssefi edited this page Jun 3, 2015 · 4 revisions

About Skinware


## What is Skinware?

First, let's talk about robot skin. A robot skin is a sort of covering of the robot that contains sensors, primarily tactile, that provide ubiquitous information from all over the robot body. One example of robot skin, the one with which Skinware has evolved, is CySkin.

Skinware is a real-time middle for robot skins. This means that Skinware is logically placed between the robot skin hardware and the processing algorithms using skin data. Skinware provides an abstract view of skin, regardless of the technology, so that the processing algorithms would be portable and that they wouldn't need to deal with complexities related to each specific hardware. Skinware also manages the real-time acquisition of skin data, so that the user applications can focus just on using them. What's more, Skinware allows those applications to share their data, to avoid having to redo the same processing in different applications.

What is Skinware

(Note: some browsers can't correctly render SVG files)

## Why Skinware?

Robot skin technologies are very new, and as a result, not yet widely used. This means that there are no standards, not even conventions, governing how they should be structured or what their data should look like, and indeed there are already more than a handful robot skin technologies, each looking very different from the other. This creates a set of problems, mostly for the end-users of the robot skin. First of all, it is difficult to choose a particular technology; each has its advantages and disadvantages. Second, it is difficult to switch to a better technology if necessary in the future. It would also be difficult to find already-implemented algorithms for some robot skin, as each is probably written for a particular robot skin technology, possibly different from the one you are using.

Why Skinware

(Note: some browsers can't correctly render SVG files)

All in all, most of these issues relate to software compatibility. Skinware is created to address just that. With Skinware, as an end-user you would have the possibility to experiment with any Skinware-enabled robot skin technology without software-related considerations. As a library/application developer, you would have your code immediately available for all those robot skin technologies. Finally, as a robot skin researcher, you would have all that code available for your new shiny robot skin.

## How does Skinware work?

Skinware at its core implements a real-time inter-process data transfer mechanism. In Skinware, these are referred to as services; one end providing it and the other using it. This data transfer mechanism is particularly adapted to robot skins, where periodic "snapshots" of the sensor data are to be sent to the applications, even though in principle any other data that fits this flow model can be transferred with Skinware.

Using services, Skinware provides the means for transferring robot skin data from drivers to user applications as well as communicating the robot skin structure. Drivers are small processes (or possibly Linux kernel modules) that know how to communicate with the robot skin hardware, and require small interactions with Skinware. Once the data is taken from a driver, its coherent and consistent transfer to the end-users is handled by Skinware alone. This decouples the drivers, i.e., providers of data, and its users, which greatly simplifies the code of both.

Technical details regarding the data transfer mechanism implemented is published here, which also shows the architecture of Skinware 1.0. The changes made to the architecture in Skinware 2.0 will be published soon.

## How to get involved?

If you are a user, please provide us with feedback. This feedback could be anything from bug reports to feature requests to your experience with Skinware.

If you are a library/application developer, first make sure you are able to work with Skinware by following the Tutorials. If you don't have a robot skin available, you can always emulate one through a driver, which is implemented in the respective tutorial.

If you are a robot skin developer, write up a driver. First, head over to the Tutorials to learn how to write one, then adapt the sample driver code to your particular robot skin. If you can successfully run the visualizer bundled with Skinware and see your skin working properly, your driver should work with any other Skinware-based application or library.

If you are a developer interested in Skinware, feel free to contact us (information available in the Home page) to discuss what you could be doing.

Clone this wiki locally