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 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 context of the RobMoSys technical user stories, the demonstration shows:
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.
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.
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:
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.
Fur further information, see also the following RobMoSys wiki resources to learn more about the RobMoSys concepts used here:
As of September 2018, you can:
Please note that this demonstration is work in progress. The following future work is is under preparation:
Documentation how to reproduce the here described example in order to use the R1 robot in Gazebo via RobMoSys methodology.
This list summarizes the demos which show the work done in the ITP CARVE:
Video demonstrating YARP-SmartSoft integration: https://youtu.be/hyz7RKl_XsU
Video demonstrating static analysis of a correct BT with NuSMV: https://youtu.be/N0Utz-C2HwU
Video demonstrating static analysis of an incorrect BT with NuSMV: https://youtu.be/v_fSNNppIE8
Videos demonstrating scenario 1 execution and runtime monitors for scenario 1 and scenario 2 in simulation: https://youtu.be/QIl2lXeIXeM, https://youtu.be/iKbhblOxxrw
Videos demonstrating scenario 1-3 on the real robot:
Runtime monitors detect when a skill becomes irresponsive (simulation): https://youtu.be/QXL4qzp6Qsk
Runtime monitors detect unexpected behavior in the environment (real robot): https://youtu.be/DzF2GC_Ib3U
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 (robmosys.eu). 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.