New
Release 1.0.0
New Features
- Convenience API for direct PointCloud2 compression (#58) — New SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() functions allow compressing sensor_msgs::msg::PointCloud2 without needing the topic_converter node.
- Rosbag converter: bag directory support — The converter now accepts full ROS2 bag directories as input (not just bare .mcap files), auto-detects metadata.yaml, and generates a transformed version alongside the output.
- Single-threaded compression mode — New use_threads field in EncodingInfo (defaults to true). When false, compression runs inline without spawning a worker thread. Useful for simpler deployments and debugging.
- Topic converter as composable component — topic_converter is now a rclcpp_components shared library, usable in component containers while retaining standalone executable support.
Bug Fixes
- Harden encoder/decoder against UB, data races, and corrupted input (#57) — Fix decodeVarint shift UB, worker thread deadlock on re-use after failure, and over-allocation DoS via untrusted metadata. Added per-point bounds checks with 12-14% less decode overhead.
- Fix resolution profile not applied in topic_converter (#49)
- Fix Foxglove extension build error (#43) — Renamed mismatched .d.ts file that broke npm run package.
- Fix Emscripten build on Ubuntu 24.04 (#54) — Added missing default constructors required by newer Emscripten toolchain.
Contributors
Alireza Moayyedi, Davide Faconti, tomdeblauwe, ペンギンの何か