No version for distro humble showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro jazzy showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro kilted showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro rolling showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro ardent showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro bouncy showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro crystal showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro eloquent showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro dashing showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro galactic showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro foxy showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro iron showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro jade showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
indigo

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

No version for distro hydro showing lunar. Known supported distros are highlighted in the buttons above.
Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
kinetic

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
melodic

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange

Package symbol

urg_stamped package from urg_stamped repo

urg_stamped

ROS Distro
noetic

Package Summary

Tags No category tags.
Version 0.4.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/seqsense/urg_stamped.git
VCS Type git
VCS Version master
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Precisely stamped URG driver for ROS

Additional Links

No additional links.

Maintainers

  • Atsushi Watanabe

Authors

  • Atsushi Watanabe

urg_stamped

Precisely and accurately stamped URG driver for ROS

[!NOTE] After official ROS 1 EOL, this package is released to Alpine ROS.

Background and Algorithm

2D-LIDAR URG series provides 1ms resolution timestamp and exclusive clock synchronization mode. It was hard to compensate clock drift during measurement using them. Also, the resolution of the timestamp was not enough for a high-speed motion of the sensor.

So, urg_stamped estimates sub-millisecond by the following algorithm:

  • Select the algorithms based on the sensor model
    • UTM: UTM-30LX-EW
    • UST(UUST1): UST-*LX, UST-*LC with firmware version <4.0.0
    • UST(UUST2-Unfixed): UST-*LX, UST-*LC with firmware version >=4.0.0 and <4.0.3
    • UST(UUST2-Fixed): UST-*LX, UST-*LC with firmware version >=4.0.3
  • Determine sensor internal clock state (clock offset and gain) using TM command (Triggered by 30s timer by default)
    • UTM/UST(UUST1)/UST(UUST2-Fixed): (These models respond to TM command as expected in SCIP2 protocol)
        1. Observe sub-millisecond clock offset by finding increment of millisecond resolution sensor timestamp
        1. Observe clock gain from multiple observations of the clock offset
    • UST(UUST2-Unfixed): (This model responds to TM command on the next 5ms frame which breaks SCIP2’s time synchronization logic)
        1. Request TM command many times with different timing
        1. Filter responses with large delay
        1. Collect sensor response timings which should be synchronized to the sensor timestamp increment
        1. Observe sub-millisecond clock offset based on the sensor response timings and sensor timestamps
        1. Observe clock gain from multiple observations of the clock offset
  • Determine scan origin time and interval
    • UTM: (UTM sends scan data right after the scan is finished)
        1. Observe scan timing based on scan data arrival time
    • UST: (UST sends scan data on the next 1ms frame after the scan is finished)
        1. Find sensor scan timestamp jitter
        1. Observe scan origin time and scan interval using scan timestamp jitter
  • Calculate sub-millisecond scan timestamp based on the observed scan origin time and scan interval

LaserScan data is stopped during sensor internal clock estimation which takes at most ~100ms on UTM/UST(UUST1)/UST(UUST2-Fixed) and ~1s on UST(UUST2-Unfixed). To avoid stopping all sensors at once on multi-sensor configuration, urg_stamped automatically adjusts the timing of sensor internal clock estimation based on the messages on urg_stamped_sync_start topic.

Usages

Topics and major parameters are designed to be compatible with urg_node.

Published Topics

  • scan (sensor_msgs::LaserScan)

Parameters

urg_node compatible parameters

  • ip_address (string): device IP address
  • ip_port (int): device TCP/IP port
  • frame_id (string): frame_id of published scans
  • publish_intensity (bool): fill intensity field if true
  • error_limit (int): reset the sensor and exit if errors occur more than this count

urg_stamped specific parameters

  • clock_estim_interval (double): sensor internal clock state estimation interval in seconds (dropping several scans during estimation)
  • fallback_on_continuous_scan_drop (int): fallback to naive 1ms accuracy timestamp if failed to estimate sub-millisecond timestamp more than this value

Known Limitations

  • Timestamp estimation is designed for sensors connected by ethernet interface.
    • Tested on the following sensor models:
      • UTM-30LX-EW
      • UST-05LX
      • UST-20LX
      • UST-30LC
    • UUST2 model of UST series (firmware version >=4.0.0) takes longer time to perform the time synchronization due to the sensor’s behavior.
  • Some scans are dropped due to the clock synchronization and delay estimation.

Comparison with urg_node

Configurations

Three UTM-30LX-EWs are mounted on a velocity controlled turntable, as shown below, to reconstruct 3-D point cloud from 2-D scans. The accuracy of the timestamp affects offset and precision of the timestamp affects the distribution of the pointcloud.

SQ-LIDAR

Results

[!NOTE]
Following results are based on the previous algorithm (urg_stamped<0.2.0). They will be updated later.

The image below shows point cloud with 1 rad/s of the turntable which can be assumed as a reference. (decay time of the point cloud: 10 seconds)

urg_stamped 1 rad/s

urg_node has large error even if calibrate_time and synchronize_time options are enabled (captioned as urg_node (sync)). urg_stamped has better timestamp characteristics comparing with urg_node.

  10 rad/s 20 rad/s

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package urg_stamped

0.0.8 (2021-03-10)

  • Fix token name for releasing (#86)
  • Fix prerelease test (#85)
  • Remove unnecessary newline from log (#82)
  • Migrate to GitHub Actions (#81)
  • Contributors: Atsushi Watanabe

0.4.0 (2024-12-10)

  • Set frame_id to status message (#180)
  • Support UUST2 with fixed firmware (#177)
  • CI: Use alpine 3.20 in cloner stage (#176)
  • Contributors: Atsushi Watanabe, f-fl0

0.3.0 (2024-10-15)

  • Avoid concurrent time sync of multiple sensors (#173)
  • Support UUST2 (#172)
  • Contributors: Atsushi Watanabe

0.2.1 (2024-09-10)

  • Fix out-of-bound vector access in urg_sim (#169)
  • Fix stamp on initial state (#168)
  • Reduce log level of scan drop count if small (#167)
  • Contributors: Atsushi Watanabe

0.2.0 (2024-08-03)

  • Tweak E2E test timeout (#165)
  • Stabilize E2E test (#163)
  • Update CI actions (#161)
  • New timestamp estimator (#151)
  • Use C++14 (#158)
  • Include cstdint (#157)
  • Contributors: Atsushi Watanabe

0.1.1 (2024-05-09)

  • Fix build dependency to message (#155)
  • Fix handling of multiple responses in one read (#152)
  • Fix urg_sim CPU usage (#150)
  • Improve simulated communication delay (#149)
  • Use clock_rate in urg_sim (#148)
  • Fix E2E test assertion and true timestamp index (#147)
  • Add URG simulator for CI (#146)
  • Update codecov/codecov-action to v4 (#145)
  • Contributors: Atsushi Watanabe

0.1.0 (2024-02-14)

  • Add option to disable on-scan time sync (#141)
  • Contributors: Atsushi Watanabe

0.0.17 (2023-09-13)

  • Update CI scripts (#138)
  • Reboot on reset error only if requested reset (#135)
  • Drop Melodic support (#134)
  • Contributors: Atsushi Watanabe

0.0.16 (2023-01-05)

  • Update release scripts (#133)
  • Fix multiline run in bloom-release workflow (#130)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Messages

Services

No service files found

Plugins

No plugins found.

Recent questions tagged urg_stamped at Robotics Stack Exchange