105 lines
3.7 KiB
C#
105 lines
3.7 KiB
C#
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;
|
||
}
|
||
} |