Table of Contents

Installation of the SmartSoft World

The virtual appliance is the recommended standard way of using everything. See Ready-To-Go Virtual Appliances for download and installation.

See also Getting Started Guide for guidance on different entry points.

Please see preparation of a real world robot for instructions on installing the SmartSoft runtime environment onto a robot without the development environment.

This is a step-by-step guide for installing the SmartSoft World. This installation guide sets up a complete software development environment with all the required runtime infrastructure and comes with plenty of domain models, software components and even ready-to-run applications and it also comes with simulators. This installation is fully based on Open Source.

The following table lists the current recommendations for the operating system, the SmartMDSD Toolchain and the Java Runtime Environment:

Software Version
Ubuntu 20.04
SmartMDSD Toolchain v3.19
Java Runtime Environment (JRE) 11
Hardware Version
Architecture x86(-64), ARM/RaspberryPi with experimental support
Memory > 8 GB (sufficient to run systems)
Disk Space > 1 GB (considers only ACE and the SmartSoft Kernel)
+500 MB SmartMDSD Toolchain
+3.5 GB Repos after build
Graphics Card required for running the systems with the Webots simulator

Step 1: Prepare the Folder Structure and the Environment Variables

mkdir -p ~/SOFTWARE/smartsoft/repos
echo "export SMART_ROOT_ACE=\$HOME/SOFTWARE/smartsoft" >> ~/.profile
source ~/.profile
 
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$SMART_ROOT_ACE/lib" >> ~/.bashrc
source ~/.bashrc

Step 2: Install the Java Development Kit

sudo apt install openjdk-11-jre

Step 3: Get the SmartMDSD Toolchain IDE

To install the SmartMDSD Toolchain IDE, please follow the SmartMDSD Toolchain Installation instructions.

To install optional plugins like support for the AAS (Industry 4.0 Asset Administration Shell), Dependency Graphs, etc., please follow the instructions you can find here in the README.md file:

Step 4: Install a Middleware

In this step, we install the communication middleware that is used to exchange the information between the SmarSoft ports.

Option A: Installing ACE Middleware

ACE is the currently recommended middleware.

On Ubuntu 20.04, ACE is available as debian package.

sudo apt install libace-6.4.5
sudo apt install libace-dev

Option B: Installing RTI-DDS Middleware

«To be updated later»

Option C: Installing OPC-UA Middleware

«To be updated later»

Step 5: Install the Build Dependencies

Install the dependencies that are required to build the SmartSoftComponentDeveloperAPIcpp, AceSmartSoftFramework, Open62541CppWrapper, Utilities, Domain Models, Components.

sudo apt-get -y --force-yes install bison build-essential cmake cmake-curses-gui cl-cffi doxygen \
                   expect flex freeglut3-dev git htop lib3ds-dev libavformat-dev \
                   libboost-all-dev libdc1394-22-dev libeigen3-dev libftdi-dev \
                   libglew-dev libgtest-dev libjansson-dev libjpeg-dev \
                   libopencv-dev libswscale-dev libtbb-dev libusb-1.0-0-dev \
                   libxml2-dev libxml++2.6-dev libzmq3-dev nlohmann-json3-dev pkg-config sbcl ssh \
                   ssh-askpass sshfs subversion tree vim wmctrl xterm zlib1g-dev zlibc
 
# mrpt libraries required to compile some of the components
# Install mrpt from its own ppa
# Refer : https://docs.mrpt.org/reference/latest/download-mrpt.html
	sudo add-apt-repository ppa:joseluisblancoc/mrpt
	sudo apt-get update
	sudo apt-get install libmrpt-dev mrpt-apps   

Step 6: Build and Install the SmartSoftComponentDeveloperAPIcpp

This repository contains the Component Developer C++ Interface Definition (API) for use of the SmartSoft framework. This repository covers the API to the SmartSoft Communication Patterns and the SmartSoft Component structures.

For more information see: SmartSoft Component-Developer API for C++.

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/SmartSoftComponentDeveloperAPIcpp.git
cd SmartSoftComponentDeveloperAPIcpp/
mkdir build
cd build/
cmake ..
make
make install

Step 7: Build and Install the SmartSoft Kernel for the Used Middleware

In this step, we install the SmartSoft Kernel corresponding to the communication middleware installed in Step 4.

Option A: SmartSoft Kernel for ACE Middleware

If you choose ACE as the middleware (see Step 4), we install the SmartSoft kernel for ACE i.e AceSmartSoftFramework.

For more information see: ACE/SmartSoft Framework.

#Build and Install AceSmartSoftFramework
cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/AceSmartSoftFramework.git
cd AceSmartSoftFramework/
mkdir build
cd build/
cmake ..
make install

A simple way to test your installation is as follows. Type the following commands in a terminal:

cd $SMART_ROOT_ACE                 # cd into installation directory
./startSmartSoftNamingService      # start the naming service
xterm -e bin/exampleComponent01 &  # start a component in a terminal window
xterm -e bin/exampleComponent02 &  # start another component in another terminal window

Upon successful installation of the SmartSoft Kernel for ACE, the above bash commands launch two example components exchanging data and you will see messages in both terminals (see figure below). Type CTRL+C to quit the components.

Option B: SmartSoft Kernel for RTI-DDS Middleware

«To be updated later»

Option C: SmartSoft Kernel for OPC-UA Middleware

«To be updated later»

Step 8: Installation of the OPC UA Library

This step is required ONLY if you want to use plain OPC UA ports in the components. Plain OPC UA ports are used to communicate with OPC UA devices. It is strongly recommended to install the OPC UA Library.

