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):
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.
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.
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.
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.
{ "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 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"}
{ "msg-type" : "query" , "query" : { "type" : "<INFORMAION TO QUERY>" }}
The system-related parts of skills are yet to be documented.
The following page demonstrates how skills modeled using the SmartMDSD Toolchain: Support of Skills for Robotic Behavior
This document contains material from: