The ros2_utils_tool, a full GUI toolkit for various ROS2 utilities with additional CLI support

While working with ROS2, I’ve worked with many different smaller tools and scripts for handling various ROS2-related tasks. Most of these tools were really helpful, but many of them were command line based and thus, for me as a person who prefers to use a graphical user interface, a bit tedious to use.
Thus, I’ve started to develop a toolset combining many tasks at once, with full GUI support. Now I want to present the results to you: The ros2_utils_tool [0]!

The tool supports many different tasks, including:

  • Edit an existing ROS bag into a new one with the function to remove, rename or crop tasks
  • Extract videos or image sequences out of ROS bags
  • Create ROS bags out of videos or just using dummy data.
  • Publish videos and image sequences as ROS topics.

The toolset is designed to be as lightweight and simple to use as possible, but it supports many advanced options anyway, for example different formats or custom fps values for videos, switching colorspaces and more. I’ve also heavily optimized this application to support multithreading or in some cases even hardware-acceleration to run as fast as possible.
Additionally, I’ve added CLI support for most of the tools if you do not want to use the GUI.

The application is still in an alpha phase, which means more features will be added in the future. For example I want to add a GUI-based ROS bag merging tool, republishing of topics under different names, or some more advanced options such as cropping videos for publishing or bag extraction.
The ros2_utils_tool requires an installed ROS2 distribution (both humble and jazzy are supported), as well as Qt (both version 6 and 5 are supported), cv_bridge for transforming images to ROS and vice versa, and finally catch2_ros for unit testing. You can install all dependencies (except for the ROS2 distribution itself) with the following command:

sudo apt install libopencv-dev ros-humble-cv-bridge qt6-base-dev ros-humble-catch-ros2

For ROS2 Jazzy:

sudo apt install libopencv-dev ros-jazzy-cv-bridge qt6-base-dev ros-jazzy-catch-ros2

Install the UI with the following steps:

Then run it with the following commands:

  • source install/setup.bash
  • ros2 run ros2_utils_tool tool_ui

I’d love to get some feedback or even more ideas on tasks which might be useful or helpful to implement.
Hope this tool can improve your work and simplify some tasks with ROS2!

[0] GitHub - MaxFleur/ros2_utils_tool: A simple, but powerful UI toolset for various ROS2 utilities, with additional partial CLI support.

1 Like