Skip to content

Releases: tier4/bag_converter

v0.6.2

09 Mar 13:04
7f5fa92

Choose a tag to compare

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

05 Mar 10:03
198ed6a

Choose a tag to compare

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

03 Mar 10:30
88a92d1

Choose a tag to compare

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_xyzit output now includes:
    • packet_version and lidar_type extended 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 up decode_pointcloud2, and added scripts/requirements.txt for Python dependencies. See scripts/README.md.

Changes and refactors

  • Remove --min-conf-level option (#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_reflectance config (#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 the t_us (microseconds) field in PointCloud2 output is still present but will be removed in v1.0.0. Use the timestamp (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 timestamp field (nanoseconds) over t_us (microseconds) in PointCloud2 output; t_us will 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

26 Feb 20:06
64e5fcd

Choose a tag to compare

What's Changed

Features

  • Add --passthrough option (#40)
    • Process all messages even without decodable LiDAR packet topics
    • Useful with --use-header-stamp-as-log-time to rewrite log_time for bags without LiDAR topics
  • Add --merge option 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 --delete option (#44)
    • Delete source bag files after successful processing
    • In merge mode, deletes original input bags after each group succeeds

Breaking Changes

  • Remove --inplace option — use separate input/output paths with --delete instead (#44)
  • Remove conv and merge subcommands — 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

20 Feb 11:06
3614cb6

Choose a tag to compare

What's Changed

Features

  • Add --use-header-stamp-as-log-time option (#39)
    • Override mcap log_time with header.stamp for all messages with std_msgs/msg/Header
    • Messages without a valid header keep their original log_time

Full Changelog: v0.5.3...v0.5.4

v0.5.3

13 Feb 07:21
5a0008e

Choose a tag to compare

What's Changed

Features

  • Add lidar_status and lidar_mode fields to en_xyzit point type (#36)
    • Sourced from Seyond SDK packet header (InnoCommonHeader)
    • lidar_status: 0=none, 1=transition, 2=normal, 3=failed; -1=N/A
    • lidar_mode: 1=sleep, 2=standby, 3=work_normal, 6=protection; -1=N/A

Full Changelog: v0.5.2...v0.5.3

v0.5.2

09 Feb 13:01
fb054b4

Choose a tag to compare

What's Changed

Features

  • Add timestamp field (nanoseconds) to PointCloud2 output and deprecate t_us (#35)
    • New timestamp field provides relative timestamp from scan start in nanoseconds
    • t_us is now deprecated and will be removed in v0.6.0

Dependencies

  • Update seyond_sdk from 3.102.10 to 3.103.4 (#34)

Full Changelog: v0.5.1...v0.5.2

v0.5.1

05 Feb 18:01
814373a

Choose a tag to compare

What's Changed

  • feat: add --min-conf-level option for packet confidence filtering by @otenim in #30

Full Changelog: v0.5.0...v0.5.1

v0.5.0

05 Feb 13:07
742f655

Choose a tag to compare

What's Changed

  • chore: add docs/ to .gitignore by @otenim in #28
  • feat: add --base-frame option for TF2 coordinate transformation by @otenim in #27
  • fix: ignore .docs/ instead of docs/ in .gitignore by @otenim in #29

Full Changelog: v0.4.3...v0.5.0

v0.4.3

05 Feb 10:06
b7b2069

Choose a tag to compare

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 BagConverterResultStatus enum for clearer return code semantics