We are pleased to announce that SALVO, an open-source software for abstracting data logging middleware-specific function calls, has been released. SALVO is publicly released and it is now available to the open-source community.
Moreover, at Aitronik, we are committed to providing robotization services that enhance safety and improve the efficiency of operations involving vehicles. Additionally, we deliver top-notch custom software and offer integration services. These services transform machines into autonomous vehicles across the aerial, ground, and marine domains.
Are you a software developer, adopting different communication middlewares (e.g. ROS and ROS2)? Do you have consolidated portions of code that shall be integrated on different machines, each adopting a different communication system? Now, with SALVO publicly released, you can work seamlessly.
| ROS | ROS2 | ZEROMQ |
| #include “ros/ros.h” #include “rosgraph_msgs/Log.h” rosgraph_msgs::Log msg; … ros_pub.publish(msg); | #include #include “rcl_interfaces/msg/log.hpp” rcl_interfaces::msg::Log msg; … ros2_pub->publish(msg); | #include zmq::message_t msg(…); … zmq_pub.send(msg); |
In this case, you might have been frustrated to:
- rewrite the application every time the middleware changes. For example, if you have a ‘filter.cpp’ class and want to log something, you’d normally need two different versions of the same code just for printing the log for ROS and ROS2.
- maintain a branch for every middleware used, and then fix bugs on all branches
- empty your folder frequently because it fills-up with files generated at each run
SALVO was born from the need to create an abstraction layer for software incorporating data logging function calls when switching from ROS, ROS2, ZeroMQ middlewares. Ideally, it works with any communication system. SALVO is publicly released for this purpose.
After we internally released, tested, and experienced the benefits of the first version, we decided to release SALVO as open-source. SALVO is an open-source tool designed for developers to:
- First, provide a simple abstraction layer to use generic classes in your applications without changing any code for each specific communication system. This ensures your source code remains portable across different middlewares.
- Additionally, it helps avoid creating multiple branches for data logging code, streamlining the development process.
- Furthermore, SALVO offers the option of generating a unique rolling file. This eliminates the need to fill your folder with thousands of files.

On top of that, SALVO enables the integration of custom log levels. SALVO is publicly released, allowing you to save the log into a file and use a Graphic User Interface, called GUARDO, to see and filter the nodes.
SALVO is currently released with ROS2 compatibility. (ROS and ZMQ middlewares are going to be released shortly.) It is expandable to any communication middleware.
We released SALVO for you to experience:
- Productivity Boost: By unifying logging practices, SALVO reduces development time. No more context-switching between middleware platforms.
- Community-Driven: SALVO is open source. We encourage the community to report issues, contribute to its improvement, and collaborate for its adoption.
- Future-Proof: As middleware landscapes evolve, SALVO adapts. We’re committed to keeping SALVO up-to-date with the latest standards and technologies.
When you use SALVO, code maintenance and reusability is guaranteed, and you save coding time. That’s why we are excited SALVO is publicly released and available to the community.
What middleware would you like to be covered by SALVO?
Dont’ keep waiting, download SALVO for free and let us know your feedback!