Service Robotics Research Center
at Ulm University of Applied Sciences

User Tools

Site Tools



We provide tutorials to learn applying and using the SmartMDSD Toolchain. Tutorials are grouped thematically into lessons. Please check the full list in order to find those best addressing your interests. In case you get into trouble, see Contact and Support. Some of the tutorials are also available as video tutorial YouTube Videos.

The effort to follow these tutorials is fairly low since we provide a virtual machine image (virtual appliance) with everything set-up and ready-to-go.

In addition,

  • HowTo's provide very precise and short descriptions of how to do a specific task in the SmartMDSD Toolchain
  • Student Exercises collects lab work exercises for student courses

Download and Starting

  • In case you already downloaded and installed everything, just skip this part and proceed with the below tutorials.
  • In case someone else did the installation for you, please talk to that person to know about how to access the installation.

Experience Levels

beginner For people just getting in touch with our tools. Basic robotics knowledge is a plus.
advanced For full fledged users who want to apply all parts of the SmartSoft World.
experienced For the full user and robotics experts who want to understand, deeply apply, exploit, and eventually contribute to the SmartSoft World.

Easy Start and Fast Success

Lesson 1: Look at an Existing System and Run it

This lesson guides you through the SmartMDSD Toolchain and software development environment to get an overview and a comfortable start. We do this by running different robots in simulation. You get an immediate impression of the power of the SmartMDSD Toolchain and its development tools. We provide all the hints of where to find more information, documentation, reusable components etc. We will accomplish all the tasks of this tutorial and the next tutorials by using a Virtual Machine.

  • Simple System: Laser Obstacle Avoid
    Explore and run a simple obstacle avoidance robot in simulation
    (Pioneer P3DX and Robotino in Webots).
    • features a simple reactive and collision-free motion of a robot with a laser ranger
    • example is simple by purpose and you get hands-on experience with the toolchain

  • A More Complex System using the Flexible Navigation Stack
    Explore and run a more complex system in simulation (Pioneer P3DX, Robotino, TIAGo, RMP50, Webots). The flexible navigation stack is a full Navigation Stack (mapping, path planning, collision avoidance, localization, etc.). The example is based on a composition of off-the-shelf software components as they are used in physical robots.
    • features a full navigation stack
    • example uses simulation for easy use of different robots in different environments
    • Also available as video tutorial.

Lesson 2: Develop Your First Component, Compose Your First System, Run it in Simulation

  • Develop Your First Domain Model (to be updated)
    Complete the picture of component modeling and become able to add custom services to your component: understand how to model a service definition and how to model a communication object. Important hint: service definitions as well as communication objects are pre-specified for component developers via the domain models and component developers use them as is. They are not introduced by component developers but are agreed upon by domain experts. Nevertheless, component developers can come up with suggestions to domain experts. This tutorial closes the loop for understanding services and communication objects.

Lesson 3: Real-World Deployment

ASCII���Matthias Lutz

This lesson describes how to deploy software components to real-world robots. In the examples, we use a Pioneer P3DX robot and a Robotino robot.

  • Deploy a Simple System onto a Pioneer P3DX (or a Robotino)
    We guide you through the steps of deploying a readily configured system onto a real-world P3DX robot. We use the now already well-known example of reactive navigation (a mobile robot with a laser scanner and an obstacle avoidance algorithm). It is pre-configured for the P3DX robots in the Service Robotics Research Lab of Technische Hochschule Ulm. However, as reactive navigation is independent of specific maps and coordinate system references, you can run it in your environemnt as well. You learn where you find the settings that you need to adjust to your physical robot.


  • Deploy the Flexible Navigation Stack onto a Robotino (or a Pioneer P3DX)
    We guide you through the steps of deploying the flexible navigation stack onto a real-world P3DX robot. The flexible navigation stack requires a map of the environment for localization and symbolic names for regions. These are pre-configured for the Service Robotics Research Lab of Technische Hochschule Ulm.

Lesson 4: Flexible Navigation Stack - New Environments, Skills, and more

Configure the Flexible Navigation Stack for New Environments

Skills used in Systems with the Flexible Navigation Stack

Tier 3: Role-Specific Views and Activities

Skills and Tasks - Component Developer, Behavior Developer, System Builder

This lesson describes how tasks and skills are used by tier-3 roles. The component developer makes the capabilities of his/her component(s) accessible via skills. The behavior developer models task plots. The system builder finally composes components and task plots to systems that can perform jobs.

  • Example: Behavior Developer - Realizing Tasks
    This tutorial explains how a behavior developer models task plots. Task plots are independent from a particular robot and they can be executed with any robot that possesses the required skills. The tutorial explains the role of the behavior developer by the example of box transportation by a mobile robot.
  • «more under preparation»

