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. We recommend to go through the material in the listed order. In case you get into trouble, see Contact and Support. Some of the tutorials are also available as video tutorial in a YouTube Playlist

In addition, check our list of HowTo's that provide very precise and short descriptions of a specific task in the SmartMDSD Toolchain.

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.

Experience Levels

If you only want to try things out but do not want to touch your system, please use the Virtual Machine setup. Even though you can follow all tutorials with the virtual machine, we recommend to setup an own enviroment for tutorial levels „advanced“ and „experienced“.

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.

Lesson 0: Preparation

We assume that you successfully followed either option 1 or option 2 (both options can also be reached via the Getting Started Guide):

  • option 1: you downloaded the virtual appliance (recommended for an easy start)
  • option 2: you did a direct installation onto your computer (recommended only in case you need the full performance)

In case, someone else did the installation for you, please talk to that person to know about how to access the installation.

The following tutorial gives you very basic information:

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: Configure the Flexible Navigation Stack for New Environments

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

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.

:!: To use the SmartDG feature, wait for SmartMDSD Eclipse Toolchain and Virtual Machine (To be released very soon) :!:


Additional material

Upcoming Tutorials

  • Deploying additional files
  • Component Mode Definition and usage + life-cycle
  • Skill modeling

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: 2021/04/15 15:31 by Christian Schlegel