ros2 data_error ai_generated true

rosbag2_storage: Failed to open bag: unsupported compression format 'zstd' for storage plugin 'sqlite3'

ID: ros2/rosbag2-compression-format-mismatch

Also available as: JSON · Markdown · 中文
90%Fix Rate
85%Confidence
1Evidence
2024-03-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
ros2-humble active
ros2-iron active
ros2-rolling active

Root Cause

The rosbag2 sqlite3 storage plugin does not support zstd compression; only lz4 is supported by default, and custom plugins for zstd are not installed.

generic

中文

rosbag2的sqlite3存储插件不支持zstd压缩;默认只支持lz4,且未安装zstd的自定义插件。

Official Documentation

https://docs.ros.org/en/rolling/Tutorials/Advanced/Recording-A-Bag-With-Compression.html

Workarounds

  1. 95% success Install the rosbag2_compression_zstd plugin: sudo apt install ros-humble-rosbag2-compression-zstd
    Install the rosbag2_compression_zstd plugin: sudo apt install ros-humble-rosbag2-compression-zstd
  2. 90% success Convert bag to lz4 compression: ros2 bag compress --input /path/to/bag --output /path/to/output --compression-queue-size 1 --compression-mode file --compression-format lz4
    Convert bag to lz4 compression: ros2 bag compress --input /path/to/bag --output /path/to/output --compression-queue-size 1 --compression-mode file --compression-format lz4

中文步骤

  1. 安装rosbag2_compression_zstd插件:sudo apt install ros-humble-rosbag2-compression-zstd
  2. 将包转换为lz4压缩:ros2 bag compress --input /path/to/bag --output /path/to/output --compression-queue-size 1 --compression-mode file --compression-format lz4

Dead Ends

Common approaches that don't work:

  1. 80% fail

    Default sqlite3 plugin code doesn't support zstd; requires a separate plugin package.

  2. 90% fail

    Environment variable alone doesn't install the required plugin; the plugin must be built and loaded.