using CartographerSharp.Mapping;
using RobotNet10.RobotApp.SLAM.Cartographer;
namespace RobotNet10.RobotApp.SLAM.Cartographer.Helpers;
///
/// Helper class for trajectory-related operations
///
public static class TrajectoryHelper
{
///
/// Build sensor IDs from configuration
///
/// Cartographer configuration
/// HashSet of sensor IDs
public static HashSet BuildSensorIds(CartographerConfiguration config)
{
var sensorIds = new HashSet();
// Add Lidar sensor IDs
foreach (var lidarConfig in config.Sensors.Lidars.Where(l => l.Enabled))
{
sensorIds.Add(new ITrajectoryBuilder.SensorId(
ITrajectoryBuilder.SensorId.SensorType.Range,
lidarConfig.DeviceId));
}
// Add IMU sensor ID
if (config.Sensors.Imu.Enabled && !string.IsNullOrEmpty(config.Sensors.Imu.DeviceId))
{
sensorIds.Add(new ITrajectoryBuilder.SensorId(
ITrajectoryBuilder.SensorId.SensorType.Imu,
config.Sensors.Imu.DeviceId));
}
// Add Odometry sensor ID
if (config.UseOdometry)
{
sensorIds.Add(new ITrajectoryBuilder.SensorId(
ITrajectoryBuilder.SensorId.SensorType.Odometry,
"odometry"));
}
return sensorIds;
}
}