How to setup Gitea SSH Connection

Follow the following Tutorial:


How to setup ROS2 in PyCharm

Basic Usage of ROS2 with PyCharm

To access code completion and syntax error handling (debugging doesn’t work in PyCharm directly) in PyCharm for ROS2 the paths have to be linked in your project structure. To do so the following steps have to be performed:

Go to Settings -> Project: <Your-Project> -> Project Structure and Click on Add Content Root.
Now add the two directories: /opt/ros/<your-ros-distro>/lib/<python-version>/site-packages and /opt/ros/<your-ros-distro>/local/lib/<python-version>/dist-packages and set them to Resources

Now the code completion and syntax error handling works for ROS2.

Custom Messages & Custom Packages

To resolve import errors and add code completion in PyCharm for ROS2 projects you have to further set some directories as source roots.

First for custom messages (now called interfaces) build your project once with colcon build. Then go to install -> <name-of-msg-package> -> local -> lib -> <python-version> -> dist-packages and mark this folder as Source with the right click drop down menue. 

For custom packages you go to install -> <name-of-ros2-package> -> lib -> <python-version> -> site-packages and mark this as Source with the right click drop down menue.

Don’t forget the build your project with colcon build if you change your custom packages/modules so the code is updated in the install directory.

Custom Packages and setup.py

To use custom packages in your ROS2 nodes you need to link them in your setup.py file of your ROS2 package. To do so all packages need to have a __init__.py file depending on your package this file is in general empty. Then you open the setup.py file and add all your packages to the list “packages”. The list should look like this: 

packages = [package_name, package_name + ‘/Your_Package’, package_name+’/Your_2nd_Package’],

Use colcon build to update your install directory.

M.Sc. Thesis – Christopher Martin Shimmin: Bayesian Optimization for learning optimal parameters of Electronic Control Units (ECU’s) for Motorcycles

Supervisor: DI Nikolaus Feith;
Univ.-Prof. Dr Elmar Rückert
Start date: 15th Februar 2023


Theoretical difficulty: mid
Practical difficulty: mid


In the last decade, MotoGP has taken data analytics and telemetrics to a whole new level which has aided in the development and manufacturing of the motorcycles prototypes and their performance on the track.

However, as in other high-end motorsports competitions such as F1, the technological gap keeps getting smaller and, with so, the real potential advantage is gained during testing by trying to find the optimal setup for that specific track and weather conditions. Due to regulations, time dedicated to testing on track is quite scarce, therefore teams and pilots have to find their way around new prototype setups every week to optimize and extract the best performance of the bike.

The main goal of this project is to develop a Bayesian Optimization algorithm that can aid in the fine tuning of ECU parameters of the motorcycle (fuel injection timing and spark ignition timing) while providing a framework and workflow for this methodology.

The work is done in collaboration with the Chair of Cyber-Physical-Systems at Montanuniversitaet Leoben, and Montan Factory Racing, participant of the VII Edition Motostudent Petrol.

Tentative Work Plan

To achieve our objective, the following concrete tasks will be focused on:

  • Literature research
  • Engine and controller model development in Simulink
  • Bayesian optimization algorithm development
  • Hardware integration
  • Testing in practical applications
  • M.Sc. thesis writing and documentation

Related Work

[R1] Isermann, R., Hafner, M. (2001). Mechatronic Combustion Engines – from Modeling to Optimal Control.

[R2] Schillinger, M., Hartmann, B., Skalecki, P., Meister, M., Nguyen-Tuong, D., & Nelles, O. (2017). Safe active learning and safe Bayesian optimization for tuning a PI-controller. IFAC-PapersOnLine, 50(1), 5967-5972.

[R3] Isermann, R. (2014). Engine modeling and control. Berlin: Springers Berlin Heidelberg, 1017.

[R4] Gerhardt, J., Hönninger, H., & Bischof, H. (1998). A new approach to functional and software structure for engine management systems-BOSCH ME7. SAE transactions, 1173-1184.


Bayesian Optimization for learning optimal parameters of Electronic Control Units (ECU’s) for Motorcycles


Meeting on the 23th, November 2022

Location: Chair of CPS

