Architecting Multithreaded Robotics Applications in C++
Many tasks in robotics are natural candidates for parallelization and concurrent execution, and could potentially benefit greatly from multicore processors. However, non-functional quality requirements in robotics are different than those in information systems, and closely revolve around ensuring proper reaction time and acceptable worst-case
execution time. These quality properties can only be properly addressed on the system level because of the high coupling between concurrent threads (interrupts, limited number of computing cores, preemption, shared cache, synchronization, and communication).
Architecting these types of software presents a significant challenge. It requires robotics engineers to understand multicore processors in low-level detail and requires significant programming skills. As a result, programming multicore processors is a cumbersome process and is error-prone. Therefore, software architects, who understand the needs of robotics engineers and understand the software stack develop solutions, which make it possible for robotics engineers to produce correct multi-threaded code easily and allow them to concentrate more on their specific needs regarding robotics engineering.
For this reason, the problem of utilizing multicores in robotics engineering is identified and a suitable solution targetted to robotics engineers is provided. This process is explained step by step and supported with numerous examples. The attendant gets the chance to experience how a software engineer understands the problem and how a solution is devised. It includes all steps of identifying the requirements, architectural drivers, architectural solution, implementation, and a comprehensive evaluation of the solution. All of this is specifically targeted at the C++ programming language.
Arian Ajdari
I am Arian Ajdari and I was born in Pristina, Kosovo. I was lucky enough to be raised surrounded by different languages. Therefore, learning new languages has always been a joy for me. I felt very passionate when I discovered programming languages and immediately knew, that programming languages is something I will learn for the rest of my life.
This lead me to study Computer Science, where I got the chance to learn about different aspects of programming. I grasped as many programming concepts as possible and applied them in real-life. This led me to develop a toy application in form of a Bachelor Thesis titled "Melanoma Cancer Detector" where users could upload a picture and Machine Learning Classification Algorithm would give a score whether in a particular spot cancer could develop. Furthermore, I decided to go for a specialization in domain in Software Engineering and did 2 years of Master, graduating on topic "Framework to facilitate development of multithreaded applications in ROS2"
Experience that I got through education and my full-time employment, lead me to realize that developing software is not just a matter of technical skills. It is a combination of many hard- and soft-skills. Therefore, I developed a talk on topic "Architecting Multithreaded Robotics Applications in C++", where you get to see the complete thinking process of developing a C++ application (and many of my failures as well), implementation, evaluation and finally handing the API to the client. I invite YOU, the attender, to embark on this journey together.
With kind regards,
Arian Ajdari