skip to Main Content


Transition to the next generation of your robot software

In the realm of robot software development, algorithms are the cornerstone of intelligent machines. Algorithms serve as the unique intelligence driving various devices – it is precisely within this layer that a company gains its competitive advantage.

Authors: Ida Pellinen, Tuomas Fjällström and Juhana Helovuo

Developing mobile robot software requires a substantial effort in building a robust platform that incorporates essential elements like messaging, memory management, and logging – such elements are not exactly robotics, but they are necessary for a functioning whole. A significant amount of time and resources are dedicated solely to constructing and maintaining the platform.

In this article, we will tell you how Flexbot equips you with a ready-to-use robot software platform and speeds up your product development.

More development velocity for your robot software

When it comes to architecting software for your mobile robots, you often face these three options: building your own software from scratch, utilizing an open-source software like ROS 2 (Robot Operating System 2), or licensing a commercial solution.

Alternatives You control development / All sources available Manages memory and concurrency Integration to legacy code Complexity management Test framework & simulator compability
Licence closed solution No Maybe Variable Variable Maybe
Design your own from scratch Yes Expensive Yes Expensive Expensive
Use open source basis (ROS 2) Yes Partially Expensive Partially Yes
Use Flexbot to boost 2 or 3 Yes Yes Yes Yes Yes / ROS 2, Carla, Gazebo, Unity, for example

Table 1: Alternative strategies for building robot software

Table 1 offers a comparative overview of the distinct choices for your mobile robot’s software. Flexbot stands out as the optimal solution when creating custom software or when building on open-source platforms like ROS 2.

ROS 2 is a common and functional alternative for building robot software. In ROS 2, components are designed and implemented separately, and finally launched together, which causes the components to connect to each other and form a complete system (see Figure 1).

Curious about the benefits Flexbot offers? Book a meeting and let’s explore the possibilities together!
Book a meeting

ROS2 design flow

ROS2 design flow

Figure 1: ROS 2 design flow

The idea of Flexbot is that before designing the various components, a messaging network is described as accurately as possible. Once the description of the network structure exists, the code that implements the network can be generated from it. Only the algorithms within the components need to be manually implemented.

Flexbot ensures that separately developed components fit together on the structural level (see Figure 2). The check is done in the design phase, and not left to the system startup phase, as in ROS 2. Flexbot complements ROS 2, offering versatility in deployment either independently or alongside other ROS 2 components.

Flexbot helps you understand and validate the overall system before it is ready. Since the development task is large and complex, it is worth dividing it into parts – this can be done with Flexbot in a more controlled way, and the desired end result is achieved more easily.

Flexbot design flow

Flexbot design flow

Figure 2: Flexbot design flow


Flexbots’s messaging uses code generation to implement message passing between components. A thread-local communication channel is simply memory pointer passing in a FIFO queue with no serialization needed, which has a very low overhead. Passing data between threads adds synchronization. Communicating between separate processes uses ROS 2 messaging, which includes data serialization. The choice of implementation mechanism for each channel is done from the system specification, so the algorithms do not need to know about it.


Flexbot supports multiple threads to execute the components in the system. The framework ensures that any component can be only executed by a single thread at a time. This virtually eliminates the need to manage concurrency at the algorithm implementation level, which greatly improves software robustness and safety.


Flexbot’s default implementation language is Rust, which is known for its high memory safety without compromising real-time capabilities. Components implemented in safe Rust virtually eliminate memory management errors, such as using deallocated memory (dangling pointers), reading uninitialized data, forgetting to deallocate memory (leaks), and even exposing unsynchronized data structures to several threads (race conditions).

Unlock cost savings with Flexbot

In Table 2 and 3, we present a case study involving an industrial-grade onboard software. This software implements its own platform, i.e. follows alternative 2 from Table 1. The total amount of code and the proportion of algorithms are based on the actual project from which they are calculated. From the calculations, it is noticeable that only 5% of the total of 400,000 lines is algorithm code – a lion’s share of the code is devoted to constructing and using the platform.

With Flexbot, you get significant cost savings, speed up your development process and reduce the burden of repetitive tasks. How does Flexbot enable this?

  1. Flexbot reduces the possibility of errors. With its message- based paradigm, Flexbot simplifies development by facilitating the division of tasks into manageable subtasks. Because the messaging network is generated from a specification, the specification is always up-to-date with the implementation, which helps to keep the architecture manageable.
  2. With Flexbot, the software is mapped to single or multiple processors by the specification. There is no need to modify algorithms in order to scale the software up from a single processor to multiple computers.
  3. Flexbot allows you to focus on algorithm development instead of platform building.

How to speed up your autonomous machine software development process by 200%? » Watch the webinar about Flexbot!

Evolutive software development

Whether you have an existing product, or are embarking on a new development, Flexbot offers great adaptability. Even if you find yourself dissatisfied with your current onboard software, a safe, evolutionary development process with Flexbot is possible. It enables you to renew the software incrementally, providing greater control and reducing risk of failure.

Flexbot’s evolutive development approach involves a step-by-step process where hardware and software are initially separated as illustrated in the Figure 3. Small steps ensure a fail-safe transition to the previous version at any point, while maintaining a functional, testable and deliverable software at all steps. This strategy allows software evolution with minimal disruption.

Existing software is divided into separate modules, and the modules communicate only via Flexbot. This division enables the developers to replace modules as needed, while keeping other parts as is.

Flexbot is licensed for an unlimited time, and with source code. Therefore, it does not lock you to a vendor. When you secure a permanent licence, you gain continuous access to the latest versions through the licence fee. If you decide to stop paying the annual fee, you still get to keep the latest version you paid for.

What are the real-world benefits then? Consider a scenario where a specific component requires upgrading or replacement. With Flexbot, you can make the changes swiftly and confidently, replacing the module with an improved version without disrupting the overall system. This level of agility empowers you to respond promptly to evolving requirements and technological advancements, thereby accelerating innovation cycles and maintaining competitive edge.

How to make autonomous machines work in better cooperation with human workers?

Atostek’s expert Dr. Juhana Helovuo gives you concrete examples and illustrates the topic with detailed animations in the 30 minute free webinar.

Curious about the benefits Flexbot offers?
Book a meeting and let’s explore the possibilities together!

Lauri-Tapio Korhonen

Sales Manager
+358 44 792 4525

See how we have helped Kalmar and Logisnext with our expertise!

Kalmar logo