using CartographerSharp.Sensor;
namespace RobotNet10.RobotApp.SLAM.Cartographer.Helpers;
///
/// Point cloud data in both base_link and sensor (lidar) frame.
/// Pipeline produces both so Cartographer gets base_link for trajectory and MCL gets sensor_frame without re-transform.
///
public sealed class RangeDataPayload
{
/// Point cloud in base_link (robot) frame — for Cartographer ITrajectoryBuilder.AddSensorData.
public TimedPointCloudData BaseLink { get; set; }
/// Point cloud in sensor (lidar) frame — for MCL OnScan (beam angles relative to sensor). SensorPipeline always produces this.
public TimedPointCloudData SensorFrame { get; set; }
/// Actual minimum angle (radians) of filtered point cloud in sensor frame — for MCL scan conversion.
public double ActualAngleMin { get; set; }
/// Actual maximum angle (radians) of filtered point cloud in sensor frame — for MCL scan conversion.
public double ActualAngleMax { get; set; }
/// Actual angle increment (radians) from original scan — for MCL scan conversion.
public double ActualAngleIncrement { get; set; }
}