Repo symbol

ros2_ouster_drivers repository

ros drivers ros2 ouster ouster-sensor ouster_msgs ros2_ouster

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
Tags ros drivers ros2 ouster ouster-sensor
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

ros drivers ros2 ouster ouster-sensor
Repo symbol

ros2_ouster_drivers repository

ros drivers ros2 ouster ouster-sensor
Repo symbol

ros2_ouster_drivers repository

ros drivers ros2 ouster ouster-sensor
Repo symbol

ros2_ouster_drivers repository

ros drivers ros2 ouster ouster-sensor
Repo symbol

ros2_ouster_drivers repository

ros drivers ros2 ouster ouster-sensor ouster_msgs ros2_ouster

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
Tags ros drivers ros2 ouster ouster-sensor
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

ros drivers ros2 ouster ouster-sensor
Repo symbol

ros2_ouster_drivers repository

ros drivers ros2 ouster ouster-sensor
Repo symbol

ros2_ouster_drivers repository

ros drivers ros2 ouster ouster-sensor