using CartographerSharp.Transform; using RobotNet10.Shared.Geometry; using RobotNet10.Shared.Numbers; namespace RobotNet10.RobotApp.SLAM.Cartographer.Helpers; /// /// Helper class for converting between Cartographer Rigid3d and RobotNet10 Pose /// public static class PoseConverter { /// /// Convert Rigid3d to Pose /// public static Pose ToPose(Rigid3d rigid3d) { return new Pose { Position = new Vector3 { X = rigid3d.Translation.X, Y = rigid3d.Translation.Y, Z = rigid3d.Translation.Z }, Orientation = new Quaternion { X = rigid3d.Rotation.X, Y = rigid3d.Rotation.Y, Z = rigid3d.Rotation.Z, W = rigid3d.Rotation.W } }; } /// /// Convert Pose to Rigid3d /// public static Rigid3d ToRigid3d(Pose pose) { var translation = new Vector3( (float)pose.Position.X, (float)pose.Position.Y, (float)pose.Position.Z); var rotation = new Quaternion( (float)pose.Orientation.X, (float)pose.Orientation.Y, (float)pose.Orientation.Z, (float)pose.Orientation.W); return new Rigid3d(translation, rotation); } }