105 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Runtime.InteropServices;
namespace Unity.XR.PICO.TOBSupport
{
// pico slam results
[StructLayout(LayoutKind.Sequential)]
public struct SixDof
{
public Int64 timestamp; // nanoseconds
public double x; // position X
public double y; // position Y
public double z; // position Z
public double rw; // rotation W
public double rx; // rotation X
public double ry; // rotation Y
public double rz; // rotation Z
public byte type; //1:6DOF 0:3DOF
public byte confidence; //1:good 0:bad
public PoseErrorType error;
public double plane_height;
public byte plane_status;
public byte relocation_status;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
public byte[] reserved;
}
[StructLayout(LayoutKind.Sequential)]
public struct AlgoResult
{
public SixDof pose;
public SixDof relocation_pose;
public double vx, vy, vz; // linear velocity
public double ax, ay, az; // linear acceleration
public double wx, wy, wz; // angular velocity
public double w_ax, w_ay, w_az; // angular acceleration
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
public byte[] reserved;
}
[StructLayout(LayoutKind.Sequential)]
public struct FrameItem
{
public byte camera_id;
public UInt32 width; // width
public UInt32 height; // height
public UInt32 format; // format - rgb24
public UInt32 exposure_duration; // exposure duration:ns
public UInt64 timestamp; // start of exposure time:ns (BOOTTIME)
public UInt64 qtimer_timestamp; // nanoseconds in qtimer
public UInt64 framenumber; // frame number
public UInt32 datasize; // datasize
public IntPtr data; // image data.
}
[StructLayout(LayoutKind.Sequential)]
public struct FrameItemExt
{
public FrameItem frame;
public bool is_rgb;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public double[] rgb_tsw_matrix;
public bool is_anti_distortion;
public AlgoResult six_dof_pose;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
public byte[] reserved;
}
[StructLayout(LayoutKind.Sequential)]
public struct Frame
{
public UInt32 width; // width
public UInt32 height; // height
public UInt64 timestamp; // start of exposure time:ns (BOOTTIME)
public UInt32 datasize; // datasize
public IntPtr data; // image data
public UnityEngine.Pose pose; // The head Pose at the time of image production.Right-handed coordinate system: X right, Y up, Z in
public int status; // sensor status(1:good 0:bad)
}
[StructLayout(LayoutKind.Sequential)]
public struct SensorState
{
public UnityEngine.Pose pose; // Predict the head Pose at the screen up time.Right-handed coordinate system: X right, Y up, Z in
public int status; // sensor status(1:good 0:bad)
}
[StructLayout(LayoutKind.Sequential)]
public struct RGBCameraParams
{
// Intrinsics
public double fx;
public double fy;
public double cx;
public double cy;
// Extrinsics
public double x;
public double y;
public double z;
public double rw;
public double rx;
public double ry;
public double rz;
}
}