Releases: tier4/bag_converter
v0.6.2
What's Changed
Features
- Drop page cache after processing to reduce memory pressure (#64)
Performance
- Drop page cache periodically during processing to prevent accumulation (#68)
- Reuse pcl::PointCloud buffer across scans to eliminate per-scan heap allocation (#67)
- Use lazy copy in nebula decoder to avoid unnecessary packet data allocations (#66)
Refactoring
- Extract memory management into dedicated module with RAII PageCacheGuard (#65)
- Bypass nebula driver and delegate to SeyondPCDDecoder (#62, #63)
Documentation
- Add NebulaPackets vs SeyondScan comparison reference (#61)
Full Changelog: v0.6.1...v0.6.2
v0.6.1
What's Changed
Features
- Scale Robin W 12-bit intensity [0, 4095] to 8-bit [0, 255] for protocol version <= 3 (#59)
Bug Fixes
- Skip AngleHV calibration packet when extracting packet version for Robin W (#56)
- Remove redundant intensity scaling in nebula_decoder (nebula_drs already handles it) (#60)
Refactoring
- Use SeyondDataPacket struct for packet metadata extraction (#57)
- Consolidate docker run calls and disable seccomp (#55)
Performance
- Bypass ros2 run to invoke binary directly in Docker (#54)
Documentation
- Add Seyond packet protocol v1/v2 reference (#58)
- Add Robin W intensity scaling documentation
Full Changelog: v0.6.0...v0.6.1
v0.6.0
Release v0.6.0
Summary
This release includes improvements to the en_xyzit point type (packet version, lidar type, availability flags, uint8 layout), removal of the experimental --min-conf-level option, merge-mode fixes, script updates, and clearer deprecation documentation for the t_us field.
New features
en_xyzit extended point type
- Packet version and lidar type (#50, #51)
The--point-type en_xyzitoutput now includes:packet_versionandlidar_typeextended fields (when available from the input).- An availability mask indicating which extended fields are valid for each point.
- uint8 layout for extended fields (refl_type, elongation, lidar_status, lidar_mode, packet_version, lidar_type) for a more compact and consistent layout.
- See docs/en_xyzit.md for the full field layout, flag semantics, and value tables.
Scripts
- plot_field_distribution.py (#49)
New script to plot PointCloud2 field value distributions (histograms) for inspection and debugging. - Scripts cleanup (#47, #48)
Removed unused scripts, cleaned updecode_pointcloud2, and addedscripts/requirements.txtfor Python dependencies. See scripts/README.md.
Changes and refactors
-
Remove
--min-conf-leveloption (#52)
The experimental packet-level confidence filtering option for Seyond Falcon has been removed. All point packets are decoded without this filter, simplifying the CLI and maintenance. -
Remove
use_reflectanceconfig (#46)
Reflectance usage is now determined directly from the packet flag instead of a separate config option.
Bug fixes
- Merge mode: overwrite existing output (#45)
When merging and converting, existing output files are now overwritten instead of being skipped, avoiding stale outputs when re-running the same merge.
Documentation
- t_us deprecation (#53)
README now states that thet_us(microseconds) field in PointCloud2 output is still present but will be removed in v1.0.0. Use thetimestamp(nanoseconds) field for new code. Both the Fields and Timestamps sections and the absolute-timestamp formula have been updated accordingly.
Upgrade notes
- If you used
--min-conf-level, remove it from your scripts; the option no longer exists and all packets are decoded. - Prefer the
timestampfield (nanoseconds) overt_us(microseconds) in PointCloud2 output;t_uswill be removed in v1.0.0. - For
en_xyzit, extended fields now use uint8 and an availability mask; see docs/en_xyzit.md for details.
Full changelog
- #45 fix(merge): overwrite existing output files instead of skipping
- #46 refactor: remove use_reflectance config and use packet flag directly
- #47 chore(scripts): remove unused script and clean up decode_pointcloud2
- #48 chore(scripts): clean up scripts and add requirements.txt
- #49 feat(scripts): add plot_field_distribution.py for PointCloud2 field histograms
- #50 feat(en_xyzit): add packet version and lidar_type; document extended fields
- #51 feat(en_xyzit): packet version, lidar_type, and availability flags + uint8_t layout
- #52 refactor: remove --min-conf-level option
- #53 docs: state t_us will be removed in v1.0.0 in README
v0.5.5
What's Changed
Features
- Add
--passthroughoption (#40)- Process all messages even without decodable LiDAR packet topics
- Useful with
--use-header-stamp-as-log-timeto rewrite log_time for bags without LiDAR topics
- Add
--mergeoption for combining distributed rosbag files (#42, #43, #44)- Merge bag files from multiple input directories in a single pass with simultaneous point cloud conversion
- K-way merge interleaves messages in timestamp order while decoding LiDAR packets inline
- Files grouped by
<sensing_system_id>_<module_id>_<rest>.<ext>naming pattern
- Add
--deleteoption (#44)- Delete source bag files after successful processing
- In merge mode, deletes original input bags after each group succeeds
Breaking Changes
- Remove
--inplaceoption — use separate input/output paths with--deleteinstead (#44) - Remove
convandmergesubcommands — use flat command syntax instead (#42, #44)
Improvements
- Single-pass merge+convert eliminates redundant I/O (no intermediate files written to disk) (#44)
- Graceful Ctrl+C handling in merge mode now saves partial output (#44)
- Unified progress log interval to 1000 messages across all code paths (#44)
Full Changelog: v0.5.4...v0.5.5
v0.5.4
v0.5.3
What's Changed
Features
- Add
lidar_statusandlidar_modefields toen_xyzitpoint type (#36)- Sourced from Seyond SDK packet header (
InnoCommonHeader) lidar_status: 0=none, 1=transition, 2=normal, 3=failed; -1=N/Alidar_mode: 1=sleep, 2=standby, 3=work_normal, 6=protection; -1=N/A
- Sourced from Seyond SDK packet header (
Full Changelog: v0.5.2...v0.5.3
v0.5.2
What's Changed
Features
- Add
timestampfield (nanoseconds) to PointCloud2 output and deprecatet_us(#35)- New
timestampfield provides relative timestamp from scan start in nanoseconds t_usis now deprecated and will be removed in v0.6.0
- New
Dependencies
- Update seyond_sdk from 3.102.10 to 3.103.4 (#34)
Full Changelog: v0.5.1...v0.5.2
v0.5.1
v0.5.0
v0.4.3
What's Changed
- fix: Skip conversion when input bag has no decodable topics (#26)
- Bags without NebulaPackets or SeyondScan topics are now skipped with a warning instead of being silently copied
- In batch mode, skipped files are counted and reported in the summary
- Add
BagConverterResultStatusenum for clearer return code semantics