Date & Time: 23rd Nov 2022

Participants: Univ.-Prof. Dr. Elmar Rueckert, DI Nikolaus Feith, BSc



  1. Update
  2. Future Steps

Top 1: Update

  • RH8D:
    • Finished the hardware interface, no more communication issues with the left hand.
    • Sample Position controller
  •  Webserver:
    • basics in websockets and js/css/html try outs
    • established connection with ROS2 via rosbridge
    • literature research on related work (shared control, webservers in robotics)
    • search for libraries to display dynamic plots (flot.js or dc.js)

Top 2: Future Steps


Meeting on the 16th, November 2022

Location: Chair of CPS

Date & Time: 5th Oct 2022

Participants: Univ.-Prof. Dr. Elmar Rueckert, DI Nikolaus Feith, BSc



  1. Update
  2. Future Steps

Top 1: Update

  • Literature search on Related work to Online Reinforcement Learning and Preference Learning was started
  •  Hardware interface for RH8D was implemented and needs to be tested now. Some issues with exceeding cycle time of the mainloop were found.

Top 2: Future Steps

  • Start working on webservices and ROS2
  • MP:
    • What do we need for kinestetic teaching, shared control etc.
    • Whiech Parameters are changed and how to display them
  • Start with simulation and not a real robot
  • GNN: for the future reimplementation of toy tasks and research whats new in this field or what is still left out
  •  RH8D: Try fixing the communication error with Vedant’s SDK
  • Webserver/Websockets:
    • What are requirements for the webserver/websocket to use it with ROS2 and shared control

Meeting on the 19th, October 2022

Location: Chair of CPS

Date & Time: 5th Oct 2022

Participants: Univ.-Prof. Dr. Elmar Rueckert, DI Nikolaus Feith, BSc



  1. Update
  2. Future Steps/News

Top 1: Update

  • Since October 12, two presentations were prepared and one was given to the chair on the ROS2 tutorial. The second one deals with the paper “VisuoSpatial Foresigt for Multi-Step, Multi-Task Fabric Manipulation” and will be given next Thursday.
  • Furthermore, a concept for the CPS HUB for the ROS2 repositories was developed and finalized with the other PhD students. 
  • Literature search on Related work to GNN in Motion Planning has been started.
  •  First ROS2 submodule of RH8D robot arm was completed. Data of force sensors at fingertips can be published.

Top 2: Future Steps/News

  • Usage of the desk app in nexttcloud was discussed
  • ROS2: Further discussion on the shared control project, usage of the tablet with android app. Continue working on the RH8D hand.
  • Topics for the Integrated Project, Bachelor’s theses and Master’s theses should be considered. What should be investigated in more detail?
  • Not only on shared control should be further investigated but also GNN.

ROS2 Tutorial

Robot Operating System 2 (ROS2) is an open source middleware for the development of robot applications. This tutorial describes the architecture and the basic components. Furthermore, a comparison to ROS1 is drawn and the application with Python is explained in more detail.

Hier finden sie den Foliensatz zum Vortrag.

Introduction to Python

Slides by CPS on Python

Short introduction to Python with some first examples and a coding convention. 

Why should you consider learning Python

  • Python is the most popular programming language in the world with a popularity of 28%.
  • It is easier to learn than many other programming languages.
  • Python is very readable due to its structure. Thus, bugs can usually be found and fixed quickly.
  • Python can be both procedural and object-oriented, which makes it very versatile.
  • There is a large number of software libraries. On python package index, PyPI, over 400,000 packages can be found. And the most important ones can be downloaded quickly and easily using pip.
  • Python and almost all Python software libraries are available for free on the Internet.

What Python can be used for

  • Data Science is one of the most popular application areas of Python. Here, not only the complete data analysis but also the visualization will be implemented in Python. Generally, software libraries such as Numpy, Matplotlib and Pandas are used for this purpose.

  • Machine learning is another very popular area. Python can be used for supervised, unsupervised and reinforcement learning. Libraries such as TensorFlow, Keras, PyTorch or scikit-learn are used for this purpose.