Step 8a - Optional: Install googletest

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/google/googletest.git
cd googletest
mkdir build && cd build
cmake .. -DBUILD_SHARED_LIBS=ON -DINSTALL_GTEST=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr
make -j8
sudo make install
sudo ldconfig

Step 8b: Install open62541

sudo apt-get install git build-essential g++ pkg-config cmake python python-six
cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/open62541/open62541.git
cd open62541
git checkout 1.0
git submodule init
git submodule update
mkdir build && cd build/
cmake -DUA_BUILD_EXAMPLES=ON -DUA_ENABLE_DISCOVERY_MULTICAST=ON -DBUILD_SHARED_LIBS=ON ..
make
sudo make install

Step 8c: Install Open62541CppWrapper

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/Open62541CppWrapper.git
cd Open62541CppWrapper
mkdir build && cd build/
cmake ..
sudo make install
sudo ldconfig
#test the OPC UA by running the following example
./examples/SimpleServer/SimpleServer

For more information see: Open62541CppWrapper Library

Step 9: Clone, Build and Install the UtilityRepository

The UtilityRepository contains utilities (e.g. XML parser, transformationMatrices) used by DomainModels and Components.

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/UtilityRepository.git
cd UtilityRepository
mkdir build && cd build
cmake ..
make

Step 10: Clone and Build the Domain Model Repositories

DomainModels consist of CommunicationObjects, ServiceDefinitions, Parameters and StateDefinitions.

For more information see: DomainModels.

Step 10a: Clone the Domain Models

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/DomainModelsRepositories.git
cd DomainModelsRepositories

Step 10b: Code Generation for a Domain Model

We use the toolchain to generate the code from the domain models. This generated code provides the software infrastructure for the CommunicationObjects, ServiceDefinitions, Parameters and StateDefinitions defined in the domain model.

The folder and content of src-gen is auto-generated. It is overwritten each time you run the code generation. So users must not modify anything in this folder. All the user contributions are always to be done in the folders without the \*-gen extension.

This step is needed only when there is a change in the model i.e any file inside the model folder of domain model project.

To generate code for a given domain model follow these steps:

Step 10c - Option 1: Building a Domain Model Project with the Toolchain

After having executed the code generation for a domain model project, you can build it via the toolchain as follows:

Step 10c - Option 2: Building a Domain Model Project from Command Line in a Terminal Window

After having executed the code generation for a domain model project, you can also use cmake in a command line within a terminal window to build a particular domain:

#goto < DomainModel Name>/smartsoft/
cd ~/SOFTWARE/smartsoft/repos/DomainModelsRepositories/CommBasicObjects/smartsoft
#create build folder
mkdir build
cd build
cmake -DBUILD_DEPENDENCIES=OFF ..
make

Step 11: Clone and Build Components

This step clones the open source component repository of the Servicerobotics Ulm research group and builds those components. See the README.md files in the individual component subfolders for a detailed explanation of the individual component's services and configurations options.

For more information on the component repository of the Servicerobotics Ulm research group see: ComponentRepository.

Step 11a: Clone the Component Repositories

#clone the Components
cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/ComponentRepository.git

Step 11b: Code Generation for a Component

We use the toolchain to generate the code from the component model. See the tutorial Develop Your First Software Component for more information on code generation for a component.

To generate code for a given component follow these steps:

Step 11c - Option 1: Building a Component Project with the Toolchain

After having executed the code generation for a component model project, you can build it via the toolchain as follows:

Step 11c - Option 2: Building a Component Project from Command Line in a Terminal Window

After having executed the code generation for a component model project, you can also use cmake in a command line within a terminal window to build a particular component. Make sure that the 3rd party/external libraries required by a component are already installed. Components contain an Install.txt file which describes how to install required 3rd party/external libraries if this applies.

Below code snippet builds the component ComponentKB:

#goto < Component Name>/smartsoft/
cd ~/SOFTWARE/smartsoft/repos/ComponentRepository/ComponentKB/smartsoft
 
#create build folder
mkdir build
cd build
cmake -DBUILD_DEPENDENCIES=OFF ..
make

Step 12: Cloning the Behavior Repository

This step clones the open source behavior repository of the Servicerobotics Ulm research group. The behavior repository contains task level behavior projects and models. For more information on creating a Behavior Project and adding Behaviors to a system project, refer the tutorials Realizing Tasks in Behavior Project and Adding Behavior to a System Project.

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/BehaviorRepository.git

Step 13: Cloning the System Repository

This step clones the open source system repository of the Servicerobotics Ulm research group. The system repository contains ready-to-use, deployable and executable systems that are composed out of readily available components and behaviors.

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/SystemRepository.git

To deploy and execute a particular system, follow these steps:

For more information on deploying and executing a system, please refer to the tutorial System Deployment and Execution.

Step 14: Cloning the Data Repository

The data repository contains additional data that is required by some components or systems. For example, it includes models and environments for simulators (e.g. for use with Webots and Gazebo simulators). You can skip this step if you don't intend to use the Webots and/or Gazebo simulators.

cd ~/SOFTWARE/smartsoft/repos/
git clone https://github.com/Servicerobotics-Ulm/DataRepository.git

Step 15: Using the Webots Simulator with SmartSoft

To install Webots and use it with SmartSoft, see DEVELOPER.md of ComponentWebots.

Step 16: Using the Gazebo Simulator with SmartSoft

To install Gazebo and use it with SmartSoft, see install.txt of SmartGazeboBaseServer.

Next Step

Have a look at the Tutorials.

Acknowledgments

Nayabrasul Shaik.

DokuWiki Appliance - Powered by TurnKey Linux