There are numerous open-source tools available for managing ROS bags.
Among those, I decided to explore the use of Bag Database for my needs
Only supports Ros1 files
Link:
https://docs.docker.com/desktop/install/windows-install/
(1)Download Docker Desktop for Windows:
Click on Docker Desktop for Windows
(2)Install Docker Desktop:
Double click and run the Docker Desktop Installer.exe
Installed
(3) Start Docker Desktop
검색 > Type in Docker Desktop > Click Accept on Docker Subscription Service Agreement > Sign up > Proceed survey
To use Docker volumes with local directories, you need to ensure Docker Desktop has access to your drives
Settings > Resources > Click on browse to browse Disk Image
Share Drive:
Ensure the drive where your ROS bag files are stored (D:) is checked to allow Docker containers to access it
Click on Apply & restart
Ensuring your specified path (D:\MobilityServiceLab\rosbag\bags) exists and contains your ROS bag files
(1)Create a New Text Document for Docker Compose:
-Navigate to the directory where you want to create the Docker Compose file
-Right-click in the folder, select ‘New’ > ‘Text Document’, and name the file docker-compose.yml
(2)Open the Docker Compose File in a Code Editor:
-Launch the code editor you prefer to use. (Example: Visual Studio Code)
-Open the newly created docker-compose.yml file in Visual Studio Code
(3)Prepare the Docker Compose Content:
Copy the Docker Compose content from the source
Reference: https://towardsdatascience.com/bag-file-management-using-bag-database-44d774d54df3
(4) Copy and Paste the Content > Save the Docker Compose File
The Docker Compose file you provided should work as-is, provided Docker Desktop is correctly configured to access your drive
Make sure the path to your bags is correctly specified in the volumes section.
volumes:
bags:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: 'D:\MobilityServiceLab\rosbag\bags' # Replace this with the path to your bags
docker_cache:
postgres:
ldap:
slapd:
indexes:
scripts:
driver_opts:
type: 'tmpfs'
device: 'tmpfs'
Open Command Prompt and Navigate to the folder where your Docker Compose file is saved
D:
cd <Folder Location>
Search > cmd > Navigate to the location of the folder
Run Docker Compose:
Execute the following command to start up your services defined in the Docker Compose file
docker-compose up -d
Check that your services are running correctly
docker ps
List running containers
Bag Database Web Interface:
Accessible at http://localhost:8080
Open this address in a web browser to interact with the bag database UI
Postgres Database:
Accessible on port 5432
(Do not directly need to access this unless performing specific database operations)
Browse > Click Upload All
bag file can be identified on the List View
Right click > View Bag information
Properties
List of information about a bag file
Most of these fields were statically determined by when reading the modified and cannot be modified, but Bold fields are used to store dynamically determined information and can be modified
Message Types
All of the types of messages that were read from a bag file
Displays the MD5 Sum of each message type, since messages with the same name could have different types if the message definition changed
Topics
All of the topics in the bag file
In addition to displaying a list of topics, the action icons in the right can be used to view images and videos from topics that have a sensor_msgs/Image or sensor_msgs/CompressedImage type
Tags
If a bag has had tags set on it, they will all be displayed here. This panel can also be used to add or remove tags
The Bag Database will do its best to use OpenCV to convert images into a format that can be rendered into a bag file, but OpenCV may not be able to parse some image formats. Consult the server log if images do not render as expected.
Reference: https://towardsdatascience.com/bag-file-management-using-bag-database-44d774d54df3
docker-compose stop
=> Can be restarted with docker-compose start
Many of these tools lack support for ROS 2. Given that my ROS 2 bag data is in the .db3 format, I encountered limitations with these other tools so I tried the PlotJuggler
Link:
https://github.com/facontidavide/PlotJuggler?tab=readme-ov-file
Development Environment:
Set up on Ubuntu 22.03 OS, running in a virtual machine via VirtualBox
Integration is achieved using the ROS 2 Humble bridge
sudo apt install ros-humble-plotjuggler-ros
ros2 run plotjuggler plotjuggler