Furthermore, Python can be used for all kinds of general purpose programs, such as app development, GUI design, web development and in many other areas. In addition, programs with Python interfaces can be automated through a Python program, for example simulation programs.

Practical example of Python in academia

Especially during the time as a student it is good to have a tool with which you can validate your hypotheses or perform the calculations by the computer. Thus, programs can be written with which problems in physics, chemistry or other tasks can be simulated and subsequently the simulation data can be plotted or even videos can be generated.

Important links

Meeting on the 5th, October 2022

Location: Chair of CPS

Date & Time: 5th Oct 2022

Participants: Univ.-Prof. Dr. Elmar Rueckert, DI Nikolaus Feith, BSc



  1.  Update and more detailed definition of the the project
  2. Master thesis GNN for Motion Planning
  3. Next steps

Top 1: Update and more detailed definition of the the project

  • Last week, work continued on the ROS framework. There were problems with the inverse kinematics solver, because the Jaccobian matrix is generated incorrectly by the used Python packages. For the time being we will only work with the Impedance Effort Controller from Franka.
  • Furthermore, the CPS Lecture Repository was created and the CoppeliaSim simulation file and the Python script to operate it were programmed. In addition, a description of how to work with the simulation was written.
  • Further details were discussed in the ROS framework. The framework should work with different simulation programs (CoppeliaSim, IssacSim). The goal is to implement an RL environment, so that an initial solution can be given with the pen on the tablet. This initial solution (trajectory) should be used as motion primitives for the RL. The weights of the MPs are to be learned. Furthermore, it should be possible to manipulate the MP in real time, so that the user can further refine the trajectory in the learning process. The Gym library will be used for the evaluation. For the experiment, the lathe and the milling machine will be used (button press, lever operation, etc.). 
  • A research on related work shall be done, especially if such systems/frameworks have already been developed with ROS2. 
  • Not all sensors, HW devices, robots, etc. need to be implemented by myself, but there need to be a template for the different parts, so every one can extend the frame work.
  • XBox Controller: The Xbox controller is to be used for teleoperation for the robots, as well as the possibility for recording experiments should be implemented. E.g. fixation of a configuration, so that the same experiment can be recorded again and again from the same configuration or the possibility to separate a recording by pressing a button, so that the experiment has to be started only once and not for every run again.

Top 2: Master thesis GNN for Motion Planning

  1. Definition of a master thesis with the topic: GNN for Motion Planning
  2. https://github.com/rainorangelemon/gnn-motion-planning
  3. https://rainorangelemon.github.io/NeurIPS2021/paper.pdf

Top 3: Next Steps

  1. ROS
  2. ROS2
  3. Tablett for shared control (user correction)
  4. Hardware: which hardware is needed to work with the Framework

Meeting on the 28th, September 2022

Meeting on the 13th of August 2021

Location: Chair of CPS

Date & Time: 13th Aug. 2021, 9 am to 9:30 am

Participants: Univ.-Prof. Dr. Elmar Rueckert, Nikolaus Feith, BSc



  1.  Project definition
  2. Update and next steps

Top 1: Project definition

Three main projects:

  1. ROS CPS Framework
  2. Reimplementation GNN for Motion Planning
  3. Literature research

The development of a ROS/ROS2 framework to control the CPS robots.
Furthermore, an interface for the use of a tablet is to be programmed in ROS2. On the tablet trajectories can be designed (movement primitives) which can be changed directly with the pen. For this a simple GUI is needed for the display and manipulation of trajectories as well as the display of the robot in 3D in real time. As well as the use of the CPS glove.
This program is intended to be an application of active learning methods, especially for shared and preference learning.
Finally, a connection will be made to the methods of Probabilistic Inference, see GNN for Motion Planning.
If possible, a comprehensive platform including ROS Mobile should be developed.

Top 2: Update and next steps

  1. Update: 
    1. Last week a Joint Effort Controller was implemented and tested in Gazebo. The application in combination with the inverse solvers of the robotic toolbox was tested, but still leads to errors in the control.
    2. Literature research: Bishop
  2. Next steps:
    1. In the coming week, these errors will be corrected and the tests on the Franka robot arm will start.
    2. Literature research: finish Bishop