Insta's Junior Software Designer Oskari Mäkinen and Junior Sofware Developer Eemeli Vaskelainen at Tampere University laboratory

12 - 7 - 2023 - Expert blogs

Advancing in Robotics Software Development

In this blog post, we are excited to share the progress we have made in robotics software development at Insta. We will focus on our ongoing R&D project advancing our expertise in this dynamic field. Me (Eemeli Vaskelainen) and my colleague Oskari Mäkinen are going to discuss this project in detail, how it started, what our objective is, and how the implemented solution works so far. Moreover, we are going to talk about our own experiences as junior software developers working at Insta with the inspiring challenge of modern robotics software development.

Software development

Background

Robotics software is a challenging and rapidly evolving field. At Insta Digital, our unit dedicated to industrial software development launched a project with the objective of raising expertise in the area to better generate value for our customers. ROS2, an open-source robotics systems development technology gaining momentum all over the field of robotics software development, was set to be the main framework to be utilized. Oskari Mäkinen who was writing his Master’s thesis about the topic, found a practical gap from the field while doing his research. Oskari discovered that within the robotics software development context, currently only a limited amount of focus has been put into agile methods and DevOps. Recognizing the potential value of the DevOps approach, we established it as the first cornerstone for our project.

Next, we identified and set our second cornerstone, the potential of cloud simulations. Utilization of third-party cloud service offered an excellent opportunity to enhance testing capabilities, as it enables running simulation jobs in parallel. This accelerates the feedback loop from testing to development, aligning perfectly with the established DevOps approach. Eventually, our main objective became to combine the knowledge gained into a new innovative solution that would allow a quick start and continued smooth workflow for modern robotics software development.

While working with the project, we were fortunate to have the opportunity to collaborate with local research group IINES (Intelligent Networked Systems). They are conducting their research at Tampere University and their generosity gave us access to use their research lab and robots. This has been a great help for us to test our implementation in action, learn significantly from lab tests, and will help us ensure that the solution provides a smooth development workflow from repository to a simulated digital twin and all the way to operational robots.

Technical view: Containerized microservice architecture, Cloud Simulation, and DevOps in Action

Figure 1 illustrates an overview of the implemented containerized microservice architecture. On the left, we have an overview of a generic robot setup and on the right a similar overview of a setup on a local computer. The main point is to share computational workload between available processing units. As robots have limited computational power, minimal workload is dedicated to them and robots mainly only control motors and sensors themself. The local computer's purpose is to do the heavy lifting and run complex algorithms, for example, allowing better navigational capabilities. The processing units and the robots communicate with each other via wireless connections divide workloads and provide better opportunities to create more advanced setups for robotics software development.

Figure 1: Containerized microservice architecture.

A containerized microservice architecture offers better possibilities for continuous integration and continuous delivery (CI/CD). It enables us to create a robotics software system that can be managed more efficiently. As we are spreading computational workloads with different units, being able to control and modify existing environment becomes crucial. We have learned and developed practical ways to deliver our software as containers, which in short means executable software packages, which include everything needed for running it. These containers deliver the functionalities that are needed for an operational robotics software system. One of the benefits that a containerized microservice architecture offers is that containers can conveniently be tested and simulated in the cloud.

Figure 2 illustrates how the cloud simulating is planned to improve the overall development and testing workflow. Instead of running simulation jobs locally one after another in sequence, we can run them in parallel. This makes it possible to save a great amount of time allowing faster development feedback and better opportunities to develop more complex testing setups. We are demonstrating this by having three simultaneous localization and mapping (SLAM) tasks in three separate environments. Instead of waiting for each task to run one after another in sequence in each environment, we can do it all in parallel saving a great amount of time. This is especially great for making fast comparisons between different software configurations on how they affect the performance of the robot. Cloud-based simulations also make it convenient to deliver interactive demos as no prior machines, installations, or configurations are needed. Only from click of a link, it is possible to give access to fully working simulated robotics software system.

Figure 2: Cloud simulating improvement.

Finally, in Figure 3, you can see how our implemented development, testing, and deployment pipeline functions. The pipeline’s main objective is to bring the DevOps approach to our project solution. From the top, the workflow starts with the development of a new feature that is committed and pushed to the repository. From this point, the continuous integration pipeline begins building the container image and pushing it to the cloud for simulated tests. If simulated tests are successful, the pipeline will push the built image to the registry from where it can be deployed on target machines.

First, by performing guided testing in a controlled environment, we ensure that functionalities of the robot work as intended when moving from a simulated word to the physical. Finally, if the guided tests are successful, our pipeline completes its run with a final automated step, initiating an over-the-air (OTA) deployment and efficiently delivering the approved updates directly to the robots in operation. This closes the loop on our DevOps approach, ensuring a seamless transition from development to deployment, reducing time and errors, and creating a cycle of continuous improvement for our project solutions

Figure 3: DevOps workflow.

Developer’s viewpoint and experience over the project

Oskari Mäkinen :

I began learning about ROS nearly two years ago when I started at Insta. I have a strong background in C++, but robotics software development was entirely new to me. This project has been an excellent opportunity to utilize my existing skills in C++ and Qt and combine this with learning robotics software development. Doing my Master’s thesis on software deployment provided an opportunity to learn modern DevOps technologies and practices in the context of this project. It has been challenging yet extremely fascinating to work on this greenfield-type project – all the way from making design decisions and choosing the technologies, to implementing features piece by piece. It has been an interesting journey seeing the project grow from simple hello-world implementations to an ever more concrete application. The support from Tom Hannelius, our business lead, and having Eemeli join this project has made this an incredibly fun and rewarding venture.

The deployment viewpoint in robotics software development seems to be an area that has not received a lot of attention, yet there seems to be a lot of room for advancement. I believe our project is unique in the sense that it approaches the use of ROS from this perspective. In my opinion, the combination of open-source technologies and well-designed DevOps solutions is key in driving forward robotics software development and enabling companies in this domain to reap more benefits from continuous practices.

Eemeli Vaskelainen:

As someone who has been interested in new technologies and innovations for the longest time, this challenge is truly a great opportunity to be part of a software development project all the way from the launch. I started here at Insta with limited experience in robotics technologies. However, with the help of my colleagues I have been able to rapidly gain experience with the latest technologies. It has been very inspiring to be part of Insta as there are so many helpful colleagues with different expertise to learn from and great support for professional growth.

When it comes to our new project, being able to combine my already existing knowledge and know-how of software development with modern robotics software technologies is something to look forward to. After researching the current state of robotics software development, I see that the timing is great to increase expertise for this field. It seems that new innovations are coming up from left and right and new more modern approaches to development have gained hold in the field. Especially ROS2 seems to be becoming the de facto standard and it is evolving fast with great utilization opportunities.

Eemeli Vaskelainen
writer

Eemeli Vaskelainen

Share article

Stay on top of the industry trends and subscribe to our newsletter

The most important news, inspiring articles, and up-to-date insights from our experts across various industries and information about our upcoming events.

Accept the terms and conditions. We handle your information responsibly.
Please review our privacy policy.