Repo symbol

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
humble

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file

Repo symbol

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
jazzy

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/ros-drivers/ros2_ouster_drivers.git
VCS Type git
VCS Version ros2
Last Updated 2024-06-18
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.5.1
ros2_ouster 0.5.1

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster lidar. This includes all models of the OS-x from 16 to 128 beams running the firmware 2.2-2.4. This is a legacy driver for those deploying within their applications. For new applications, we recommend checking out Ouster’s newly supported ROS 2 driver which we have also validated works well.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor. A optional filepath can be specified to save the metadata to a local file. | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) or if using the default driver, "" for automatic detection | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `ethernet_device` | String | An ethernet device (e.g. eth0 or eno1) on which the Tins driver will listen for packets. Note that this is only a parameter for the Tins driver, and is only specified in the config file for that driver. | | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN | | `pointcloud_filter_zero_points` | bool | Reduce pointcloud size by omitting (0, 0, 0) points, default `False`. If used, will make the PC2 unstructured. |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the sensor’s internal oscillator. Counts seconds and nanoseconds since sensor turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since sensor turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

File truncated at 100 lines see the full file

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

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
humble

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file

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

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
humble

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file

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

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
humble

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file

Repo symbol

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
galactic

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file

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

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
humble

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file

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

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
humble

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file

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

ros2_ouster_drivers repository

ouster_msgs ros2_ouster

ROS Distro
humble

Repository Summary

Description ROS2 Drivers for the Ouster OS-0, OS-1, and OS-2 Lidars
Checkout URI https://github.com/SteveMacenski/ros2_ouster_drivers.git
VCS Type git
VCS Version foxy-devel
Last Updated 2020-11-30
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
ouster_msgs 0.2.0
ros2_ouster 0.2.0

README

ROS2 Ouster Drivers

These are an implementation of ROS2 drivers for the Ouster OS-1 3D lidars. This includes all models of the OS-1 from 16 to 128 beams.

You can find a few videos looking over the sensor below. They both introduce the ROS1 driver but are extremely useful references regardless:

OS-1 Networking Setup OS-1 Data Overview
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Documentation

Documentation can be generated using Doxygen.

Run doxygen in the root of this repository. It will generate a /doc/* directory containing the documentation. Entrypoint in a browser is index.html.

Design

See design doc in design/* directory here.

ROS Interfaces

| Topic | Type | Description | |----------------------|-------------------------|--------------------------------------------------| | `scan` | sensor_msgs/LaserScan | 2D laser scan of the 0-angle ring | | `range_image` | sensor_msgs/Image | Image of the range values from the sensor | | `intensity_image` | sensor_msgs/Image | Image of the Intensity values from the sensor | | `noise_image` | sensor_msgs/Image | Image of the noise values from the sensor | | `reflectivity_image` | sensor_msgs/Image | Image of the reflectivity values from the sensor | | `points` | sensor_msgs/PointCloud2 | 3D Pointcloud generated from a 360 rotation | | `imu` | sensor_msgs/Imu | IMU values at transmission rate | | Service | Type | Description | |-------------------|-------------------------|-----------------------------------| | `reset` | std_srvs/Empty | Reset the sensor's connection | | `GetMetadata` | ouster_msgs/GetMetadata | Get information about the sensor | | Parameter | Type | Description | |--------------------------|---------|-------------------------------------------------------------------------------------------------------------| | `lidar_ip` | String | IP or hostname of lidar (ex. 10.5.5.87, os1-serialno.local) | | `computer_ip` | String | IP or hostname of computer to get data (ex. 10.5.5.1) or broadcast (ex. 255.255.255.255) | | `lidar_mode` | String | Mode of data capture, default `512x10` | | `imu_port` | int | Port of IMU data, default 7503 | | `lidar_port` | int | Port of laser data, default 7502 | | `sensor_frame` | String | TF frame of sensor, default `laser_sensor_frame` | | `laser_frame` | String | TF frame of laser data, default `laser_data_frame` | | `imu_frame` | String | TF frame of imu data, default `imu_data_frame` | | `use_system_default_qos` | bool | Publish data with default QoS for rosbag2 recording, default `False` | | `timestamp_mode` | String | Method used to timestamp measurements, default `TIME_FROM_INTERNAL_OSC` | | `os1_proc_mask` | String | Mask encoding data processors to activate, default IMG | PCL | IMU | SCAN |

Note: TF will provide you the transformations from the sensor frame to each of the data frames.

Timestamp Modes

Referring to the parameter table above, the timestamp_mode parameter has four allowable options (as of this writing). They are: TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, TIME_FROM_PTP_1588, TIME_FROM_ROS_RECEPTION. A description of each now follows.

TIME_FROM_INTERNAL_OSC

Use the LiDAR internal clock. Measurements are time stamped with ns since power-on. Free running counter based on the OS1’s internal oscillator. Counts seconds and nanoseconds since OS1 turn on, reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 90 ppm.

TIME_FROM_SYNC_PULSE_IN

A free running counter synced to the SYNC_PULSE_IN input counts seconds (# of pulses) and nanoseconds since OS1 turn on. If multipurpose_io_mode is set to INPUT_NMEA_UART then the seconds register jumps to time extracted from a NMEA $GPRMC message read on the multipurpose_io port. Reported at ns resolution (both a second and nanosecond register in every UDP packet), but min increment is on the order of 10 ns. Accuracy is +/- 1 s from a perfect SYNC_PULSE_IN source.

TIME_FROM_PTP_1588

Synchronize with an external PTP master. A monotonically increasing counter that will begin counting seconds and nanoseconds since startup. As soon as a 1588 sync event happens, the time will be updated to seconds and nanoseconds since 1970. The counter must always count forward in time. If another 1588 sync event happens the counter will either jump forward to match the new time, or slow itself down. It is reported at ns resolution (there is both a second and nanosecond register in every UDP packet), but the minimum increment varies. Accuracy is +/- <50 us from the 1588 master.

TIME_FROM_ROS_RECEPTION

Data are stamped with the ROS time when they are received. The inherent latency between when the data were sampled by the LiDAR and when the data were received by this ROS node is not modelled. This approach may be acceptable to get up and

File truncated at 100 lines see the full file