# RobMoSys Wiki

http://www.robmosys.eu

### Site Tools

composition:skills:start

# Skills for Robotic Behavior

Robotics behavior coordination is the composition and coordination of functionalities (other terms: basic capabilities, skills, etc.) to realize a task a robot should perform. A robotic behavior realizing a logistics task would for example use the robots functionalities to move itself and to manipulate things to realize an order picking task. To do so, the robotic behavior needs (on the lower end) to deal with the coordination of the software components of the system that provide the functionality.

To allow for composition and to enable the separation of roles, robotics behavior blocks can be separated into different levels of abstraction: skill and task. While tasks describe how a robot does something in an abstract and independent manner, a skill provides access to functionalities realized by components for the usage within tasks. Skills therefore lift the level of abstraction from functional and service to a skill abstraction level, being usable from a task abstraction level for robotics behavior development.

The following sections describes the big picture how the separated roles will collaborate for robotics behavior development (see the following figure as well):

## Skill Definition - Domain Experts (Tier 2)

The separation of the skill definition, modeling the interface and the skill realization enables the replacement and the composition of components (providing the same skill) and decouples the component from the Behavior Developer and the technology used to realize robotics behaviors on task level. The role of the Domain Expert therefore is able to define skill definitions modeling the interface of skills on tier 2, not yet deciding how a skill is realized. As a result, the skill definition is any component that realizes it.

## Skill Realization - Component Developers (Tier 3)

The skill definitions modeled by the Domain Experts are used by the role of the Component Developer to realize the coordination of its component, making the components functionality accessible for behavior coordination. The role of the Component Developer is decoupled from the role of the Behavior Developer and can realize the components functionality and the skill according to the skill definition only.

## Behavior Development - Robotics Behavior Developer (Tier 3)

The role of the Robotics Behavior Developer is able to realize the behavior tasks (abstraction level) using the skill definitions as interface to the functionalities later provided by the components. In case the behavior is developed for a known system the list of available skills can be received from the system digital data sheet, provided by the role of the System Builder.

## Skill Usage at Run-Time

To make use of existing skills (see system digital data sheet), a task level behavior coordination approach can use existing skills via a run-time skill interface. This enables the usage of different behavior coordination approaches without the need to realize the skills (accessing the components, lifting the level of abstraction) over and over again.

An example realization of the interface can be seen within the software component “ComponentSkillInterface” and is accessible via a json based protocol. The interface is kept lightweight and by purpose without RobMoSys communication patterns in order to enable the simple integration with existing infrastructure. It is realized using plain sockets or zeromq JSON communication.

The protocol is straight forward and can be sketched as follows. For further details see the software component ComponentSkillInterface.

### Push Skill for Execution

{ "msg-type" : "push-skill" , "id" : <ID>, "skill" : { "name" : "<SKILLNAME>", "skillDefinitionFQN" : "<SKILL FQN>", "in-attribute" : { "<ATTRIBUTE>" : <VALUE> }, "out-attribute" : { "<ATTRIBUTE>" : <VALUE> }}}

Skill execution result-msg:

{ "msg-type" : "skill-result" , "id" : <ID> , "result" : { "result" : "<SUCCESS|ERROR>", "result-value" : "<VALUE>" }}

### Abort Skill

Abort current skill:

{ "msg-type" : "abort-current-running-skill" }
{ "msg-type" : "abort-current-running-skill-result", "result" : "<SUCCESS|ERROR>"}

Abort skill:

{ "msg-type" : "abort-skill", "id" : 2 }
{ "msg-type" : "abort-skill-result", "id" : 2, "result" : "SUCCESS"}

### Optional Information Query

{ "msg-type" : "query" , "query" :  { "type" : "<INFORMAION TO QUERY>" }}

## RobMoSys Modeling Support

The system-related parts of skills are yet to be documented.

## RobMoSys Tooling Support

The following page demonstrates how skills modeled using the SmartMDSD Toolchain: Support of Skills for Robotic Behavior

## Acknowledgement

This document contains material from:

• Lutz2017 Matthias Lutz, “Model-Driven Behavior Development for Service Robotic Systems: Bridging the Gap between Software- and Behavior-Models,” 2017. (unpublished work)