Service Robotics Research Center
at Ulm University of Applied Sciences

User Tools

Site Tools


A More Complex System using the Flexible Navigation Stack

Explore and run a more complex system in simulation: the flexible navigation stack that that is in use with real-world service robots.

Basic Information

Level Beginner
Role System builder, but also other roles while browsing through the system's building blocks
Assumptions Having completed tutorial Simple System: Laser Obstacle Avoid
System Requirements Virtual Machine Image Installed, see ready-to-go virtual machine
You will learn How you can use a complex and prebuilt system
How components interact with each other based on services and how these are wired


This Tutorial is an example of a more complex project which involves more than two components in system composition. These components include a path planner, a map building, obstacle avoid and motor control Component. The system features the flexible navigation stack which in use in real-world service robots.

The following sections will guide you through all necessary steps to run a system project. We will browse the different levels of the system (system component architecture model, target platform model, deployment model) and explore the involved components.

System Component Architecture Model

To open the system project, double click on the project SystemP3dxNavigationPlayerStageSimulator.

To explore the system composition of this project, you have two different options. Double-click one of the items highlighted in the figure to open the system component architecture:

The system component architecture models instances of software components and the connection of their provided or required services. In this example, different components are composed in a system, the description of the components are as follows:

  • SmartMapperGridMap: probabilistic 2D grid map (long term map, current map): maps the environment
  • SmartPlannerBreadthFirstSearch: breadth first search algorithm to find path in map towards goal sends intermediate waypoints to the CDL motion execution component
  • SmartCdlServer: drives towards intermediate waypoints from planner taking into account robot kinematics,dynamics, shape
  • SmartRobotConsole: simple user interface for the above components
  • ComponentPlayerStageSimulator: this is used for the simulation of the robot.

Target Platform Model

The figure below shows the target platform model of the system. This model configures the runtime environment and hardware details.

Deployment Configuration

The Deployment model shows the mapping of software artefacts to the hardware platform. I.e. it models which artefact will be “deployed”/transferred to and run on which platform. In our example, we will deploy to the local system. In real-world examples, we can deploy to remote targets and distribute a system to multiple targets.

Running the System


As shown in the snapshot below, right click on the project and select SmartMDSD Build Tools → Deploy. This will collect and copy the software artifacts and transfer them to the target/robot.

Starting the System: The Hospital World Scenario

After the deployment is finished, you can start the scenario. Click “yes” in the dialogue that pops up. It will launch the scenario control menu as shown in below figure:

Select Menu-start start scenario and press Enter to start the execution of the project. It will launch the few more consoles to support the selection of user choices. In the console, select 0 for Hospital World simulation as shown in snapshot below.

It will launch multiple consoles again, as for each component in the system it has it's own console.

Look for the terminal which contains the robot console, a very simple variant of a “Sequencer”.

choose “99 - Demos” (type 99 and hit enter) to get the list of the demos and choose “2 Demo 2 Planner-CDL GOTO”

Now you can enter coordinates. The coordinates are specified in millimeters. The initial position of the robot is (x:0 y:0). E.g. entering “(1000)(0)” moves the robot to the position x:1m / y:0m The robot now drives to the entered position as you can see in the simulator

To move the robot to another goal, answer “Enter Goal? (y/n):” with “y“ and enter the coordinates, e.g. “(0)(0)” to move to the initial position

If you displace the robot, it starts moving again to the last commanded position the demo stops by entering “n” if you are asked whether you want to enter a goal.

Further Information

What to do next?

The next tutorial is Developing Your First Software Component , which will guide you for creating your first own Component step by step.

Optional: A realistic setting of the very same navigation stack that was presented here is demonstrated by the RobMoSys Gazebo/TIAGo/SmartSoft Scenario using the PAL Robotics TIAGo service robot. Find it at the RobMoSys Wiki. You may also want to explore it!


tutorials/flexible-navigation-task/start.txt · Last modified: 2019/09/24 12:49 by gdange