Table of Contents
Deploying the Flexible Navigation Stack in Real World
Deploy the flexible navigation stack onto a physical robot (Robotino or Pioneer P3DX).
Basic Information
Level | Beginner |
---|---|
Role | System builder, but also other roles while browsing through the system's building blocks |
Assumptions | having completed A More Complex System using the Flexible Navigation Stack |
System Requirements | access to a physical - Robotino mobile robot with a SICK LMS100 laser ranger - or to a Pioneer P3DX mobile robot with a SICK LMS200 laser ranger Virtual Machine Image Installed, see ready-to-go virtual machine Real robots equipped with SmartSoft runtime environment, see real robot runtime environment |
You will learn | - how to deploy the flexible navigation stack to a physical robot - how to start the deployed system, run the physical robot, and stop the system |
Options | - SystemRobotinoNavigationRealWorld - SystemP3dxNavigationRealWorld |
Description
This tutorial guides you through the steps of deploying a readily configured system onto a physical Robotino mobile robot (SystemRobotinoNavigationRealWorld) or onto a physical Pioneer P3DX mobile robot (SystemP3dxNavigationRealWorld).
We use the now already well-known flexible navigation stack (see A More Complex System using the Flexible Navigation Stack). Instead of using the Webots simulator and instead of deploying the system to our PC, we now deploy the components onto a physical robot. For this, we replaced in our system the simulator components (ComponentWebots, ComponentWebotsMobileRobot, ComponentWebots2DLidar) by the components for the physical robot
- Robotino: ComponentRobotinoBaseServer, ComponentLaserLMS1xx
- Pioneer P3DX: SmartPioneerBaseServer, SmartLaserLMS200Server
As the flexible navigation stack depends on a map of the environment and of coordinate system references and as those are pre-configured for the Service Robotics Research Lab of Technische Hochschule Ulm (SRRC THU), you can run this configuration “as is” only in the SRRC THU. Please see Lesson 4: Flexible Navigation Stack - New Environments, Skills, and more to learn how you can adapt the system to your environment.
So, if you
- have access to either a Robotino robot with a SICK LMS100 laser ranger or a Pioneer P3DX robot with a SICK LMS200 laser ranger
- installed Ubuntu 20.04 LTS 64 bit on the computer on-board the robot
- have access to the SRRC THU (or adapt to your environment as described in Lesson 4: Flexible Navigation Stack - New Environments, Skills, and more)
then you can proceed with the next steps in this tutorial. See also
The System with the Flexible Navigation Stack
System Architecture View
Instead of using the Webots simulator and instead of deploying the system to your PC, we now deploy the components onto a physical robot. For this, we replaced in our system the simulator components (ComponentWebots, ComponentWebotsMobileRobot, ComponentWebots2DLidar) by the components for the physical robot
- Robotino: ComponentRobotinoBaseServer, ComponentLaserLMS1xx
- Pioneer P3DX: SmartPioneerBaseServer, SmartLaserLMS200Server
Step 1: Open the project SystemRobotinoNavigationRealWorld and you can see the components for the physical robot and the components of the flexible navigation stack. The components of the flexible navigation stack are not changed at all (even the binaries are the same as in A More Complex System using the Flexible Navigation Stack). The services of the components of the flexible navigation stack are now just connected to services of components for physical devices (ComponentRobotinoBaseServer & ComponentLaserLMS1xx or SmartPioneerBaseServer & SmartLaserLMS200Server) instead to services of components for simulated devices (ComponentWebotsMobileRobot, ComponentWebots2DLidar).
Target Platform View
The figure below shows the target platform configuration. As we are deploying the components onto the real robot, details of the computer on-board the physical robot need to be specified (you might want to check the target platform view in A More Complex System using the Flexible Navigation Stack for explanations).
Details of the Network Interface
Step 2: We need to provide the network interface in order to be able to reach this target platform. Host address (IP address of the robot) and the name of the network interface are used, type and port number are optional.
Deployment View
Deployment
Step 3: Deploy the system.
Step 4: You are now prompted for a password. We configured the system to use the login Student. for which the passwort is student. Just enter the password and the deployment gets completed.
Step 5: Now a message box appears and asks whether you want to start execution. Answer No.
Start, Run and Stop the System
Check for VNC installation in your system
Step 6: Installation of the vncviewer in your PC for accessing the robot:
- sudo apt-get install xtightvncviewer
- of course, you can also use any other suitable tool
Start the Deployed System and Run the Robot
Step 7: Place the robot as shown below. This is the initial pose configured in the deployment and used as starting pose by the localization component. Thus, it is important to start with the configured pose as otherwise a mismatch between perceived laserscans and the reference map occurs and the robot cannot operate.
Step 8: Start vncviewer using robot ip address as shown. Login to the robot using the account student with password student and then navigate to the specified deployment folder. The default folder is /tmp. In there you find a folder with the name of the system project. In this tutorial, we use SystemRobotinoNavigationRealWorld.
Step 9: Now you can start the system as shown below using the indicated shell script.
Step 10: Look for the terminal which contains the ComponentTCLSequencer.
In the menu, select “5 - Approach location” and enter one of the offered names for locations.
Now, the robot navigates to this destination and stops there.
Stop the System
Step 11: You can use the same shell script to stop the system (use stop instead of start as argument)
What to do next?
Now you can proceed with tutorial Creating your Own Real-World Deployment