ros-humble-nebula-core-common (1.0.0-1jammy) jammy; urgency=high

  * feat(nebula_sample): add sample sensor package as template (#382 <https://github.com/tier4/nebula/issues/382>)
    * feat(nebula_sample): add sample sensor package as template
    * feat(nebula_sample): add integration guide
    * feat(nebula_sample): update license year
    * chore(nebula_sample): cspell fixes and integration guide clarity
    * feat(sample_sensor): remove calibration configuration
    * feat(sample_sensor): package and CMakeLists tidy up
    * ci(pre-commit): autofix
    * docs(nebula_sample): document implementation requirements and add vendor-neutral guidance
    * docs(nebula_sample): add integration guide to mkdocs
    * ci(pre-commit): allow unsafe yaml tags for mkdocs
    * docs(sample_sensor): remove duplicate integration guide, modify links and titles
    * feat(sample_sensor): package and integration guide minor fixes
    * chore(nebula_sample): fix capitalization in integration guide entry
    * docs(sample_sensor): make integration guide diagrams visible in dark mode
    * docs(sample_sensor): remove commented code
    * docs(sample_sensor): simplify diagrams
    * ci(pre-commit): autofix
    * docs(sample_sensor): simplify integration guide
    * docs(integration_guide): delete unnecessary stylesheets
    * docs: fix mermaid and drawio errors
    * docs: fix checklist
    * chore: remove unsafe argument from check-yaml hook
    * docs: remove manual table of contents
    * docs(api): restore C++ API docs for sample
    * docs(integration): drop redundant divider
    * docs(integration): align architecture with current driver/wrapper structure
    * docs(integration): adjust rename checklist to match current patterns
    * docs(integration): use real UdpSocket API via snippets
    * docs(integration): recommend util::expected for errors
    * docs(integration): clarify azimuth wraparound handling
    * docs(integration): document angle normalization utility
    * docs(integration): explain logger dependency injection
    * docs(integration): showcase RateBoundStatus and LivenessMonitor
    * docs(integration): drop heading numbering
    * docs(integration): render wrapper example via snippets
    * docs(nav): move integration guide under contributing
    * docs(integration): avoid connection-loss log spam
    * docs(integration): require transparent recovery on disconnect
    * docs(integration): emphasize RAII for shutdown
    * docs(integration): focus diagnostics on core helpers
    * docs(integration): correct offline test to rosbag2
    * docs: add pymdown-extensions for tasklists
    * docs(integration): remove horizontal rules
    * docs(integration): make startup exceptions optional
    * chore: remove nebula_common directory
    * docs: make integration guide more concise and informative
    * chore: add example cpps to use as snippets in integ guide
    * chore: better expected docs
    * chore: nicer sample_common
    * chore: streamlining changes
    * refactor(nebula_sample): align wrapper wiring and typed error flow
    * refactor(nebula_sample_common): type calibration expected errors
    * refactor(nebula_sample_decoders): streamline decoder stub and error reporting
    * refactor(nebula_sample_decoders): clarify decode errors and add dummy scan completion
    * refactor(core): move angle utilities to nebula_core_common
    * docs: update angle utility snippet paths after core move
    * fix: address Codex PR review comments
    * docs: improve formatting and clarity in integration guide
    * refactor: enhance documentation and structure in sample ROS wrapper and decoder interfaces
    * docs: enhance integration guide with clearer implementation details and order of operations
    * chore: address codex review feedback
    * feat: add diagnostics and error handling to SampleRosWrapper and SampleHwInterface
    * feat: Make different launch_hw modes mutually explicit
    * feat: update topic names for point cloud and packet publishing in SampleRosWrapper
    * docs(sample_sensor): typo and add markdown links
    * refactor(nebula_sample): minimalist cleanup of core and vendor packages for closeness to main branch
    * docs(nebula_core): fix minor API inconsistency in subscriber, referenced in integration guide
    * fix(sample): restore sensor IP filtering and simplify template stubs
    ---------
    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
    Co-authored-by: Max Schmeller <6088931+mojomex@users.noreply.github.com>
    Co-authored-by: Max SCHMELLER <max.schmeller@tier4.jp>
  * Contributors: David Wong

 -- David Wong <david.wong@tier4.jp>  Sun, 05 Apr 2026 15:00:00 -0000

ros-humble-nebula-core-common (0.4.0-1jammy) jammy; urgency=high

  * chore: remove PCL dependency (#401 <https://github.com/tier4/nebula/issues/401>)
    * chore: remove all PCL deps from package.xmls
    * chore: remove PCL from all CMakeLists.txts
    * chore: remove unused PointXYZICATR
    * chore: remove pcl from nebula_core
    * chore: transfer continental point types to new format
    * add xyz point type
    * chore: add xyzircaedt to xyz conversion
    * chore: add pcd I/O
    * chore: add Nebula PointCloud to PointCloud2 conversion
    * refactor: remove PCL usage completely
    * refactor: clean PCD I/O
    * test: pcd I/O unit tests
    * chore: update copyright year to 2026
    * chore(pcd): handle padding and alignment correctly
    * perf: make all point types aligned to 16B boundaries
    * fix(ars548): fix jazzy build failure
    * fix(continental): more missing header fixes for Jazzy
    * build: add missing Boost dependency across multiple components
    * fix: correct headers and call sites for convert_point_... functions
    ---------
  * Contributors: Max Schmeller

 -- David Wong <david.wong@tier4.jp>  Thu, 26 Mar 2026 15:00:00 -0000

ros-humble-nebula-core-common (0.3.2-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Mon, 26 Jan 2026 15:00:00 -0000

ros-humble-nebula-core-common (0.3.1-1jammy) jammy; urgency=high

  * fix(hesai): fix scan cutting for cut_angle != cloud_max_angle configurations (#383 <https://github.com/tier4/nebula/issues/383>)
    * chore: estable encoder/spatial terminology
    * chore: better type inference for normalize_angle
    * fix: change angle handling to integer math to eliminate rounding errors
    * fix: properly fixed scan cutting
    * feat: properly isolated scan cutter, works now
    * fix: add blockage mask publishing back in
    * test: scan cutter unit tests
    * fix: fixed most failing tests
    * chore: add validation in scan_cutter constructor
    * docs: support drawio, mathjax
    * docs: basic scan cutting state machine logic
    * docs: wording
    * fix: implement state machine based cutter
    * test: fix invalidly configured pandar64 unit test
    * fix: reset decoder when rosbag loops
    * fix: fix wrong correction term for at128
    * fix: re-introduce decode perf counters
    * perf: faster normalize_angle for integral types
    * perf: prevent runtime type conversion in deg2rad/rad2deg
    * chore: make NebulaPoint aligned like the rest of the point types
    * chore: random small fixes
    * perf: faster angle normalization
    * perf: avoid re-computing fov states
    * chore: make angle_is_between inline for good measure
    * chore: update profiling scripts to work with latest nebula
    * test: add angle unit tests
    * fix: fix normalize_angle for negative ints
    * build: add angles test to cmake
    * chore: hide uv.lock changes in diff
    * chore: remove unused scan cutter param
    * chore: reduce number of states in CutAtFovEnd FSM to 6
    * chore: simplify scan cutter tests
    * chore: update docs for simplified fsm
    * fix: correct channel number for minmax array
    * fix: fix find_field for AT128
    * fix: fix min/max channel-based checks to work when the max-corrected channel has lower index than the min-corrected one
    * test: allow for float rounding errors around fov bounds
    * chore: remove unused code
    * perf: re-introduce early returns in decoder
    * perf: reintroduce darian luts
    * test: update decoder ground truths to reflect new scan cutting behavior
    * chore(cspell): ignore drawio source files
    * docs: add scan cutting design diagrams, update mkdocs nav
    * chore: remove residual debug file code
    * chore: correct comment for 100ms after-cut timestamp check
    * chore: remove commented-out code
    * chore: remove uv for now since it's unrelated to this pr
    * chore: remove old test folder
    * chore: allow deg2rad for integer args
    * fix: change corrections, scan cutting back to float for precision
    * chore: remove temporary ground truth output code
    * docs: zensical drawio and latex support
    * chore: import cmath
    * chore: fix normalize_angle typing edge case
    * chore: fix copyright year
    * fix: calculate fov state correctly when block does not intersect cut
    * chore: virtual destructor for AngleCorrector
    * test: add tests for scan cutter initialization
    * chore: fix cspell
    * fix(test): fix add_packet() azimuth span accumulation bug
    The diff was computed AFTER updating end_azimuth, resulting in
    diff always being 0. This made azimuth_span_accumulated never grow,
    rendering the resilience test assertions (overlaps_itself,
    get_angular_span) ineffective.
    Fix: compute diff before updating end_azimuth.
    * fix(hesai): fix did_scan_complete flag never being set
    After refactoring scan completion to use ScanCutter callbacks, the
    did_scan_complete flag was left as a local variable initialized to
    false and never updated.
    Fix:
    - Add did_scan_complete_ member variable
    - Set it to true in on_scan_complete() callback
    - Reset it at the start of each unpack() call
    - Use it when populating PacketMetadata
    Also fix callback_time_ns_ to accumulate (+=) instead of overwrite (=)
    in case multiple scans complete within a single packet.
    * fix(hesai): use current block for timestamp reset calculation
    Previously, on_set_timestamp() always used block 0 for the point time
    offset calculation. This was incorrect because the timestamp reset
    happens at the block where the reset angle was detected, not at block 0.
    Using block 0 could shift scan_timestamp_ns earlier than the first
    point of the new scan by up to the packet span (for sensors with
    negative per-point offsets like Pandar64).
    Fix: Track current_block_id_ and use it in on_set_timestamp() to get
    the correct earliest point time offset for the actual reset block.
    ---------
  * chore(maintaners): update maintainers in all packages (#385 <https://github.com/tier4/nebula/issues/385>)
    * chore(maintaners): update maintainers in all packages
    * chore(maintainers): add authors
    * chore(maintainers): add author to Continental packages
    ---------
  * Contributors: David Wong, Max Schmeller

 -- David Wong <david.wong@tier4.jp>  Sun, 18 Jan 2026 15:00:00 -0000

ros-humble-nebula-core-common (0.3.0-1jammy) jammy; urgency=high

  * chore: replace ament_cmake_auto with autoware_cmake (#381 <https://github.com/tier4/nebula/issues/381>)
    * chore: replace ament_cmake_auto with autoware_cmake in nebula_continental
    * chore: replace amen_cmake_auto with autoware_cmake in nebula_core
    * chore: replace ament_cmake_auto with autoware_cmake in nebula_hesai
    * chore: replace ament_cmake_auto with autoware_cmake in nebula_robosense
    * chore: replace ament_cmake_auto with autoware_cmake in nebula_velodyne
    * chore: format CMakeLists.txt
    * chore: fix incorrect dependency
    ---------
  * refactor: independent vendor packages (#376 <https://github.com/tier4/nebula/issues/376>)
    * Refactor: Split nebula_common into base and vendor-specific packages
    * Refactor: Split nebula_hw_interfaces into base and vendor-specific packages
    * Refactor nebula_decoders: Create vendor-specific decoder packages (hesai, velodyne, robosense, continental)
    * Fix duplicate nested directories in decoder packages
    * Refactor nebula_ros: Create nebula_ros_base package
    * Refactor nebula_ros: Create nebula_ros_hesai package
    * Refactor nebula_ros: Create vendor-specific ROS packages (velodyne, robosense, continental)
    * Add nebula_ros_base_common library for parameter_descriptors
    * Fix link order for hesai_ros_wrapper
    * Update remaining include paths in vendor-specific ROS packages
    * Update launch files to reference vendor-specific packages
    * Update nebula_ros_base to link Hesai test correctly
    * Move Hesai functional safety test to nebula_ros_hesai to fix circular dependency
    * Fix include paths in hw_interfaces_base test
    * Fix include paths in vendor hw_interfaces packages
    * Fix decoder base include structure and test paths
    * Fix include paths in decoder base headers
    * Add rclcpp dependency to decoder packages
    * Fix ROS base target export and include paths
    * Add smoke tests to nebula_ros_base
    * Fix nebula_examples to use new refactored packages
    * Fix config file paths and launch file references for all vendor packages - all smoke tests passing
    * .
    * ..
    * Restore Hesai functional safety test resources from deleted commit
    - Restored test_resources/fusa_codes/ CSV files that were deleted in commit aa7eb7b6
    - Moved test resources to nebula_ros_hesai package (they were previously in nebula_ros)
    - Updated CMakeLists.txt to install test_resources directory
    - All 20 functional safety tests are now passing
    * Reorganize schema files: move common files to nebula_ros_base/schema and vendor-specific files to vendor packages
    - Moved common schema files from nebula_ros_base/schema/sub/ to nebula_ros_base/schema/
    - Moved vendor-specific schema files to their respective vendor packages:
    - lidar_hesai.json -> nebula_ros_hesai/schema/
    - lidar_velodyne.json -> nebula_ros_velodyne/schema/
    - lidar_robosense.json -> nebula_ros_robosense/schema/
    - radar_continental.json -> nebula_ros_continental/schema/
    - Updated all schema file references to remove 'sub/' prefix
    - Added installation of common schema files to vendor packages so JSON schema references work
    - Updated documentation references to use new package paths
    * Flatten config directory structure: move configs from config/{lidar,radar}/{vendor}/ to config/
    - Moved all sensor config files directly into vendor package config/ directories
    - Updated launch file references to use new flattened paths
    - Updated nebula_examples launch file to reference nebula_ros_hesai instead of nebula_ros
    - Removed empty lidar/hesai, lidar/velodyne, lidar/robosense, and radar/continental subdirectories
    * Fix JSON schema validation using relative paths from schema file location
    - Added $id fields to common schema files using paths relative to repo root
    - Updated all $ref references to use relative paths from schema file location:
    - Common schemas: ../../nebula_ros_base/schema/<file>.json
    - Vendor schemas: <vendor_file>.json (same directory)
    - Validation works with --base-uri file://<repo_root>/<vendor>/schema/
    - All schema validations pass successfully for all vendor packages
    * temp: test updated json-schema-check
    * ci(pre-commit): autofix
    * temp: fix shortened commit hash
    * temp: update json schema check ref
    * temp: final json check version bump
    * fix(ars548): add missing type attr to diagnostics schema
    * docs: fix schema table gen
    * build: remove velodyne-specific stuff from base package
    * chore: remove accidentally committed sub-repos
    * refactor: group packages by vendor
    * refactor: move tests and examples to vendor pkgs, move nebula_launch to nebula meta package, remove nebula_sensor_driver meta package
    * ci(pre-commit): autofix
    * build: fixed cmake files
    * chore: clean up nebula_common
    * ci(pre-commit): autofix
    * move to src directory for cleanliness
    * build: remove superfluous dependencies in CMakeLists and package.xml
    * ci(pre-commit): autofix
    * build: fix missing PNG interface lib
    * build: fix agnocastlib not providing modern cmakle target
    * chore: rename too-convoluted nebula_ros_base_common to nebula_ros_base
    * docs: add migration guide to new version in readme
    * chore: version bump to 0.3.0
    * chore: rename nebula_ros to nebula
    * docs: updater readme to reflect nebula pkg rename
    * chore: rename nebula_ros_vendor to nebula_vendor
    * refactor: nebula_module_vendor -> nebula_vendor_module
    * test: fix issue where sourcing the built project was required for smoke tests to pass
    * chore: update docs, schemas to new module names
    * chore: revert unnecessary test_depend
    * chore: remove erroneous test method instructions
    * chore: remove now-unused hesai_decoder.hpp
    ---------
    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  * Contributors: Kotaro Uetake, Max Schmeller

 -- David Wong <david.wong@tier4.jp>  Mon, 01 Dec 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.15-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 28 Oct 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.14-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 21 Oct 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.13-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 30 Sep 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.12-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Sun, 24 Aug 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.11-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Thu, 21 Aug 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.10-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Wed, 13 Aug 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.9-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 22 Jul 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.8-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Wed, 02 Jul 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.7-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Sun, 08 Jun 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.6-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 06 May 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.5-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 25 Mar 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.4-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 18 Feb 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.3-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Mon, 03 Feb 2025 15:00:00 -0000

ros-humble-nebula-core-common (0.2.2-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Thu, 24 Oct 2024 15:00:00 -0000

ros-humble-nebula-core-common (0.2.1-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Wed, 02 Oct 2024 15:00:00 -0000

ros-humble-nebula-core-common (0.2.0-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Mon, 23 Sep 2024 15:00:00 -0000

ros-humble-nebula-core-common (0.0.1-1jammy) jammy; urgency=high



 -- David Wong <david.wong@tier4.jp>  Tue, 10 Sep 2024 15:00:00 -0000


