Skip to content

output

What Pelorus publishes and where it publishes it. This covers the topics and their QoS, the frames poses are expressed in, the terminal interface and the Rerun visualization.

Option Default Starter
odometry_rate Lidar yes
publisher_mode PointCloud2
global_frame "lio_init" yes
rerun false
lio_odometry_msg_qos Reliable
lio_path_msg_qos SystemDefault
imu_odometry_msg_qos SystemDefault
imu_path_msg_qos SystemDefault
imu_ahrs_filtered_msg_qos Reliable
imu_ahrs_filtered_topic "imu/filtered"
logger_prefix "pelorus"
trajectory ""
latency ""
processing_time ""
terminal
  ui true yes
  debug false
  debug_fps 1
  warning_debounce 1s
  log_level Warn yes
base_link
  frame_id ""
  from_lidar_transform
    use_tf_tree false
    translation [0.0mm, 0.0mm, 0.0mm]
    rotation see below
rerun
  server_addr "127.0.0.1:9876"
  map false
  map
    publish_interval 1s
    visual_scale 3.0
mcap
  file ""
  rosbag_dir ""
  rosbag_metadata ""
  cloud_topic "/registered"
  odom_topic "/odom"
  path_topic "/path"
  tf_topic "/tf"

output.odometry_rate

How often odometry is published. ImuAndLidar adds low-latency IMU predictions between the LiDAR corrections, published at the IMU rate.

Accepted values: lidar, imuandlidar, imu_and_lidar

Accepted values are case-insensitive.

Part of the starter configuration.

output.publisher_mode

Selects the registered-cloud message type when using mt_pubsub. Compressed requires the default-enabled compressed-pointcloud Cargo feature. The topic name stays "registered" in either mode.

Accepted values: compressed, pointcloud2

Accepted values are case-insensitive.

output.global_frame

Frame the estimated poses and the TF messages are expressed in. It is placed wherever the sensor was at start-up, so it is a local frame and carries no relation to any map or world frame that already exists in your TF tree.

Part of the starter configuration.

output.rerun

Live visualization. Pelorus sends to a Rerun viewer that is already running. It never starts one itself. Requires a build with the rerun Cargo feature.

Type: boolean.

output.lio_odometry_msg_qos

QoS of the LiDAR-rate odometry topic.

Accepted values: besteffort, reliable, systemdefault

Accepted values are case-insensitive.

output.lio_path_msg_qos

QoS of the LiDAR-rate path topic. The path is a visualization aid, so dropping messages under load is usually acceptable.

Accepted values: besteffort, reliable, systemdefault

Accepted values are case-insensitive.

output.imu_odometry_msg_qos

QoS of the IMU-rate odometry topic, published when output.odometry_rate is ImuAndLidar.

Accepted values: besteffort, reliable, systemdefault

Accepted values are case-insensitive.

output.imu_path_msg_qos

QoS of the IMU-rate path topic.

Accepted values: besteffort, reliable, systemdefault

Accepted values are case-insensitive.

output.imu_ahrs_filtered_msg_qos

QoS of the AHRS-filtered IMU topic, published when imu.ahrs_filtering.method is anything but Disable.

Accepted values: besteffort, reliable, systemdefault

Accepted values are case-insensitive.

output.imu_ahrs_filtered_topic

Topic the AHRS-filtered IMU output is published on, relative to logger_prefix. Only used when imu.ahrs_filtering.method is not Disable.

output.logger_prefix

Namespace every published topic and every log line is prefixed with.

output.trajectory

Text files written while Pelorus runs. Empty writes nothing; "auto" names the file after the current time, in the working directory. TUM trajectory of the base link, one pose per scan (and per IMU sample with odometry_rate = ImuAndLidar).

output.latency

Builds with the processing-time-export feature only. End-to-end latency per scan, wall clock from its arrival until its registered cloud is ready, as sensor timestamp and nanoseconds.

output.processing_time

Builds with the processing-time-export feature only. Time actually spent computing each scan, without queueing and waiting.

output.terminal

What Pelorus prints while it runs.

output.terminal.ui

Show the interactive TUI with position, velocity, and performance metrics. Set to false for non-interactive sessions.

Type: boolean.

Part of the starter configuration.

output.terminal.debug

Print timing metrics for each pipeline stage. This is what to turn on when Pelorus is not keeping up with the sensor.

Type: boolean.

output.terminal.debug_fps

Refresh rate of the debug output, in frames per second.

Type: integer.

Minimum: 0 (inclusive).

output.terminal.warning_debounce

Shortest interval at which a repeating warning is printed again, so that a condition holding for a whole run does not fill the terminal.

Type: time.

output.terminal.log_level

Everything at this level and above is logged.

Accepted values: Trace, Debug, Info, Warn, Error

Part of the starter configuration.

Frame the odometry and TF are published for. Empty publishes the pose of the LiDAR itself. Set it to your robot's body frame to have Pelorus apply the transform below and publish that pose. The registered scans are published in the same frame, so odometry and scans alone build a consistent map. /tf_static carries the transform back to the LiDAR.

Look the transform up in the TF tree instead of using the values below. The lookup happens once, when the first sensor message arrives.

Type: boolean.

Pose of the Lidar in the base_link frame.

Type: array<length>.

Pose of the Lidar in the base_link frame.

Type: array<array<number>>.

output.rerun

output.rerun.server_addr

Address of the already running Rerun server to stream visualizations to.

output.rerun.map

Periodic snapshot of the whole registration map, colored by relevance score. Off by default. Large maps can be expensive to render.

Type: boolean.

output.rerun.map

output.rerun.map.publish_interval

Shortest interval between two snapshots.

Type: time.

Minimum: 0s (inclusive).

output.rerun.map.visual_scale

Size of the ellipsoid drawn per voxel, scaled by that voxel's covariance.

Type: number.

Minimum: 0 (exclusive).

output.mcap

Optional MCAP/ROS 2 bag recording of Pelorus output, unrelated to the live pub/sub topics above. Off by default (both file and rosbag_dir empty).

output.mcap.file

Write a bare MCAP file at this path. Empty disables it. Mutually exclusive with rosbag_dir.

output.mcap.rosbag_dir

Write a ROS 2 bag directory at this path instead of a bare MCAP file. Always writes its own /metadata.yaml. Empty disables it. Mutually exclusive with file.

output.mcap.rosbag_metadata

Also write a ROS 2 bag metadata.yaml next to file. Only valid together with file (rosbag_dir already writes its own). Empty disables it.

output.mcap.cloud_topic

Topic names used inside the MCAP/ROS 2 bag. Unrelated to the live pub/sub topics above.

output.mcap.odom_topic

Topic names used inside the MCAP/ROS 2 bag. Unrelated to the live pub/sub topics above.

output.mcap.path_topic

Topic names used inside the MCAP/ROS 2 bag. Unrelated to the live pub/sub topics above.

output.mcap.tf_topic

Topic names used inside the MCAP/ROS 2 bag. Unrelated to the live pub/sub topics above.