lidar¶
Where point clouds come from and what Pelorus may assume about them.
| Option | Default | Starter |
|---|---|---|
topic |
"/ouster/points" |
yes |
subscriber_mode |
PointCloud2 |
|
vendor |
NoTimestamp |
yes |
qos.reliability |
Reliable |
yes |
covariance |
0.001 |
|
as_sync |
false |
|
driver |
||
type |
Disabled |
|
velodyne |
||
model |
Vlp32c |
|
bind_address |
"0.0.0.0" |
|
data_port |
2368 |
|
position_port |
8308 |
|
device_ip |
"" |
|
frame_id |
"velodyne" |
|
cut_angle |
0.0 |
|
timestamp |
||
mode |
Sensor |
|
allow_host_hour_anchor |
true |
|
max_host_skew |
20ms |
|
startup_timeout |
15s |
|
robosense |
||
model |
M1 |
|
bind_address |
"0.0.0.0" |
|
msop_port |
6699 |
|
difop_port |
7788 |
|
device_ip |
"" |
|
frame_id |
"rslidar" |
|
timestamp |
||
mode |
Sensor |
|
max_host_skew |
20ms |
|
startup_timeout |
15s |
lidar.topic¶
Topic carrying sensor_msgs/msg/PointCloud2. Ignored while lidar.driver.type selects an in-process driver.
Part of the starter configuration.
lidar.subscriber_mode¶
Selects the input message type when using mt_pubsub. Compressed requires the default-enabled compressed-pointcloud Cargo feature. Other communication backends always subscribe to PointCloud2.
Accepted values: compressed, pointcloud2
Accepted values are case-insensitive.
lidar.vendor¶
Vendor whose per-point timestamp layout the incoming cloud uses. Pelorus needs this to deskew a scan, since the points of one revolution are measured at different times. NoTimestamp treats the scan as if it were instantaneous, which visibly smears geometry as soon as the platform moves.
Accepted values: velodyne, ouster, livox, livoxmid360, robosense, hesai, blickfeld, sickmultiscan, notimestamp, no_timestamp, genericnotimestamp, generic_no_timestamp
Accepted values are case-insensitive.
Part of the starter configuration.
lidar.qos.reliability¶
Anything other than Reliable drops messages under load and is not supported.
Accepted values: besteffort, reliable, systemdefault
Accepted values are case-insensitive.
Part of the starter configuration.
lidar.covariance¶
How far the filter trusts the scan match against the map. Lower values pull the estimate harder towards the registration result.
Type: number.
lidar.as_sync¶
Use incoming LiDAR messages as a forced synchronization trigger. This costs accuracy, but some surrounding libraries work better with it.
Type: boolean.
lidar.driver¶
lidar.driver.type¶
Disabled keeps the existing external point-cloud input configured by lidar.topic. Velodyne, Ouster and Robosense enable in-process UDP drivers and require Pelorus to be built with their matching feature (or the aggregate sensor-drivers feature).
Accepted values: disabled, velodyne, ouster, robosense
Accepted values are case-insensitive.
lidar.driver.velodyne¶
UDP connection to a Velodyne sensor. Only used when type = Velodyne.
lidar.driver.velodyne.model¶
The configured model must match the product identifier in received packets.
Accepted values: vlp16, vlp32c, pucklite, puckhires
Accepted values are case-insensitive.
lidar.driver.velodyne.bind_address¶
Local IPv4 or IPv6 address on which to receive UDP packets. "0.0.0.0" listens on every IPv4 interface.
lidar.driver.velodyne.data_port¶
UDP data-packet port. Must be in 1..=65535 and differ from position_port.
Type: integer.
Minimum: 1 (inclusive).
Maximum: 65535 (inclusive).
lidar.driver.velodyne.position_port¶
UDP position/NMEA packet port. Must be in 1..=65535 and differ from data_port.
Type: integer.
Minimum: 1 (inclusive).
Maximum: 65535 (inclusive).
lidar.driver.velodyne.device_ip¶
Optional sender-address filter. Empty accepts packets from any device. Otherwise this must be an IPv4 or IPv6 address, for example "192.168.1.201".
lidar.driver.velodyne.frame_id¶
Frame assigned to native scans. Coordinates follow ROS REP-103: +X forward, +Y left, +Z up.
lidar.driver.velodyne.cut_angle¶
Revolution boundary in radians, measured in the sensor azimuth convention. A scan is emitted whenever azimuth crosses this angle. Expected range is 0.0 (inclusive) to 2*pi (exclusive). Ratslang currently has no angle quantity type.
Type: number.
lidar.driver.velodyne.timestamp¶
lidar.driver.velodyne.timestamp.mode¶
Sensor prefers UTC reconstructed from valid position-packet NMEA. If no valid NMEA anchor is available and allow_host_hour_anchor is true, the packet's microseconds-since-hour are combined with the nearest host UTC hour. Host timestamps packets when they are received and stamps a scan from its first packet. Host is useful when sensor UTC is unavailable, but includes network and scheduling latency. Both modes keep per-point firing offsets.
Accepted values: sensor, host
Accepted values are case-insensitive.
lidar.driver.velodyne.timestamp.allow_host_hour_anchor¶
In Sensor mode, permit nearest-host-hour reconstruction when position/NMEA UTC is unavailable. The host clock must be synchronized to the sensor's time reference. This option has no effect in Host mode.
Type: boolean.
lidar.driver.velodyne.timestamp.max_host_skew¶
Maximum accepted absolute difference between reconstructed sensor UTC and host UTC. Must be positive. Used by Sensor mode. Host mode already uses host time.
Type: time.
Minimum: 0s (exclusive).
lidar.driver.velodyne.timestamp.startup_timeout¶
Maximum positive duration to wait for usable packets or timestamps during startup. If the configured clock mode cannot be satisfied, Pelorus fails startup and says so.
Type: time.
Minimum: 0s (exclusive).
lidar.driver.robosense¶
UDP connection to a RoboSense solid-state sensor. Only used when lidar.driver.type selects Robosense. The mechanical units (RS-16, RS-32, Helios, Bpearl) speak a different packet format and are not handled by this driver.
lidar.driver.robosense.model¶
These differ in packet length and per-point layout, so a mismatch is rejected on the first packet rather than decoded into noise.
Accepted values: m1, m2, e1, mx
Accepted values are case-insensitive.
lidar.driver.robosense.bind_address¶
Local IPv4 or IPv6 address on which to receive UDP packets. "0.0.0.0" listens on every IPv4 interface.
lidar.driver.robosense.msop_port¶
UDP point-data (MSOP) port. Must be in 1..=65535 and differ from difop_port.
Type: integer.
Minimum: 1 (inclusive).
Maximum: 65535 (inclusive).
lidar.driver.robosense.difop_port¶
UDP device-info (DIFOP) port. Must be in 1..=65535 and differ from msop_port. The driver reads the echo mode from it, which decides whether Mx reports one return per channel or two. Geometry never depends on it: these sensors put the direction of every point in the data packet itself.
Type: integer.
Minimum: 1 (inclusive).
Maximum: 65535 (inclusive).
lidar.driver.robosense.device_ip¶
Optional sender-address filter. Empty accepts packets from any device. Otherwise this must be an IPv4 or IPv6 address, for example "192.168.1.200".
lidar.driver.robosense.frame_id¶
Frame assigned to native scans. Coordinates follow ROS REP-103: +X forward, +Y left, +Z up.
lidar.driver.robosense.timestamp¶
lidar.driver.robosense.timestamp.mode¶
Sensor uses the UTC stamp in each packet header and requires the sensor to be time-synchronized, typically over PTP or GPS. Host stamps packets when they are received, which includes network and scheduling latency. Both modes keep per-point measurement offsets.
Accepted values: sensor, host
Accepted values are case-insensitive.
lidar.driver.robosense.timestamp.max_host_skew¶
Largest accepted difference between sensor UTC and host UTC in Sensor mode. Must be positive. A sensor that is not synchronized at all fails this immediately. One that is merely a few milliseconds out passes it at startup and only fails later, so the driver also measures the offset over the first seconds of a run and logs what it saw, warning when the observed drift would use up this budget within a minute.
Type: time.
Minimum: 0s (exclusive).
lidar.driver.robosense.timestamp.startup_timeout¶
Maximum positive duration to wait for usable packets during startup. If the configured clock mode cannot be satisfied, Pelorus fails startup and says so.
Type: time.
Minimum: 0s (exclusive).