Using Industry 4.0 Asset Administration Shells

Adding AAS to Components and Systems

The Purpose of an AAS Server and how to use it

Interacting with the AAS

Interacting with other Technologies

Lesson 5: OPC Unified Architecture (OPC UA)

This lesson describes how to use the SmartMDSD Toolchain with the OPC Unified Architecture (OPC UA). More specifically, the lesson describes how to model and use a Mixed-Port Component for OPC UA.

Lesson 6: Interfacing with ROS Subsystems

This expert-level lesson describes how to access ROS nodes from the SmartMDSD Toolchain, i.e. how to use an existing ROS subsystem with the SmartMDSD Toolchain. More specifically, the lesson describes how to model and use a Mixed-Port Component for ROS.

Lesson 7: Raspberry Pi

This expert-level lesson describes everything you need to get started with the SmartMDSD Toolchain and Raspberry Pi. We will use the example of a LED-powered traffic light.

Lesson 8: GoPiGo Robot and Webots Simulator

This advanced lesson describes how to use the SmartMDSD Toolchain with the GoPiGo Robot from Dexter Industries. The lesson covers a tutorial for getting started in pure software using simulation and how to operate the hardware robot. A video demonstration of the GoPiGo and Webots simulator is available at

Dependency Graphs

Lesson 9: Dependency-Graph extensions for SmartMDSD Toolchain (SmartDG)

Dependency Graphs are networks of dependencies that emerge from the flow of system-level characteristics, controlled by evidence and business logic. Dependency Objects are entities that encapsulate a distinct system characteristic of the system that is relevant to and are altered by components and connectors that compose the system.

This lesson describes how to use the SmartMDSD Toolchain with SmartDG: The Dependency-Graph extensions for SmartMDSD Toolchain. More specifically, these lessons give a detailed account of how to add Dependency Graph Elements to existing SmartMDSD components and system projects. This tutorial is also available as video tutorial.

  • SmartDG : Import and Use Tier-2 Environments and Service models
    A Tier-2 SmartDG Environment allows declaration of domain-specific Dependency Objects, Software Components, and approved Transfer Functions for Components provided by their manufacturers. This tutorial describes how to import and use a Tier-2 domain-specific SmartDG Environment model. This tutorial further describes how to import any SmartDG Service model in the workspace.
    This tutorial is also available as video tutorial.

Variability Management based on Dependency Variability Graphs

Lesson: Modeling, Composing and Resolving Multi-Dimensional Variability Spaces

This is a proof of concept implementation of a general method for variability management in service robotics. It allows to model, compose and resolve variability of software building blocks. It takes into account the principles of separation of roles and composition.

The model-driven implementation in Eclipse allows users to describe via DSLs:

  1. Building blocks at different levels of abstraction, their variability entities and the decomposition relationships between building blocks.
  2. Dependency Variability Graphs: The graph-based dependency relationships between variability entities (including their values by applying function composition).

A code generator is then able to generate a solver of such models that determines requirements-related and environmental-contextual variant bindings of building blocks. Requirements specified by the endusers of these building blocks can be constraints for specific properties of the model (a property is a special subtype of a variability entity) and/or preference specifications for modeled conflict of objectives between properties.

  • Details on the Building Block Feature
    With the Building Block Feature we can model Building Blocks and their decomposition structure and define their variability types. Such Building Blocks can represent specific implementations or task requirements.
  • Details on the DVG Feature
    After a Building Block is modeled with the relevant variability types, we need to describe how these variabilities relate. This can be done by the DVG models presented here.
  • Details on the TCL Feature
    This feature allows you to program the behavior of service robots. It is an implementation of the LISP-based DSL SmartTCL with the Eclipse Modeling Tools. In contrast to the more general Building Block Feature, this allows you to program concrete behavior for simulated or real robots due to its close integration with the SmartSoft Approach. Furthermore, a first simple implementation exists that allows to define relations from a TCL model to a Building Block model and a DVG model to have an automatic support for the evaluation process and the resulting configuration step.

Tier 2: Domain-Experts

Lesson 10: Tier-2 Domain Models by Domain Experts

This lesson is intended for domain experts working at Tier 2. You learn how to introduce domain specific models.

Advanced Tutorials

Helpful Tools

In this section, we list a set of lessons which explain to you helpful tools.

Upcoming Tutorials

Former and Outdated Material

  • See video tutorials of the v2-generation of the SmartMDSD Toolchain at YouTube.
  • You can also find screencasts of the SmartMDSD Toolchain's first generation as of 2009 (outdated).
tutorials/start.txt · Last modified: 2023/02/23 18:46 by admin

DokuWiki Appliance - Powered by TurnKey Linux