-
Notifications
You must be signed in to change notification settings - Fork 795
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] Improve Data Compression #1431
Comments
Here other data (that are not images) that are currently compressed in the database:
rtabmap/corelib/src/resources/DatabaseSchema.sql.in Lines 40 to 42 in f8b1d50
These are point cloud data, so Draco library could be indeed used for that. For the compressed data under Admin table: rtabmap/corelib/src/resources/DatabaseSchema.sql.in Lines 122 to 130 in f8b1d50
as they are not meant to be used online, but only loaded/saved when rtabmap starts or closes, I would focus more on the ones above first. Note also that depending of the features used, a large part of the database can be from uncompressed descriptors. Replacing zlib by lz4 may be a reasonable solution too. Ideally, if we could detect the compression format, we could add an option to compress general data as lz4 instead, while being backward compatible with databases with compressed data done with zlib. It looks like lz4 has a header, while zlib has its own, which means we could probably do something similar than you did for That benchmark table is pretty useful: |
We have added RVL compression for depth images. However, in order to further reduce the size of the database, it is still necessary to compress other data. For point clouds and meshes, one possible solution is to use Google's Draco library.
Previously, other data was compressed using zlib. But I found its performance to be a bit poor. Even if only a small number of local features and descriptors are compressed, it will take more than ten milliseconds or more. Therefore, for intra-machine communication, I usually set Z_NO_COMPRESSION to avoid actual compression and use zero copy. From my experience with rosbag and ZFS, using lz4 compression should be a better choice. It sacrifices some compression, but is much faster.
The text was updated successfully, but these errors were encountered: