User Tools

Site Tools


Using the YARP Framework and the R1 robot with RobMoSys

This demonstration shows an example and proof-of-concept how to use software building blocks based on the YARP Framework via RobMoSys tooling (here with the SmartMDSD Toolchain).


This demonstration is a proof-of-concept, early development result, and test-bed in the effort to develop a general model-driven methodology to enable the use of any robotics Framework with the RobMoSys approach by utilizing a so-called “Mixed-Port Component”. These components have “one leg” in RobMoSys and another leg in the specific world. More precisely, these components bridge RobMoSys with other frameworks. See the below illustration for YARP:

The specific technical demonstration featured here shows:

  • The R1 robot running with RobMoSys components and YARP components in the Gazebo simulator.
  • The example realizes the Flexible Navigation Stack using software components from the Intralogistics Industry 4.0 Robot Fleet Pilot with the R1 robot by IIT.
  • The scenario is realized using the SmartMDSD Toolchain, a RobMoSys-conformant tooling: The SmartMDSD Toolchain is used to compose software components that a) encapsulate a YARP system via specific mixed-port components and b) connect to native SmartSoft components modeled and generated via the RobMoSys tool SmartMDSD Toolchain. Prior to this step, these mixed-port components have been developed themselves using the RobMoSys approach via the SmartMDSD Toolchain.

The use of YARP and RobMoSys development artifacts in one system illustrates how the structures of RobMoSys can connect two worlds that previously were divided. The immediate benefit of both communities is that they can collaborate and share development efforts more easily. This is ongoing work and further improvements and more native support are planned.

In the Context of RobMoSys User-Stories

In context of the RobMoSys technical user stories, the demonstration shows:

  • Composable components: use the provided software components and compose the application from scratch.
  • Replaceable components: Taking the Gazebo/TIAGo/SmartSoft Scenario as a start and modify it to replace the TIAGo robot with the R1 robot
  • Re-usable: Use this system as a basis for navigation and build on-top any application that uses a mobile base. This demo shows how to re-use the R1 robot in Gazebo.
  • Standardization of models and interfaces: it's support via RobMoSys and its benefit is demonstrated by the use of RobMoSys Tier 2 Domain Models: The interfaces (service definitions) of the Flexible Navigation Stack have been modeled and are re-used here. It is an example of how general domain models can be mapped to a variety of concrete applications (R1 robot as described here, Gazebo/TIAGo/SmartSoft Scenario, Intralogistics Industry 4.0 Robot Fleet Pilot, etc.)
  • Ease-of-use and Simplifying usability & integration: Bridging between the SmartSoft Framework (it is conform to RobMoSys) and the YARP Framework thanks to RobMoSys composition structures. This support is at the moment very basic and will improve in the near future (see section “Current State and Roadmap” below)

Disclaimer: This demonstration is a proof-of-concept of the technical feasibility. Please look at the roadmap to see how it is planned to advance this demonstration and to make it generally accessible via tooling.

Technical Details

To realize the demonstration, several mixed-port components have been developed using the RobMoSys way of component development via the SmartMDSD Toolchain. The mixed-port components are hybrid components (a RobMoSys component that has „one leg“ in the SmartSoft World and „another leg“ in the YARP world) and realize the communication between YARP and components of the SmartSoft Framework.

Beneath each mixed-port component lies a whole system of YARP components that become accessible through the RobMoSys services of the mixed-port component. The way these services are designed follows the principle of the Flexible Navigation Stack, an example of RobMoSys Tier 2 domain models.

For the moment, the mixed-port components are manually implemented. In general, glue logic can convert between RobMoSys and other frameworks. The effort to do so and the reuse of such a mixed-port component heavily depends on the structures of the target framework. In case of YARP, it was possible to map the RobMoSys communication patterns to YARP. At the moment, the RobMoSys Send, Query and Push patterns have been mapped to YARP already. In some cases this required to extend YARP (i.e. to support asynchronous Query). See the roadmap on how RobMoSys and CARVE plan to extend the native support.

Components in the System

Below figure shows a screenshot of the system component architecture diagram as modeled in the SmartMDSD Toolchain (see GitHub Repository for SmartMDSD Toolchain project).

The scenario features the following software components:

  • SmartMapperGridMap This component receives a current laser-scan and accumulates the information from this scan into a locally maintained grid-map.
  • SmartPlannerBreadthFirstSearch This component takes a current grid-map and the current destination location as input and calculates a path (consisting of intermediate way-points) to reach that destination

SmartCdlServer: This component implements an obstacle-avoidance algorithm, such as e.g. the Curvature Distance Lookup (CDL) approach. This components takes two inputs, namely the current laser-scan and the next way-point to approach and calculates a navigation command that approaches the next way-point on the as direct curvature as possible avoiding any collisions.

  • SmartRobotConsole A very simple if-then-else sequencer component to coordinate all components via the software component's coordination interface
  • BridgeV3_FromYarp_BaseStateService accessing R1 odometry from YARP via RobMoSys domain models
  • BridgeV3_FromYarp_LaserService accessing YARP laser ranger components via RobMoSys domain models
  • BridgeV3_ToYarp_CommNavigationVelocity accessing the R1 robot base via RobMoSys domain models of the Flexible Navigation Stack in the Gazebo simulator

Further Information

Fur further information, see also the following RobMoSys wiki resources to learn more about the RobMoSys concepts used here:

Current State and Roadmap

As of September 2018, you can:

  • Use the R1 robot driven by the YARP framework from RobMoSys via the provided mixed-port components in the SmartMDSD Toolchain
  • Build your own bridges to the YARP framework by following the example components provided

Please note that this demonstration is work in progress. The following future work is is under preparation:

  • The general concept of “Mixed-Port-Components” to bridge between RobMoSys and any world.

Documentation how to reproduce the here described example in order to use the R1 robot in Gazebo via RobMoSys methodology.

  • Integrating RobMoSys and YARP Framework more natively according to the RobMoSys composition structures. A focus will be set on YARP conforming to the RobMoSys communication patterns. This will heavily reduce the manual effort in mixed-port components. Mixed-Port-Concept comes with adequate model-driven tooling support to make the benefits accessible by users.
  • For this purpose, the RobMoSys Communication Patterns Send, Query, and Push patterns have been mapped to YARP already. More mappings are to follow.


This list summarizes the demos which show the work done in the ITP CARVE:

Video demonstrating YARP-SmartSoft integration:

Video demonstrating static analysis of a correct BT with NuSMV:

Video demonstrating static analysis of an incorrect BT with NuSMV:

Videos demonstrating scenario 1 execution and runtime monitors for scenario 1 and scenario 2 in simulation:,

Videos demonstrating scenario 1-3 on the real robot:

Runtime monitors detect when a skill becomes irresponsive (simulation):

Runtime monitors detect unexpected behavior in the environment (real robot):


To discuss this demonstration, join the discussion at Discourse


This technical demonstration has been realized by the CARVE project. The methodology to generalize the approach and integrate YARP access with the RobMoSys structures is a joint effort of the CARVE project and the Ulm University of Applied Sciences. The general methodology behind “Mixed Port Components” is driven by Ulm University of Applied Sciences.

CARVE is an Integrated Technical Project (ITP) of EU H2020 RobMoSys ( Ulm University of Applied Sciences is a RobMoSys core partner.

This activity has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 732410.

Picture of the R1 robot by D.Farina-A.Abrusci © 2016 IIT.

See Also

community:yarp-with-robmosys:start · Last modified: 2019/04/18 12:03