Robotics StackExchange | Archived questions

What is the best performing storage/serialization format for sequential writing/reading for ros2 bag?

I am using sqlite3 storage format and cdr serialization format in ROS2. In my testing, I have observed that the serialization/deserialization performance of sequentially writing/reading messages for ROS2 bag files is significantly slower than ROS1.

Is there anything faster than sqlite3 and cdr that is currently available that would achieve the performance at par with ROS1?

Documentation here appears to suggest as if rosbag2_v2 is an alternative to sqlite3, but when I try the rosbag2_v2 value it does not work for me. Am I reading the documentation below correctly?

ros2 bag <record> | <play> | <info> -s <sqlite3> | <rosbag2_v2> | <custom_plugin>

Asked by ajayvohra2005 on 2022-01-04 20:18:32 UTC

Comments

Answers

In my research, I have found sqlite3 (storage) and cdr (converter) as the only available open source ROS2 bag plugins.

Asked by ajayvohra2005 on 2022-01-22 11:58:01 UTC

Comments

Other than sqlite3, the tooling team proposed leveldb.

Please see thread: https://discourse.ros.org/t/tooling-proposal-rosbag2-leveldb-plugin/17072/8

However based on most recent discussion, there is overall concerns with rosbag2

https://discourse.ros.org/t/fast-forward-merging-rosbag2-master-api-to-foxy/18927/15

There is also a report from RobotecAI that reviews performance: https://github.com/ros2/rosbag2/blob/8145c857ed48d683be864fc55613ea2025cd92bb/rosbag2_performance/rosbag2_performance_benchmarking/docs/rosbag2_performance_improvements.pdf

I suggest to read both threads, very interesting discussion and report.

Asked by osilva on 2022-01-22 16:26:04 UTC

Comments